@libp2p/webrtc 5.2.23 → 5.2.24-a02cb0461

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/README.md +10 -20
  2. package/dist/index.min.js +14 -14
  3. package/dist/index.min.js.map +4 -4
  4. package/dist/src/constants.d.ts +0 -15
  5. package/dist/src/constants.d.ts.map +1 -1
  6. package/dist/src/constants.js +0 -15
  7. package/dist/src/constants.js.map +1 -1
  8. package/dist/src/index.d.ts +12 -22
  9. package/dist/src/index.d.ts.map +1 -1
  10. package/dist/src/index.js +12 -22
  11. package/dist/src/index.js.map +1 -1
  12. package/dist/src/muxer.d.ts +14 -46
  13. package/dist/src/muxer.d.ts.map +1 -1
  14. package/dist/src/muxer.js +32 -135
  15. package/dist/src/muxer.js.map +1 -1
  16. package/dist/src/private-to-private/initiate-connection.d.ts +3 -4
  17. package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
  18. package/dist/src/private-to-private/initiate-connection.js +23 -5
  19. package/dist/src/private-to-private/initiate-connection.js.map +1 -1
  20. package/dist/src/private-to-private/signaling-stream-handler.d.ts +4 -4
  21. package/dist/src/private-to-private/signaling-stream-handler.d.ts.map +1 -1
  22. package/dist/src/private-to-private/signaling-stream-handler.js +10 -6
  23. package/dist/src/private-to-private/signaling-stream-handler.js.map +1 -1
  24. package/dist/src/private-to-private/transport.d.ts +2 -2
  25. package/dist/src/private-to-private/transport.d.ts.map +1 -1
  26. package/dist/src/private-to-private/transport.js +30 -15
  27. package/dist/src/private-to-private/transport.js.map +1 -1
  28. package/dist/src/private-to-private/util.d.ts +3 -1
  29. package/dist/src/private-to-private/util.d.ts.map +1 -1
  30. package/dist/src/private-to-private/util.js +15 -3
  31. package/dist/src/private-to-private/util.js.map +1 -1
  32. package/dist/src/private-to-public/listener.js +2 -2
  33. package/dist/src/private-to-public/listener.js.map +1 -1
  34. package/dist/src/private-to-public/transport.js +1 -1
  35. package/dist/src/private-to-public/transport.js.map +1 -1
  36. package/dist/src/private-to-public/utils/connect.d.ts +1 -1
  37. package/dist/src/private-to-public/utils/connect.d.ts.map +1 -1
  38. package/dist/src/private-to-public/utils/connect.js +18 -15
  39. package/dist/src/private-to-public/utils/connect.js.map +1 -1
  40. package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts +4 -4
  41. package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts.map +1 -1
  42. package/dist/src/private-to-public/utils/get-rtcpeerconnection.js +13 -2
  43. package/dist/src/private-to-public/utils/get-rtcpeerconnection.js.map +1 -1
  44. package/dist/src/private-to-public/utils/sdp.d.ts.map +1 -1
  45. package/dist/src/private-to-public/utils/sdp.js +8 -3
  46. package/dist/src/private-to-public/utils/sdp.js.map +1 -1
  47. package/dist/src/private-to-public/utils/stun-listener.js +1 -1
  48. package/dist/src/private-to-public/utils/stun-listener.js.map +1 -1
  49. package/dist/src/rtcpeerconnection-to-conn.d.ts +12 -0
  50. package/dist/src/rtcpeerconnection-to-conn.d.ts.map +1 -0
  51. package/dist/src/rtcpeerconnection-to-conn.js +43 -0
  52. package/dist/src/rtcpeerconnection-to-conn.js.map +1 -0
  53. package/dist/src/stream.d.ts +16 -26
  54. package/dist/src/stream.d.ts.map +1 -1
  55. package/dist/src/stream.js +65 -167
  56. package/dist/src/stream.js.map +1 -1
  57. package/dist/src/util.d.ts +3 -1
  58. package/dist/src/util.d.ts.map +1 -1
  59. package/dist/src/util.js +19 -0
  60. package/dist/src/util.js.map +1 -1
  61. package/dist/src/webrtc/index.d.ts +1 -1
  62. package/dist/src/webrtc/index.d.ts.map +1 -1
  63. package/dist/src/webrtc/index.js +1 -1
  64. package/dist/src/webrtc/index.js.map +1 -1
  65. package/package.json +26 -29
  66. package/src/constants.ts +0 -18
  67. package/src/index.ts +12 -22
  68. package/src/muxer.ts +43 -166
  69. package/src/private-to-private/initiate-connection.ts +31 -9
  70. package/src/private-to-private/signaling-stream-handler.ts +12 -9
  71. package/src/private-to-private/transport.ts +33 -17
  72. package/src/private-to-private/util.ts +21 -4
  73. package/src/private-to-public/listener.ts +2 -2
  74. package/src/private-to-public/transport.ts +1 -1
  75. package/src/private-to-public/utils/connect.ts +19 -16
  76. package/src/private-to-public/utils/get-rtcpeerconnection.ts +16 -4
  77. package/src/private-to-public/utils/sdp.ts +8 -3
  78. package/src/private-to-public/utils/stun-listener.ts +1 -1
  79. package/src/rtcpeerconnection-to-conn.ts +62 -0
  80. package/src/stream.ts +78 -195
  81. package/src/util.ts +22 -1
  82. package/src/webrtc/index.ts +1 -1
  83. package/dist/src/maconn.d.ts +0 -58
  84. package/dist/src/maconn.d.ts.map +0 -1
  85. package/dist/src/maconn.js +0 -56
  86. package/dist/src/maconn.js.map +0 -1
  87. package/dist/typedoc-urls.json +0 -14
  88. package/src/maconn.ts +0 -101
@@ -27,10 +27,6 @@ export declare const CODEC_CERTHASH = 466;
27
27
  * How much can be buffered to the DataChannel at once
28
28
  */
29
29
  export declare const MAX_BUFFERED_AMOUNT: number;
30
- /**
31
- * How long time we wait for the 'bufferedamountlow' event to be emitted
32
- */
33
- export declare const BUFFERED_AMOUNT_LOW_TIMEOUT: number;
34
30
  /**
35
31
  * Max message size that can be sent to the DataChannel. In browsers this is
36
32
  * 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
@@ -45,17 +41,6 @@ export declare const MAX_MESSAGE_SIZE: number;
45
41
  * protobuf that aren't message field bytes
46
42
  */
47
43
  export declare const PROTOBUF_OVERHEAD: number;
48
- /**
49
- * When closing streams we send a FIN then wait for the remote to
50
- * reply with a FIN_ACK. If that does not happen within this timeout
51
- * we close the stream anyway.
52
- */
53
- export declare const FIN_ACK_TIMEOUT = 5000;
54
- /**
55
- * When sending data messages, if the channel is not in the "open" state, wait
56
- * this long for the "open" event to fire.
57
- */
58
- export declare const OPEN_TIMEOUT = 5000;
59
44
  /**
60
45
  * When closing a stream, we wait for `bufferedAmount` to become 0 before
61
46
  * closing the underlying RTCDataChannel - this controls how long we wait in ms
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,UAA+E,CAAA;AAE1G;;GAEG;AACH,eAAO,MAAM,YAAY,sBAAsB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,MAAS,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc,MAAS,CAAA;AAEpC;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAkB,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,2BAA2B,QAAY,CAAA;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAY,CAAA;AAsBzC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAA8B,CAAA;AAE5D;;;;GAIG;AACH,eAAO,MAAM,eAAe,OAAQ,CAAA;AAEpC;;;GAGG;AACH,eAAO,MAAM,YAAY,OAAQ,CAAA;AAEjC;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,cAAc,YAAY,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,iCAAiC,sCAAsC,CAAA;AAEpF;;GAEG;AACH,eAAO,MAAM,oCAAoC,0CAA0C,CAAA;AAE3F;;GAEG;AACH,eAAO,MAAM,oCAAoC,UAAU,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,4BAA4B,aAAgB,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,qCAAqC,WAAa,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,UAA+E,CAAA;AAE1G;;GAEG;AACH,eAAO,MAAM,YAAY,sBAAsB,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,mBAAmB,MAAS,CAAA;AAEzC;;GAEG;AACH,eAAO,MAAM,cAAc,MAAS,CAAA;AAEpC;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAkB,CAAA;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,QAAY,CAAA;AAsBzC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAA8B,CAAA;AAE5D;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD;;GAEG;AACH,eAAO,MAAM,cAAc,YAAY,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,iCAAiC,sCAAsC,CAAA;AAEpF;;GAEG;AACH,eAAO,MAAM,oCAAoC,0CAA0C,CAAA;AAE3F;;GAEG;AACH,eAAO,MAAM,oCAAoC,UAAU,CAAA;AAE3D;;GAEG;AACH,eAAO,MAAM,4BAA4B,aAAgB,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,qCAAqC,WAAa,CAAA"}
@@ -34,10 +34,6 @@ export const CODEC_CERTHASH = 0x01d2;
34
34
  * How much can be buffered to the DataChannel at once
35
35
  */
36
36
  export const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024;
37
- /**
38
- * How long time we wait for the 'bufferedamountlow' event to be emitted
39
- */
40
- export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;
41
37
  /**
42
38
  * Max message size that can be sent to the DataChannel. In browsers this is
43
39
  * 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
@@ -69,17 +65,6 @@ function calculateProtobufOverhead(maxMessageSize = MAX_MESSAGE_SIZE) {
69
65
  * protobuf that aren't message field bytes
70
66
  */
71
67
  export const PROTOBUF_OVERHEAD = calculateProtobufOverhead();
72
- /**
73
- * When closing streams we send a FIN then wait for the remote to
74
- * reply with a FIN_ACK. If that does not happen within this timeout
75
- * we close the stream anyway.
76
- */
77
- export const FIN_ACK_TIMEOUT = 5_000;
78
- /**
79
- * When sending data messages, if the channel is not in the "open" state, wait
80
- * this long for the "open" event to fire.
81
- */
82
- export const OPEN_TIMEOUT = 5_000;
83
68
  /**
84
69
  * When closing a stream, we wait for `bufferedAmount` to become 0 before
85
70
  * closing the underlying RTCDataChannel - this controls how long we wait in ms
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,+BAA+B;IAC/B,qCAAqC;CACtC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;AAE1G;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAA;AAEpD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzC;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAE,cAAc,GAAG,gBAAgB;IACnE,0BAA0B;IAC1B,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;IACrF,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,gBAAgB;IAC3F,MAAM,kBAAkB,GAAG,CAAC,CAAA,CAAC,UAAU;IACvC,MAAM,SAAS,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAA;IAEjF,+DAA+D;IAC/D,MAAM,wBAAwB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAE1D,OAAO,aAAa,GAAG,SAAS,GAAG,kBAAkB,GAAG,wBAAwB,CAAA;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAA;AAE5D;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAA;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAA;AAEjC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAA;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA;AAEpF;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,uCAAuC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAA;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAU,CAAA"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,8BAA8B;IAC9B,kCAAkC;IAClC,+BAA+B;IAC/B,qCAAqC;CACtC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;AAE1G;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAEzC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAElD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAA;AAEzC;;;;;;GAMG;AACH,SAAS,yBAAyB,CAAE,cAAc,GAAG,gBAAgB;IACnE,0BAA0B;IAC1B,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC,CAAA;IACrF,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,gBAAgB;IAC3F,MAAM,kBAAkB,GAAG,CAAC,CAAA,CAAC,UAAU;IACvC,MAAM,SAAS,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,kBAAkB,CAAA;IAEjF,+DAA+D;IAC/D,MAAM,wBAAwB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;IAE1D,OAAO,aAAa,GAAG,SAAS,GAAG,kBAAkB,GAAG,wBAAwB,CAAA;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,EAAE,CAAA;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAA;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,mCAAmC,CAAA;AAEpF;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,uCAAuC,CAAA;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAA;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,aAAa,CAAA;AAEzD;;GAEG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,UAAU,CAAA"}
@@ -26,8 +26,8 @@
26
26
  * WebRTC requires use of a relay to connect two nodes. The listener first discovers a relay server and makes a reservation, then the dialer can connect via the relayed address.
27
27
  *
28
28
  * ```TypeScript
29
- * import { noise } from '@chainsafe/libp2p-noise'
30
- * import { yamux } from '@chainsafe/libp2p-yamux'
29
+ * import { noise } from '@libp2p/noise'
30
+ * import { yamux } from '@libp2p/yamux'
31
31
  * import { echo } from '@libp2p/echo'
32
32
  * import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2'
33
33
  * import { identify } from '@libp2p/identify'
@@ -35,7 +35,6 @@
35
35
  * import { webSockets } from '@libp2p/websockets'
36
36
  * import { WebRTC } from '@multiformats/multiaddr-matcher'
37
37
  * import delay from 'delay'
38
- * import { pipe } from 'it-pipe'
39
38
  * import { createLibp2p } from 'libp2p'
40
39
  * import type { Multiaddr } from '@multiformats/multiaddr'
41
40
  *
@@ -134,15 +133,11 @@
134
133
  * await relay.stop()
135
134
  *
136
135
  * // send/receive some data from the remote peer via a direct connection
137
- * await pipe(
138
- * [new TextEncoder().encode('hello world')],
139
- * stream,
140
- * async source => {
141
- * for await (const buf of source) {
142
- * console.info(new TextDecoder().decode(buf.subarray()))
143
- * }
144
- * }
145
- * )
136
+ * stream.send(new TextEncoder().encode('hello world'))
137
+ *
138
+ * stream.addEventListener('message', (evt) => {
139
+ * console.info(new TextDecoder().decode(evt.data.subarray()))
140
+ * })
146
141
  * ```
147
142
  *
148
143
  * @example WebRTC Direct
@@ -167,7 +162,6 @@
167
162
  * ```TypeScript
168
163
  * import { createLibp2p } from 'libp2p'
169
164
  * import { multiaddr } from '@multiformats/multiaddr'
170
- * import { pipe } from 'it-pipe'
171
165
  * import { fromString, toString } from 'uint8arrays'
172
166
  * import { webRTCDirect } from '@libp2p/webrtc'
173
167
  *
@@ -196,15 +190,11 @@
196
190
  * signal: AbortSignal.timeout(10_000)
197
191
  * })
198
192
  *
199
- * await pipe(
200
- * [fromString(`Hello js-libp2p-webrtc\n`)],
201
- * stream,
202
- * async function (source) {
203
- * for await (const buf of source) {
204
- * console.info(toString(buf.subarray()))
205
- * }
206
- * }
207
- * )
193
+ * stream.send(new TextEncoder().encode('hello world'))
194
+ *
195
+ * stream.addEventListener('message', (evt) => {
196
+ * console.info(new TextDecoder().decode(evt.data.subarray()))
197
+ * })
208
198
  * ```
209
199
  *
210
200
  * ## WebRTC Direct certificate hashes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsQG;AAIH,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvG,OAAO,KAAK,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAA;AAClH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;;OAMG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAA;IAEtC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,YAAY,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,CAAA;AAE1E,iBAAS,YAAY,CAAE,IAAI,CAAC,EAAE,yBAAyB,GAAG,CAAC,UAAU,EAAE,+BAA+B,KAAK,SAAS,CAEnH;AAED,YAAY,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,CAAA;AAE9D,iBAAS,MAAM,CAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,SAAS,CAEjG;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4PG;AAIH,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvG,OAAO,KAAK,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAA;AAClH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;;;;OAMG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAA;IAEtC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,YAAY,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,CAAA;AAE1E,iBAAS,YAAY,CAAE,IAAI,CAAC,EAAE,yBAAyB,GAAG,CAAC,UAAU,EAAE,+BAA+B,KAAK,SAAS,CAEnH;AAED,YAAY,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,CAAA;AAE9D,iBAAS,MAAM,CAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,SAAS,CAEjG;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
package/dist/src/index.js CHANGED
@@ -26,8 +26,8 @@
26
26
  * WebRTC requires use of a relay to connect two nodes. The listener first discovers a relay server and makes a reservation, then the dialer can connect via the relayed address.
27
27
  *
28
28
  * ```TypeScript
29
- * import { noise } from '@chainsafe/libp2p-noise'
30
- * import { yamux } from '@chainsafe/libp2p-yamux'
29
+ * import { noise } from '@libp2p/noise'
30
+ * import { yamux } from '@libp2p/yamux'
31
31
  * import { echo } from '@libp2p/echo'
32
32
  * import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2'
33
33
  * import { identify } from '@libp2p/identify'
@@ -35,7 +35,6 @@
35
35
  * import { webSockets } from '@libp2p/websockets'
36
36
  * import { WebRTC } from '@multiformats/multiaddr-matcher'
37
37
  * import delay from 'delay'
38
- * import { pipe } from 'it-pipe'
39
38
  * import { createLibp2p } from 'libp2p'
40
39
  * import type { Multiaddr } from '@multiformats/multiaddr'
41
40
  *
@@ -134,15 +133,11 @@
134
133
  * await relay.stop()
135
134
  *
136
135
  * // send/receive some data from the remote peer via a direct connection
137
- * await pipe(
138
- * [new TextEncoder().encode('hello world')],
139
- * stream,
140
- * async source => {
141
- * for await (const buf of source) {
142
- * console.info(new TextDecoder().decode(buf.subarray()))
143
- * }
144
- * }
145
- * )
136
+ * stream.send(new TextEncoder().encode('hello world'))
137
+ *
138
+ * stream.addEventListener('message', (evt) => {
139
+ * console.info(new TextDecoder().decode(evt.data.subarray()))
140
+ * })
146
141
  * ```
147
142
  *
148
143
  * @example WebRTC Direct
@@ -167,7 +162,6 @@
167
162
  * ```TypeScript
168
163
  * import { createLibp2p } from 'libp2p'
169
164
  * import { multiaddr } from '@multiformats/multiaddr'
170
- * import { pipe } from 'it-pipe'
171
165
  * import { fromString, toString } from 'uint8arrays'
172
166
  * import { webRTCDirect } from '@libp2p/webrtc'
173
167
  *
@@ -196,15 +190,11 @@
196
190
  * signal: AbortSignal.timeout(10_000)
197
191
  * })
198
192
  *
199
- * await pipe(
200
- * [fromString(`Hello js-libp2p-webrtc\n`)],
201
- * stream,
202
- * async function (source) {
203
- * for await (const buf of source) {
204
- * console.info(toString(buf.subarray()))
205
- * }
206
- * }
207
- * )
193
+ * stream.send(new TextEncoder().encode('hello world'))
194
+ *
195
+ * stream.addEventListener('message', (evt) => {
196
+ * console.info(new TextDecoder().decode(evt.data.subarray()))
197
+ * })
208
198
  * ```
209
199
  *
210
200
  * ## WebRTC Direct certificate hashes
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AA+ExE,SAAS,YAAY,CAAE,IAAgC;IACrD,OAAO,CAAC,UAA2C,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACrG,CAAC;AAID,SAAS,MAAM,CAAE,IAA0B;IACzC,OAAO,CAAC,UAAqC,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACzF,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4PG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AA+ExE,SAAS,YAAY,CAAE,IAAgC;IACrD,OAAO,CAAC,UAA2C,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACrG,CAAC;AAID,SAAS,MAAM,CAAE,IAA0B;IACzC,OAAO,CAAC,UAAqC,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACzF,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAA"}
@@ -1,8 +1,7 @@
1
+ import { AbstractStreamMuxer } from '@libp2p/utils';
2
+ import { WebRTCStream } from './stream.js';
1
3
  import type { DataChannelOptions } from './index.js';
2
- import type { ComponentLogger, Stream, CounterGroup, StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/interface';
3
- import type { AbortOptions } from '@multiformats/multiaddr';
4
- import type { Source, Sink } from 'it-stream-types';
5
- import type { Uint8ArrayList } from 'uint8arraylist';
4
+ import type { ComponentLogger, CounterGroup, StreamMuxer, StreamMuxerFactory, CreateStreamOptions, MultiaddrConnection } from '@libp2p/interface';
6
5
  export interface DataChannelMuxerFactoryInit {
7
6
  /**
8
7
  * WebRTC Peer Connection
@@ -16,32 +15,27 @@ export interface DataChannelMuxerFactoryInit {
16
15
  * Optional metrics for this data channel muxer
17
16
  */
18
17
  metrics?: CounterGroup;
18
+ /**
19
+ * Options used to create data channels
20
+ */
19
21
  dataChannelOptions?: DataChannelOptions;
20
22
  }
21
23
  export interface DataChannelMuxerFactoryComponents {
22
24
  logger: ComponentLogger;
23
25
  }
24
- interface BufferedStream {
25
- stream: Stream;
26
- channel: RTCDataChannel;
27
- onEnd(err?: Error): void;
28
- }
29
26
  export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
30
27
  readonly protocol: string;
31
28
  /**
32
29
  * WebRTC Peer Connection
33
30
  */
34
31
  private readonly peerConnection;
35
- private bufferedStreams;
36
32
  private readonly metrics?;
37
33
  private readonly dataChannelOptions?;
38
- private readonly components;
39
- private readonly log;
40
- constructor(components: DataChannelMuxerFactoryComponents, init: DataChannelMuxerFactoryInit);
41
- createStreamMuxer(init?: StreamMuxerInit): StreamMuxer;
34
+ constructor(init: DataChannelMuxerFactoryInit);
35
+ createStreamMuxer(maConn: MultiaddrConnection): StreamMuxer;
42
36
  }
43
- export interface DataChannelMuxerInit extends DataChannelMuxerFactoryInit, StreamMuxerInit {
44
- streams: BufferedStream[];
37
+ export interface DataChannelMuxerInit extends DataChannelMuxerFactoryInit {
38
+ protocol: string;
45
39
  }
46
40
  export interface DataChannelMuxerComponents {
47
41
  logger: ComponentLogger;
@@ -49,37 +43,11 @@ export interface DataChannelMuxerComponents {
49
43
  /**
50
44
  * A libp2p data channel stream muxer
51
45
  */
52
- export declare class DataChannelMuxer implements StreamMuxer {
53
- #private;
54
- readonly init: DataChannelMuxerInit;
55
- /**
56
- * Array of streams in the data channel
57
- */
58
- streams: Stream[];
59
- protocol: string;
60
- private readonly log;
46
+ export declare class DataChannelMuxer extends AbstractStreamMuxer<WebRTCStream> implements StreamMuxer<WebRTCStream> {
61
47
  private readonly peerConnection;
62
48
  private readonly dataChannelOptions;
63
- private readonly metrics?;
64
- private readonly logger;
65
- constructor(components: DataChannelMuxerComponents, init: DataChannelMuxerInit);
66
- /**
67
- * Gracefully close all tracked streams and stop the muxer
68
- */
69
- close(options?: AbortOptions): Promise<void>;
70
- /**
71
- * Abort all tracked streams and stop the muxer
72
- */
73
- abort(err: Error): void;
74
- /**
75
- * The stream source, a no-op as the transport natively supports multiplexing
76
- */
77
- source: AsyncGenerator<Uint8Array, any, unknown>;
78
- /**
79
- * The stream destination, a no-op as the transport natively supports multiplexing
80
- */
81
- sink: Sink<Source<Uint8Array | Uint8ArrayList>, Promise<void>>;
82
- newStream(): Stream;
49
+ constructor(maConn: MultiaddrConnection, init: DataChannelMuxerInit);
50
+ onCreateStream(options?: CreateStreamOptions): Promise<WebRTCStream>;
51
+ onData(): void;
83
52
  }
84
- export {};
85
53
  //# sourceMappingURL=muxer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,cAAc,CAAA;IACvB,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAA;CACzB;AAED,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAoB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmC;IAC9D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,iCAAiC,EAAE,IAAI,EAAE,2BAA2B;IA2C7F,iBAAiB,CAAE,IAAI,CAAC,EAAE,eAAe,GAAG,WAAW;CAUxD;AAED,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B,EAAE,eAAe;IACxF,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,WAAW;;IAaG,QAAQ,CAAC,IAAI,EAAE,oBAAoB;IAZxF;;OAEG;IACI,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAEvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE3B,UAAU,EAAE,0BAA0B,EAAW,IAAI,EAAE,oBAAoB;IAiFxF;;OAEG;IACG,KAAK,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD;;OAEG;IACH,KAAK,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAMxB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAc;IAE9D;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAU;IAExE,SAAS,IAAK,MAAM;CAwBrB"}
1
+ {"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAGnD,OAAO,EAAgB,YAAY,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAEjJ,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;CACxC;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAoB;gBAE3C,IAAI,EAAE,2BAA2B;IAO9C,iBAAiB,CAAE,MAAM,EAAE,mBAAmB,GAAG,WAAW;CAQ7D;AAED,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B;IACvE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,mBAAmB,CAAC,YAAY,CAAE,YAAW,WAAW,CAAC,YAAY,CAAC;IAC1G,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;gBAE1C,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,oBAAoB;IAuC9D,cAAc,CAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC;IA2B3E,MAAM,IAAK,IAAI;CAGhB"}
package/dist/src/muxer.js CHANGED
@@ -1,59 +1,26 @@
1
+ import { AbstractStreamMuxer } from '@libp2p/utils';
2
+ import { pEvent } from 'p-event';
1
3
  import { MUXER_PROTOCOL } from './constants.js';
2
- import { createStream } from './stream.js';
3
- import { drainAndClose, nopSink, nopSource } from './util.js';
4
+ import { createStream, WebRTCStream } from './stream.js';
4
5
  export class DataChannelMuxerFactory {
5
6
  protocol;
6
7
  /**
7
8
  * WebRTC Peer Connection
8
9
  */
9
10
  peerConnection;
10
- bufferedStreams = [];
11
11
  metrics;
12
12
  dataChannelOptions;
13
- components;
14
- log;
15
- constructor(components, init) {
16
- this.components = components;
13
+ constructor(init) {
17
14
  this.peerConnection = init.peerConnection;
18
15
  this.metrics = init.metrics;
19
16
  this.protocol = init.protocol ?? MUXER_PROTOCOL;
20
17
  this.dataChannelOptions = init.dataChannelOptions ?? {};
21
- this.log = components.logger.forComponent('libp2p:webrtc:muxerfactory');
22
- // store any data channels opened before upgrade has been completed
23
- this.peerConnection.ondatachannel = ({ channel }) => {
24
- this.log.trace('incoming early datachannel with channel id %d and label "%s"', channel.id);
25
- // 'init' channel is only used during connection establishment
26
- if (channel.label === 'init') {
27
- this.log.trace('closing early init channel');
28
- channel.close();
29
- return;
30
- }
31
- // @ts-expect-error fields are set below
32
- const bufferedStream = {};
33
- const stream = createStream({
34
- channel,
35
- direction: 'inbound',
36
- onEnd: (err) => {
37
- bufferedStream.onEnd(err);
38
- },
39
- logger: components.logger,
40
- ...this.dataChannelOptions
41
- });
42
- bufferedStream.stream = stream;
43
- bufferedStream.channel = channel;
44
- bufferedStream.onEnd = () => {
45
- this.bufferedStreams = this.bufferedStreams.filter(s => s.stream.id !== stream.id);
46
- };
47
- this.bufferedStreams.push(bufferedStream);
48
- };
49
18
  }
50
- createStreamMuxer(init) {
51
- return new DataChannelMuxer(this.components, {
52
- ...init,
19
+ createStreamMuxer(maConn) {
20
+ return new DataChannelMuxer(maConn, {
53
21
  peerConnection: this.peerConnection,
54
22
  dataChannelOptions: this.dataChannelOptions,
55
23
  metrics: this.metrics,
56
- streams: this.bufferedStreams,
57
24
  protocol: this.protocol
58
25
  });
59
26
  }
@@ -61,26 +28,16 @@ export class DataChannelMuxerFactory {
61
28
  /**
62
29
  * A libp2p data channel stream muxer
63
30
  */
64
- export class DataChannelMuxer {
65
- init;
66
- /**
67
- * Array of streams in the data channel
68
- */
69
- streams;
70
- protocol;
71
- log;
31
+ export class DataChannelMuxer extends AbstractStreamMuxer {
72
32
  peerConnection;
73
33
  dataChannelOptions;
74
- metrics;
75
- logger;
76
- constructor(components, init) {
77
- this.init = init;
78
- this.log = components.logger.forComponent('libp2p:webrtc:muxer');
79
- this.logger = components.logger;
80
- this.streams = init.streams.map(s => s.stream);
34
+ constructor(maConn, init) {
35
+ super(maConn, {
36
+ ...init,
37
+ name: 'muxer'
38
+ });
81
39
  this.peerConnection = init.peerConnection;
82
40
  this.protocol = init.protocol ?? MUXER_PROTOCOL;
83
- this.metrics = init.metrics;
84
41
  this.dataChannelOptions = init.dataChannelOptions ?? {};
85
42
  /**
86
43
  * Fired when a data channel has been added to the connection has been
@@ -89,105 +46,45 @@ export class DataChannelMuxer {
89
46
  * {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/datachannel_event}
90
47
  */
91
48
  this.peerConnection.ondatachannel = ({ channel }) => {
92
- this.log.trace('incoming datachannel with channel id %d', channel.id);
49
+ this.log.trace('incoming %s datachannel with channel id %d and status', channel.protocol, channel.id, channel.readyState);
93
50
  // 'init' channel is only used during connection establishment
94
51
  if (channel.label === 'init') {
95
52
  this.log.trace('closing init channel');
96
53
  channel.close();
97
54
  return;
98
55
  }
99
- // lib-datachannel throws if `.getId` is called on a closed channel so
100
- // memoize it
101
- const id = channel.id;
102
56
  const stream = createStream({
57
+ ...this.streamOptions,
58
+ ...this.dataChannelOptions,
103
59
  channel,
104
60
  direction: 'inbound',
105
- onEnd: () => {
106
- this.#onStreamEnd(stream, channel);
107
- this.log('incoming channel %s ended', id);
108
- },
109
- logger: this.logger,
110
- ...this.dataChannelOptions
61
+ log: this.log
111
62
  });
112
- this.streams.push(stream);
113
- this.metrics?.increment({ incoming_stream: true });
114
- init?.onIncomingStream?.(stream);
63
+ this.onRemoteStream(stream);
115
64
  };
116
- // the DataChannelMuxer constructor is called during set up of the
117
- // connection by the upgrader.
118
- //
119
- // If we invoke `init.onIncomingStream` immediately, the connection object
120
- // will not be set up yet so add a tiny delay before letting the
121
- // connection know about early streams
122
- if (this.init.streams.length > 0) {
123
- queueMicrotask(() => {
124
- this.init.streams.forEach(bufferedStream => {
125
- bufferedStream.onEnd = () => {
126
- this.log('incoming early channel %s ended with state %s', bufferedStream.channel.id, bufferedStream.channel.readyState);
127
- this.#onStreamEnd(bufferedStream.stream, bufferedStream.channel);
128
- };
129
- this.metrics?.increment({ incoming_stream: true });
130
- this.init?.onIncomingStream?.(bufferedStream.stream);
131
- });
132
- });
133
- }
134
65
  }
135
- #onStreamEnd(stream, channel) {
136
- this.log.trace('stream %s %s %s onEnd', stream.direction, stream.id, stream.protocol);
137
- drainAndClose(channel, `${stream.direction} ${stream.id} ${stream.protocol}`, this.dataChannelOptions.drainTimeout, {
138
- log: this.log
66
+ async onCreateStream(options) {
67
+ // The spec says the label MUST be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label
68
+ const channel = this.peerConnection.createDataChannel('wtf', {
69
+ // TODO: pre-negotiate stream protocol
70
+ protocol: options?.protocol
139
71
  });
140
- this.streams = this.streams.filter(s => s.id !== stream.id);
141
- this.metrics?.increment({ stream_end: true });
142
- this.init?.onStreamEnd?.(stream);
143
- }
144
- /**
145
- * Gracefully close all tracked streams and stop the muxer
146
- */
147
- async close(options) {
148
- try {
149
- await Promise.all(this.streams.map(async (stream) => stream.close(options)));
150
- }
151
- catch (err) {
152
- this.abort(err);
72
+ this.log('open channel %d for protocol %s', channel.id, options?.protocol);
73
+ if (channel.readyState !== 'open') {
74
+ this.log('channel %d state is "%s" and not "open", waiting for "open" event before sending data', channel.id, channel.readyState);
75
+ await pEvent(channel, 'open', options);
76
+ this.log('channel %d state is now "%s", sending data', channel.id, channel.readyState);
153
77
  }
154
- }
155
- /**
156
- * Abort all tracked streams and stop the muxer
157
- */
158
- abort(err) {
159
- for (const stream of this.streams) {
160
- stream.abort(err);
161
- }
162
- }
163
- /**
164
- * The stream source, a no-op as the transport natively supports multiplexing
165
- */
166
- source = nopSource();
167
- /**
168
- * The stream destination, a no-op as the transport natively supports multiplexing
169
- */
170
- sink = nopSink;
171
- newStream() {
172
- // The spec says the label MUST be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label
173
- const channel = this.peerConnection.createDataChannel('');
174
- // lib-datachannel throws if `.getId` is called on a closed channel so
175
- // memoize it
176
- const id = channel.id;
177
- this.log.trace('opened outgoing datachannel with channel id %s', id);
178
78
  const stream = createStream({
79
+ ...options,
80
+ ...this.dataChannelOptions,
179
81
  channel,
180
82
  direction: 'outbound',
181
- onEnd: () => {
182
- this.#onStreamEnd(stream, channel);
183
- this.log('outgoing channel %s ended', id);
184
- },
185
- logger: this.logger,
186
- ...this.dataChannelOptions
83
+ log: this.log
187
84
  });
188
- this.streams.push(stream);
189
- this.metrics?.increment({ outgoing_stream: true });
190
85
  return stream;
191
86
  }
87
+ onData() {
88
+ }
192
89
  }
193
90
  //# sourceMappingURL=muxer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,13 @@ import { DataChannelMuxerFactory } from '../muxer.js';
2
2
  import { RTCPeerConnection } from '../webrtc/index.js';
3
3
  import type { WebRTCDialEvents, WebRTCTransportMetrics } from './transport.js';
4
4
  import type { DataChannelOptions } from '../index.js';
5
- import type { LoggerOptions, ComponentLogger, IncomingStreamData } from '@libp2p/interface';
5
+ import type { LoggerOptions, ComponentLogger } from '@libp2p/interface';
6
6
  import type { ConnectionManager, TransportManager } from '@libp2p/interface-internal';
7
- import type { Multiaddr } from '@multiformats/multiaddr';
7
+ import type { AbortOptions, Multiaddr } from '@multiformats/multiaddr';
8
8
  import type { ProgressOptions } from 'progress-events';
9
- export interface IncomingStreamOpts extends IncomingStreamData {
9
+ export interface IncomingStreamOptions extends AbortOptions {
10
10
  rtcConfiguration?: RTCConfiguration;
11
11
  dataChannelOptions?: Partial<DataChannelOptions>;
12
- signal: AbortSignal;
13
12
  }
14
13
  export interface ConnectOptions extends LoggerOptions, ProgressOptions<WebRTCDialEvents> {
15
14
  rtcConfiguration?: RTCConfiguration;
@@ -1 +1 @@
1
- {"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAI7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAc,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACvG,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa,EAAE,eAAe,CAAC,gBAAgB,CAAC;IACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAsB,kBAAkB,CAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAwJ1S"}
1
+ {"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAI7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAc,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa,EAAE,eAAe,CAAC,gBAAgB,CAAC;IACtF,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAsB,kBAAkB,CAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,uBAAuB,CAAA;CAAE,CAAC,CA8K1S"}