@libp2p/utils 6.7.2 → 7.0.0-55b7e5fea
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/README.md +16 -1
- package/dist/index.min.js +7 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/abstract-message-stream.d.ts +129 -0
- package/dist/src/abstract-message-stream.d.ts.map +1 -0
- package/dist/src/abstract-message-stream.js +393 -0
- package/dist/src/abstract-message-stream.js.map +1 -0
- package/dist/src/abstract-multiaddr-connection.d.ts +26 -0
- package/dist/src/abstract-multiaddr-connection.d.ts.map +1 -0
- package/dist/src/abstract-multiaddr-connection.js +66 -0
- package/dist/src/abstract-multiaddr-connection.js.map +1 -0
- package/dist/src/abstract-stream-muxer.d.ts +53 -0
- package/dist/src/abstract-stream-muxer.d.ts.map +1 -0
- package/dist/src/abstract-stream-muxer.js +169 -0
- package/dist/src/abstract-stream-muxer.js.map +1 -0
- package/dist/src/abstract-stream.d.ts +14 -130
- package/dist/src/abstract-stream.d.ts.map +1 -1
- package/dist/src/abstract-stream.js +39 -321
- package/dist/src/abstract-stream.js.map +1 -1
- package/dist/src/errors.d.ts +8 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +8 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/get-thin-waist-addresses.browser.d.ts +1 -1
- package/dist/src/get-thin-waist-addresses.browser.d.ts.map +1 -1
- package/dist/src/get-thin-waist-addresses.browser.js +4 -3
- package/dist/src/get-thin-waist-addresses.browser.js.map +1 -1
- package/dist/src/get-thin-waist-addresses.d.ts +1 -1
- package/dist/src/get-thin-waist-addresses.d.ts.map +1 -1
- package/dist/src/get-thin-waist-addresses.js +7 -9
- package/dist/src/get-thin-waist-addresses.js.map +1 -1
- package/dist/src/index.d.ts +31 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +31 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/length-prefixed-decoder.d.ts +37 -0
- package/dist/src/length-prefixed-decoder.d.ts.map +1 -0
- package/dist/src/length-prefixed-decoder.js +64 -0
- package/dist/src/length-prefixed-decoder.js.map +1 -0
- package/dist/src/message-queue.d.ts +61 -0
- package/dist/src/message-queue.d.ts.map +1 -0
- package/dist/src/message-queue.js +93 -0
- package/dist/src/message-queue.js.map +1 -0
- package/dist/src/mock-muxer.d.ts +57 -0
- package/dist/src/mock-muxer.d.ts.map +1 -0
- package/dist/src/mock-muxer.js +204 -0
- package/dist/src/mock-muxer.js.map +1 -0
- package/dist/src/mock-stream.d.ts +31 -0
- package/dist/src/mock-stream.d.ts.map +1 -0
- package/dist/src/mock-stream.js +69 -0
- package/dist/src/mock-stream.js.map +1 -0
- package/dist/src/multiaddr/get-net-config.d.ts +55 -0
- package/dist/src/multiaddr/get-net-config.d.ts.map +1 -0
- package/dist/src/multiaddr/get-net-config.js +54 -0
- package/dist/src/multiaddr/get-net-config.js.map +1 -0
- package/dist/src/multiaddr/index.d.ts +7 -0
- package/dist/src/multiaddr/index.d.ts.map +1 -0
- package/dist/src/multiaddr/index.js +7 -0
- package/dist/src/multiaddr/index.js.map +1 -0
- package/dist/src/multiaddr/is-global-unicast.d.ts.map +1 -1
- package/dist/src/multiaddr/is-global-unicast.js +8 -9
- package/dist/src/multiaddr/is-global-unicast.js.map +1 -1
- package/dist/src/multiaddr/is-link-local.d.ts.map +1 -1
- package/dist/src/multiaddr/is-link-local.js +11 -16
- package/dist/src/multiaddr/is-link-local.js.map +1 -1
- package/dist/src/multiaddr/is-loopback.d.ts.map +1 -1
- package/dist/src/multiaddr/is-loopback.js +12 -5
- package/dist/src/multiaddr/is-loopback.js.map +1 -1
- package/dist/src/multiaddr/is-network-address.d.ts.map +1 -1
- package/dist/src/multiaddr/is-network-address.js +4 -16
- package/dist/src/multiaddr/is-network-address.js.map +1 -1
- package/dist/src/multiaddr/is-private.d.ts.map +1 -1
- package/dist/src/multiaddr/is-private.js +9 -10
- package/dist/src/multiaddr/is-private.js.map +1 -1
- package/dist/src/multiaddr/utils.d.ts +5 -0
- package/dist/src/multiaddr/utils.d.ts.map +1 -0
- package/dist/src/multiaddr/utils.js +32 -0
- package/dist/src/multiaddr/utils.js.map +1 -0
- package/dist/src/multiaddr-connection-pair.d.ts +25 -0
- package/dist/src/multiaddr-connection-pair.d.ts.map +1 -0
- package/dist/src/multiaddr-connection-pair.js +103 -0
- package/dist/src/multiaddr-connection-pair.js.map +1 -0
- package/dist/src/queue/index.d.ts +3 -6
- package/dist/src/queue/index.d.ts.map +1 -1
- package/dist/src/queue/index.js +20 -4
- package/dist/src/queue/index.js.map +1 -1
- package/dist/src/rate-limiter.d.ts +1 -15
- package/dist/src/rate-limiter.d.ts.map +1 -1
- package/dist/src/rate-limiter.js +1 -14
- package/dist/src/rate-limiter.js.map +1 -1
- package/dist/src/stream-pair.d.ts +42 -0
- package/dist/src/stream-pair.d.ts.map +1 -0
- package/dist/src/stream-pair.js +40 -0
- package/dist/src/stream-pair.js.map +1 -0
- package/dist/src/stream-utils.d.ts +191 -0
- package/dist/src/stream-utils.d.ts.map +1 -0
- package/dist/src/stream-utils.js +371 -0
- package/dist/src/stream-utils.js.map +1 -0
- package/package.json +15 -162
- package/src/abstract-message-stream.ts +553 -0
- package/src/abstract-multiaddr-connection.ts +93 -0
- package/src/abstract-stream-muxer.ts +239 -0
- package/src/abstract-stream.ts +51 -464
- package/src/errors.ts +10 -0
- package/src/get-thin-waist-addresses.browser.ts +5 -4
- package/src/get-thin-waist-addresses.ts +8 -12
- package/src/index.ts +31 -1
- package/src/length-prefixed-decoder.ts +98 -0
- package/src/message-queue.ts +156 -0
- package/src/mock-muxer.ts +304 -0
- package/src/mock-stream.ts +101 -0
- package/src/multiaddr/get-net-config.ts +112 -0
- package/src/multiaddr/index.ts +6 -0
- package/src/multiaddr/is-global-unicast.ts +8 -11
- package/src/multiaddr/is-link-local.ts +11 -20
- package/src/multiaddr/is-loopback.ts +12 -7
- package/src/multiaddr/is-network-address.ts +4 -19
- package/src/multiaddr/is-private.ts +9 -14
- package/src/multiaddr/utils.ts +46 -0
- package/src/multiaddr-connection-pair.ts +147 -0
- package/src/queue/index.ts +24 -11
- package/src/rate-limiter.ts +3 -30
- package/src/stream-pair.ts +90 -0
- package/src/stream-utils.ts +866 -0
- package/dist/src/abort-options.d.ts +0 -7
- package/dist/src/abort-options.d.ts.map +0 -1
- package/dist/src/abort-options.js +0 -14
- package/dist/src/abort-options.js.map +0 -1
- package/dist/src/array-equals.d.ts +0 -24
- package/dist/src/array-equals.d.ts.map +0 -1
- package/dist/src/array-equals.js +0 -31
- package/dist/src/array-equals.js.map +0 -1
- package/dist/src/close-source.d.ts +0 -4
- package/dist/src/close-source.d.ts.map +0 -1
- package/dist/src/close-source.js +0 -11
- package/dist/src/close-source.js.map +0 -1
- package/dist/src/close.d.ts +0 -21
- package/dist/src/close.d.ts.map +0 -1
- package/dist/src/close.js +0 -49
- package/dist/src/close.js.map +0 -1
- package/dist/src/merge-options.d.ts +0 -7
- package/dist/src/merge-options.d.ts.map +0 -1
- package/dist/src/merge-options.js +0 -128
- package/dist/src/merge-options.js.map +0 -1
- package/dist/src/multiaddr/is-ip-based.d.ts +0 -6
- package/dist/src/multiaddr/is-ip-based.d.ts.map +0 -1
- package/dist/src/multiaddr/is-ip-based.js +0 -18
- package/dist/src/multiaddr/is-ip-based.js.map +0 -1
- package/dist/src/stream-to-ma-conn.d.ts +0 -23
- package/dist/src/stream-to-ma-conn.d.ts.map +0 -1
- package/dist/src/stream-to-ma-conn.js +0 -75
- package/dist/src/stream-to-ma-conn.js.map +0 -1
- package/dist/typedoc-urls.json +0 -147
- package/src/abort-options.ts +0 -20
- package/src/array-equals.ts +0 -34
- package/src/close-source.ts +0 -14
- package/src/close.ts +0 -65
- package/src/merge-options.ts +0 -161
- package/src/multiaddr/is-ip-based.ts +0 -21
- package/src/stream-to-ma-conn.ts +0 -106
package/dist/src/queue/index.js
CHANGED
|
@@ -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 {
|
|
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) {
|
|
@@ -151,7 +166,7 @@ export class Queue extends TypedEventEmitter {
|
|
|
151
166
|
if (this.size === 0) {
|
|
152
167
|
return;
|
|
153
168
|
}
|
|
154
|
-
await
|
|
169
|
+
await pEvent(this, 'empty', options);
|
|
155
170
|
}
|
|
156
171
|
/**
|
|
157
172
|
* @returns A promise that settles when the queue size is less than the given
|
|
@@ -169,7 +184,8 @@ export class Queue extends TypedEventEmitter {
|
|
|
169
184
|
if (this.size < limit) {
|
|
170
185
|
return;
|
|
171
186
|
}
|
|
172
|
-
await
|
|
187
|
+
await pEvent(this, 'next', {
|
|
188
|
+
...options,
|
|
173
189
|
filter: () => this.size < limit
|
|
174
190
|
});
|
|
175
191
|
}
|
|
@@ -186,7 +202,7 @@ export class Queue extends TypedEventEmitter {
|
|
|
186
202
|
if (this.pending === 0 && this.size === 0) {
|
|
187
203
|
return;
|
|
188
204
|
}
|
|
189
|
-
await
|
|
205
|
+
await pEvent(this, 'idle', options);
|
|
190
206
|
}
|
|
191
207
|
/**
|
|
192
208
|
* Size of the queue including running items
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/queue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,
|
|
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):
|
|
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":"
|
|
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"}
|
package/dist/src/rate-limiter.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/rate-limiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,191 @@
|
|
|
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
|
+
export interface ReadBytesOptions extends AbortOptions {
|
|
41
|
+
/**
|
|
42
|
+
* If specified, read this number of bytes from the stream
|
|
43
|
+
*/
|
|
44
|
+
bytes: number;
|
|
45
|
+
}
|
|
46
|
+
export interface ByteStream<S extends MessageStream> {
|
|
47
|
+
/**
|
|
48
|
+
* Read bytes from the stream.
|
|
49
|
+
*
|
|
50
|
+
* If a required number of bytes is passed as an option, this will wait for
|
|
51
|
+
* the underlying stream to supply that number of bytes, throwing an
|
|
52
|
+
* `UnexpectedEOFError` if the stream closes before this happens.
|
|
53
|
+
*
|
|
54
|
+
* If no required number of bytes is passed, this will return `null` if the
|
|
55
|
+
* underlying stream closes before supplying any bytes.
|
|
56
|
+
*/
|
|
57
|
+
read(options: ReadBytesOptions): Promise<Uint8ArrayList>;
|
|
58
|
+
read(options?: AbortOptions): Promise<Uint8ArrayList | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Write the passed bytes to the stream
|
|
61
|
+
*/
|
|
62
|
+
write(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* After calling this method the stream can no longer be used. Any unread data
|
|
65
|
+
* will be emitted as a message event during the microtask queue of the
|
|
66
|
+
* current event loop tick.
|
|
67
|
+
*/
|
|
68
|
+
unwrap(): S;
|
|
69
|
+
}
|
|
70
|
+
export declare function byteStream<T extends MessageStream>(stream: T, opts?: ByteStreamOpts): ByteStream<T>;
|
|
71
|
+
export interface LengthPrefixedStream<S extends MessageStream = MessageStream> {
|
|
72
|
+
/**
|
|
73
|
+
* Read the next length-prefixed number of bytes from the stream
|
|
74
|
+
*/
|
|
75
|
+
read(options?: AbortOptions): Promise<Uint8ArrayList>;
|
|
76
|
+
/**
|
|
77
|
+
* Write the passed bytes to the stream prefixed by their length
|
|
78
|
+
*/
|
|
79
|
+
write(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Write passed list of bytes, prefix by their individual lengths to the stream as a single write
|
|
82
|
+
*/
|
|
83
|
+
writeV(input: Array<Uint8Array | Uint8ArrayList>, options?: AbortOptions): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Returns the underlying stream
|
|
86
|
+
*/
|
|
87
|
+
unwrap(): S;
|
|
88
|
+
}
|
|
89
|
+
export interface LengthPrefixedStreamOpts extends ByteStreamOpts {
|
|
90
|
+
lengthEncoder(value: number): Uint8ArrayList | Uint8Array;
|
|
91
|
+
lengthDecoder(data: Uint8ArrayList): number;
|
|
92
|
+
maxLengthLength: number;
|
|
93
|
+
maxDataLength: number;
|
|
94
|
+
}
|
|
95
|
+
export declare function lpStream<T extends MessageStream>(stream: T, opts?: Partial<LengthPrefixedStreamOpts>): LengthPrefixedStream<T>;
|
|
96
|
+
/**
|
|
97
|
+
* A protobuf decoder - takes a byte array and returns an object
|
|
98
|
+
*/
|
|
99
|
+
export interface ProtobufDecoder<T> {
|
|
100
|
+
(data: Uint8Array | Uint8ArrayList): T;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* A protobuf encoder - takes an object and returns a byte array
|
|
104
|
+
*/
|
|
105
|
+
export interface ProtobufEncoder<T> {
|
|
106
|
+
(data: T): Uint8Array;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Convenience methods for working with protobuf streams
|
|
110
|
+
*/
|
|
111
|
+
export interface ProtobufStream<S extends MessageStream = MessageStream> {
|
|
112
|
+
/**
|
|
113
|
+
* Read the next length-prefixed byte array from the stream and decode it as the passed protobuf format
|
|
114
|
+
*/
|
|
115
|
+
read<T>(proto: {
|
|
116
|
+
decode: ProtobufDecoder<T>;
|
|
117
|
+
}, options?: AbortOptions): Promise<T>;
|
|
118
|
+
/**
|
|
119
|
+
* Encode the passed object as a protobuf message and write it's length-prefixed bytes to the stream
|
|
120
|
+
*/
|
|
121
|
+
write<T>(data: T, proto: {
|
|
122
|
+
encode: ProtobufEncoder<T>;
|
|
123
|
+
}, options?: AbortOptions): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Encode the passed objects as protobuf messages and write their length-prefixed bytes to the stream as a single write
|
|
126
|
+
*/
|
|
127
|
+
writeV<T>(input: T[], proto: {
|
|
128
|
+
encode: ProtobufEncoder<T>;
|
|
129
|
+
}, options?: AbortOptions): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Returns an object with read/write methods for operating on one specific type of protobuf message
|
|
132
|
+
*/
|
|
133
|
+
pb<T>(proto: {
|
|
134
|
+
encode: ProtobufEncoder<T>;
|
|
135
|
+
decode: ProtobufDecoder<T>;
|
|
136
|
+
}): ProtobufMessageStream<T, S>;
|
|
137
|
+
/**
|
|
138
|
+
* Returns the underlying stream
|
|
139
|
+
*/
|
|
140
|
+
unwrap(): S;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* A message reader/writer that only uses one type of message
|
|
144
|
+
*/
|
|
145
|
+
export interface ProtobufMessageStream<T, S extends MessageStream = MessageStream> {
|
|
146
|
+
/**
|
|
147
|
+
* Read a message from the stream
|
|
148
|
+
*/
|
|
149
|
+
read(options?: AbortOptions): Promise<T>;
|
|
150
|
+
/**
|
|
151
|
+
* Write a message to the stream
|
|
152
|
+
*/
|
|
153
|
+
write(d: T, options?: AbortOptions): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Write several messages to the stream
|
|
156
|
+
*/
|
|
157
|
+
writeV(d: T[], options?: AbortOptions): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* Unwrap the underlying protobuf stream
|
|
160
|
+
*/
|
|
161
|
+
unwrap(): ProtobufStream<S>;
|
|
162
|
+
}
|
|
163
|
+
export interface ProtobufStreamOpts extends LengthPrefixedStreamOpts {
|
|
164
|
+
}
|
|
165
|
+
export declare function pbStream<T extends MessageStream = Stream>(stream: T, opts?: Partial<ProtobufStreamOpts>): ProtobufStream<T>;
|
|
166
|
+
export declare function echo(stream: MessageStream, options?: AbortOptions): Promise<void>;
|
|
167
|
+
export type PipeInput = Iterable<Uint8Array | Uint8ArrayList> | AsyncIterable<Uint8Array | Uint8ArrayList> | Stream;
|
|
168
|
+
export declare function messageStreamToDuplex(stream: Stream): Duplex<AsyncGenerator<Uint8ArrayList | Uint8Array>, Iterable<Uint8ArrayList | Uint8Array> | AsyncIterable<Uint8ArrayList | Uint8Array>, Promise<void>>;
|
|
169
|
+
interface SourceFn<A = any> {
|
|
170
|
+
(): A;
|
|
171
|
+
}
|
|
172
|
+
type PipeSource<A = any> = Iterable<A> | AsyncIterable<A> | SourceFn<A> | Duplex<A, any, any> | MessageStream;
|
|
173
|
+
type PipeTransform<A = any, B = any> = Transform<A, B> | Duplex<B, A> | MessageStream;
|
|
174
|
+
type PipeSink<A = any, B = any> = Sink<A, B> | Duplex<any, A, B> | MessageStream;
|
|
175
|
+
type PipeOutput<A> = A extends Sink<any> ? ReturnType<A> : A extends Duplex<any, any, any> ? ReturnType<A['sink']> : A extends MessageStream ? Promise<void> : never;
|
|
176
|
+
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>;
|
|
177
|
+
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;
|
|
178
|
+
export declare function pipe<A extends PipeSource>(source: A): SingleItemPipeOutput<A>;
|
|
179
|
+
export declare function pipe<A extends PipeSource, B extends PipeSink<PipeFnInput<A>>>(source: A, sink: B): PipeOutput<B>;
|
|
180
|
+
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>;
|
|
181
|
+
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>;
|
|
182
|
+
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>;
|
|
183
|
+
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>;
|
|
184
|
+
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>;
|
|
185
|
+
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>;
|
|
186
|
+
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>;
|
|
187
|
+
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>;
|
|
188
|
+
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>;
|
|
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 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>;
|
|
190
|
+
export {};
|
|
191
|
+
//# sourceMappingURL=stream-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/stream-utils.ts"],"names":[],"mappings":"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"}
|