@libp2p/webtransport 5.0.51 → 6.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/dist/index.min.js +11 -12
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +1 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +32 -63
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.d.ts +0 -1
- package/dist/src/listener.d.ts.map +1 -1
- package/dist/src/listener.js.map +1 -1
- package/dist/src/muxer.d.ts +2 -5
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +44 -74
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/session-to-conn.d.ts +11 -0
- package/dist/src/session-to-conn.d.ts.map +1 -0
- package/dist/src/session-to-conn.js +35 -0
- package/dist/src/session-to-conn.js.map +1 -0
- package/dist/src/stream.d.ts +21 -2
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +75 -47
- package/dist/src/stream.js.map +1 -1
- package/dist/src/utils/parse-multiaddr.d.ts +1 -1
- package/dist/src/utils/parse-multiaddr.d.ts.map +1 -1
- package/dist/src/utils/parse-multiaddr.js +17 -11
- package/dist/src/utils/parse-multiaddr.js.map +1 -1
- package/dist/src/utils/webtransport-message-stream.d.ts +18 -0
- package/dist/src/utils/webtransport-message-stream.d.ts.map +1 -0
- package/dist/src/utils/webtransport-message-stream.js +49 -0
- package/dist/src/utils/webtransport-message-stream.js.map +1 -0
- package/package.json +20 -21
- package/src/index.ts +36 -74
- package/src/listener.ts +0 -1
- package/src/muxer.ts +60 -84
- package/src/session-to-conn.ts +50 -0
- package/src/stream.ts +88 -55
- package/src/utils/parse-multiaddr.ts +20 -12
- package/src/utils/webtransport-message-stream.ts +69 -0
- package/dist/src/constants.d.ts +0 -2
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -2
- package/dist/src/constants.js.map +0 -1
- package/dist/src/utils/inert-duplex.d.ts +0 -3
- package/dist/src/utils/inert-duplex.d.ts.map +0 -1
- package/dist/src/utils/inert-duplex.js +0 -20
- package/dist/src/utils/inert-duplex.js.map +0 -1
- package/dist/typedoc-urls.json +0 -14
- package/src/constants.ts +0 -1
- package/src/utils/inert-duplex.ts +0 -21
package/dist/src/index.d.ts
CHANGED
|
@@ -3,20 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebTransport](https://www.w3.org/TR/webtransport/).
|
|
5
5
|
*
|
|
6
|
-
* >
|
|
7
6
|
* > ⚠️ **Note**
|
|
8
7
|
* >
|
|
9
8
|
* > This WebTransport implementation currently only allows dialing to other nodes. It does not yet allow listening for incoming dials. This feature requires QUIC support to land in Node JS first.
|
|
10
9
|
* >
|
|
11
10
|
* > QUIC support in Node JS is actively being worked on. You can keep an eye on the progress by watching the [related issues on the Node JS issue tracker](https://github.com/nodejs/node/labels/quic)
|
|
12
|
-
* >
|
|
13
11
|
*
|
|
14
12
|
* @example
|
|
15
13
|
*
|
|
16
14
|
* ```TypeScript
|
|
17
15
|
* import { createLibp2p } from 'libp2p'
|
|
18
16
|
* import { webTransport } from '@libp2p/webtransport'
|
|
19
|
-
* import { noise } from '@
|
|
17
|
+
* import { noise } from '@libp2p/noise'
|
|
20
18
|
*
|
|
21
19
|
* const node = await createLibp2p({
|
|
22
20
|
* transports: [
|
|
@@ -41,7 +39,6 @@ export interface WebTransportCertificate {
|
|
|
41
39
|
secret: string;
|
|
42
40
|
}
|
|
43
41
|
export interface WebTransportInit {
|
|
44
|
-
maxInboundStreams?: number;
|
|
45
42
|
certificates?: WebTransportCertificate[];
|
|
46
43
|
}
|
|
47
44
|
export interface WebTransportComponents {
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAaH,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAyD,eAAe,EAA2C,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,+BAA+B,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEzP,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACzC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,MAAM,sBAAsB,GAChC,+BAA+B,GAC/B,aAAa,CAAC,+BAA+B,CAAC,GAC9C,aAAa,CAAC,yCAAyC,CAAC,GACxD,aAAa,CAAC,yCAAyC,CAAC,GACxD,aAAa,CAAC,0CAA0C,CAAC,CAAA;AA2O3D,wBAAgB,YAAY,CAAE,IAAI,GAAE,gBAAqB,GAAG,CAAC,UAAU,EAAE,sBAAsB,KAAK,SAAS,CAE5G"}
|
package/dist/src/index.js
CHANGED
|
@@ -3,20 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A [libp2p transport](https://docs.libp2p.io/concepts/transports/overview/) based on [WebTransport](https://www.w3.org/TR/webtransport/).
|
|
5
5
|
*
|
|
6
|
-
* >
|
|
7
6
|
* > ⚠️ **Note**
|
|
8
7
|
* >
|
|
9
8
|
* > This WebTransport implementation currently only allows dialing to other nodes. It does not yet allow listening for incoming dials. This feature requires QUIC support to land in Node JS first.
|
|
10
9
|
* >
|
|
11
10
|
* > QUIC support in Node JS is actively being worked on. You can keep an eye on the progress by watching the [related issues on the Node JS issue tracker](https://github.com/nodejs/node/labels/quic)
|
|
12
|
-
* >
|
|
13
11
|
*
|
|
14
12
|
* @example
|
|
15
13
|
*
|
|
16
14
|
* ```TypeScript
|
|
17
15
|
* import { createLibp2p } from 'libp2p'
|
|
18
16
|
* import { webTransport } from '@libp2p/webtransport'
|
|
19
|
-
* import { noise } from '@
|
|
17
|
+
* import { noise } from '@libp2p/noise'
|
|
20
18
|
*
|
|
21
19
|
* const node = await createLibp2p({
|
|
22
20
|
* transports: [
|
|
@@ -28,17 +26,16 @@
|
|
|
28
26
|
* })
|
|
29
27
|
* ```
|
|
30
28
|
*/
|
|
31
|
-
import { noise } from '@chainsafe/libp2p-noise';
|
|
32
29
|
import { InvalidCryptoExchangeError, InvalidParametersError, serviceCapabilities, transportSymbol } from '@libp2p/interface';
|
|
30
|
+
import { noise } from '@libp2p/noise';
|
|
33
31
|
import { WebTransport as WebTransportMatcher } from '@multiformats/multiaddr-matcher';
|
|
34
32
|
import { CustomProgressEvent } from 'progress-events';
|
|
35
|
-
import { raceSignal } from 'race-signal';
|
|
36
|
-
import { MAX_INBOUND_STREAMS } from './constants.js';
|
|
37
33
|
import createListener from './listener.js';
|
|
38
34
|
import { webtransportMuxer } from './muxer.js';
|
|
39
|
-
import {
|
|
35
|
+
import { toMultiaddrConnection } from "./session-to-conn.js";
|
|
40
36
|
import { isSubset } from './utils/is-subset.js';
|
|
41
37
|
import { parseMultiaddr } from './utils/parse-multiaddr.js';
|
|
38
|
+
import { WebTransportMessageStream } from "./utils/webtransport-message-stream.js";
|
|
42
39
|
import WebTransport from './webtransport.js';
|
|
43
40
|
class WebTransportTransport {
|
|
44
41
|
log;
|
|
@@ -50,7 +47,6 @@ class WebTransportTransport {
|
|
|
50
47
|
this.components = components;
|
|
51
48
|
this.config = {
|
|
52
49
|
...init,
|
|
53
|
-
maxInboundStreams: init.maxInboundStreams ?? MAX_INBOUND_STREAMS,
|
|
54
50
|
certificates: init.certificates ?? []
|
|
55
51
|
};
|
|
56
52
|
if (components.metrics != null) {
|
|
@@ -134,32 +130,28 @@ class WebTransportTransport {
|
|
|
134
130
|
.finally(() => {
|
|
135
131
|
cleanUpWTSession('remote_close');
|
|
136
132
|
});
|
|
137
|
-
|
|
133
|
+
this.metrics?.dialerEvents.increment({ open: true });
|
|
134
|
+
maConn = toMultiaddrConnection({
|
|
135
|
+
remoteAddr: ma,
|
|
136
|
+
cleanUpWTSession,
|
|
137
|
+
direction: 'outbound',
|
|
138
|
+
log: this.components.logger.forComponent('libp2p:webtransport:connection')
|
|
139
|
+
});
|
|
140
|
+
authenticated = await this.authenticateWebTransport({
|
|
141
|
+
wt,
|
|
142
|
+
maConn,
|
|
143
|
+
remotePeer,
|
|
144
|
+
certhashes,
|
|
145
|
+
...options
|
|
146
|
+
});
|
|
138
147
|
if (!authenticated) {
|
|
139
148
|
throw new InvalidCryptoExchangeError('Failed to authenticate webtransport');
|
|
140
149
|
}
|
|
141
|
-
this.metrics?.dialerEvents.increment({ open: true });
|
|
142
|
-
maConn = {
|
|
143
|
-
close: async () => {
|
|
144
|
-
this.log('closing webtransport');
|
|
145
|
-
cleanUpWTSession('close');
|
|
146
|
-
},
|
|
147
|
-
abort: (err) => {
|
|
148
|
-
this.log('aborting webtransport due to passed err', err);
|
|
149
|
-
cleanUpWTSession('abort');
|
|
150
|
-
},
|
|
151
|
-
remoteAddr: ma,
|
|
152
|
-
timeline: {
|
|
153
|
-
open: Date.now()
|
|
154
|
-
},
|
|
155
|
-
log: this.components.logger.forComponent('libp2p:webtransport:maconn'),
|
|
156
|
-
// This connection is never used directly since webtransport supports native streams.
|
|
157
|
-
...inertDuplex()
|
|
158
|
-
};
|
|
159
150
|
return await options.upgrader.upgradeOutbound(maConn, {
|
|
160
151
|
...options,
|
|
161
152
|
skipEncryption: true,
|
|
162
|
-
|
|
153
|
+
remotePeer,
|
|
154
|
+
muxerFactory: webtransportMuxer(wt),
|
|
163
155
|
skipProtection: true
|
|
164
156
|
});
|
|
165
157
|
}
|
|
@@ -182,50 +174,28 @@ class WebTransportTransport {
|
|
|
182
174
|
}
|
|
183
175
|
}
|
|
184
176
|
}
|
|
185
|
-
async authenticateWebTransport({ wt, remotePeer, certhashes, onProgress, signal }) {
|
|
186
|
-
signal?.throwIfAborted();
|
|
177
|
+
async authenticateWebTransport({ wt, maConn, remotePeer, certhashes, onProgress, signal }) {
|
|
187
178
|
onProgress?.(new CustomProgressEvent('webtransport:open-authentication-stream'));
|
|
188
179
|
const stream = await wt.createBidirectionalStream();
|
|
189
|
-
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
const val = await reader.read();
|
|
195
|
-
if (val.value != null) {
|
|
196
|
-
yield val.value;
|
|
197
|
-
}
|
|
198
|
-
if (val.done) {
|
|
199
|
-
break;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
})(),
|
|
203
|
-
sink: async (source) => {
|
|
204
|
-
for await (const chunk of source) {
|
|
205
|
-
await raceSignal(writer.ready, signal);
|
|
206
|
-
const buf = chunk instanceof Uint8Array ? chunk : chunk.subarray();
|
|
207
|
-
writer.write(buf).catch(err => {
|
|
208
|
-
this.log.error('could not write chunk during authentication of WebTransport stream', err);
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
};
|
|
180
|
+
signal?.throwIfAborted();
|
|
181
|
+
const messages = new WebTransportMessageStream({
|
|
182
|
+
stream,
|
|
183
|
+
log: maConn.log.newScope('muxer')
|
|
184
|
+
});
|
|
213
185
|
const n = noise()(this.components);
|
|
214
186
|
onProgress?.(new CustomProgressEvent('webtransport:secure-outbound-connection'));
|
|
215
|
-
const { remoteExtensions } = await n.secureOutbound(
|
|
187
|
+
const { remoteExtensions } = await n.secureOutbound(messages, {
|
|
216
188
|
signal,
|
|
217
189
|
remotePeer,
|
|
218
190
|
skipStreamMuxerNegotiation: true
|
|
219
191
|
});
|
|
220
192
|
onProgress?.(new CustomProgressEvent('webtransport:close-authentication-stream'));
|
|
221
193
|
// We're done with this authentication stream
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
});
|
|
225
|
-
reader.cancel().catch((err) => {
|
|
226
|
-
this.log.error(`Failed to close authentication stream reader: ${err.message}`);
|
|
194
|
+
await messages.close({
|
|
195
|
+
signal
|
|
227
196
|
});
|
|
228
|
-
// Verify the certhashes we used when dialing are a subset of the certhashes
|
|
197
|
+
// Verify the certhashes we used when dialing are a subset of the certhashes
|
|
198
|
+
// relayed by the remote peer
|
|
229
199
|
if (!isSubset(remoteExtensions?.webtransportCerthashes ?? [], certhashes.map(ch => ch.bytes))) {
|
|
230
200
|
throw new InvalidParametersError("Our certhashes are not a subset of the remote's reported certhashes");
|
|
231
201
|
}
|
|
@@ -234,8 +204,7 @@ class WebTransportTransport {
|
|
|
234
204
|
createListener(options) {
|
|
235
205
|
return createListener(this.components, {
|
|
236
206
|
...options,
|
|
237
|
-
certificates: this.config.certificates
|
|
238
|
-
maxInboundStreams: this.config.maxInboundStreams
|
|
207
|
+
certificates: this.config.certificates
|
|
239
208
|
});
|
|
240
209
|
}
|
|
241
210
|
/**
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/listener.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ export interface WebTransportListenerInit extends CreateListenerOptions {
|
|
|
9
9
|
handler?(conn: Connection): void;
|
|
10
10
|
upgrader: Upgrader;
|
|
11
11
|
certificates?: WebTransportCertificate[];
|
|
12
|
-
maxInboundStreams?: number;
|
|
13
12
|
}
|
|
14
13
|
export default function createListener(components: WebTransportListenerComponents, options: WebTransportListenerInit): Listener;
|
|
15
14
|
//# sourceMappingURL=listener.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhI,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;IACrE,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhI,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;IACrE,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,YAAY,CAAC,EAAE,uBAAuB,EAAE,CAAA;CACzC;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAE,UAAU,EAAE,8BAA8B,EAAE,OAAO,EAAE,wBAAwB,GAAG,QAAQ,CAE/H"}
|
package/dist/src/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAE,UAA0C,EAAE,OAAiC;IACnH,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAC/C,CAAC"}
|
package/dist/src/muxer.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type WebTransport from './webtransport.js';
|
|
2
|
-
import type {
|
|
3
|
-
export
|
|
4
|
-
maxInboundStreams: number;
|
|
5
|
-
}
|
|
6
|
-
export declare function webtransportMuxer(wt: Pick<WebTransport, 'close' | 'createBidirectionalStream'>, reader: ReadableStreamDefaultReader<WebTransportBidirectionalStream>, log: Logger, config: WebTransportMuxerInit): StreamMuxerFactory;
|
|
2
|
+
import type { StreamMuxerFactory } from '@libp2p/interface';
|
|
3
|
+
export declare function webtransportMuxer(webTransport: WebTransport): StreamMuxerFactory;
|
|
7
4
|
//# sourceMappingURL=muxer.d.ts.map
|
package/dist/src/muxer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,EAAyD,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAmElH,wBAAgB,iBAAiB,CAAE,YAAY,EAAE,YAAY,GAAG,kBAAkB,CAOjF"}
|
package/dist/src/muxer.js
CHANGED
|
@@ -1,79 +1,49 @@
|
|
|
1
|
+
import { AbstractStreamMuxer } from '@libp2p/utils';
|
|
1
2
|
import { webtransportBiDiStreamToStream } from './stream.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
wtStream.writable.close().catch((err) => {
|
|
23
|
-
log.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);
|
|
24
|
-
});
|
|
25
|
-
wtStream.readable.cancel().catch((err) => {
|
|
26
|
-
log.error(`failed to close inbound stream that crossed our maxInboundStream limit: ${err.message}`);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
const stream = await webtransportBiDiStreamToStream(wtStream, String(streamIDCounter++), 'inbound', activeStreams, init?.onStreamEnd, log);
|
|
31
|
-
activeStreams.push(stream);
|
|
32
|
-
init?.onIncomingStream?.(stream);
|
|
33
|
-
}
|
|
3
|
+
const PROTOCOL = '/webtransport';
|
|
4
|
+
class WebTransportStreamMuxer extends AbstractStreamMuxer {
|
|
5
|
+
webTransport;
|
|
6
|
+
streamIDCounter;
|
|
7
|
+
reader;
|
|
8
|
+
constructor(webTransport, maConn) {
|
|
9
|
+
super(maConn, {
|
|
10
|
+
protocol: PROTOCOL,
|
|
11
|
+
name: 'muxer'
|
|
12
|
+
});
|
|
13
|
+
this.webTransport = webTransport;
|
|
14
|
+
this.streamIDCounter = 0;
|
|
15
|
+
this.reader = this.webTransport.incomingBidirectionalStreams.getReader();
|
|
16
|
+
Promise.resolve()
|
|
17
|
+
.then(async () => {
|
|
18
|
+
//! TODO unclear how to add backpressure here?
|
|
19
|
+
while (true) {
|
|
20
|
+
const { done, value } = await this.reader.read();
|
|
21
|
+
if (done || value == null) {
|
|
22
|
+
break;
|
|
34
23
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
muxer.abort(err);
|
|
59
|
-
}
|
|
60
|
-
},
|
|
61
|
-
/**
|
|
62
|
-
* Abort all tracked streams and stop the muxer
|
|
63
|
-
*/
|
|
64
|
-
abort: (err) => {
|
|
65
|
-
log('closing webtransport muxer with err:', err);
|
|
66
|
-
try {
|
|
67
|
-
wt.close();
|
|
68
|
-
}
|
|
69
|
-
catch (err) {
|
|
70
|
-
log.error('webtransport session threw error during close', err);
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
// This stream muxer is webtransport native. Therefore it doesn't plug in with any other duplex.
|
|
74
|
-
...inertDuplex()
|
|
75
|
-
};
|
|
76
|
-
return muxer;
|
|
24
|
+
this.onRemoteStream(webtransportBiDiStreamToStream(value, String(this.streamIDCounter++), 'inbound', this.log, this.streamOptions));
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
.catch(err => {
|
|
28
|
+
this.log.error('could not create a new stream - %e', err);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async onCreateStream(options) {
|
|
32
|
+
const wtStream = await this.webTransport.createBidirectionalStream();
|
|
33
|
+
options?.signal?.throwIfAborted();
|
|
34
|
+
return webtransportBiDiStreamToStream(wtStream, String(this.streamIDCounter++), 'outbound', this.log, options);
|
|
35
|
+
}
|
|
36
|
+
onData() {
|
|
37
|
+
}
|
|
38
|
+
sendReset() {
|
|
39
|
+
this.webTransport.close();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function webtransportMuxer(webTransport) {
|
|
43
|
+
return {
|
|
44
|
+
protocol: PROTOCOL,
|
|
45
|
+
createStreamMuxer(maConn) {
|
|
46
|
+
return new WebTransportStreamMuxer(webTransport, maConn);
|
|
77
47
|
}
|
|
78
48
|
};
|
|
79
49
|
}
|
package/dist/src/muxer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAA;AAK5D,MAAM,QAAQ,GAAG,eAAe,CAAA;AAEhC,MAAM,uBAAwB,SAAQ,mBAAuC;IACnE,YAAY,CAAc;IAC1B,eAAe,CAAQ;IACvB,MAAM,CAA8D;IAE5E,YAAa,YAA0B,EAAE,MAA2B;QAClE,KAAK,CAAC,MAAM,EAAE;YACZ,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,OAAO;SACd,CAAC,CAAA;QAEF,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,SAAS,EAAE,CAAA;QAExE,OAAO,CAAC,OAAO,EAAE;aACd,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,8CAA8C;YAC9C,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAEhD,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;oBAC1B,MAAK;gBACP,CAAC;gBAED,IAAI,CAAC,cAAc,CACjB,8BAA8B,CAC5B,KAAK,EACL,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAC9B,SAAS,EACT,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,aAAa,CACnB,CACF,CAAA;YACH,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAAE,OAA4B;QAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,EAAE,CAAA;QACpE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;QAEjC,OAAO,8BAA8B,CACnC,QAAQ,EACR,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAC9B,UAAU,EACV,IAAI,CAAC,GAAG,EACR,OAAO,CACR,CAAA;IACH,CAAC;IAED,MAAM;IAEN,CAAC;IAED,SAAS;QACP,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAE,YAA0B;IAC3D,OAAO;QACL,QAAQ,EAAE,QAAQ;QAClB,iBAAiB,CAAE,MAA2B;YAC5C,OAAO,IAAI,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC1D,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { MultiaddrConnection } from '@libp2p/interface';
|
|
2
|
+
import type { AbstractMultiaddrConnectionInit } from '@libp2p/utils';
|
|
3
|
+
export interface WebTransportSessionMultiaddrConnectionInit extends Omit<AbstractMultiaddrConnectionInit, 'name' | 'stream'> {
|
|
4
|
+
cleanUpWTSession(metric: string): void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Convert a socket into a MultiaddrConnection
|
|
8
|
+
* https://github.com/libp2p/interface-transport#multiaddrconnection
|
|
9
|
+
*/
|
|
10
|
+
export declare const toMultiaddrConnection: (init: WebTransportSessionMultiaddrConnectionInit) => MultiaddrConnection;
|
|
11
|
+
//# sourceMappingURL=session-to-conn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-to-conn.d.ts","sourceRoot":"","sources":["../../src/session-to-conn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,KAAK,EAAE,+BAA+B,EAAc,MAAM,eAAe,CAAA;AAGhF,MAAM,WAAW,0CAA2C,SAAQ,IAAI,CAAC,+BAA+B,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1H,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAoCD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,0CAA0C,KAAG,mBAExF,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AbstractMultiaddrConnection } from '@libp2p/utils';
|
|
2
|
+
class WebTransportSessionMultiaddrConnection extends AbstractMultiaddrConnection {
|
|
3
|
+
cleanUpWTSession;
|
|
4
|
+
constructor(init) {
|
|
5
|
+
super(init);
|
|
6
|
+
this.cleanUpWTSession = init.cleanUpWTSession;
|
|
7
|
+
}
|
|
8
|
+
sendData(data) {
|
|
9
|
+
return {
|
|
10
|
+
sentBytes: data.byteLength,
|
|
11
|
+
canSendMore: true
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
sendReset() {
|
|
15
|
+
this.cleanUpWTSession('abort');
|
|
16
|
+
}
|
|
17
|
+
async sendClose(options) {
|
|
18
|
+
this.cleanUpWTSession('close');
|
|
19
|
+
options?.signal?.throwIfAborted();
|
|
20
|
+
}
|
|
21
|
+
sendPause() {
|
|
22
|
+
// TODO: backpressure?
|
|
23
|
+
}
|
|
24
|
+
sendResume() {
|
|
25
|
+
// TODO: backpressure?
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Convert a socket into a MultiaddrConnection
|
|
30
|
+
* https://github.com/libp2p/interface-transport#multiaddrconnection
|
|
31
|
+
*/
|
|
32
|
+
export const toMultiaddrConnection = (init) => {
|
|
33
|
+
return new WebTransportSessionMultiaddrConnection(init);
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=session-to-conn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-to-conn.js","sourceRoot":"","sources":["../../src/session-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAS3D,MAAM,sCAAuC,SAAQ,2BAA2B;IACtE,gBAAgB,CAA0B;IAElD,YAAa,IAAgD;QAC3D,KAAK,CAAC,IAAI,CAAC,CAAA;QAEX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAA;IAC/C,CAAC;IAED,QAAQ,CAAE,IAAoB;QAC5B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,WAAW,EAAE,IAAI;SAClB,CAAA;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,OAAsB;QACrC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC9B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACnC,CAAC;IAED,SAAS;QACP,sBAAsB;IACxB,CAAC;IAED,UAAU;QACR,sBAAsB;IACxB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAgD,EAAuB,EAAE;IAC7G,OAAO,IAAI,sCAAsC,CAAC,IAAI,CAAC,CAAA;AACzD,CAAC,CAAA"}
|
package/dist/src/stream.d.ts
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { AbstractStream } from '@libp2p/utils';
|
|
2
|
+
import type { AbortOptions, MessageStreamDirection, Logger, StreamOptions } from '@libp2p/interface';
|
|
3
|
+
import type { AbstractStreamInit, SendResult } from '@libp2p/utils';
|
|
4
|
+
import type { Uint8ArrayList } from 'uint8arraylist';
|
|
5
|
+
interface WebTransportStreamInit extends AbstractStreamInit {
|
|
6
|
+
stream: WebTransportBidirectionalStream;
|
|
7
|
+
}
|
|
8
|
+
export declare class WebTransportStream extends AbstractStream {
|
|
9
|
+
private readonly writer;
|
|
10
|
+
private readonly reader;
|
|
11
|
+
constructor(init: WebTransportStreamInit);
|
|
12
|
+
private readData;
|
|
13
|
+
sendData(data: Uint8ArrayList): SendResult;
|
|
14
|
+
sendReset(err: Error): void;
|
|
15
|
+
sendCloseWrite(options?: AbortOptions): Promise<void>;
|
|
16
|
+
sendCloseRead(options?: AbortOptions): Promise<void>;
|
|
17
|
+
sendPause(): void;
|
|
18
|
+
sendResume(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare function webtransportBiDiStreamToStream(stream: WebTransportBidirectionalStream, streamId: string, direction: MessageStreamDirection, log: Logger, options?: StreamOptions): WebTransportStream;
|
|
21
|
+
export {};
|
|
3
22
|
//# sourceMappingURL=stream.d.ts.map
|
package/dist/src/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,UAAU,sBAAuB,SAAQ,kBAAkB;IACzD,MAAM,EAAE,+BAA+B,CAAA;CACxC;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAEnD,IAAI,EAAE,sBAAsB;IA0BzC,OAAO,CAAC,QAAQ;IA6BhB,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,UAAU;IAoC3C,SAAS,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAOtB,cAAc,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD,aAAa,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM3D,SAAS,IAAK,IAAI;IAIlB,UAAU,IAAK,IAAI;CAGpB;AAED,wBAAgB,8BAA8B,CAAE,MAAM,EAAE,+BAA+B,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,kBAAkB,CAStM"}
|