@libp2p/webrtc 2.0.0 → 2.0.2

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 (91) hide show
  1. package/dist/index.min.js +20 -21
  2. package/dist/src/index.d.ts +2 -2
  3. package/dist/src/index.d.ts.map +1 -1
  4. package/dist/src/index.js +2 -2
  5. package/dist/src/index.js.map +1 -1
  6. package/dist/src/pb/message.d.ts +20 -0
  7. package/dist/src/pb/message.d.ts.map +1 -0
  8. package/dist/src/pb/message.js +73 -0
  9. package/dist/src/pb/message.js.map +1 -0
  10. package/dist/src/private-to-private/handler.d.ts.map +1 -0
  11. package/dist/src/{peer_transport → private-to-private}/handler.js +9 -9
  12. package/dist/src/private-to-private/handler.js.map +1 -0
  13. package/dist/src/{peer_transport → private-to-private}/listener.d.ts +4 -5
  14. package/dist/src/private-to-private/listener.d.ts.map +1 -0
  15. package/dist/src/private-to-private/listener.js +29 -0
  16. package/dist/src/private-to-private/listener.js.map +1 -0
  17. package/dist/src/{peer_transport/pb/index.d.ts → private-to-private/pb/message.d.ts} +2 -2
  18. package/dist/src/private-to-private/pb/message.d.ts.map +1 -0
  19. package/dist/src/{peer_transport/pb/index.js → private-to-private/pb/message.js} +1 -1
  20. package/dist/src/private-to-private/pb/message.js.map +1 -0
  21. package/dist/src/{peer_transport → private-to-private}/transport.d.ts +0 -3
  22. package/dist/src/private-to-private/transport.d.ts.map +1 -0
  23. package/dist/src/private-to-private/transport.js.map +1 -0
  24. package/dist/src/{peer_transport → private-to-private}/util.d.ts +3 -4
  25. package/dist/src/private-to-private/util.d.ts.map +1 -0
  26. package/dist/src/{peer_transport → private-to-private}/util.js +3 -5
  27. package/dist/src/private-to-private/util.js.map +1 -0
  28. package/dist/src/private-to-public/options.d.ts.map +1 -0
  29. package/dist/src/private-to-public/options.js.map +1 -0
  30. package/dist/src/private-to-public/sdp.d.ts.map +1 -0
  31. package/dist/src/{sdp.js → private-to-public/sdp.js} +1 -1
  32. package/dist/src/private-to-public/sdp.js.map +1 -0
  33. package/dist/src/private-to-public/transport.d.ts.map +1 -0
  34. package/dist/src/{transport.js → private-to-public/transport.js} +5 -5
  35. package/dist/src/private-to-public/transport.js.map +1 -0
  36. package/dist/src/private-to-public/util.d.ts +2 -0
  37. package/dist/src/private-to-public/util.d.ts.map +1 -0
  38. package/dist/src/private-to-public/util.js +3 -0
  39. package/dist/src/private-to-public/util.js.map +1 -0
  40. package/dist/src/stream.d.ts +2 -2
  41. package/dist/src/stream.d.ts.map +1 -1
  42. package/dist/src/stream.js +16 -16
  43. package/dist/src/stream.js.map +1 -1
  44. package/dist/src/util.d.ts +1 -1
  45. package/dist/src/util.d.ts.map +1 -1
  46. package/dist/src/util.js +3 -2
  47. package/dist/src/util.js.map +1 -1
  48. package/package.json +4 -7
  49. package/src/index.ts +3 -3
  50. package/src/{message.proto → pb/message.proto} +2 -4
  51. package/src/pb/message.ts +92 -0
  52. package/src/{peer_transport → private-to-private}/handler.ts +9 -9
  53. package/src/{peer_transport → private-to-private}/listener.ts +10 -22
  54. package/src/{peer_transport/pb/index.ts → private-to-private/pb/message.ts} +1 -1
  55. package/src/{peer_transport → private-to-private}/transport.ts +0 -3
  56. package/src/{peer_transport → private-to-private}/util.ts +5 -8
  57. package/src/{sdp.ts → private-to-public/sdp.ts} +1 -1
  58. package/src/{transport.ts → private-to-public/transport.ts} +5 -5
  59. package/src/private-to-public/util.ts +3 -0
  60. package/src/stream.ts +18 -18
  61. package/src/util.ts +5 -3
  62. package/dist/proto_ts/message.d.ts +0 -56
  63. package/dist/proto_ts/message.d.ts.map +0 -1
  64. package/dist/proto_ts/message.js +0 -86
  65. package/dist/proto_ts/message.js.map +0 -1
  66. package/dist/src/options.d.ts.map +0 -1
  67. package/dist/src/options.js.map +0 -1
  68. package/dist/src/peer_transport/handler.d.ts.map +0 -1
  69. package/dist/src/peer_transport/handler.js.map +0 -1
  70. package/dist/src/peer_transport/listener.d.ts.map +0 -1
  71. package/dist/src/peer_transport/listener.js +0 -35
  72. package/dist/src/peer_transport/listener.js.map +0 -1
  73. package/dist/src/peer_transport/pb/index.d.ts.map +0 -1
  74. package/dist/src/peer_transport/pb/index.js.map +0 -1
  75. package/dist/src/peer_transport/transport.d.ts.map +0 -1
  76. package/dist/src/peer_transport/transport.js.map +0 -1
  77. package/dist/src/peer_transport/util.d.ts.map +0 -1
  78. package/dist/src/peer_transport/util.js.map +0 -1
  79. package/dist/src/sdp.d.ts.map +0 -1
  80. package/dist/src/sdp.js.map +0 -1
  81. package/dist/src/transport.d.ts.map +0 -1
  82. package/dist/src/transport.js.map +0 -1
  83. package/proto_ts/message.ts +0 -106
  84. /package/dist/src/{peer_transport → private-to-private}/handler.d.ts +0 -0
  85. /package/dist/src/{peer_transport → private-to-private}/transport.js +0 -0
  86. /package/dist/src/{options.d.ts → private-to-public/options.d.ts} +0 -0
  87. /package/dist/src/{options.js → private-to-public/options.js} +0 -0
  88. /package/dist/src/{sdp.d.ts → private-to-public/sdp.d.ts} +0 -0
  89. /package/dist/src/{transport.d.ts → private-to-public/transport.d.ts} +0 -0
  90. /package/src/{peer_transport/pb/index.proto → private-to-private/pb/message.proto} +0 -0
  91. /package/src/{options.ts → private-to-public/options.ts} +0 -0
@@ -5,7 +5,7 @@ import { pipe } from 'it-pipe';
5
5
  import { pushable } from 'it-pushable';
6
6
  import defer from 'p-defer';
7
7
  import { Uint8ArrayList } from 'uint8arraylist';
8
- import * as pb from '../proto_ts/message.js';
8
+ import { Message } from './pb/message.js';
9
9
  const log = logger('libp2p:webrtc:stream');
10
10
  /**
11
11
  * Constructs a default StreamStat
@@ -44,7 +44,7 @@ class StreamState {
44
44
  }
45
45
  if (direction === 'inbound') {
46
46
  switch (flag) {
47
- case pb.Message_Flag.FIN:
47
+ case Message.Flag.FIN:
48
48
  if (this.state === StreamStates.OPEN) {
49
49
  this.state = StreamStates.READ_CLOSED;
50
50
  }
@@ -52,7 +52,7 @@ class StreamState {
52
52
  this.state = StreamStates.CLOSED;
53
53
  }
54
54
  break;
55
- case pb.Message_Flag.STOP_SENDING:
55
+ case Message.Flag.STOP_SENDING:
56
56
  if (this.state === StreamStates.OPEN) {
57
57
  this.state = StreamStates.WRITE_CLOSED;
58
58
  }
@@ -60,7 +60,7 @@ class StreamState {
60
60
  this.state = StreamStates.CLOSED;
61
61
  }
62
62
  break;
63
- case pb.Message_Flag.RESET:
63
+ case Message.Flag.RESET:
64
64
  this.state = StreamStates.CLOSED;
65
65
  break;
66
66
  default:
@@ -69,7 +69,7 @@ class StreamState {
69
69
  }
70
70
  else {
71
71
  switch (flag) {
72
- case pb.Message_Flag.FIN:
72
+ case Message.Flag.FIN:
73
73
  if (this.state === StreamStates.OPEN) {
74
74
  this.state = StreamStates.WRITE_CLOSED;
75
75
  }
@@ -77,7 +77,7 @@ class StreamState {
77
77
  this.state = StreamStates.CLOSED;
78
78
  }
79
79
  break;
80
- case pb.Message_Flag.STOP_SENDING:
80
+ case Message.Flag.STOP_SENDING:
81
81
  if (this.state === StreamStates.OPEN) {
82
82
  this.state = StreamStates.READ_CLOSED;
83
83
  }
@@ -85,7 +85,7 @@ class StreamState {
85
85
  this.state = StreamStates.CLOSED;
86
86
  }
87
87
  break;
88
- case pb.Message_Flag.RESET:
88
+ case Message.Flag.RESET:
89
89
  this.state = StreamStates.CLOSED;
90
90
  break;
91
91
  default:
@@ -229,7 +229,7 @@ export class WebRTCStream {
229
229
  if (this.streamState.isWriteClosed()) {
230
230
  return;
231
231
  }
232
- const msgbuf = pb.Message.toBinary({ message: buf.subarray() });
232
+ const msgbuf = Message.encode({ message: buf.subarray() });
233
233
  const sendbuf = lengthPrefixed.encode.single(msgbuf);
234
234
  this.channel.send(sendbuf.subarray());
235
235
  }
@@ -238,7 +238,7 @@ export class WebRTCStream {
238
238
  * Handle incoming
239
239
  */
240
240
  processIncomingProtobuf(buffer) {
241
- const message = pb.Message.fromBinary(buffer);
241
+ const message = Message.decode(buffer);
242
242
  if (message.flag !== undefined) {
243
243
  const [currentState, nextState] = this.streamState.transition({ direction: 'inbound', flag: message.flag });
244
244
  if (currentState !== nextState) {
@@ -279,13 +279,13 @@ export class WebRTCStream {
279
279
  * Close a stream for reading only
280
280
  */
281
281
  closeRead() {
282
- const [currentState, nextState] = this.streamState.transition({ direction: 'outbound', flag: pb.Message_Flag.STOP_SENDING });
282
+ const [currentState, nextState] = this.streamState.transition({ direction: 'outbound', flag: Message.Flag.STOP_SENDING });
283
283
  if (currentState === nextState) {
284
284
  // No change, no op
285
285
  return;
286
286
  }
287
287
  if (currentState === StreamStates.OPEN || currentState === StreamStates.WRITE_CLOSED) {
288
- this._sendFlag(pb.Message_Flag.STOP_SENDING);
288
+ this._sendFlag(Message.Flag.STOP_SENDING);
289
289
  this._innersrc.end();
290
290
  }
291
291
  if (nextState === StreamStates.CLOSED) {
@@ -296,13 +296,13 @@ export class WebRTCStream {
296
296
  * Close a stream for writing only
297
297
  */
298
298
  closeWrite() {
299
- const [currentState, nextState] = this.streamState.transition({ direction: 'outbound', flag: pb.Message_Flag.FIN });
299
+ const [currentState, nextState] = this.streamState.transition({ direction: 'outbound', flag: Message.Flag.FIN });
300
300
  if (currentState === nextState) {
301
301
  // No change, no op
302
302
  return;
303
303
  }
304
304
  if (currentState === StreamStates.OPEN || currentState === StreamStates.READ_CLOSED) {
305
- this._sendFlag(pb.Message_Flag.FIN);
305
+ this._sendFlag(Message.Flag.FIN);
306
306
  this.closeWritePromise.resolve();
307
307
  }
308
308
  if (nextState === StreamStates.CLOSED) {
@@ -322,18 +322,18 @@ export class WebRTCStream {
322
322
  * @see this.closeWrite
323
323
  */
324
324
  reset() {
325
- const [currentState, nextState] = this.streamState.transition({ direction: 'outbound', flag: pb.Message_Flag.RESET });
325
+ const [currentState, nextState] = this.streamState.transition({ direction: 'outbound', flag: Message.Flag.RESET });
326
326
  if (currentState === nextState) {
327
327
  // No change, no op
328
328
  return;
329
329
  }
330
- this._sendFlag(pb.Message_Flag.RESET);
330
+ this._sendFlag(Message.Flag.RESET);
331
331
  this.close();
332
332
  }
333
333
  _sendFlag(flag) {
334
334
  try {
335
335
  log.trace('Sending flag: %s', flag.toString());
336
- const msgbuf = pb.Message.toBinary({ flag });
336
+ const msgbuf = Message.encode({ flag });
337
337
  this.channel.send(lengthPrefixed.encode.single(msgbuf).subarray());
338
338
  }
339
339
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
+ export declare const isFirefox: boolean;
1
2
  export declare const nopSource: () => AsyncGenerator<Uint8Array, any, unknown>;
2
3
  export declare const nopSink: (_: any) => Promise<void>;
3
- export declare const genUfrag: (len: number) => string;
4
4
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAA4B,eAAe,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,MAAa,GAAG,KAAG,QAAQ,IAAI,CAAO,CAAA;AAG1D,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,MAAoG,CAAA"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,SAAoD,CAAA;AAE1E,eAAO,MAAM,SAAS,QAA4B,eAAe,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,MAAa,GAAG,KAAG,QAAQ,IAAI,CAAO,CAAA"}
package/dist/src/util.js CHANGED
@@ -1,5 +1,6 @@
1
+ import { detect } from 'detect-browser';
2
+ const browser = detect();
3
+ export const isFirefox = ((browser != null) && browser.name === 'firefox');
1
4
  export const nopSource = async function* nop() { };
2
5
  export const nopSink = async (_) => { };
3
- const charset = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/');
4
- export const genUfrag = (len) => [...Array(len)].map(() => charset.at(Math.floor(Math.random() * charset.length))).join('');
5
6
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,SAAU,CAAC,CAAC,GAAG,KAA+C,CAAC,CAAA;AAE7F,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,CAAM,EAAiB,EAAE,GAAE,CAAC,CAAA;AAE1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAA;AAC9F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAA;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,SAAU,CAAC,CAAC,GAAG,KAA+C,CAAC,CAAA;AAE7F,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,CAAM,EAAiB,EAAE,GAAE,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/webrtc",
3
- "version": "2.0.0",
3
+ "version": "2.0.2",
4
4
  "description": "A libp2p transport using WebRTC connections",
5
5
  "author": "",
6
6
  "license": "Apache-2.0 OR MIT",
@@ -123,8 +123,7 @@
123
123
  ]
124
124
  },
125
125
  "scripts": {
126
- "generate:proto": "npx protoc --ts_out proto_ts --proto_path src src/*.proto",
127
- "generate:webrtc-direct": "protons src/peer_transport/pb/index.proto",
126
+ "generate": "protons src/private-to-private/pb/message.proto src/pb/message.proto",
128
127
  "build": "aegir build",
129
128
  "test": "aegir test -t browser",
130
129
  "test:chrome": "aegir test -t browser --cov",
@@ -138,17 +137,16 @@
138
137
  "dependencies": {
139
138
  "@chainsafe/libp2p-noise": "^12.0.0",
140
139
  "@libp2p/interface-connection": "^5.0.2",
141
- "@libp2p/interface-libp2p": "^3.1.0",
142
140
  "@libp2p/interface-metrics": "^4.0.8",
143
141
  "@libp2p/interface-peer-id": "^2.0.2",
144
142
  "@libp2p/interface-registrar": "^2.0.12",
145
143
  "@libp2p/interface-stream-muxer": "^4.0.1",
146
- "@libp2p/interface-transport": "^4.0.2",
144
+ "@libp2p/interface-transport": "^4.0.3",
147
145
  "@libp2p/interfaces": "^3.3.2",
148
146
  "@libp2p/logger": "^2.0.7",
149
147
  "@libp2p/peer-id": "^2.0.3",
148
+ "@multiformats/mafmt": "^12.1.2",
150
149
  "@multiformats/multiaddr": "^12.1.2",
151
- "@protobuf-ts/runtime": "^2.9.0",
152
150
  "abortable-iterator": "^5.0.1",
153
151
  "detect-browser": "^5.3.0",
154
152
  "it-length-prefixed": "^9.0.1",
@@ -167,7 +165,6 @@
167
165
  "devDependencies": {
168
166
  "@libp2p/interface-mocks": "^12.0.1",
169
167
  "@libp2p/peer-id-factory": "^2.0.3",
170
- "@protobuf-ts/protoc": "^2.9.0",
171
168
  "@types/sinon": "^10.0.14",
172
169
  "aegir": "^39.0.6",
173
170
  "it-pair": "^2.0.6",
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { WebRTCTransport } from './peer_transport/transport.js'
2
- import { WebRTCDirectTransport, type WebRTCDirectTransportComponents } from './transport.js'
3
- import type { WebRTCTransportComponents, WebRTCTransportInit } from './peer_transport/transport.js'
1
+ import { WebRTCTransport } from './private-to-private/transport.js'
2
+ import { WebRTCDirectTransport, type WebRTCDirectTransportComponents } from './private-to-public/transport.js'
3
+ import type { WebRTCTransportComponents, WebRTCTransportInit } from './private-to-private/transport.js'
4
4
  import type { Transport } from '@libp2p/interface-transport'
5
5
 
6
6
  function webRTCDirect (): (components: WebRTCDirectTransportComponents) => Transport {
@@ -1,6 +1,4 @@
1
- syntax = "proto2";
2
-
3
- package webrtc.pb;
1
+ syntax = "proto3";
4
2
 
5
3
  message Message {
6
4
  enum Flag {
@@ -10,7 +8,7 @@ message Message {
10
8
  // The sender will no longer read messages on the stream. Incoming data is
11
9
  // being discarded on receipt.
12
10
  STOP_SENDING = 1;
13
-
11
+
14
12
  // The sender abruptly terminates the sending part of the stream. The
15
13
  // receiver can discard any data that it already received on that stream.
16
14
  RESET = 2;
@@ -0,0 +1,92 @@
1
+ /* eslint-disable import/export */
2
+ /* eslint-disable complexity */
3
+ /* eslint-disable @typescript-eslint/no-namespace */
4
+ /* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
5
+ /* eslint-disable @typescript-eslint/no-empty-interface */
6
+
7
+ import { enumeration, encodeMessage, decodeMessage, message } from 'protons-runtime'
8
+ import type { Codec } from 'protons-runtime'
9
+ import type { Uint8ArrayList } from 'uint8arraylist'
10
+
11
+ export interface Message {
12
+ flag?: Message.Flag
13
+ message?: Uint8Array
14
+ }
15
+
16
+ export namespace Message {
17
+ export enum Flag {
18
+ FIN = 'FIN',
19
+ STOP_SENDING = 'STOP_SENDING',
20
+ RESET = 'RESET'
21
+ }
22
+
23
+ enum __FlagValues {
24
+ FIN = 0,
25
+ STOP_SENDING = 1,
26
+ RESET = 2
27
+ }
28
+
29
+ export namespace Flag {
30
+ export const codec = (): Codec<Flag> => {
31
+ return enumeration<Flag>(__FlagValues)
32
+ }
33
+ }
34
+
35
+ let _codec: Codec<Message>
36
+
37
+ export const codec = (): Codec<Message> => {
38
+ if (_codec == null) {
39
+ _codec = message<Message>((obj, w, opts = {}) => {
40
+ if (opts.lengthDelimited !== false) {
41
+ w.fork()
42
+ }
43
+
44
+ if (obj.flag != null) {
45
+ w.uint32(8)
46
+ Message.Flag.codec().encode(obj.flag, w)
47
+ }
48
+
49
+ if (obj.message != null) {
50
+ w.uint32(18)
51
+ w.bytes(obj.message)
52
+ }
53
+
54
+ if (opts.lengthDelimited !== false) {
55
+ w.ldelim()
56
+ }
57
+ }, (reader, length) => {
58
+ const obj: any = {}
59
+
60
+ const end = length == null ? reader.len : reader.pos + length
61
+
62
+ while (reader.pos < end) {
63
+ const tag = reader.uint32()
64
+
65
+ switch (tag >>> 3) {
66
+ case 1:
67
+ obj.flag = Message.Flag.codec().decode(reader)
68
+ break
69
+ case 2:
70
+ obj.message = reader.bytes()
71
+ break
72
+ default:
73
+ reader.skipType(tag & 7)
74
+ break
75
+ }
76
+ }
77
+
78
+ return obj
79
+ })
80
+ }
81
+
82
+ return _codec
83
+ }
84
+
85
+ export const encode = (obj: Partial<Message>): Uint8Array => {
86
+ return encodeMessage(obj, Message.codec())
87
+ }
88
+
89
+ export const decode = (buf: Uint8Array | Uint8ArrayList): Message => {
90
+ return decodeMessage(buf, Message.codec())
91
+ }
92
+ }
@@ -3,7 +3,7 @@ import { abortableDuplex } from 'abortable-iterator'
3
3
  import { pbStream } from 'it-pb-stream'
4
4
  import pDefer, { type DeferredPromise } from 'p-defer'
5
5
  import { DataChannelMuxerFactory } from '../muxer.js'
6
- import * as pb from './pb/index.js'
6
+ import { Message } from './pb/message.js'
7
7
  import { readCandidatesUntilConnected, resolveOnConnected } from './util.js'
8
8
  import type { Stream } from '@libp2p/interface-connection'
9
9
  import type { IncomingStreamData } from '@libp2p/interface-registrar'
@@ -17,7 +17,7 @@ export type IncomingStreamOpts = { rtcConfiguration?: RTCConfiguration } & Incom
17
17
 
18
18
  export async function handleIncomingStream ({ rtcConfiguration, stream: rawStream }: IncomingStreamOpts): Promise<{ pc: RTCPeerConnection, muxerFactory: StreamMuxerFactory, remoteAddress: string }> {
19
19
  const signal = AbortSignal.timeout(DEFAULT_TIMEOUT)
20
- const stream = pbStream(abortableDuplex(rawStream, signal)).pb(pb.Message)
20
+ const stream = pbStream(abortableDuplex(rawStream, signal)).pb(Message)
21
21
  const pc = new RTCPeerConnection(rtcConfiguration)
22
22
  const muxerFactory = new DataChannelMuxerFactory(pc)
23
23
 
@@ -30,7 +30,7 @@ export async function handleIncomingStream ({ rtcConfiguration, stream: rawStrea
30
30
  answerSentPromise.promise.then(
31
31
  () => {
32
32
  stream.write({
33
- type: pb.Message.Type.ICE_CANDIDATE,
33
+ type: Message.Type.ICE_CANDIDATE,
34
34
  data: (candidate != null) ? JSON.stringify(candidate.toJSON()) : ''
35
35
  })
36
36
  },
@@ -44,7 +44,7 @@ export async function handleIncomingStream ({ rtcConfiguration, stream: rawStrea
44
44
 
45
45
  // read an SDP offer
46
46
  const pbOffer = await stream.read()
47
- if (pbOffer.type !== pb.Message.Type.SDP_OFFER) {
47
+ if (pbOffer.type !== Message.Type.SDP_OFFER) {
48
48
  throw new Error(`expected message type SDP_OFFER, received: ${pbOffer.type ?? 'undefined'} `)
49
49
  }
50
50
  const offer = new RTCSessionDescription({
@@ -64,7 +64,7 @@ export async function handleIncomingStream ({ rtcConfiguration, stream: rawStrea
64
64
  throw new Error('Failed to create answer')
65
65
  })
66
66
  // write the answer to the remote
67
- stream.write({ type: pb.Message.Type.SDP_ANSWER, data: answer.sdp })
67
+ stream.write({ type: Message.Type.SDP_ANSWER, data: answer.sdp })
68
68
 
69
69
  await pc.setLocalDescription(answer).catch(err => {
70
70
  log.error('could not execute setLocalDescription', err)
@@ -89,7 +89,7 @@ export interface ConnectOptions {
89
89
  }
90
90
 
91
91
  export async function initiateConnection ({ rtcConfiguration, signal, stream: rawStream }: ConnectOptions): Promise<{ pc: RTCPeerConnection, muxerFactory: StreamMuxerFactory, remoteAddress: string }> {
92
- const stream = pbStream(abortableDuplex(rawStream, signal)).pb(pb.Message)
92
+ const stream = pbStream(abortableDuplex(rawStream, signal)).pb(Message)
93
93
  // setup peer connection
94
94
  const pc = new RTCPeerConnection(rtcConfiguration)
95
95
  const muxerFactory = new DataChannelMuxerFactory(pc)
@@ -107,14 +107,14 @@ export async function initiateConnection ({ rtcConfiguration, signal, stream: ra
107
107
  // peer
108
108
  pc.onicecandidate = ({ candidate }) => {
109
109
  stream.write({
110
- type: pb.Message.Type.ICE_CANDIDATE,
110
+ type: Message.Type.ICE_CANDIDATE,
111
111
  data: (candidate != null) ? JSON.stringify(candidate.toJSON()) : ''
112
112
  })
113
113
  }
114
114
  // create an offer
115
115
  const offerSdp = await pc.createOffer()
116
116
  // write the offer to the stream
117
- stream.write({ type: pb.Message.Type.SDP_OFFER, data: offerSdp.sdp })
117
+ stream.write({ type: Message.Type.SDP_OFFER, data: offerSdp.sdp })
118
118
  // set offer as local description
119
119
  await pc.setLocalDescription(offerSdp).catch(err => {
120
120
  log.error('could not execute setLocalDescription', err)
@@ -123,7 +123,7 @@ export async function initiateConnection ({ rtcConfiguration, signal, stream: ra
123
123
 
124
124
  // read answer
125
125
  const answerMessage = await stream.read()
126
- if (answerMessage.type !== pb.Message.Type.SDP_ANSWER) {
126
+ if (answerMessage.type !== Message.Type.SDP_ANSWER) {
127
127
  throw new Error('remote should send an SDP answer')
128
128
  }
129
129
 
@@ -1,47 +1,35 @@
1
1
  import { EventEmitter } from '@libp2p/interfaces/events'
2
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
2
+ import { Circuit } from '@multiformats/mafmt'
3
3
  import type { PeerId } from '@libp2p/interface-peer-id'
4
- import type { ListenerEvents, Listener } from '@libp2p/interface-transport'
4
+ import type { ListenerEvents, Listener, TransportManager } from '@libp2p/interface-transport'
5
5
  import type { Multiaddr } from '@multiformats/multiaddr'
6
6
 
7
7
  export interface ListenerOptions {
8
8
  peerId: PeerId
9
- events: EventEmitter<Libp2pEvents>
9
+ transportManager: TransportManager
10
10
  }
11
11
 
12
12
  export class WebRTCPeerListener extends EventEmitter<ListenerEvents> implements Listener {
13
13
  private readonly peerId: PeerId
14
- private listeners: Listener[] = []
14
+ private readonly transportManager: TransportManager
15
15
 
16
16
  constructor (opts: ListenerOptions) {
17
17
  super()
18
18
 
19
19
  this.peerId = opts.peerId
20
-
21
- opts.events.addEventListener('transport:listening', (event) => {
22
- const listener = event.detail
23
-
24
- if (listener === this || this.listeners.includes(listener)) {
25
- return
26
- }
27
-
28
- this.listeners.push(listener)
29
- })
30
-
31
- opts.events.addEventListener('transport:close', (event) => {
32
- const listener = event.detail
33
-
34
- this.listeners = this.listeners.filter(l => l !== listener)
35
- })
20
+ this.transportManager = opts.transportManager
36
21
  }
37
22
 
38
- async listen (ma: Multiaddr): Promise<void> {
23
+ async listen (): Promise<void> {
39
24
  this.safeDispatchEvent('listening', {})
40
25
  }
41
26
 
42
27
  getAddrs (): Multiaddr[] {
43
- return this.listeners
28
+ return this.transportManager
29
+ .getListeners()
30
+ .filter(l => l !== this)
44
31
  .map(l => l.getAddrs()
32
+ .filter(ma => Circuit.matches(ma))
45
33
  .map(ma => {
46
34
  return ma.encapsulate(`/webrtc/p2p/${this.peerId}`)
47
35
  })
@@ -82,7 +82,7 @@ export namespace Message {
82
82
  return _codec
83
83
  }
84
84
 
85
- export const encode = (obj: Message): Uint8Array => {
85
+ export const encode = (obj: Partial<Message>): Uint8Array => {
86
86
  return encodeMessage(obj, Message.codec())
87
87
  }
88
88
 
@@ -8,10 +8,8 @@ import { WebRTCMultiaddrConnection } from '../maconn.js'
8
8
  import { initiateConnection, handleIncomingStream } from './handler.js'
9
9
  import { WebRTCPeerListener } from './listener.js'
10
10
  import type { Connection } from '@libp2p/interface-connection'
11
- import type { Libp2pEvents } from '@libp2p/interface-libp2p'
12
11
  import type { PeerId } from '@libp2p/interface-peer-id'
13
12
  import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar'
14
- import type { EventEmitter } from '@libp2p/interfaces/events'
15
13
  import type { Startable } from '@libp2p/interfaces/startable'
16
14
 
17
15
  const log = logger('libp2p:webrtc:peer')
@@ -30,7 +28,6 @@ export interface WebRTCTransportComponents {
30
28
  registrar: Registrar
31
29
  upgrader: Upgrader
32
30
  transportManager: TransportManager
33
- events: EventEmitter<Libp2pEvents>
34
31
  }
35
32
 
36
33
  export class WebRTCTransport implements Transport, Startable {
@@ -1,14 +1,11 @@
1
1
  import { logger } from '@libp2p/logger'
2
- import { detect } from 'detect-browser'
3
- import * as pb from './pb/index.js'
2
+ import { isFirefox } from '../util.js'
3
+ import { Message } from './pb/message.js'
4
4
  import type { DeferredPromise } from 'p-defer'
5
5
 
6
- const browser = detect()
7
- export const isFirefox = ((browser != null) && browser.name === 'firefox')
8
-
9
6
  interface MessageStream {
10
- read: () => Promise<pb.Message>
11
- write: (d: pb.Message) => void | Promise<void>
7
+ read: () => Promise<Message>
8
+ write: (d: Message) => void | Promise<void>
12
9
  }
13
10
 
14
11
  const log = logger('libp2p:webrtc:peer:util')
@@ -19,7 +16,7 @@ export const readCandidatesUntilConnected = async (connectedPromise: DeferredPro
19
16
  // check if readResult is a message
20
17
  if (readResult instanceof Object) {
21
18
  const message = readResult
22
- if (message.type !== pb.Message.Type.ICE_CANDIDATE) {
19
+ if (message.type !== Message.Type.ICE_CANDIDATE) {
23
20
  throw new Error('expected only ice candidates')
24
21
  }
25
22
  // end of candidates has been signalled
@@ -1,7 +1,7 @@
1
1
  import { logger } from '@libp2p/logger'
2
2
  import { bases } from 'multiformats/basics'
3
3
  import * as multihashes from 'multihashes'
4
- import { inappropriateMultiaddr, invalidArgument, invalidFingerprint, unsupportedHashAlgorithm } from './error.js'
4
+ import { inappropriateMultiaddr, invalidArgument, invalidFingerprint, unsupportedHashAlgorithm } from '../error.js'
5
5
  import { CERTHASH_CODE } from './transport.js'
6
6
  import type { Multiaddr } from '@multiformats/multiaddr'
7
7
  import type { HashCode, HashName } from 'multihashes'
@@ -6,12 +6,12 @@ import { protocols } from '@multiformats/multiaddr'
6
6
  import * as multihashes from 'multihashes'
7
7
  import { concat } from 'uint8arrays/concat'
8
8
  import { fromString as uint8arrayFromString } from 'uint8arrays/from-string'
9
- import { dataChannelError, inappropriateMultiaddr, unimplemented, invalidArgument } from './error.js'
10
- import { WebRTCMultiaddrConnection } from './maconn.js'
11
- import { DataChannelMuxerFactory } from './muxer.js'
12
- import { isFirefox } from './peer_transport/util.js'
9
+ import { dataChannelError, inappropriateMultiaddr, unimplemented, invalidArgument } from '../error.js'
10
+ import { WebRTCMultiaddrConnection } from '../maconn.js'
11
+ import { DataChannelMuxerFactory } from '../muxer.js'
12
+ import { WebRTCStream } from '../stream.js'
13
+ import { isFirefox } from '../util.js'
13
14
  import * as sdp from './sdp.js'
14
- import { WebRTCStream } from './stream.js'
15
15
  import { genUfrag } from './util.js'
16
16
  import type { WebRTCDialOptions } from './options.js'
17
17
  import type { Connection } from '@libp2p/interface-connection'
@@ -0,0 +1,3 @@
1
+
2
+ const charset = Array.from('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')
3
+ export const genUfrag = (len: number): string => [...Array(len)].map(() => charset.at(Math.floor(Math.random() * charset.length))).join('')