@libp2p/utils 6.7.1 → 6.7.2-8484de8a2

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.
Files changed (165) hide show
  1. package/README.md +16 -1
  2. package/dist/index.min.js +6 -1
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/abstract-message-stream.d.ts +129 -0
  5. package/dist/src/abstract-message-stream.d.ts.map +1 -0
  6. package/dist/src/abstract-message-stream.js +389 -0
  7. package/dist/src/abstract-message-stream.js.map +1 -0
  8. package/dist/src/abstract-multiaddr-connection.d.ts +26 -0
  9. package/dist/src/abstract-multiaddr-connection.d.ts.map +1 -0
  10. package/dist/src/abstract-multiaddr-connection.js +66 -0
  11. package/dist/src/abstract-multiaddr-connection.js.map +1 -0
  12. package/dist/src/abstract-stream-muxer.d.ts +53 -0
  13. package/dist/src/abstract-stream-muxer.d.ts.map +1 -0
  14. package/dist/src/abstract-stream-muxer.js +169 -0
  15. package/dist/src/abstract-stream-muxer.js.map +1 -0
  16. package/dist/src/abstract-stream.d.ts +14 -130
  17. package/dist/src/abstract-stream.d.ts.map +1 -1
  18. package/dist/src/abstract-stream.js +39 -321
  19. package/dist/src/abstract-stream.js.map +1 -1
  20. package/dist/src/errors.d.ts +8 -0
  21. package/dist/src/errors.d.ts.map +1 -1
  22. package/dist/src/errors.js +8 -0
  23. package/dist/src/errors.js.map +1 -1
  24. package/dist/src/get-thin-waist-addresses.browser.d.ts +1 -1
  25. package/dist/src/get-thin-waist-addresses.browser.d.ts.map +1 -1
  26. package/dist/src/get-thin-waist-addresses.browser.js +4 -3
  27. package/dist/src/get-thin-waist-addresses.browser.js.map +1 -1
  28. package/dist/src/get-thin-waist-addresses.d.ts +1 -1
  29. package/dist/src/get-thin-waist-addresses.d.ts.map +1 -1
  30. package/dist/src/get-thin-waist-addresses.js +7 -9
  31. package/dist/src/get-thin-waist-addresses.js.map +1 -1
  32. package/dist/src/index.d.ts +33 -1
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/index.js +33 -1
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/src/length-prefixed-decoder.d.ts +37 -0
  37. package/dist/src/length-prefixed-decoder.d.ts.map +1 -0
  38. package/dist/src/length-prefixed-decoder.js +64 -0
  39. package/dist/src/length-prefixed-decoder.js.map +1 -0
  40. package/dist/src/message-queue.d.ts +61 -0
  41. package/dist/src/message-queue.d.ts.map +1 -0
  42. package/dist/src/message-queue.js +93 -0
  43. package/dist/src/message-queue.js.map +1 -0
  44. package/dist/src/mock-muxer.d.ts +57 -0
  45. package/dist/src/mock-muxer.d.ts.map +1 -0
  46. package/dist/src/mock-muxer.js +204 -0
  47. package/dist/src/mock-muxer.js.map +1 -0
  48. package/dist/src/mock-stream.d.ts +31 -0
  49. package/dist/src/mock-stream.d.ts.map +1 -0
  50. package/dist/src/mock-stream.js +69 -0
  51. package/dist/src/mock-stream.js.map +1 -0
  52. package/dist/src/multiaddr/get-net-config.d.ts +55 -0
  53. package/dist/src/multiaddr/get-net-config.d.ts.map +1 -0
  54. package/dist/src/multiaddr/get-net-config.js +54 -0
  55. package/dist/src/multiaddr/get-net-config.js.map +1 -0
  56. package/dist/src/multiaddr/index.d.ts +7 -0
  57. package/dist/src/multiaddr/index.d.ts.map +1 -0
  58. package/dist/src/multiaddr/index.js +7 -0
  59. package/dist/src/multiaddr/index.js.map +1 -0
  60. package/dist/src/multiaddr/is-global-unicast.d.ts.map +1 -1
  61. package/dist/src/multiaddr/is-global-unicast.js +8 -9
  62. package/dist/src/multiaddr/is-global-unicast.js.map +1 -1
  63. package/dist/src/multiaddr/is-link-local.d.ts.map +1 -1
  64. package/dist/src/multiaddr/is-link-local.js +11 -16
  65. package/dist/src/multiaddr/is-link-local.js.map +1 -1
  66. package/dist/src/multiaddr/is-loopback.d.ts.map +1 -1
  67. package/dist/src/multiaddr/is-loopback.js +12 -5
  68. package/dist/src/multiaddr/is-loopback.js.map +1 -1
  69. package/dist/src/multiaddr/is-network-address.d.ts.map +1 -1
  70. package/dist/src/multiaddr/is-network-address.js +4 -16
  71. package/dist/src/multiaddr/is-network-address.js.map +1 -1
  72. package/dist/src/multiaddr/is-private.d.ts.map +1 -1
  73. package/dist/src/multiaddr/is-private.js +9 -10
  74. package/dist/src/multiaddr/is-private.js.map +1 -1
  75. package/dist/src/multiaddr/utils.d.ts +5 -0
  76. package/dist/src/multiaddr/utils.d.ts.map +1 -0
  77. package/dist/src/multiaddr/utils.js +32 -0
  78. package/dist/src/multiaddr/utils.js.map +1 -0
  79. package/dist/src/multiaddr-connection-pair.d.ts +25 -0
  80. package/dist/src/multiaddr-connection-pair.d.ts.map +1 -0
  81. package/dist/src/multiaddr-connection-pair.js +103 -0
  82. package/dist/src/multiaddr-connection-pair.js.map +1 -0
  83. package/dist/src/queue/index.d.ts +5 -0
  84. package/dist/src/queue/index.d.ts.map +1 -1
  85. package/dist/src/queue/index.js +24 -9
  86. package/dist/src/queue/index.js.map +1 -1
  87. package/dist/src/rate-limiter.d.ts +1 -15
  88. package/dist/src/rate-limiter.d.ts.map +1 -1
  89. package/dist/src/rate-limiter.js +1 -14
  90. package/dist/src/rate-limiter.js.map +1 -1
  91. package/dist/src/socket-writer.browser.d.ts +2 -0
  92. package/dist/src/socket-writer.browser.d.ts.map +1 -0
  93. package/dist/src/socket-writer.browser.js +4 -0
  94. package/dist/src/socket-writer.browser.js.map +1 -0
  95. package/dist/src/socket-writer.d.ts +19 -0
  96. package/dist/src/socket-writer.d.ts.map +1 -0
  97. package/dist/src/socket-writer.js +43 -0
  98. package/dist/src/socket-writer.js.map +1 -0
  99. package/dist/src/stream-pair.d.ts +42 -0
  100. package/dist/src/stream-pair.d.ts.map +1 -0
  101. package/dist/src/stream-pair.js +40 -0
  102. package/dist/src/stream-pair.js.map +1 -0
  103. package/dist/src/stream-utils.d.ts +198 -0
  104. package/dist/src/stream-utils.d.ts.map +1 -0
  105. package/dist/src/stream-utils.js +369 -0
  106. package/dist/src/stream-utils.js.map +1 -0
  107. package/package.json +19 -163
  108. package/src/abstract-message-stream.ts +549 -0
  109. package/src/abstract-multiaddr-connection.ts +93 -0
  110. package/src/abstract-stream-muxer.ts +239 -0
  111. package/src/abstract-stream.ts +51 -464
  112. package/src/errors.ts +10 -0
  113. package/src/get-thin-waist-addresses.browser.ts +5 -4
  114. package/src/get-thin-waist-addresses.ts +8 -12
  115. package/src/index.ts +33 -1
  116. package/src/length-prefixed-decoder.ts +98 -0
  117. package/src/message-queue.ts +156 -0
  118. package/src/mock-muxer.ts +304 -0
  119. package/src/mock-stream.ts +101 -0
  120. package/src/multiaddr/get-net-config.ts +112 -0
  121. package/src/multiaddr/index.ts +6 -0
  122. package/src/multiaddr/is-global-unicast.ts +8 -11
  123. package/src/multiaddr/is-link-local.ts +11 -20
  124. package/src/multiaddr/is-loopback.ts +12 -7
  125. package/src/multiaddr/is-network-address.ts +4 -19
  126. package/src/multiaddr/is-private.ts +9 -14
  127. package/src/multiaddr/utils.ts +46 -0
  128. package/src/multiaddr-connection-pair.ts +147 -0
  129. package/src/queue/index.ts +30 -9
  130. package/src/rate-limiter.ts +3 -30
  131. package/src/socket-writer.browser.ts +3 -0
  132. package/src/socket-writer.ts +64 -0
  133. package/src/stream-pair.ts +90 -0
  134. package/src/stream-utils.ts +873 -0
  135. package/dist/src/abort-options.d.ts +0 -7
  136. package/dist/src/abort-options.d.ts.map +0 -1
  137. package/dist/src/abort-options.js +0 -14
  138. package/dist/src/abort-options.js.map +0 -1
  139. package/dist/src/array-equals.d.ts +0 -24
  140. package/dist/src/array-equals.d.ts.map +0 -1
  141. package/dist/src/array-equals.js +0 -31
  142. package/dist/src/array-equals.js.map +0 -1
  143. package/dist/src/close-source.d.ts +0 -4
  144. package/dist/src/close-source.d.ts.map +0 -1
  145. package/dist/src/close-source.js +0 -11
  146. package/dist/src/close-source.js.map +0 -1
  147. package/dist/src/close.d.ts +0 -21
  148. package/dist/src/close.d.ts.map +0 -1
  149. package/dist/src/close.js +0 -49
  150. package/dist/src/close.js.map +0 -1
  151. package/dist/src/multiaddr/is-ip-based.d.ts +0 -6
  152. package/dist/src/multiaddr/is-ip-based.d.ts.map +0 -1
  153. package/dist/src/multiaddr/is-ip-based.js +0 -18
  154. package/dist/src/multiaddr/is-ip-based.js.map +0 -1
  155. package/dist/src/stream-to-ma-conn.d.ts +0 -23
  156. package/dist/src/stream-to-ma-conn.d.ts.map +0 -1
  157. package/dist/src/stream-to-ma-conn.js +0 -75
  158. package/dist/src/stream-to-ma-conn.js.map +0 -1
  159. package/dist/typedoc-urls.json +0 -147
  160. package/src/abort-options.ts +0 -20
  161. package/src/array-equals.ts +0 -34
  162. package/src/close-source.ts +0 -14
  163. package/src/close.ts +0 -65
  164. package/src/multiaddr/is-ip-based.ts +0 -21
  165. package/src/stream-to-ma-conn.ts +0 -105
@@ -1,7 +1,7 @@
1
1
  import { AbortError } from '@libp2p/interface';
2
2
  import { pushable } from 'it-pushable';
3
3
  import { TypedEventEmitter } from 'main-event';
4
- import { raceEvent } from 'race-event';
4
+ import { pEvent } from 'p-event';
5
5
  import { debounce } from '../debounce.js';
6
6
  import { QueueFullError } from '../errors.js';
7
7
  import { Job } from './job.js';
@@ -17,11 +17,13 @@ export class Queue extends TypedEventEmitter {
17
17
  queue;
18
18
  pending;
19
19
  sort;
20
+ paused;
20
21
  constructor(init = {}) {
21
22
  super();
22
23
  this.concurrency = init.concurrency ?? Number.POSITIVE_INFINITY;
23
24
  this.maxSize = init.maxSize ?? Number.POSITIVE_INFINITY;
24
25
  this.pending = 0;
26
+ this.paused = false;
25
27
  if (init.metricName != null) {
26
28
  init.metrics?.registerMetricGroup(init.metricName, {
27
29
  calculate: () => {
@@ -50,7 +52,20 @@ export class Queue extends TypedEventEmitter {
50
52
  }
51
53
  this.safeDispatchEvent('idle');
52
54
  }
55
+ pause() {
56
+ this.paused = true;
57
+ }
58
+ resume() {
59
+ if (!this.paused) {
60
+ return;
61
+ }
62
+ this.paused = false;
63
+ this.tryToStartAnother();
64
+ }
53
65
  tryToStartAnother() {
66
+ if (this.paused) {
67
+ return false;
68
+ }
54
69
  if (this.size === 0) {
55
70
  this.emitEmpty();
56
71
  if (this.running === 0) {
@@ -122,7 +137,6 @@ export class Queue extends TypedEventEmitter {
122
137
  }
123
138
  }
124
139
  }
125
- this.safeDispatchEvent('error', { detail: err });
126
140
  this.safeDispatchEvent('failure', { detail: { job, error: err } });
127
141
  throw err;
128
142
  });
@@ -152,7 +166,7 @@ export class Queue extends TypedEventEmitter {
152
166
  if (this.size === 0) {
153
167
  return;
154
168
  }
155
- await raceEvent(this, 'empty', options?.signal);
169
+ await pEvent(this, 'empty', options);
156
170
  }
157
171
  /**
158
172
  * @returns A promise that settles when the queue size is less than the given
@@ -170,7 +184,8 @@ export class Queue extends TypedEventEmitter {
170
184
  if (this.size < limit) {
171
185
  return;
172
186
  }
173
- await raceEvent(this, 'next', options?.signal, {
187
+ await pEvent(this, 'next', {
188
+ ...options,
174
189
  filter: () => this.size < limit
175
190
  });
176
191
  }
@@ -187,7 +202,7 @@ export class Queue extends TypedEventEmitter {
187
202
  if (this.pending === 0 && this.size === 0) {
188
203
  return;
189
204
  }
190
- await raceEvent(this, 'idle', options?.signal);
205
+ await pEvent(this, 'idle', options);
191
206
  }
192
207
  /**
193
208
  * Size of the queue including running items
@@ -236,8 +251,8 @@ export class Queue extends TypedEventEmitter {
236
251
  stream.push(evt.detail);
237
252
  }
238
253
  };
239
- const onQueueError = (evt) => {
240
- cleanup(evt.detail);
254
+ const onQueueFailure = (evt) => {
255
+ cleanup(evt.detail.error);
241
256
  };
242
257
  const onQueueIdle = () => {
243
258
  cleanup();
@@ -248,7 +263,7 @@ export class Queue extends TypedEventEmitter {
248
263
  };
249
264
  // add listeners
250
265
  this.addEventListener('completed', onQueueJobComplete);
251
- this.addEventListener('error', onQueueError);
266
+ this.addEventListener('failure', onQueueFailure);
252
267
  this.addEventListener('idle', onQueueIdle);
253
268
  options?.signal?.addEventListener('abort', onSignalAbort);
254
269
  try {
@@ -257,7 +272,7 @@ export class Queue extends TypedEventEmitter {
257
272
  finally {
258
273
  // remove listeners
259
274
  this.removeEventListener('completed', onQueueJobComplete);
260
- this.removeEventListener('error', onQueueError);
275
+ this.removeEventListener('failure', onQueueFailure);
261
276
  this.removeEventListener('idle', onQueueIdle);
262
277
  options?.signal?.removeEventListener('abort', onSignalAbort);
263
278
  // empty the queue for when the user has broken out of a loop early
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"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"}
@@ -17,18 +17,6 @@ export interface RateLimiterInit {
17
17
  * @default 0
18
18
  */
19
19
  blockDuration?: number;
20
- /**
21
- * Execute allowed actions evenly over duration
22
- *
23
- * @default false
24
- */
25
- execEvenly?: boolean;
26
- /**
27
- * ms, works with execEvenly=true option
28
- *
29
- * @default duration * 1000 / points
30
- */
31
- execEvenlyMinDelayMs?: number;
32
20
  /**
33
21
  * @default "rlflx"
34
22
  */
@@ -53,11 +41,9 @@ export declare class RateLimiter {
53
41
  protected points: number;
54
42
  protected duration: number;
55
43
  protected blockDuration: number;
56
- protected execEvenly: boolean;
57
- protected execEvenlyMinDelayMs: number;
58
44
  protected keyPrefix: string;
59
45
  constructor(opts?: RateLimiterInit);
60
- consume(key: string, pointsToConsume?: number, options?: GetKeySecDurationOptions): Promise<RateLimiterResult>;
46
+ consume(key: string, pointsToConsume?: number, options?: GetKeySecDurationOptions): RateLimiterResult;
61
47
  penalty(key: string, points?: number, options?: GetKeySecDurationOptions): RateLimiterResult;
62
48
  reward(key: string, points?: number, options?: GetKeySecDurationOptions): RateLimiterResult;
63
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/rate-limiter.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IAEpB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;CAC1C;AAED,qBAAa,WAAW;IACtB,SAAgB,aAAa,EAAE,aAAa,CAAA;IAC5C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAC/B,SAAS,CAAC,UAAU,EAAE,OAAO,CAAA;IAC7B,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAA;IACtC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,IAAI,GAAE,eAAoB;IAUjC,OAAO,CAAE,GAAG,EAAE,MAAM,EAAE,eAAe,GAAE,MAAU,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2B5H,OAAO,CAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,EAAE,OAAO,GAAE,wBAA6B,GAAG,iBAAiB;IASpG,MAAM,CAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,EAAE,OAAO,GAAE,wBAA6B,GAAG,iBAAiB;IASnG;;;;;OAKG;IACH,KAAK,CAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAc3D,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,iBAAiB;IAa7E,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAUhD,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,CAAC,kBAAkB;IAQ1B,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5B,QAAQ,CAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAGjC;AAED,qBAAa,aAAa;IACxB,SAAgB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;;IAMhD,MAAM,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IA0B3E,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAiCxE,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAgBhD,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO;CAc9B"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/rate-limiter.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAA;CAC1C;AAED,qBAAa,WAAW;IACtB,SAAgB,aAAa,EAAE,aAAa,CAAA;IAC5C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAA;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,IAAI,GAAE,eAAoB;IAQvC,OAAO,CAAE,GAAG,EAAE,MAAM,EAAE,eAAe,GAAE,MAAU,EAAE,OAAO,GAAE,wBAA6B,GAAG,iBAAiB;IAmB7G,OAAO,CAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,EAAE,OAAO,GAAE,wBAA6B,GAAG,iBAAiB;IASpG,MAAM,CAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,EAAE,OAAO,GAAE,wBAA6B,GAAG,iBAAiB;IASnG;;;;;OAKG;IACH,KAAK,CAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAc3D,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAU,GAAG,iBAAiB;IAa7E,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAUhD,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,OAAO,CAAC,kBAAkB;IAQ1B,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5B,QAAQ,CAAE,KAAK,EAAE,MAAM,GAAG,MAAM;CAGjC;AAED,qBAAa,aAAa;IACxB,SAAgB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;;IAMhD,MAAM,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IA0B3E,GAAG,CAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAiCxE,GAAG,CAAE,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAgBhD,MAAM,CAAE,GAAG,EAAE,MAAM,GAAG,OAAO;CAc9B"}
@@ -1,23 +1,18 @@
1
- import delay from 'delay';
2
1
  import { RateLimitError } from './errors.js';
3
2
  export class RateLimiter {
4
3
  memoryStorage;
5
4
  points;
6
5
  duration;
7
6
  blockDuration;
8
- execEvenly;
9
- execEvenlyMinDelayMs;
10
7
  keyPrefix;
11
8
  constructor(opts = {}) {
12
9
  this.points = opts.points ?? 4;
13
10
  this.duration = opts.duration ?? 1;
14
11
  this.blockDuration = opts.blockDuration ?? 0;
15
- this.execEvenly = opts.execEvenly ?? false;
16
- this.execEvenlyMinDelayMs = opts.execEvenlyMinDelayMs ?? (this.duration * 1000 / this.points);
17
12
  this.keyPrefix = opts.keyPrefix ?? 'rlflx';
18
13
  this.memoryStorage = new MemoryStorage();
19
14
  }
20
- async consume(key, pointsToConsume = 1, options = {}) {
15
+ consume(key, pointsToConsume = 1, options = {}) {
21
16
  const rlKey = this.getKey(key);
22
17
  const secDuration = this._getKeySecDuration(options);
23
18
  let res = this.memoryStorage.incrby(rlKey, pointsToConsume, secDuration);
@@ -30,14 +25,6 @@ export class RateLimiter {
30
25
  }
31
26
  throw new RateLimitError('Rate limit exceeded', res);
32
27
  }
33
- else if (this.execEvenly && res.msBeforeNext > 0 && !res.isFirstInDuration) {
34
- // Execute evenly
35
- let delayMs = Math.ceil(res.msBeforeNext / (res.remainingPoints + 2));
36
- if (delayMs < this.execEvenlyMinDelayMs) {
37
- delayMs = res.consumedPoints * this.execEvenlyMinDelayMs;
38
- }
39
- await delay(delayMs);
40
- }
41
28
  return res;
42
29
  }
43
30
  penalty(key, points = 1, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/rate-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function socketWriter(): void;
2
+ //# sourceMappingURL=socket-writer.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-writer.browser.d.ts","sourceRoot":"","sources":["../../src/socket-writer.browser.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,IAAK,IAAI,CAEpC"}
@@ -0,0 +1,4 @@
1
+ export function socketWriter() {
2
+ throw new Error('Unsupported in browsers');
3
+ }
4
+ //# sourceMappingURL=socket-writer.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-writer.browser.js","sourceRoot":"","sources":["../../src/socket-writer.browser.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY;IAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;AAC5C,CAAC"}
@@ -0,0 +1,19 @@
1
+ import stream from 'node:stream';
2
+ import { Uint8ArrayList } from 'uint8arraylist';
3
+ export interface SocketWriter {
4
+ /**
5
+ * Write any available data into the socket, if the socket's internal write
6
+ * buffer has available capacity
7
+ */
8
+ pull(): boolean;
9
+ /**
10
+ * Write data into the socket, returns false if the socket's internal write
11
+ * buffer is at capacity
12
+ */
13
+ write(data: Uint8Array | Uint8Array[] | Uint8ArrayList): boolean;
14
+ }
15
+ /**
16
+ * @deprecated delete if unused
17
+ */
18
+ export declare function socketWriter(socket: stream.Duplex): SocketWriter;
19
+ //# sourceMappingURL=socket-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-writer.d.ts","sourceRoot":"","sources":["../../src/socket-writer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,IAAK,OAAO,CAAA;IAEhB;;;OAGG;IACH,KAAK,CAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,GAAG,cAAc,GAAG,OAAO,CAAA;CAClE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,YAAY,CA2CjE"}
@@ -0,0 +1,43 @@
1
+ import stream from 'node:stream';
2
+ import { Uint8ArrayList } from 'uint8arraylist';
3
+ /**
4
+ * @deprecated delete if unused
5
+ */
6
+ export function socketWriter(socket) {
7
+ const queue = new Uint8ArrayList();
8
+ return {
9
+ pull() {
10
+ if (socket.writableNeedDrain) {
11
+ return false;
12
+ }
13
+ for (const buf of queue) {
14
+ queue.consume(buf.byteLength);
15
+ if (!socket.write(buf)) {
16
+ // continue writing after drain event. this is a synchronous operation
17
+ // so it will not interleave with the `this.writeToSocket()`
18
+ // invocation in this.sendData so all data will be sent in-order
19
+ if (queue.byteLength > 0) {
20
+ socket.once('drain', () => {
21
+ this.pull();
22
+ });
23
+ }
24
+ return false;
25
+ }
26
+ }
27
+ return true;
28
+ },
29
+ write(data) {
30
+ if (Array.isArray(data)) {
31
+ queue.appendAll(data);
32
+ }
33
+ else {
34
+ queue.append(data);
35
+ }
36
+ if (socket.writableNeedDrain) {
37
+ return false;
38
+ }
39
+ return this.pull();
40
+ }
41
+ };
42
+ }
43
+ //# sourceMappingURL=socket-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-writer.js","sourceRoot":"","sources":["../../src/socket-writer.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAgB/C;;GAEG;AACH,MAAM,UAAU,YAAY,CAAE,MAAqB;IACjD,MAAM,KAAK,GAAG,IAAI,cAAc,EAAE,CAAA;IAElC,OAAO;QACL,IAAI;YACF,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAA;YACd,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;gBAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvB,sEAAsE;oBACtE,4DAA4D;oBAC5D,gEAAgE;oBAChE,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;wBACzB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;4BACxB,IAAI,CAAC,IAAI,EAAE,CAAA;wBACb,CAAC,CAAC,CAAA;oBACJ,CAAC;oBAED,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,CAAE,IAAgD;YACrD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACpB,CAAC;YAED,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAA;YACd,CAAC;YAED,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;QACpB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { MockMultiaddrConnectionInit } from './multiaddr-connection-pair.ts';
2
+ import type { Stream, StreamOptions } from '@libp2p/interface';
3
+ export interface StreamPairOptions {
4
+ /**
5
+ * How long to wait in ms before sending messages
6
+ *
7
+ * @default 1
8
+ */
9
+ delay?: number;
10
+ /**
11
+ * If more than this many messages are sent within delay, write backpressure
12
+ * will be applied
13
+ */
14
+ capacity?: number;
15
+ /**
16
+ * Simulate having pre-negotiated a protocol by passing it here
17
+ */
18
+ protocol?: string;
19
+ /**
20
+ * Configuration options for the outbound stream
21
+ */
22
+ outbound?: StreamOptions;
23
+ /**
24
+ * Configuration options for underlying outbound connection
25
+ */
26
+ outboundConnection?: Partial<MockMultiaddrConnectionInit>;
27
+ /**
28
+ * Configuration options for the inbound stream
29
+ */
30
+ inbound?: StreamOptions;
31
+ /**
32
+ * Configuration options for underlying inbound connection
33
+ */
34
+ inboundConnection?: Partial<MockMultiaddrConnectionInit>;
35
+ }
36
+ /**
37
+ * Returns two streams connected to each other with a slight delay in sending
38
+ * messages to simulate a network
39
+ */
40
+ export declare function streamPair(opts?: StreamPairOptions): Promise<[Stream, Stream]>;
41
+ export declare function echoStream(opts?: StreamPairOptions): Promise<Stream>;
42
+ //# sourceMappingURL=stream-pair.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-pair.d.ts","sourceRoot":"","sources":["../../src/stream-pair.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE9D,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAA;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAA;IAEzD;;OAEG;IACH,OAAO,CAAC,EAAE,aAAa,CAAA;IAEvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAA;CACzD;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+BzF;AAED,wBAAsB,UAAU,CAAE,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAK/E"}
@@ -0,0 +1,40 @@
1
+ import { pEvent } from 'p-event';
2
+ import { mockMuxer } from "./mock-muxer.js";
3
+ import { multiaddrConnectionPair } from "./multiaddr-connection-pair.js";
4
+ import { echo } from "./stream-utils.js";
5
+ /**
6
+ * Returns two streams connected to each other with a slight delay in sending
7
+ * messages to simulate a network
8
+ */
9
+ export async function streamPair(opts = {}) {
10
+ const [outboundConnection, inboundConnection] = multiaddrConnectionPair({
11
+ ...opts,
12
+ outbound: opts.outboundConnection,
13
+ inbound: opts.inboundConnection
14
+ });
15
+ const localMuxer = mockMuxer({
16
+ streamOptions: opts.outbound
17
+ }).createStreamMuxer(outboundConnection);
18
+ const remoteMuxer = mockMuxer({
19
+ streamOptions: opts.inbound
20
+ }).createStreamMuxer(inboundConnection);
21
+ const [inboundStream, outboundStream] = await Promise.all([
22
+ pEvent(remoteMuxer, 'stream').then(evt => {
23
+ return evt.detail;
24
+ }),
25
+ localMuxer.createStream({
26
+ ...opts.outbound,
27
+ protocol: opts.protocol
28
+ })
29
+ ]);
30
+ return [
31
+ outboundStream,
32
+ inboundStream
33
+ ];
34
+ }
35
+ export async function echoStream(opts = {}) {
36
+ const [outbound, inbound] = await streamPair(opts);
37
+ echo(inbound);
38
+ return outbound;
39
+ }
40
+ //# sourceMappingURL=stream-pair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-pair.js","sourceRoot":"","sources":["../../src/stream-pair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AA4CxC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,OAA0B,EAAE;IAC5D,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,GAAG,uBAAuB,CAAC;QACtE,GAAG,IAAI;QACP,QAAQ,EAAE,IAAI,CAAC,kBAAkB;QACjC,OAAO,EAAE,IAAI,CAAC,iBAAiB;KAChC,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,SAAS,CAAC;QAC3B,aAAa,EAAE,IAAI,CAAC,QAAQ;KAC7B,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;IACxC,MAAM,WAAW,GAAG,SAAS,CAAC;QAC5B,aAAa,EAAE,IAAI,CAAC,OAAO;KAC5B,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAA;IAEvC,MAAM,CACJ,aAAa,EACb,cAAc,CACf,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpB,MAAM,CAAgC,WAAW,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACtE,OAAO,GAAG,CAAC,MAAM,CAAA;QACnB,CAAC,CAAC;QACF,UAAU,CAAC,YAAY,CAAC;YACtB,GAAG,IAAI,CAAC,QAAQ;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;KACH,CAAC,CAAA;IAEF,OAAO;QACL,cAAc;QACd,aAAa;KACd,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAE,OAA0B,EAAE;IAC5D,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAA;IAClD,IAAI,CAAC,OAAO,CAAC,CAAA;IAEb,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,198 @@
1
+ import { Uint8ArrayList } from 'uint8arraylist';
2
+ import type { MessageStream, Stream, AbortOptions } from '@libp2p/interface';
3
+ import type { Duplex, Transform, Sink } from 'it-stream-types';
4
+ export declare class UnwrappedError extends Error {
5
+ static name: string;
6
+ name: string;
7
+ }
8
+ /**
9
+ * The reported length of the next data message was not a positive integer
10
+ */
11
+ export declare class InvalidMessageLengthError extends Error {
12
+ name: string;
13
+ code: string;
14
+ }
15
+ /**
16
+ * The reported length of the next data message was larger than the configured
17
+ * max allowable value
18
+ */
19
+ export declare class InvalidDataLengthError extends Error {
20
+ name: string;
21
+ code: string;
22
+ }
23
+ /**
24
+ * The varint used to specify the length of the next data message contained more
25
+ * bytes than the configured max allowable value
26
+ */
27
+ export declare class InvalidDataLengthLengthError extends Error {
28
+ name: string;
29
+ code: string;
30
+ }
31
+ export interface ByteStreamOpts {
32
+ /**
33
+ * Incoming bytes are buffered until read, this setting limits how many bytes
34
+ * will be buffered.
35
+ *
36
+ * @default 4_194_304
37
+ */
38
+ maxBufferSize?: number;
39
+ /**
40
+ * If true, prevent message events propagating after they have been received,
41
+ *
42
+ * This is useful for when there are be other observers of messages and the
43
+ * caller does not wish to them to receive anything
44
+ */
45
+ stopPropagation?: boolean;
46
+ }
47
+ export interface ReadBytesOptions extends AbortOptions {
48
+ /**
49
+ * If specified, read this number of bytes from the stream
50
+ */
51
+ bytes: number;
52
+ }
53
+ export interface ByteStream<S extends MessageStream> {
54
+ /**
55
+ * Read bytes from the stream.
56
+ *
57
+ * If a required number of bytes is passed as an option, this will wait for
58
+ * the underlying stream to supply that number of bytes, throwing an
59
+ * `UnexpectedEOFError` if the stream closes before this happens.
60
+ *
61
+ * If no required number of bytes is passed, this will return `null` if the
62
+ * underlying stream closes before supplying any bytes.
63
+ */
64
+ read(options: ReadBytesOptions): Promise<Uint8ArrayList>;
65
+ read(options?: AbortOptions): Promise<Uint8ArrayList | null>;
66
+ /**
67
+ * Write the passed bytes to the stream
68
+ */
69
+ write(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Promise<void>;
70
+ /**
71
+ * After calling this method the stream can no longer be used. Any unread data
72
+ * will be emitted as a message event during the microtask queue of the
73
+ * current event loop tick.
74
+ */
75
+ unwrap(): S;
76
+ }
77
+ export declare function byteStream<T extends MessageStream>(stream: T, opts?: ByteStreamOpts): ByteStream<T>;
78
+ export interface LengthPrefixedStream<S extends MessageStream = MessageStream> {
79
+ /**
80
+ * Read the next length-prefixed number of bytes from the stream
81
+ */
82
+ read(options?: AbortOptions): Promise<Uint8ArrayList>;
83
+ /**
84
+ * Write the passed bytes to the stream prefixed by their length
85
+ */
86
+ write(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Promise<void>;
87
+ /**
88
+ * Write passed list of bytes, prefix by their individual lengths to the stream as a single write
89
+ */
90
+ writeV(input: Array<Uint8Array | Uint8ArrayList>, options?: AbortOptions): Promise<void>;
91
+ /**
92
+ * Returns the underlying stream
93
+ */
94
+ unwrap(): S;
95
+ }
96
+ export interface LengthPrefixedStreamOpts extends ByteStreamOpts {
97
+ lengthEncoder(value: number): Uint8ArrayList | Uint8Array;
98
+ lengthDecoder(data: Uint8ArrayList): number;
99
+ maxLengthLength: number;
100
+ maxDataLength: number;
101
+ }
102
+ export declare function lpStream<T extends MessageStream>(stream: T, opts?: Partial<LengthPrefixedStreamOpts>): LengthPrefixedStream<T>;
103
+ /**
104
+ * A protobuf decoder - takes a byte array and returns an object
105
+ */
106
+ export interface ProtobufDecoder<T> {
107
+ (data: Uint8Array | Uint8ArrayList): T;
108
+ }
109
+ /**
110
+ * A protobuf encoder - takes an object and returns a byte array
111
+ */
112
+ export interface ProtobufEncoder<T> {
113
+ (data: T): Uint8Array;
114
+ }
115
+ /**
116
+ * Convenience methods for working with protobuf streams
117
+ */
118
+ export interface ProtobufStream<S extends MessageStream = MessageStream> {
119
+ /**
120
+ * Read the next length-prefixed byte array from the stream and decode it as the passed protobuf format
121
+ */
122
+ read<T>(proto: {
123
+ decode: ProtobufDecoder<T>;
124
+ }, options?: AbortOptions): Promise<T>;
125
+ /**
126
+ * Encode the passed object as a protobuf message and write it's length-prefixed bytes to the stream
127
+ */
128
+ write<T>(data: T, proto: {
129
+ encode: ProtobufEncoder<T>;
130
+ }, options?: AbortOptions): Promise<void>;
131
+ /**
132
+ * Encode the passed objects as protobuf messages and write their length-prefixed bytes to the stream as a single write
133
+ */
134
+ writeV<T>(input: T[], proto: {
135
+ encode: ProtobufEncoder<T>;
136
+ }, options?: AbortOptions): Promise<void>;
137
+ /**
138
+ * Returns an object with read/write methods for operating on one specific type of protobuf message
139
+ */
140
+ pb<T>(proto: {
141
+ encode: ProtobufEncoder<T>;
142
+ decode: ProtobufDecoder<T>;
143
+ }): ProtobufMessageStream<T, S>;
144
+ /**
145
+ * Returns the underlying stream
146
+ */
147
+ unwrap(): S;
148
+ }
149
+ /**
150
+ * A message reader/writer that only uses one type of message
151
+ */
152
+ export interface ProtobufMessageStream<T, S extends MessageStream = MessageStream> {
153
+ /**
154
+ * Read a message from the stream
155
+ */
156
+ read(options?: AbortOptions): Promise<T>;
157
+ /**
158
+ * Write a message to the stream
159
+ */
160
+ write(d: T, options?: AbortOptions): Promise<void>;
161
+ /**
162
+ * Write several messages to the stream
163
+ */
164
+ writeV(d: T[], options?: AbortOptions): Promise<void>;
165
+ /**
166
+ * Unwrap the underlying protobuf stream
167
+ */
168
+ unwrap(): ProtobufStream<S>;
169
+ }
170
+ export interface ProtobufStreamOpts extends LengthPrefixedStreamOpts {
171
+ }
172
+ export declare function pbStream<T extends MessageStream = Stream>(stream: T, opts?: Partial<ProtobufStreamOpts>): ProtobufStream<T>;
173
+ export declare function echo(stream: MessageStream, options?: AbortOptions): Promise<void>;
174
+ export type PipeInput = Iterable<Uint8Array | Uint8ArrayList> | AsyncIterable<Uint8Array | Uint8ArrayList> | Stream;
175
+ export declare function messageStreamToDuplex(stream: Stream): Duplex<AsyncGenerator<Uint8ArrayList | Uint8Array>, Iterable<Uint8ArrayList | Uint8Array> | AsyncIterable<Uint8ArrayList | Uint8Array>, Promise<void>>;
176
+ interface SourceFn<A = any> {
177
+ (): A;
178
+ }
179
+ type PipeSource<A = any> = Iterable<A> | AsyncIterable<A> | SourceFn<A> | Duplex<A, any, any> | MessageStream;
180
+ type PipeTransform<A = any, B = any> = Transform<A, B> | Duplex<B, A> | MessageStream;
181
+ type PipeSink<A = any, B = any> = Sink<A, B> | Duplex<any, A, B> | MessageStream;
182
+ type PipeOutput<A> = A extends Sink<any> ? ReturnType<A> : A extends Duplex<any, any, any> ? ReturnType<A['sink']> : A extends MessageStream ? Promise<void> : never;
183
+ type SingleItemPipeOutput<A> = A extends Iterable<any> ? A : A extends AsyncIterable<any> ? A : A extends SourceFn ? ReturnType<A> : A extends Duplex<any, any, any> ? A['source'] : PipeOutput<A>;
184
+ type PipeFnInput<A> = A extends Iterable<any> ? A : A extends AsyncIterable<any> ? A : A extends SourceFn ? ReturnType<A> : A extends Transform<any, any> ? ReturnType<A> : A extends Duplex<any, any, any> ? A['source'] : never;
185
+ export declare function pipe<A extends PipeSource>(source: A): SingleItemPipeOutput<A>;
186
+ export declare function pipe<A extends PipeSource, B extends PipeSink<PipeFnInput<A>>>(source: A, sink: B): PipeOutput<B>;
187
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeSink<PipeFnInput<B>>>(source: A, transform1: B, sink: C): PipeOutput<C>;
188
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeSink<PipeFnInput<C>>>(source: A, transform1: B, transform2: C, sink: D): PipeOutput<D>;
189
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeSink<PipeFnInput<D>>>(source: A, transform1: B, transform2: C, transform3: D, sink: E): PipeOutput<E>;
190
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeSink<PipeFnInput<E>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, sink: F): PipeOutput<F>;
191
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeSink<PipeFnInput<F>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, sink: G): PipeOutput<G>;
192
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeSink<PipeFnInput<G>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, sink: H): PipeOutput<H>;
193
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeSink<PipeFnInput<H>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, sink: I): PipeOutput<I>;
194
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeTransform<PipeFnInput<H>>, J extends PipeSink<PipeFnInput<I>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, transform8: I, sink: J): PipeOutput<J>;
195
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeTransform<PipeFnInput<H>>, J extends PipeTransform<PipeFnInput<I>>, K extends PipeSink<PipeFnInput<J>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, transform8: I, transform9: J, sink: K): PipeOutput<K>;
196
+ export declare function pipe<A extends PipeSource, B extends PipeTransform<PipeFnInput<A>>, C extends PipeTransform<PipeFnInput<B>>, D extends PipeTransform<PipeFnInput<C>>, E extends PipeTransform<PipeFnInput<D>>, F extends PipeTransform<PipeFnInput<E>>, G extends PipeTransform<PipeFnInput<F>>, H extends PipeTransform<PipeFnInput<G>>, I extends PipeTransform<PipeFnInput<H>>, J extends PipeTransform<PipeFnInput<I>>, K extends PipeTransform<PipeFnInput<J>>, L extends PipeSink<PipeFnInput<K>>>(source: A, transform1: B, transform2: C, transform3: D, transform4: E, transform5: F, transform6: G, transform7: H, transform8: I, transform9: J, transform10: K, sink: L): PipeOutput<L>;
197
+ export {};
198
+ //# sourceMappingURL=stream-utils.d.ts.map