@libp2p/mplex 8.0.4-f427cfc9 → 9.0.0
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/dist/index.min.js +5 -5
- package/dist/src/mplex.d.ts +9 -10
- package/dist/src/mplex.d.ts.map +1 -1
- package/dist/src/mplex.js +93 -66
- package/dist/src/mplex.js.map +1 -1
- package/dist/src/stream.d.ts +14 -8
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +24 -11
- package/dist/src/stream.js.map +1 -1
- package/package.json +6 -10
- package/src/mplex.ts +115 -78
- package/src/stream.ts +35 -14
package/dist/src/mplex.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
2
2
|
import { logger } from '@libp2p/logger';
|
3
3
|
import { abortableSource } from 'abortable-iterator';
|
4
|
-
import {
|
4
|
+
import { pipe } from 'it-pipe';
|
5
5
|
import { pushableV } from 'it-pushable';
|
6
6
|
import { RateLimiterMemory } from 'rate-limiter-flexible';
|
7
7
|
import { toString as uint8ArrayToString } from 'uint8arrays';
|
@@ -14,6 +14,7 @@ const MAX_STREAMS_INBOUND_STREAMS_PER_CONNECTION = 1024;
|
|
14
14
|
const MAX_STREAMS_OUTBOUND_STREAMS_PER_CONNECTION = 1024;
|
15
15
|
const MAX_STREAM_BUFFER_SIZE = 1024 * 1024 * 4; // 4MB
|
16
16
|
const DISCONNECT_THRESHOLD = 5;
|
17
|
+
const CLOSE_TIMEOUT = 500;
|
17
18
|
function printMessage(msg) {
|
18
19
|
const output = {
|
19
20
|
...msg,
|
@@ -37,6 +38,7 @@ export class MplexStreamMuxer {
|
|
37
38
|
_source;
|
38
39
|
closeController;
|
39
40
|
rateLimiter;
|
41
|
+
closeTimeout;
|
40
42
|
constructor(init) {
|
41
43
|
init = init ?? {};
|
42
44
|
this._streamId = 0;
|
@@ -51,6 +53,7 @@ export class MplexStreamMuxer {
|
|
51
53
|
receivers: new Map()
|
52
54
|
};
|
53
55
|
this._init = init;
|
56
|
+
this.closeTimeout = init.closeTimeout ?? CLOSE_TIMEOUT;
|
54
57
|
/**
|
55
58
|
* An iterable sink
|
56
59
|
*/
|
@@ -58,9 +61,20 @@ export class MplexStreamMuxer {
|
|
58
61
|
/**
|
59
62
|
* An iterable source
|
60
63
|
*/
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
+
this._source = pushableV({
|
65
|
+
objectMode: true,
|
66
|
+
onEnd: () => {
|
67
|
+
// the source has ended, we can't write any more messages to gracefully
|
68
|
+
// close streams so all we can do is destroy them
|
69
|
+
for (const stream of this._streams.initiators.values()) {
|
70
|
+
stream.destroy();
|
71
|
+
}
|
72
|
+
for (const stream of this._streams.receivers.values()) {
|
73
|
+
stream.destroy();
|
74
|
+
}
|
75
|
+
}
|
76
|
+
});
|
77
|
+
this.source = pipe(this._source, source => encode(source, this._init.minSendBytes));
|
64
78
|
/**
|
65
79
|
* Close controller
|
66
80
|
*/
|
@@ -100,16 +114,33 @@ export class MplexStreamMuxer {
|
|
100
114
|
/**
|
101
115
|
* Close or abort all tracked streams and stop the muxer
|
102
116
|
*/
|
103
|
-
close(
|
104
|
-
if (this.closeController.signal.aborted)
|
117
|
+
async close(options) {
|
118
|
+
if (this.closeController.signal.aborted) {
|
105
119
|
return;
|
106
|
-
if (err != null) {
|
107
|
-
this.streams.forEach(s => { s.abort(err); });
|
108
120
|
}
|
109
|
-
|
110
|
-
|
121
|
+
const signal = options?.signal ?? AbortSignal.timeout(this.closeTimeout);
|
122
|
+
try {
|
123
|
+
// try to gracefully close all streams
|
124
|
+
await Promise.all(this.streams.map(async (s) => s.close({
|
125
|
+
signal
|
126
|
+
})));
|
127
|
+
this._source.end();
|
128
|
+
// try to gracefully close the muxer
|
129
|
+
await this._source.onEmpty({
|
130
|
+
signal
|
131
|
+
});
|
132
|
+
this.closeController.abort();
|
133
|
+
}
|
134
|
+
catch (err) {
|
135
|
+
this.abort(err);
|
111
136
|
}
|
112
|
-
|
137
|
+
}
|
138
|
+
abort(err) {
|
139
|
+
if (this.closeController.signal.aborted) {
|
140
|
+
return;
|
141
|
+
}
|
142
|
+
this.streams.forEach(s => { s.abort(err); });
|
143
|
+
this.closeController.abort(err);
|
113
144
|
}
|
114
145
|
/**
|
115
146
|
* Called whenever an inbound stream is created
|
@@ -128,14 +159,14 @@ export class MplexStreamMuxer {
|
|
128
159
|
if (registry.has(id)) {
|
129
160
|
throw new Error(`${type} stream ${id} already exists!`);
|
130
161
|
}
|
131
|
-
const send = (msg) => {
|
162
|
+
const send = async (msg) => {
|
132
163
|
if (log.enabled) {
|
133
164
|
log.trace('%s stream %s send', type, id, printMessage(msg));
|
134
165
|
}
|
135
166
|
this._source.push(msg);
|
136
167
|
};
|
137
168
|
const onEnd = () => {
|
138
|
-
log('%s stream with id %s and protocol %s ended', type, id, stream.
|
169
|
+
log('%s stream with id %s and protocol %s ended', type, id, stream.protocol);
|
139
170
|
registry.delete(id);
|
140
171
|
if (this._init.onStreamEnd != null) {
|
141
172
|
this._init.onStreamEnd(stream);
|
@@ -151,9 +182,10 @@ export class MplexStreamMuxer {
|
|
151
182
|
*/
|
152
183
|
_createSink() {
|
153
184
|
const sink = async (source) => {
|
154
|
-
const signal = anySignal([this.closeController.signal, this._init.signal]);
|
155
185
|
try {
|
156
|
-
source = abortableSource(source, signal
|
186
|
+
source = abortableSource(source, this.closeController.signal, {
|
187
|
+
returnOnAbort: true
|
188
|
+
});
|
157
189
|
const decoder = new Decoder(this._init.maxMsgSize, this._init.maxUnprocessedMessageQueueSize);
|
158
190
|
for await (const chunk of source) {
|
159
191
|
for (const msg of decoder.write(chunk)) {
|
@@ -166,30 +198,9 @@ export class MplexStreamMuxer {
|
|
166
198
|
log('error in sink', err);
|
167
199
|
this._source.end(err); // End the source with an error
|
168
200
|
}
|
169
|
-
finally {
|
170
|
-
signal.clear();
|
171
|
-
}
|
172
201
|
};
|
173
202
|
return sink;
|
174
203
|
}
|
175
|
-
/**
|
176
|
-
* Creates a source that restricts outgoing message sizes
|
177
|
-
* and varint encodes them
|
178
|
-
*/
|
179
|
-
_createSource() {
|
180
|
-
const onEnd = (err) => {
|
181
|
-
this.close(err);
|
182
|
-
};
|
183
|
-
const source = pushableV({
|
184
|
-
objectMode: true,
|
185
|
-
onEnd
|
186
|
-
});
|
187
|
-
return Object.assign(encode(source, this._init.minSendBytes), {
|
188
|
-
push: source.push,
|
189
|
-
end: source.end,
|
190
|
-
return: source.return
|
191
|
-
});
|
192
|
-
}
|
193
204
|
async _handleIncoming(message) {
|
194
205
|
const { id, type } = message;
|
195
206
|
if (log.enabled) {
|
@@ -214,7 +225,7 @@ export class MplexStreamMuxer {
|
|
214
225
|
catch {
|
215
226
|
log('rate limit hit when opening too many new streams over the inbound stream limit - closing remote connection');
|
216
227
|
// since there's no backpressure in mplex, the only thing we can really do to protect ourselves is close the connection
|
217
|
-
this.
|
228
|
+
this.abort(new Error('Too many open streams'));
|
218
229
|
return;
|
219
230
|
}
|
220
231
|
return;
|
@@ -229,38 +240,54 @@ export class MplexStreamMuxer {
|
|
229
240
|
const stream = list.get(id);
|
230
241
|
if (stream == null) {
|
231
242
|
log('missing stream %s for message type %s', id, MessageTypeNames[type]);
|
243
|
+
// if the remote keeps sending us messages for streams that have been
|
244
|
+
// closed or were never opened they may be attacking us so if they do
|
245
|
+
// this very quickly all we can do is close the connection
|
246
|
+
try {
|
247
|
+
await this.rateLimiter.consume('missing-stream', 1);
|
248
|
+
}
|
249
|
+
catch {
|
250
|
+
log('rate limit hit when receiving messages for streams that do not exist - closing remote connection');
|
251
|
+
// since there's no backpressure in mplex, the only thing we can really do to protect ourselves is close the connection
|
252
|
+
this.abort(new Error('Too many messages for missing streams'));
|
253
|
+
return;
|
254
|
+
}
|
232
255
|
return;
|
233
256
|
}
|
234
257
|
const maxBufferSize = this._init.maxStreamBufferSize ?? MAX_STREAM_BUFFER_SIZE;
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
258
|
+
try {
|
259
|
+
switch (type) {
|
260
|
+
case MessageTypes.MESSAGE_INITIATOR:
|
261
|
+
case MessageTypes.MESSAGE_RECEIVER:
|
262
|
+
if (stream.sourceReadableLength() > maxBufferSize) {
|
263
|
+
// Stream buffer has got too large, reset the stream
|
264
|
+
this._source.push({
|
265
|
+
id: message.id,
|
266
|
+
type: type === MessageTypes.MESSAGE_INITIATOR ? MessageTypes.RESET_RECEIVER : MessageTypes.RESET_INITIATOR
|
267
|
+
});
|
268
|
+
// Inform the stream consumer they are not fast enough
|
269
|
+
throw new CodeError('Input buffer full - increase Mplex maxBufferSize to accommodate slow consumers', 'ERR_STREAM_INPUT_BUFFER_FULL');
|
270
|
+
}
|
271
|
+
// We got data from the remote, push it into our local stream
|
272
|
+
stream.sourcePush(message.data);
|
273
|
+
break;
|
274
|
+
case MessageTypes.CLOSE_INITIATOR:
|
275
|
+
case MessageTypes.CLOSE_RECEIVER:
|
276
|
+
// The remote has stopped writing, so we can stop reading
|
277
|
+
stream.remoteCloseWrite();
|
278
|
+
break;
|
279
|
+
case MessageTypes.RESET_INITIATOR:
|
280
|
+
case MessageTypes.RESET_RECEIVER:
|
281
|
+
// The remote has errored, stop reading and writing to the stream immediately
|
282
|
+
stream.reset();
|
283
|
+
break;
|
284
|
+
default:
|
285
|
+
log('unknown message type %s', type);
|
286
|
+
}
|
287
|
+
}
|
288
|
+
catch (err) {
|
289
|
+
log.error('error while processing message', err);
|
290
|
+
stream.abort(err);
|
264
291
|
}
|
265
292
|
}
|
266
293
|
}
|
package/dist/src/mplex.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mplex.js","sourceRoot":"","sources":["../../src/mplex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"mplex.js","sourceRoot":"","sources":["../../src/mplex.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stream.d.ts
CHANGED
@@ -3,7 +3,7 @@ import { Uint8ArrayList } from 'uint8arraylist';
|
|
3
3
|
import type { Message } from './message-types.js';
|
4
4
|
export interface Options {
|
5
5
|
id: number;
|
6
|
-
send: (msg: Message) => void
|
6
|
+
send: (msg: Message) => Promise<void>;
|
7
7
|
name?: string;
|
8
8
|
onEnd?: (err?: Error) => void;
|
9
9
|
type?: 'initiator' | 'receiver';
|
@@ -12,19 +12,25 @@ export interface Options {
|
|
12
12
|
interface MplexStreamInit extends AbstractStreamInit {
|
13
13
|
streamId: number;
|
14
14
|
name: string;
|
15
|
-
send: (msg: Message) => void
|
15
|
+
send: (msg: Message) => Promise<void>;
|
16
|
+
/**
|
17
|
+
* The maximum allowable data size, any data larger than this will be
|
18
|
+
* chunked and sent in multiple data messages
|
19
|
+
*/
|
20
|
+
maxDataSize: number;
|
16
21
|
}
|
17
|
-
declare class MplexStream extends AbstractStream {
|
22
|
+
export declare class MplexStream extends AbstractStream {
|
18
23
|
private readonly name;
|
19
24
|
private readonly streamId;
|
20
25
|
private readonly send;
|
21
26
|
private readonly types;
|
27
|
+
private readonly maxDataSize;
|
22
28
|
constructor(init: MplexStreamInit);
|
23
|
-
sendNewStream(): void
|
24
|
-
sendData(data: Uint8ArrayList): void
|
25
|
-
sendReset(): void
|
26
|
-
sendCloseWrite(): void
|
27
|
-
sendCloseRead(): void
|
29
|
+
sendNewStream(): Promise<void>;
|
30
|
+
sendData(data: Uint8ArrayList): Promise<void>;
|
31
|
+
sendReset(): Promise<void>;
|
32
|
+
sendCloseWrite(): Promise<void>;
|
33
|
+
sendCloseRead(): Promise<void>;
|
28
34
|
}
|
29
35
|
export declare function createStream(options: Options): MplexStream;
|
30
36
|
export {};
|
package/dist/src/stream.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAA;IAC7B,IAAI,CAAC,EAAE,WAAW,GAAG,UAAU,CAAA;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,UAAU,eAAgB,SAAQ,kBAAkB;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAErC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,qBAAa,WAAY,SAAQ,cAAc;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;gBAEvB,IAAI,EAAE,eAAe;IAU5B,aAAa,IAAK,OAAO,CAAC,IAAI,CAAC;IAI/B,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9C,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;IAI3B,cAAc,IAAK,OAAO,CAAC,IAAI,CAAC;IAIhC,aAAa,IAAK,OAAO,CAAC,IAAI,CAAC;CAGtC;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,OAAO,GAAG,WAAW,CAa3D"}
|
package/dist/src/stream.js
CHANGED
@@ -1,33 +1,45 @@
|
|
1
1
|
import { AbstractStream } from '@libp2p/interface/stream-muxer/stream';
|
2
|
+
import { logger } from '@libp2p/logger';
|
2
3
|
import { Uint8ArrayList } from 'uint8arraylist';
|
3
4
|
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
|
4
5
|
import { MAX_MSG_SIZE } from './decode.js';
|
5
6
|
import { InitiatorMessageTypes, ReceiverMessageTypes } from './message-types.js';
|
6
|
-
class MplexStream extends AbstractStream {
|
7
|
+
export class MplexStream extends AbstractStream {
|
7
8
|
name;
|
8
9
|
streamId;
|
9
10
|
send;
|
10
11
|
types;
|
12
|
+
maxDataSize;
|
11
13
|
constructor(init) {
|
12
14
|
super(init);
|
13
15
|
this.types = init.direction === 'outbound' ? InitiatorMessageTypes : ReceiverMessageTypes;
|
14
16
|
this.send = init.send;
|
15
17
|
this.name = init.name;
|
16
18
|
this.streamId = init.streamId;
|
19
|
+
this.maxDataSize = init.maxDataSize;
|
17
20
|
}
|
18
|
-
sendNewStream() {
|
19
|
-
this.send({ id: this.streamId, type: InitiatorMessageTypes.NEW_STREAM, data: new Uint8ArrayList(uint8ArrayFromString(this.name)) });
|
21
|
+
async sendNewStream() {
|
22
|
+
await this.send({ id: this.streamId, type: InitiatorMessageTypes.NEW_STREAM, data: new Uint8ArrayList(uint8ArrayFromString(this.name)) });
|
20
23
|
}
|
21
|
-
sendData(data) {
|
22
|
-
|
24
|
+
async sendData(data) {
|
25
|
+
data = data.sublist();
|
26
|
+
while (data.byteLength > 0) {
|
27
|
+
const toSend = Math.min(data.byteLength, this.maxDataSize);
|
28
|
+
await this.send({
|
29
|
+
id: this.streamId,
|
30
|
+
type: this.types.MESSAGE,
|
31
|
+
data: data.sublist(0, toSend)
|
32
|
+
});
|
33
|
+
data.consume(toSend);
|
34
|
+
}
|
23
35
|
}
|
24
|
-
sendReset() {
|
25
|
-
this.send({ id: this.streamId, type: this.types.RESET });
|
36
|
+
async sendReset() {
|
37
|
+
await this.send({ id: this.streamId, type: this.types.RESET });
|
26
38
|
}
|
27
|
-
sendCloseWrite() {
|
28
|
-
this.send({ id: this.streamId, type: this.types.CLOSE });
|
39
|
+
async sendCloseWrite() {
|
40
|
+
await this.send({ id: this.streamId, type: this.types.CLOSE });
|
29
41
|
}
|
30
|
-
sendCloseRead() {
|
42
|
+
async sendCloseRead() {
|
31
43
|
// mplex does not support close read, only close write
|
32
44
|
}
|
33
45
|
}
|
@@ -40,7 +52,8 @@ export function createStream(options) {
|
|
40
52
|
direction: type === 'initiator' ? 'outbound' : 'inbound',
|
41
53
|
maxDataSize: maxMsgSize,
|
42
54
|
onEnd,
|
43
|
-
send
|
55
|
+
send,
|
56
|
+
log: logger(`libp2p:mplex:stream:${type}:${id}`)
|
44
57
|
});
|
45
58
|
}
|
46
59
|
//# sourceMappingURL=stream.js.map
|
package/dist/src/stream.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2B,MAAM,uCAAuC,CAAA;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA2B,MAAM,uCAAuC,CAAA;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAwBhF,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC5B,IAAI,CAAQ;IACZ,QAAQ,CAAQ;IAChB,IAAI,CAAiC;IACrC,KAAK,CAAwB;IAC7B,WAAW,CAAQ;IAEpC,YAAa,IAAqB;QAChC,KAAK,CAAC,IAAI,CAAC,CAAA;QAEX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,oBAAoB,CAAA;QACzF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,qBAAqB,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAA;IAC3I,CAAC;IAED,KAAK,CAAC,QAAQ,CAAE,IAAoB;QAClC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAErB,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YAC1D,MAAM,IAAI,CAAC,IAAI,CAAC;gBACd,EAAE,EAAE,IAAI,CAAC,QAAQ;gBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBACxB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC;aAC9B,CAAC,CAAA;YAEF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SACrB;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,sDAAsD;IACxD,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAAE,OAAgB;IAC5C,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,WAAW,EAAE,UAAU,GAAG,YAAY,EAAE,GAAG,OAAO,CAAA;IAExF,OAAO,IAAI,WAAW,CAAC;QACrB,EAAE,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;QAChD,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;QACnC,SAAS,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACxD,WAAW,EAAE,UAAU;QACvB,KAAK;QACL,IAAI;QACJ,GAAG,EAAE,MAAM,CAAC,uBAAuB,IAAI,IAAI,EAAE,EAAE,CAAC;KACjD,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/mplex",
|
3
|
-
"version": "
|
3
|
+
"version": "9.0.0",
|
4
4
|
"description": "JavaScript implementation of https://github.com/libp2p/mplex",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/stream-multiplexer-mplex#readme",
|
@@ -56,13 +56,12 @@
|
|
56
56
|
"test:electron-main": "aegir test -t electron-main"
|
57
57
|
},
|
58
58
|
"dependencies": {
|
59
|
-
"@libp2p/interface": "0.0
|
60
|
-
"@libp2p/logger": "
|
59
|
+
"@libp2p/interface": "^0.1.0",
|
60
|
+
"@libp2p/logger": "^3.0.0",
|
61
61
|
"abortable-iterator": "^5.0.1",
|
62
|
-
"any-signal": "^4.1.1",
|
63
62
|
"benchmark": "^2.1.4",
|
64
63
|
"it-batched-bytes": "^2.0.2",
|
65
|
-
"it-pushable": "^3.
|
64
|
+
"it-pushable": "^3.2.0",
|
66
65
|
"it-stream-types": "^2.0.1",
|
67
66
|
"rate-limiter-flexible": "^2.3.11",
|
68
67
|
"uint8arraylist": "^2.4.3",
|
@@ -70,9 +69,9 @@
|
|
70
69
|
"varint": "^6.0.0"
|
71
70
|
},
|
72
71
|
"devDependencies": {
|
73
|
-
"@libp2p/interface-compliance-tests": "
|
72
|
+
"@libp2p/interface-compliance-tests": "^4.0.0",
|
74
73
|
"@types/varint": "^6.0.0",
|
75
|
-
"aegir": "^
|
74
|
+
"aegir": "^40.0.1",
|
76
75
|
"cborg": "^2.0.1",
|
77
76
|
"delay": "^6.0.0",
|
78
77
|
"iso-random-stream": "^2.0.2",
|
@@ -87,8 +86,5 @@
|
|
87
86
|
},
|
88
87
|
"browser": {
|
89
88
|
"./dist/src/alloc-unsafe.js": "./dist/src/alloc-unsafe-browser.js"
|
90
|
-
},
|
91
|
-
"typedoc": {
|
92
|
-
"entryPoint": "./src/index.ts"
|
93
89
|
}
|
94
90
|
}
|