@libp2p/webrtc 7.0.1-aa5ba42d0 → 7.0.1-b927d5921
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 +2 -2
- package/dist/index.min.js.map +3 -3
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +17 -5
- package/dist/src/private-to-private/util.js.map +1 -1
- package/package.json +9 -9
- package/src/private-to-private/util.ts +18 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,gBAAgB,CAAC;IAC3G,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,4BAA4B,GAAU,IAAI,iBAAiB,EAAE,QAAQ,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,SAAS,qBAAqB,KAAG,OAAO,CAAC,IAAI,CA+D9J,CAAA;AA4BD,wBAAgB,aAAa,CAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAcpD"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { ConnectionFailedError, InvalidMessageError, InvalidMultiaddrError } from '@libp2p/interface';
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
3
3
|
import { CustomProgressEvent } from 'progress-events';
|
|
4
|
+
import { raceSignal } from 'race-signal';
|
|
4
5
|
import { RTCIceCandidate } from "../webrtc/index.js";
|
|
5
6
|
import { Message } from "./pb/message.js";
|
|
6
7
|
export const readCandidatesUntilConnected = async (pc, stream, options) => {
|
|
8
|
+
const connectedPromise = Promise.withResolvers();
|
|
9
|
+
resolveOnConnected(pc, connectedPromise);
|
|
7
10
|
try {
|
|
8
|
-
const connectedPromise = Promise.withResolvers();
|
|
9
|
-
resolveOnConnected(pc, connectedPromise);
|
|
10
11
|
// read candidates until we are connected or we reach the end of the stream
|
|
11
12
|
while (true) {
|
|
12
13
|
// if we connect, stop trying to read from the stream
|
|
@@ -46,9 +47,16 @@ export const readCandidatesUntilConnected = async (pc, stream, options) => {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
catch (err) {
|
|
49
|
-
options.log.error('%s error
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
options.log.error('%s error reading ICE candidates - %e', options.direction, err);
|
|
51
|
+
// the signaling stream can end just before the peer connection connects
|
|
52
|
+
if (pc.connectionState !== 'connected') {
|
|
53
|
+
try {
|
|
54
|
+
await raceSignal(connectedPromise.promise, options.signal);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
options.signal?.throwIfAborted();
|
|
58
|
+
throw err;
|
|
59
|
+
}
|
|
52
60
|
}
|
|
53
61
|
}
|
|
54
62
|
};
|
|
@@ -57,6 +65,10 @@ function resolveOnConnected(pc, promise) {
|
|
|
57
65
|
promise.resolve();
|
|
58
66
|
return;
|
|
59
67
|
}
|
|
68
|
+
if (pc.connectionState === 'failed' || pc.connectionState === 'closed') {
|
|
69
|
+
promise.reject(new ConnectionFailedError(`RTCPeerConnection connection state was "${pc.connectionState}"`));
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
60
72
|
pc.onconnectionstatechange = (_) => {
|
|
61
73
|
switch (pc.connectionState) {
|
|
62
74
|
case 'connected':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAazC,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,EAAqB,EAAE,MAAsC,EAAE,OAA8B,EAAiB,EAAE;IACjK,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/webrtc",
|
|
3
|
-
"version": "7.0.1-
|
|
3
|
+
"version": "7.0.1-b927d5921",
|
|
4
4
|
"description": "A libp2p transport using WebRTC connections",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-webrtc#readme",
|
|
@@ -46,13 +46,13 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@chainsafe/is-ip": "^2.1.0",
|
|
49
|
-
"@libp2p/crypto": "5.2.0-
|
|
50
|
-
"@libp2p/interface": "3.4.0-
|
|
51
|
-
"@libp2p/interface-internal": "3.2.1-
|
|
52
|
-
"@libp2p/keychain": "6.1.10-
|
|
53
|
-
"@libp2p/noise": "17.0.6-
|
|
54
|
-
"@libp2p/peer-id": "6.0.18-
|
|
55
|
-
"@libp2p/utils": "7.4.4-
|
|
49
|
+
"@libp2p/crypto": "5.2.0-b927d5921",
|
|
50
|
+
"@libp2p/interface": "3.4.0-b927d5921",
|
|
51
|
+
"@libp2p/interface-internal": "3.2.1-b927d5921",
|
|
52
|
+
"@libp2p/keychain": "6.1.10-b927d5921",
|
|
53
|
+
"@libp2p/noise": "17.0.6-b927d5921",
|
|
54
|
+
"@libp2p/peer-id": "6.0.18-b927d5921",
|
|
55
|
+
"@libp2p/utils": "7.4.4-b927d5921",
|
|
56
56
|
"@multiformats/multiaddr": "^13.0.3",
|
|
57
57
|
"@multiformats/multiaddr-matcher": "^3.0.2",
|
|
58
58
|
"@peculiar/webcrypto": "^1.5.0",
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
"uint8arrays": "^6.1.1"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
|
-
"@libp2p/logger": "6.2.16-
|
|
82
|
+
"@libp2p/logger": "6.2.16-b927d5921",
|
|
83
83
|
"@types/sinon": "^22.0.0",
|
|
84
84
|
"aegir": "^48.1.1",
|
|
85
85
|
"any-signal": "^4.1.1",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ConnectionFailedError, InvalidMessageError, InvalidMultiaddrError } from '@libp2p/interface'
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
3
3
|
import { CustomProgressEvent } from 'progress-events'
|
|
4
|
+
import { raceSignal } from 'race-signal'
|
|
4
5
|
import { RTCIceCandidate } from '../webrtc/index.ts'
|
|
5
6
|
import { Message } from './pb/message.ts'
|
|
6
7
|
import type { WebRTCDialEvents } from './transport.ts'
|
|
@@ -16,10 +17,10 @@ export interface ReadCandidatesOptions extends AbortOptions, LoggerOptions, Prog
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
export const readCandidatesUntilConnected = async (pc: RTCPeerConnection, stream: MessageStream<Message, Stream>, options: ReadCandidatesOptions): Promise<void> => {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
resolveOnConnected(pc, connectedPromise)
|
|
20
|
+
const connectedPromise = Promise.withResolvers<void>()
|
|
21
|
+
resolveOnConnected(pc, connectedPromise)
|
|
22
22
|
|
|
23
|
+
try {
|
|
23
24
|
// read candidates until we are connected or we reach the end of the stream
|
|
24
25
|
while (true) {
|
|
25
26
|
// if we connect, stop trying to read from the stream
|
|
@@ -66,10 +67,16 @@ export const readCandidatesUntilConnected = async (pc: RTCPeerConnection, stream
|
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
69
|
} catch (err) {
|
|
69
|
-
options.log.error('%s error
|
|
70
|
+
options.log.error('%s error reading ICE candidates - %e', options.direction, err)
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
// the signaling stream can end just before the peer connection connects
|
|
73
|
+
if (pc.connectionState !== 'connected') {
|
|
74
|
+
try {
|
|
75
|
+
await raceSignal(connectedPromise.promise, options.signal)
|
|
76
|
+
} catch {
|
|
77
|
+
options.signal?.throwIfAborted()
|
|
78
|
+
throw err
|
|
79
|
+
}
|
|
73
80
|
}
|
|
74
81
|
}
|
|
75
82
|
}
|
|
@@ -80,6 +87,11 @@ function resolveOnConnected (pc: RTCPeerConnection, promise: DeferredPromise<voi
|
|
|
80
87
|
return
|
|
81
88
|
}
|
|
82
89
|
|
|
90
|
+
if (pc.connectionState === 'failed' || pc.connectionState === 'closed') {
|
|
91
|
+
promise.reject(new ConnectionFailedError(`RTCPeerConnection connection state was "${pc.connectionState}"`))
|
|
92
|
+
return
|
|
93
|
+
}
|
|
94
|
+
|
|
83
95
|
pc.onconnectionstatechange = (_) => {
|
|
84
96
|
switch (pc.connectionState) {
|
|
85
97
|
case 'connected':
|