@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
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import { StreamMessageEvent, StreamCloseEvent, InvalidParametersError } from '@libp2p/interface';
|
|
2
|
+
import { pipe as itPipe } from 'it-pipe';
|
|
3
|
+
import { pushable } from 'it-pushable';
|
|
4
|
+
import { pEvent } from 'p-event';
|
|
5
|
+
import { raceSignal } from 'race-signal';
|
|
6
|
+
import * as varint from 'uint8-varint';
|
|
7
|
+
import { Uint8ArrayList } from 'uint8arraylist';
|
|
8
|
+
import { UnexpectedEOFError } from './errors.js';
|
|
9
|
+
const DEFAULT_MAX_BUFFER_SIZE = 4_194_304;
|
|
10
|
+
export class UnwrappedError extends Error {
|
|
11
|
+
static name = 'UnwrappedError';
|
|
12
|
+
name = 'UnwrappedError';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The reported length of the next data message was not a positive integer
|
|
16
|
+
*/
|
|
17
|
+
export class InvalidMessageLengthError extends Error {
|
|
18
|
+
name = 'InvalidMessageLengthError';
|
|
19
|
+
code = 'ERR_INVALID_MSG_LENGTH';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The reported length of the next data message was larger than the configured
|
|
23
|
+
* max allowable value
|
|
24
|
+
*/
|
|
25
|
+
export class InvalidDataLengthError extends Error {
|
|
26
|
+
name = 'InvalidDataLengthError';
|
|
27
|
+
code = 'ERR_MSG_DATA_TOO_LONG';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The varint used to specify the length of the next data message contained more
|
|
31
|
+
* bytes than the configured max allowable value
|
|
32
|
+
*/
|
|
33
|
+
export class InvalidDataLengthLengthError extends Error {
|
|
34
|
+
name = 'InvalidDataLengthLengthError';
|
|
35
|
+
code = 'ERR_MSG_LENGTH_TOO_LONG';
|
|
36
|
+
}
|
|
37
|
+
function isStream(obj) {
|
|
38
|
+
return typeof obj?.closeRead === 'function';
|
|
39
|
+
}
|
|
40
|
+
function isMultiaddrConnection(obj) {
|
|
41
|
+
return typeof obj?.close === 'function';
|
|
42
|
+
}
|
|
43
|
+
function isEOF(obj) {
|
|
44
|
+
if (isStream(obj)) {
|
|
45
|
+
return obj.readStatus === 'closing' || obj.readStatus === 'closed';
|
|
46
|
+
}
|
|
47
|
+
if (isMultiaddrConnection(obj)) {
|
|
48
|
+
return obj.status !== 'open';
|
|
49
|
+
}
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
function isValid(obj) {
|
|
53
|
+
return obj?.addEventListener != null && obj?.removeEventListener != null && obj?.send != null && obj?.push != null && obj?.log != null;
|
|
54
|
+
}
|
|
55
|
+
export function byteStream(stream, opts) {
|
|
56
|
+
const maxBufferSize = opts?.maxBufferSize ?? DEFAULT_MAX_BUFFER_SIZE;
|
|
57
|
+
const readBuffer = new Uint8ArrayList();
|
|
58
|
+
let hasBytes;
|
|
59
|
+
let unwrapped = false;
|
|
60
|
+
if (!isValid(stream)) {
|
|
61
|
+
throw new InvalidParametersError('Argument should be a Stream or a Multiaddr');
|
|
62
|
+
}
|
|
63
|
+
const byteStreamOnMessageListener = (evt) => {
|
|
64
|
+
readBuffer.append(evt.data);
|
|
65
|
+
if (readBuffer.byteLength > maxBufferSize) {
|
|
66
|
+
const readBufferSize = readBuffer.byteLength;
|
|
67
|
+
readBuffer.consume(readBuffer.byteLength);
|
|
68
|
+
hasBytes?.reject(new Error(`Read buffer overflow - ${readBufferSize} > ${maxBufferSize}`));
|
|
69
|
+
}
|
|
70
|
+
hasBytes?.resolve();
|
|
71
|
+
};
|
|
72
|
+
stream.addEventListener('message', byteStreamOnMessageListener);
|
|
73
|
+
const byteStreamOnCloseListener = (evt) => {
|
|
74
|
+
if (evt.error != null) {
|
|
75
|
+
hasBytes?.reject(evt.error);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
hasBytes?.resolve();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
stream.addEventListener('close', byteStreamOnCloseListener);
|
|
82
|
+
const byteStreamOnRemoteCloseWrite = () => {
|
|
83
|
+
hasBytes?.resolve();
|
|
84
|
+
};
|
|
85
|
+
stream.addEventListener('remoteCloseWrite', byteStreamOnRemoteCloseWrite);
|
|
86
|
+
const byteStream = {
|
|
87
|
+
readBuffer,
|
|
88
|
+
// @ts-expect-error options type prevents type inference
|
|
89
|
+
async read(options) {
|
|
90
|
+
if (unwrapped === true) {
|
|
91
|
+
throw new UnwrappedError('Stream was unwrapped');
|
|
92
|
+
}
|
|
93
|
+
if (isEOF(stream)) {
|
|
94
|
+
if (options?.bytes == null) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
if (readBuffer.byteLength < options.bytes) {
|
|
98
|
+
stream.log.error('closed after reading %d/%d bytes', readBuffer.byteLength, options.bytes);
|
|
99
|
+
throw new UnexpectedEOFError(`Unexpected EOF - stream closed after reading ${readBuffer.byteLength}/${options.bytes} bytes`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
const bytesToRead = options?.bytes ?? 1;
|
|
103
|
+
hasBytes = Promise.withResolvers();
|
|
104
|
+
while (true) {
|
|
105
|
+
if (readBuffer.byteLength >= bytesToRead) {
|
|
106
|
+
// if we are about to exit the loop this promise will not be awaited
|
|
107
|
+
// so resolve it to prevent and unhandled promise rejections that may
|
|
108
|
+
// occur
|
|
109
|
+
hasBytes.resolve();
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
await raceSignal(hasBytes.promise, options?.signal);
|
|
113
|
+
if (isEOF(stream)) {
|
|
114
|
+
if (readBuffer.byteLength === 0 && options?.bytes == null) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
hasBytes = Promise.withResolvers();
|
|
120
|
+
}
|
|
121
|
+
const toRead = options?.bytes ?? readBuffer.byteLength;
|
|
122
|
+
if (readBuffer.byteLength < toRead) {
|
|
123
|
+
if (isEOF(stream)) {
|
|
124
|
+
stream.log.error('closed while reading %d/%d bytes', readBuffer.byteLength, toRead);
|
|
125
|
+
throw new UnexpectedEOFError(`Unexpected EOF - stream closed while reading ${readBuffer.byteLength}/${toRead} bytes`);
|
|
126
|
+
}
|
|
127
|
+
return byteStream.read(options);
|
|
128
|
+
}
|
|
129
|
+
const output = readBuffer.sublist(0, toRead);
|
|
130
|
+
readBuffer.consume(toRead);
|
|
131
|
+
return output;
|
|
132
|
+
},
|
|
133
|
+
async write(data, options) {
|
|
134
|
+
if (unwrapped === true) {
|
|
135
|
+
throw new UnwrappedError('Stream was unwrapped');
|
|
136
|
+
}
|
|
137
|
+
if (!stream.send(data)) {
|
|
138
|
+
await pEvent(stream, 'drain', {
|
|
139
|
+
signal: options?.signal,
|
|
140
|
+
rejectionEvents: ['close']
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
unwrap() {
|
|
145
|
+
// already unwrapped, just return the original stream
|
|
146
|
+
if (unwrapped) {
|
|
147
|
+
return stream;
|
|
148
|
+
}
|
|
149
|
+
// only unwrap once
|
|
150
|
+
unwrapped = true;
|
|
151
|
+
stream.removeEventListener('message', byteStreamOnMessageListener);
|
|
152
|
+
stream.removeEventListener('close', byteStreamOnCloseListener);
|
|
153
|
+
stream.removeEventListener('remoteCloseWrite', byteStreamOnRemoteCloseWrite);
|
|
154
|
+
// emit any unread data
|
|
155
|
+
if (readBuffer.byteLength > 0) {
|
|
156
|
+
stream.log('stream unwrapped with %d unread bytes', readBuffer.byteLength);
|
|
157
|
+
stream.push(readBuffer);
|
|
158
|
+
}
|
|
159
|
+
return stream;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
return byteStream;
|
|
163
|
+
}
|
|
164
|
+
export function lpStream(stream, opts = {}) {
|
|
165
|
+
const bytes = byteStream(stream, opts);
|
|
166
|
+
if (opts.maxDataLength != null && opts.maxLengthLength == null) {
|
|
167
|
+
// if max data length is set but max length length is not, calculate the
|
|
168
|
+
// max length length needed to encode max data length
|
|
169
|
+
opts.maxLengthLength = varint.encodingLength(opts.maxDataLength);
|
|
170
|
+
}
|
|
171
|
+
const decodeLength = opts?.lengthDecoder ?? varint.decode;
|
|
172
|
+
const encodeLength = opts?.lengthEncoder ?? varint.encode;
|
|
173
|
+
const lpStream = {
|
|
174
|
+
async read(options) {
|
|
175
|
+
let dataLength = -1;
|
|
176
|
+
const lengthBuffer = new Uint8ArrayList();
|
|
177
|
+
while (true) {
|
|
178
|
+
// read one byte at a time until we can decode a varint
|
|
179
|
+
const buf = await bytes.read({
|
|
180
|
+
...options,
|
|
181
|
+
bytes: 1
|
|
182
|
+
});
|
|
183
|
+
// the underlying resource closed gracefully
|
|
184
|
+
if (buf == null) {
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
// append byte and try to decode
|
|
188
|
+
lengthBuffer.append(buf);
|
|
189
|
+
try {
|
|
190
|
+
dataLength = decodeLength(lengthBuffer);
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
if (err instanceof RangeError) {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
throw err;
|
|
197
|
+
}
|
|
198
|
+
if (dataLength < 0) {
|
|
199
|
+
throw new InvalidMessageLengthError('Invalid message length');
|
|
200
|
+
}
|
|
201
|
+
if (opts?.maxLengthLength != null && lengthBuffer.byteLength > opts.maxLengthLength) {
|
|
202
|
+
throw new InvalidDataLengthLengthError(`Message length length too long - ${lengthBuffer.byteLength} > ${opts.maxLengthLength}`);
|
|
203
|
+
}
|
|
204
|
+
if (dataLength > -1) {
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
if (opts?.maxDataLength != null && dataLength > opts.maxDataLength) {
|
|
209
|
+
throw new InvalidDataLengthError(`Message length too long - ${dataLength} > ${opts.maxDataLength}`);
|
|
210
|
+
}
|
|
211
|
+
const buf = await bytes.read({
|
|
212
|
+
...options,
|
|
213
|
+
bytes: dataLength
|
|
214
|
+
});
|
|
215
|
+
if (buf == null) {
|
|
216
|
+
stream.log.error('tried to read %d bytes but the stream closed', dataLength);
|
|
217
|
+
throw new UnexpectedEOFError(`Unexpected EOF - tried to read ${dataLength} bytes but the stream closed`);
|
|
218
|
+
}
|
|
219
|
+
if (buf.byteLength !== dataLength) {
|
|
220
|
+
stream.log.error('read %d/%d bytes before the stream closed', buf.byteLength, dataLength);
|
|
221
|
+
throw new UnexpectedEOFError(`Unexpected EOF - read ${buf.byteLength}/${dataLength} bytes before the stream closed`);
|
|
222
|
+
}
|
|
223
|
+
return buf;
|
|
224
|
+
},
|
|
225
|
+
async write(data, options) {
|
|
226
|
+
// encode, write
|
|
227
|
+
await bytes.write(new Uint8ArrayList(encodeLength(data.byteLength), data), options);
|
|
228
|
+
},
|
|
229
|
+
async writeV(data, options) {
|
|
230
|
+
const list = new Uint8ArrayList(...data.flatMap(buf => ([encodeLength(buf.byteLength), buf])));
|
|
231
|
+
// encode, write
|
|
232
|
+
await bytes.write(list, options);
|
|
233
|
+
},
|
|
234
|
+
unwrap() {
|
|
235
|
+
return bytes.unwrap();
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
return lpStream;
|
|
239
|
+
}
|
|
240
|
+
export function pbStream(stream, opts) {
|
|
241
|
+
const lp = lpStream(stream, opts);
|
|
242
|
+
const pbStream = {
|
|
243
|
+
read: async (proto, options) => {
|
|
244
|
+
// readLP, decode
|
|
245
|
+
const value = await lp.read(options);
|
|
246
|
+
return proto.decode(value);
|
|
247
|
+
},
|
|
248
|
+
write: async (message, proto, options) => {
|
|
249
|
+
// encode, writeLP
|
|
250
|
+
await lp.write(proto.encode(message), options);
|
|
251
|
+
},
|
|
252
|
+
writeV: async (messages, proto, options) => {
|
|
253
|
+
// encode, writeLP
|
|
254
|
+
await lp.writeV(messages.map(message => proto.encode(message)), options);
|
|
255
|
+
},
|
|
256
|
+
pb: (proto) => {
|
|
257
|
+
return {
|
|
258
|
+
read: async (options) => pbStream.read(proto, options),
|
|
259
|
+
write: async (d, options) => pbStream.write(d, proto, options),
|
|
260
|
+
writeV: async (d, options) => pbStream.writeV(d, proto, options),
|
|
261
|
+
unwrap: () => pbStream
|
|
262
|
+
};
|
|
263
|
+
},
|
|
264
|
+
unwrap: () => {
|
|
265
|
+
return lp.unwrap();
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
return pbStream;
|
|
269
|
+
}
|
|
270
|
+
export async function echo(stream, options) {
|
|
271
|
+
const log = stream.log.newScope('echo');
|
|
272
|
+
const start = Date.now();
|
|
273
|
+
let bytes = 0;
|
|
274
|
+
try {
|
|
275
|
+
for await (const buf of stream) {
|
|
276
|
+
bytes += buf.byteLength;
|
|
277
|
+
if (!stream.send(buf)) {
|
|
278
|
+
stream.pause();
|
|
279
|
+
await pEvent(stream, 'drain', {
|
|
280
|
+
rejectionEvents: [
|
|
281
|
+
'close'
|
|
282
|
+
],
|
|
283
|
+
...options
|
|
284
|
+
});
|
|
285
|
+
stream.resume();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
log('echoed %d bytes in %dms', bytes, Date.now() - start);
|
|
289
|
+
await stream.close(options);
|
|
290
|
+
}
|
|
291
|
+
catch (err) {
|
|
292
|
+
stream.abort(err);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function isMessageStream(obj) {
|
|
296
|
+
return obj?.addEventListener != null;
|
|
297
|
+
}
|
|
298
|
+
export function messageStreamToDuplex(stream) {
|
|
299
|
+
const source = pushable();
|
|
300
|
+
let onError;
|
|
301
|
+
const onMessage = (evt) => {
|
|
302
|
+
source.push(evt.data);
|
|
303
|
+
};
|
|
304
|
+
const onRemoteCloseWrite = () => {
|
|
305
|
+
source.end();
|
|
306
|
+
stream.removeEventListener('message', onMessage);
|
|
307
|
+
stream.removeEventListener('close', onClose);
|
|
308
|
+
stream.removeEventListener('remoteCloseWrite', onRemoteCloseWrite);
|
|
309
|
+
};
|
|
310
|
+
const onClose = (evt) => {
|
|
311
|
+
source.end(evt.error);
|
|
312
|
+
if (evt.error != null) {
|
|
313
|
+
onError?.reject(evt.error);
|
|
314
|
+
}
|
|
315
|
+
stream.removeEventListener('message', onMessage);
|
|
316
|
+
stream.removeEventListener('close', onClose);
|
|
317
|
+
stream.removeEventListener('remoteCloseWrite', onRemoteCloseWrite);
|
|
318
|
+
};
|
|
319
|
+
stream.addEventListener('message', onMessage);
|
|
320
|
+
stream.addEventListener('close', onClose, {
|
|
321
|
+
once: true
|
|
322
|
+
});
|
|
323
|
+
stream.addEventListener('remoteCloseWrite', onRemoteCloseWrite, {
|
|
324
|
+
once: true
|
|
325
|
+
});
|
|
326
|
+
return {
|
|
327
|
+
source,
|
|
328
|
+
async sink(source) {
|
|
329
|
+
async function* toGenerator() {
|
|
330
|
+
yield* source;
|
|
331
|
+
}
|
|
332
|
+
const gen = toGenerator();
|
|
333
|
+
while (true) {
|
|
334
|
+
onError = Promise.withResolvers();
|
|
335
|
+
const { done, value } = await Promise.race([
|
|
336
|
+
gen.next(),
|
|
337
|
+
onError.promise
|
|
338
|
+
]);
|
|
339
|
+
if (stream.writeStatus === 'closing' || stream.writeStatus === 'closed') {
|
|
340
|
+
break;
|
|
341
|
+
}
|
|
342
|
+
if (value != null) {
|
|
343
|
+
if (!stream.send(value)) {
|
|
344
|
+
await Promise.race([
|
|
345
|
+
pEvent(stream, 'drain', {
|
|
346
|
+
rejectionEvents: [
|
|
347
|
+
'close'
|
|
348
|
+
]
|
|
349
|
+
})
|
|
350
|
+
]);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
if (done === true) {
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
await stream.close();
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
export function pipe(...input) {
|
|
362
|
+
const sources = input.map(source => {
|
|
363
|
+
if (isMessageStream(source)) {
|
|
364
|
+
return messageStreamToDuplex(source);
|
|
365
|
+
}
|
|
366
|
+
return source;
|
|
367
|
+
});
|
|
368
|
+
// @ts-expect-error it-pipe types say args cannot be spread like this
|
|
369
|
+
return itPipe(...sources);
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=stream-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/stream-utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/utils",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0-55b7e5fea",
|
|
4
4
|
"description": "Package to aggregate shared logic and dependencies for the libp2p ecosystem",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/utils#readme",
|
|
@@ -17,22 +17,6 @@
|
|
|
17
17
|
},
|
|
18
18
|
"type": "module",
|
|
19
19
|
"types": "./dist/src/index.d.ts",
|
|
20
|
-
"typesVersions": {
|
|
21
|
-
"*": {
|
|
22
|
-
"*": [
|
|
23
|
-
"*",
|
|
24
|
-
"dist/*",
|
|
25
|
-
"dist/src/*",
|
|
26
|
-
"dist/src/*/index"
|
|
27
|
-
],
|
|
28
|
-
"src/*": [
|
|
29
|
-
"*",
|
|
30
|
-
"dist/*",
|
|
31
|
-
"dist/src/*",
|
|
32
|
-
"dist/src/*/index"
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
20
|
"files": [
|
|
37
21
|
"src",
|
|
38
22
|
"dist",
|
|
@@ -43,135 +27,6 @@
|
|
|
43
27
|
".": {
|
|
44
28
|
"types": "./dist/src/index.d.ts",
|
|
45
29
|
"import": "./dist/src/index.js"
|
|
46
|
-
},
|
|
47
|
-
"./abort-options": {
|
|
48
|
-
"types": "./dist/src/abort-options.d.ts",
|
|
49
|
-
"import": "./dist/src/abort-options.js"
|
|
50
|
-
},
|
|
51
|
-
"./abstract-stream": {
|
|
52
|
-
"types": "./dist/src/abstract-stream.d.ts",
|
|
53
|
-
"import": "./dist/src/abstract-stream.js"
|
|
54
|
-
},
|
|
55
|
-
"./adaptive-timeout": {
|
|
56
|
-
"types": "./dist/src/adaptive-timeout.d.ts",
|
|
57
|
-
"import": "./dist/src/adaptive-timeout.js"
|
|
58
|
-
},
|
|
59
|
-
"./array-equals": {
|
|
60
|
-
"types": "./dist/src/array-equals.d.ts",
|
|
61
|
-
"import": "./dist/src/array-equals.js"
|
|
62
|
-
},
|
|
63
|
-
"./close": {
|
|
64
|
-
"types": "./dist/src/close.d.ts",
|
|
65
|
-
"import": "./dist/src/close.js"
|
|
66
|
-
},
|
|
67
|
-
"./close-source": {
|
|
68
|
-
"types": "./dist/src/close-source.d.ts",
|
|
69
|
-
"import": "./dist/src/close-source.js"
|
|
70
|
-
},
|
|
71
|
-
"./debounce": {
|
|
72
|
-
"types": "./dist/src/debounce.d.ts",
|
|
73
|
-
"import": "./dist/src/debounce.js"
|
|
74
|
-
},
|
|
75
|
-
"./filters": {
|
|
76
|
-
"types": "./dist/src/filters/index.d.ts",
|
|
77
|
-
"import": "./dist/src/filters/index.js"
|
|
78
|
-
},
|
|
79
|
-
"./get-thin-waist-addresses": {
|
|
80
|
-
"types": "./dist/src/get-thin-waist-addresses.d.ts",
|
|
81
|
-
"browser": "./dist/src/get-thin-waist-addresses.browser.js",
|
|
82
|
-
"import": "./dist/src/get-thin-waist-addresses.js"
|
|
83
|
-
},
|
|
84
|
-
"./global-unicast-ip": {
|
|
85
|
-
"types": "./dist/src/global-unicast-ip.d.ts",
|
|
86
|
-
"import": "./dist/src/global-unicast-ip.js"
|
|
87
|
-
},
|
|
88
|
-
"./ip-port-to-multiaddr": {
|
|
89
|
-
"types": "./dist/src/ip-port-to-multiaddr.d.ts",
|
|
90
|
-
"import": "./dist/src/ip-port-to-multiaddr.js"
|
|
91
|
-
},
|
|
92
|
-
"./is-async-generator": {
|
|
93
|
-
"types": "./dist/src/is-async-generator.d.ts",
|
|
94
|
-
"import": "./dist/src/is-async-generator.js"
|
|
95
|
-
},
|
|
96
|
-
"./is-generator": {
|
|
97
|
-
"types": "./dist/src/is-generator.d.ts",
|
|
98
|
-
"import": "./dist/src/is-generator.js"
|
|
99
|
-
},
|
|
100
|
-
"./is-promise": {
|
|
101
|
-
"types": "./dist/src/is-promise.d.ts",
|
|
102
|
-
"import": "./dist/src/is-promise.js"
|
|
103
|
-
},
|
|
104
|
-
"./link-local-ip": {
|
|
105
|
-
"types": "./dist/src/link-local-ip.d.ts",
|
|
106
|
-
"import": "./dist/src/link-local-ip.js"
|
|
107
|
-
},
|
|
108
|
-
"./merge-options": {
|
|
109
|
-
"types": "./dist/src/merge-options.d.ts",
|
|
110
|
-
"import": "./dist/src/merge-options.js"
|
|
111
|
-
},
|
|
112
|
-
"./moving-average": {
|
|
113
|
-
"types": "./dist/src/moving-average.d.ts",
|
|
114
|
-
"import": "./dist/src/moving-average.js"
|
|
115
|
-
},
|
|
116
|
-
"./multiaddr/is-global-unicast": {
|
|
117
|
-
"types": "./dist/src/multiaddr/is-global-unicast.d.ts",
|
|
118
|
-
"import": "./dist/src/multiaddr/is-global-unicast.js"
|
|
119
|
-
},
|
|
120
|
-
"./multiaddr/is-ip-based": {
|
|
121
|
-
"types": "./dist/src/multiaddr/is-ip-based.d.ts",
|
|
122
|
-
"import": "./dist/src/multiaddr/is-ip-based.js"
|
|
123
|
-
},
|
|
124
|
-
"./multiaddr/is-link-local": {
|
|
125
|
-
"types": "./dist/src/multiaddr/is-link-local.d.ts",
|
|
126
|
-
"import": "./dist/src/multiaddr/is-link-local.js"
|
|
127
|
-
},
|
|
128
|
-
"./multiaddr/is-loopback": {
|
|
129
|
-
"types": "./dist/src/multiaddr/is-loopback.d.ts",
|
|
130
|
-
"import": "./dist/src/multiaddr/is-loopback.js"
|
|
131
|
-
},
|
|
132
|
-
"./multiaddr/is-network-address": {
|
|
133
|
-
"types": "./dist/src/multiaddr/is-network-address.d.ts",
|
|
134
|
-
"import": "./dist/src/multiaddr/is-network-address.js"
|
|
135
|
-
},
|
|
136
|
-
"./multiaddr/is-private": {
|
|
137
|
-
"types": "./dist/src/multiaddr/is-private.d.ts",
|
|
138
|
-
"import": "./dist/src/multiaddr/is-private.js"
|
|
139
|
-
},
|
|
140
|
-
"./peer-queue": {
|
|
141
|
-
"types": "./dist/src/peer-queue.d.ts",
|
|
142
|
-
"import": "./dist/src/peer-queue.js"
|
|
143
|
-
},
|
|
144
|
-
"./priority-queue": {
|
|
145
|
-
"types": "./dist/src/priority-queue.d.ts",
|
|
146
|
-
"import": "./dist/src/priority-queue.js"
|
|
147
|
-
},
|
|
148
|
-
"./private-ip": {
|
|
149
|
-
"types": "./dist/src/private-ip.d.ts",
|
|
150
|
-
"import": "./dist/src/private-ip.js"
|
|
151
|
-
},
|
|
152
|
-
"./queue": {
|
|
153
|
-
"types": "./dist/src/queue/index.d.ts",
|
|
154
|
-
"import": "./dist/src/queue/index.js"
|
|
155
|
-
},
|
|
156
|
-
"./rate-limiter": {
|
|
157
|
-
"types": "./dist/src/rate-limiter.d.ts",
|
|
158
|
-
"import": "./dist/src/rate-limiter.js"
|
|
159
|
-
},
|
|
160
|
-
"./repeating-task": {
|
|
161
|
-
"types": "./dist/src/repeating-task.d.ts",
|
|
162
|
-
"import": "./dist/src/repeating-task.js"
|
|
163
|
-
},
|
|
164
|
-
"./stream-to-ma-conn": {
|
|
165
|
-
"types": "./dist/src/stream-to-ma-conn.d.ts",
|
|
166
|
-
"import": "./dist/src/stream-to-ma-conn.js"
|
|
167
|
-
},
|
|
168
|
-
"./tracked-list": {
|
|
169
|
-
"types": "./dist/src/tracked-list.d.ts",
|
|
170
|
-
"import": "./dist/src/tracked-list.js"
|
|
171
|
-
},
|
|
172
|
-
"./tracked-map": {
|
|
173
|
-
"types": "./dist/src/tracked-map.d.ts",
|
|
174
|
-
"import": "./dist/src/tracked-map.js"
|
|
175
30
|
}
|
|
176
31
|
},
|
|
177
32
|
"scripts": {
|
|
@@ -191,38 +46,36 @@
|
|
|
191
46
|
"dependencies": {
|
|
192
47
|
"@chainsafe/is-ip": "^2.1.0",
|
|
193
48
|
"@chainsafe/netmask": "^2.0.0",
|
|
194
|
-
"@libp2p/crypto": "
|
|
195
|
-
"@libp2p/interface": "
|
|
196
|
-
"@libp2p/logger": "
|
|
197
|
-
"@multiformats/multiaddr": "^
|
|
49
|
+
"@libp2p/crypto": "5.1.9-55b7e5fea",
|
|
50
|
+
"@libp2p/interface": "3.0.0-55b7e5fea",
|
|
51
|
+
"@libp2p/logger": "6.0.0-55b7e5fea",
|
|
52
|
+
"@multiformats/multiaddr": "^13.0.1",
|
|
198
53
|
"@sindresorhus/fnv1a": "^3.1.0",
|
|
199
54
|
"any-signal": "^4.1.1",
|
|
55
|
+
"cborg": "^4.2.14",
|
|
200
56
|
"delay": "^6.0.0",
|
|
201
|
-
"get-iterator": "^2.0.1",
|
|
202
57
|
"is-loopback-addr": "^2.0.2",
|
|
203
|
-
"
|
|
204
|
-
"it-foreach": "^2.1.3",
|
|
58
|
+
"it-length-prefixed": "^10.0.1",
|
|
205
59
|
"it-pipe": "^3.0.1",
|
|
206
60
|
"it-pushable": "^3.2.3",
|
|
207
61
|
"it-stream-types": "^2.0.2",
|
|
208
62
|
"main-event": "^1.0.1",
|
|
209
63
|
"netmask": "^2.0.2",
|
|
210
64
|
"p-defer": "^4.0.1",
|
|
211
|
-
"
|
|
212
|
-
"race-signal": "^
|
|
65
|
+
"p-event": "^7.0.0",
|
|
66
|
+
"race-signal": "^2.0.0",
|
|
67
|
+
"uint8-varint": "^2.0.4",
|
|
213
68
|
"uint8arraylist": "^2.4.8",
|
|
214
69
|
"uint8arrays": "^5.1.0"
|
|
215
70
|
},
|
|
216
71
|
"devDependencies": {
|
|
217
|
-
"@libp2p/peer-id": "
|
|
72
|
+
"@libp2p/peer-id": "6.0.0-55b7e5fea",
|
|
218
73
|
"@types/netmask": "^2.0.5",
|
|
219
|
-
"aegir": "^47.0.
|
|
74
|
+
"aegir": "^47.0.22",
|
|
220
75
|
"benchmark": "^2.1.4",
|
|
221
|
-
"
|
|
222
|
-
"it-
|
|
223
|
-
"
|
|
224
|
-
"it-pair": "^2.0.6",
|
|
225
|
-
"sinon": "^20.0.0",
|
|
76
|
+
"it-all": "^3.0.9",
|
|
77
|
+
"it-drain": "^3.0.10",
|
|
78
|
+
"sinon": "^21.0.0",
|
|
226
79
|
"sinon-ts": "^2.0.0",
|
|
227
80
|
"wherearewe": "^2.0.1"
|
|
228
81
|
},
|