@dxos/network-manager 0.3.9-main.320ebac → 0.3.9-main.35264cb
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/lib/browser/{chunk-S2JHWVGQ.mjs → chunk-XF474R3E.mjs} +183 -82
- package/dist/lib/browser/chunk-XF474R3E.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -11
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +3 -3
- package/dist/lib/node/{chunk-3SCPMSHV.cjs → chunk-Y2B5BDRH.cjs} +179 -84
- package/dist/lib/node/chunk-Y2B5BDRH.cjs.map +7 -0
- package/dist/lib/node/index.cjs +27 -36
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +18 -19
- package/dist/lib/node/testing/index.cjs.map +1 -1
- package/dist/types/src/topology/mmst-topology.d.ts +1 -0
- package/dist/types/src/topology/mmst-topology.d.ts.map +1 -1
- package/dist/types/src/transport/index.d.ts +0 -1
- package/dist/types/src/transport/index.d.ts.map +1 -1
- package/dist/types/src/transport/libdatachannel-transport.d.ts +1 -0
- package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -1
- package/dist/types/src/transport/simplepeer-transport.d.ts +3 -0
- package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -1
- package/package.json +18 -18
- package/src/topology/mmst-topology.ts +34 -6
- package/src/transport/index.ts +0 -1
- package/src/transport/libdatachannel-transport.test.ts +0 -4
- package/src/transport/libdatachannel-transport.ts +76 -34
- package/src/transport/simplepeer-transport.ts +7 -5
- package/dist/lib/browser/chunk-S2JHWVGQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-YERMWDRB.mjs +0 -24
- package/dist/lib/browser/chunk-YERMWDRB.mjs.map +0 -7
- package/dist/lib/browser/index.browser-O53CPVK3.mjs +0 -14
- package/dist/lib/browser/index.browser-O53CPVK3.mjs.map +0 -7
- package/dist/lib/node/chunk-3SCPMSHV.cjs.map +0 -7
- package/dist/lib/node/chunk-DMWORJG3.cjs +0 -471
- package/dist/lib/node/chunk-DMWORJG3.cjs.map +0 -7
- package/dist/lib/node/datachannel-ABYQKZRC.cjs +0 -35
- package/dist/lib/node/datachannel-ABYQKZRC.cjs.map +0 -7
- package/dist/types/src/transport/datachannel/index.browser.d.ts +0 -15
- package/dist/types/src/transport/datachannel/index.browser.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/index.d.ts +0 -8
- package/dist/types/src/transport/datachannel/index.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts +0 -29
- package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/rtc-events.d.ts +0 -9
- package/dist/types/src/transport/datachannel/rtc-events.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts +0 -22
- package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts +0 -54
- package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts +0 -2
- package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts.map +0 -1
- package/dist/types/src/transport/datachannel/rtc-session-description.d.ts +0 -10
- package/dist/types/src/transport/datachannel/rtc-session-description.d.ts.map +0 -1
- package/src/transport/datachannel/README.md +0 -2
- package/src/transport/datachannel/index.browser.ts +0 -8
- package/src/transport/datachannel/index.ts +0 -17
- package/src/transport/datachannel/rtc-data-channel.ts +0 -148
- package/src/transport/datachannel/rtc-events.ts +0 -23
- package/src/transport/datachannel/rtc-ice-candidate.ts +0 -54
- package/src/transport/datachannel/rtc-peer-connection.test.ts +0 -112
- package/src/transport/datachannel/rtc-peer-connection.ts +0 -359
- package/src/transport/datachannel/rtc-session-description.ts +0 -23
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import "@dxos/node-std/globals";
|
|
2
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
3
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
4
|
+
}) : x)(function(x) {
|
|
5
|
+
if (typeof require !== "undefined")
|
|
6
|
+
return require.apply(this, arguments);
|
|
7
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// inject-globals:@inject-globals
|
|
2
11
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
12
|
+
global,
|
|
13
|
+
Buffer as Buffer2,
|
|
14
|
+
process
|
|
15
|
+
} from "@dxos/node-std/inject-globals";
|
|
5
16
|
|
|
6
17
|
// packages/core/mesh/network-manager/src/swarm/connection.ts
|
|
7
18
|
import { DeferredTask, Event, sleep, scheduleTask, scheduleTaskInterval, synchronized } from "@dxos/async";
|
|
@@ -2349,9 +2360,12 @@ import distance from "xor-distance";
|
|
|
2349
2360
|
import { invariant as invariant8 } from "@dxos/invariant";
|
|
2350
2361
|
import { log as log8 } from "@dxos/log";
|
|
2351
2362
|
var __dxlog_file9 = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/mmst-topology.ts";
|
|
2363
|
+
var MIN_UPDATE_INTERVAL = 1e3 * 10;
|
|
2364
|
+
var MAX_CHANGES_PER_UPDATE = 1;
|
|
2352
2365
|
var MMSTTopology = class {
|
|
2353
2366
|
constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 } = {}) {
|
|
2354
2367
|
this._sampleCollected = false;
|
|
2368
|
+
this._lastAction = /* @__PURE__ */ new Date(0);
|
|
2355
2369
|
this._originateConnections = originateConnections;
|
|
2356
2370
|
this._maxPeers = maxPeers;
|
|
2357
2371
|
this._sampleSize = sampleSize;
|
|
@@ -2359,7 +2373,7 @@ var MMSTTopology = class {
|
|
|
2359
2373
|
init(controller) {
|
|
2360
2374
|
invariant8(!this._controller, "Already initialized", {
|
|
2361
2375
|
F: __dxlog_file9,
|
|
2362
|
-
L:
|
|
2376
|
+
L: 51,
|
|
2363
2377
|
S: this,
|
|
2364
2378
|
A: [
|
|
2365
2379
|
"!this._controller",
|
|
@@ -2371,7 +2385,7 @@ var MMSTTopology = class {
|
|
|
2371
2385
|
update() {
|
|
2372
2386
|
invariant8(this._controller, "Not initialized", {
|
|
2373
2387
|
F: __dxlog_file9,
|
|
2374
|
-
L:
|
|
2388
|
+
L: 56,
|
|
2375
2389
|
S: this,
|
|
2376
2390
|
A: [
|
|
2377
2391
|
"this._controller",
|
|
@@ -2382,7 +2396,7 @@ var MMSTTopology = class {
|
|
|
2382
2396
|
if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {
|
|
2383
2397
|
log8("Running the algorithm.", void 0, {
|
|
2384
2398
|
F: __dxlog_file9,
|
|
2385
|
-
L:
|
|
2399
|
+
L: 60,
|
|
2386
2400
|
S: this,
|
|
2387
2401
|
C: (f, a) => f(...a)
|
|
2388
2402
|
});
|
|
@@ -2393,7 +2407,7 @@ var MMSTTopology = class {
|
|
|
2393
2407
|
async onOffer(peer) {
|
|
2394
2408
|
invariant8(this._controller, "Not initialized", {
|
|
2395
2409
|
F: __dxlog_file9,
|
|
2396
|
-
L:
|
|
2410
|
+
L: 67,
|
|
2397
2411
|
S: this,
|
|
2398
2412
|
A: [
|
|
2399
2413
|
"this._controller",
|
|
@@ -2404,7 +2418,7 @@ var MMSTTopology = class {
|
|
|
2404
2418
|
const accept = connected.length < this._maxPeers;
|
|
2405
2419
|
log8(`Offer ${peer} accept=${accept}`, void 0, {
|
|
2406
2420
|
F: __dxlog_file9,
|
|
2407
|
-
L:
|
|
2421
|
+
L: 70,
|
|
2408
2422
|
S: this,
|
|
2409
2423
|
C: (f, a) => f(...a)
|
|
2410
2424
|
});
|
|
@@ -2415,7 +2429,7 @@ var MMSTTopology = class {
|
|
|
2415
2429
|
_runAlgorithm() {
|
|
2416
2430
|
invariant8(this._controller, "Not initialized", {
|
|
2417
2431
|
F: __dxlog_file9,
|
|
2418
|
-
L:
|
|
2432
|
+
L: 79,
|
|
2419
2433
|
S: this,
|
|
2420
2434
|
A: [
|
|
2421
2435
|
"this._controller",
|
|
@@ -2424,27 +2438,84 @@ var MMSTTopology = class {
|
|
|
2424
2438
|
});
|
|
2425
2439
|
const { connected, candidates, ownPeerId } = this._controller.getState();
|
|
2426
2440
|
if (connected.length > this._maxPeers) {
|
|
2441
|
+
log8(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
|
|
2442
|
+
F: __dxlog_file9,
|
|
2443
|
+
L: 85,
|
|
2444
|
+
S: this,
|
|
2445
|
+
C: (f, a) => f(...a)
|
|
2446
|
+
});
|
|
2427
2447
|
const sorted = sortByXorDistance(connected, ownPeerId).reverse().slice(0, this._maxPeers - connected.length);
|
|
2428
|
-
|
|
2429
|
-
|
|
2448
|
+
invariant8(sorted.length === 0, void 0, {
|
|
2449
|
+
F: __dxlog_file9,
|
|
2450
|
+
L: 89,
|
|
2451
|
+
S: this,
|
|
2452
|
+
A: [
|
|
2453
|
+
"sorted.length === 0",
|
|
2454
|
+
""
|
|
2455
|
+
]
|
|
2456
|
+
});
|
|
2457
|
+
if (sorted.length > MAX_CHANGES_PER_UPDATE) {
|
|
2458
|
+
log8(`want to disconnect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, {
|
|
2430
2459
|
F: __dxlog_file9,
|
|
2431
|
-
L:
|
|
2460
|
+
L: 92,
|
|
2461
|
+
S: this,
|
|
2462
|
+
C: (f, a) => f(...a)
|
|
2463
|
+
});
|
|
2464
|
+
}
|
|
2465
|
+
if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
|
|
2466
|
+
for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
|
|
2467
|
+
log8(`Disconnect ${peer}.`, void 0, {
|
|
2468
|
+
F: __dxlog_file9,
|
|
2469
|
+
L: 97,
|
|
2470
|
+
S: this,
|
|
2471
|
+
C: (f, a) => f(...a)
|
|
2472
|
+
});
|
|
2473
|
+
this._controller.disconnect(peer);
|
|
2474
|
+
}
|
|
2475
|
+
this._lastAction = /* @__PURE__ */ new Date();
|
|
2476
|
+
} else {
|
|
2477
|
+
log8("rate limited discconnect", void 0, {
|
|
2478
|
+
F: __dxlog_file9,
|
|
2479
|
+
L: 102,
|
|
2432
2480
|
S: this,
|
|
2433
2481
|
C: (f, a) => f(...a)
|
|
2434
2482
|
});
|
|
2435
|
-
this._controller.disconnect(peer);
|
|
2436
2483
|
}
|
|
2437
2484
|
} else if (connected.length < this._originateConnections) {
|
|
2485
|
+
log8(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
|
|
2486
|
+
F: __dxlog_file9,
|
|
2487
|
+
L: 106,
|
|
2488
|
+
S: this,
|
|
2489
|
+
C: (f, a) => f(...a)
|
|
2490
|
+
});
|
|
2438
2491
|
const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);
|
|
2439
2492
|
const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);
|
|
2440
|
-
|
|
2441
|
-
log8(`
|
|
2493
|
+
if (sorted.length > MAX_CHANGES_PER_UPDATE) {
|
|
2494
|
+
log8(`want to connect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, {
|
|
2442
2495
|
F: __dxlog_file9,
|
|
2443
|
-
L:
|
|
2496
|
+
L: 111,
|
|
2497
|
+
S: this,
|
|
2498
|
+
C: (f, a) => f(...a)
|
|
2499
|
+
});
|
|
2500
|
+
}
|
|
2501
|
+
if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
|
|
2502
|
+
for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
|
|
2503
|
+
log8(`Connect ${peer}.`, void 0, {
|
|
2504
|
+
F: __dxlog_file9,
|
|
2505
|
+
L: 115,
|
|
2506
|
+
S: this,
|
|
2507
|
+
C: (f, a) => f(...a)
|
|
2508
|
+
});
|
|
2509
|
+
this._controller.connect(peer);
|
|
2510
|
+
}
|
|
2511
|
+
this._lastAction = /* @__PURE__ */ new Date();
|
|
2512
|
+
} else {
|
|
2513
|
+
log8("rate limited connect", void 0, {
|
|
2514
|
+
F: __dxlog_file9,
|
|
2515
|
+
L: 120,
|
|
2444
2516
|
S: this,
|
|
2445
2517
|
C: (f, a) => f(...a)
|
|
2446
2518
|
});
|
|
2447
|
-
this._controller.connect(peer);
|
|
2448
2519
|
}
|
|
2449
2520
|
}
|
|
2450
2521
|
}
|
|
@@ -2779,6 +2850,9 @@ try {
|
|
|
2779
2850
|
// packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts
|
|
2780
2851
|
var __dxlog_file12 = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/simplepeer-transport.ts";
|
|
2781
2852
|
var SimplePeerTransport = class {
|
|
2853
|
+
/**
|
|
2854
|
+
* @params opts.config formatted as per https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection
|
|
2855
|
+
*/
|
|
2782
2856
|
constructor(params) {
|
|
2783
2857
|
this.params = params;
|
|
2784
2858
|
this._closed = false;
|
|
@@ -2791,13 +2865,13 @@ var SimplePeerTransport = class {
|
|
|
2791
2865
|
id: this._instanceId
|
|
2792
2866
|
}), {
|
|
2793
2867
|
F: __dxlog_file12,
|
|
2794
|
-
L:
|
|
2868
|
+
L: 44,
|
|
2795
2869
|
S: this,
|
|
2796
2870
|
C: (f, a) => f(...a)
|
|
2797
2871
|
});
|
|
2798
2872
|
log11("created connection", params, {
|
|
2799
2873
|
F: __dxlog_file12,
|
|
2800
|
-
L:
|
|
2874
|
+
L: 45,
|
|
2801
2875
|
S: this,
|
|
2802
2876
|
C: (f, a) => f(...a)
|
|
2803
2877
|
});
|
|
@@ -2810,7 +2884,7 @@ var SimplePeerTransport = class {
|
|
|
2810
2884
|
this._peer.on("signal", async (data) => {
|
|
2811
2885
|
log11("signal", data, {
|
|
2812
2886
|
F: __dxlog_file12,
|
|
2813
|
-
L:
|
|
2887
|
+
L: 54,
|
|
2814
2888
|
S: this,
|
|
2815
2889
|
C: (f, a) => f(...a)
|
|
2816
2890
|
});
|
|
@@ -2823,7 +2897,7 @@ var SimplePeerTransport = class {
|
|
|
2823
2897
|
this._peer.on("connect", () => {
|
|
2824
2898
|
log11("connected", void 0, {
|
|
2825
2899
|
F: __dxlog_file12,
|
|
2826
|
-
L:
|
|
2900
|
+
L: 59,
|
|
2827
2901
|
S: this,
|
|
2828
2902
|
C: (f, a) => f(...a)
|
|
2829
2903
|
});
|
|
@@ -2834,7 +2908,7 @@ var SimplePeerTransport = class {
|
|
|
2834
2908
|
this._peer.on("close", async () => {
|
|
2835
2909
|
log11("closed", void 0, {
|
|
2836
2910
|
F: __dxlog_file12,
|
|
2837
|
-
L:
|
|
2911
|
+
L: 66,
|
|
2838
2912
|
S: this,
|
|
2839
2913
|
C: (f, a) => f(...a)
|
|
2840
2914
|
});
|
|
@@ -2849,7 +2923,7 @@ var SimplePeerTransport = class {
|
|
|
2849
2923
|
err
|
|
2850
2924
|
}, {
|
|
2851
2925
|
F: __dxlog_file12,
|
|
2852
|
-
L:
|
|
2926
|
+
L: 77,
|
|
2853
2927
|
S: this,
|
|
2854
2928
|
C: (f, a) => f(...a)
|
|
2855
2929
|
});
|
|
@@ -2858,7 +2932,7 @@ var SimplePeerTransport = class {
|
|
|
2858
2932
|
} else if ("code" in err) {
|
|
2859
2933
|
log11.info("simple-peer error", err, {
|
|
2860
2934
|
F: __dxlog_file12,
|
|
2861
|
-
L:
|
|
2935
|
+
L: 82,
|
|
2862
2936
|
S: this,
|
|
2863
2937
|
C: (f, a) => f(...a)
|
|
2864
2938
|
});
|
|
@@ -2888,7 +2962,7 @@ var SimplePeerTransport = class {
|
|
|
2888
2962
|
} else {
|
|
2889
2963
|
log11.info("unknown peer connection error", err, {
|
|
2890
2964
|
F: __dxlog_file12,
|
|
2891
|
-
L:
|
|
2965
|
+
L: 108,
|
|
2892
2966
|
S: this,
|
|
2893
2967
|
C: (f, a) => f(...a)
|
|
2894
2968
|
});
|
|
@@ -2902,7 +2976,7 @@ var SimplePeerTransport = class {
|
|
|
2902
2976
|
stats: Object.fromEntries(stats.entries())
|
|
2903
2977
|
}, {
|
|
2904
2978
|
F: __dxlog_file12,
|
|
2905
|
-
L:
|
|
2979
|
+
L: 116,
|
|
2906
2980
|
S: this,
|
|
2907
2981
|
C: (f, a) => f(...a)
|
|
2908
2982
|
});
|
|
@@ -2911,7 +2985,7 @@ var SimplePeerTransport = class {
|
|
|
2911
2985
|
} catch (err2) {
|
|
2912
2986
|
log11.catch(err2, void 0, {
|
|
2913
2987
|
F: __dxlog_file12,
|
|
2914
|
-
L:
|
|
2988
|
+
L: 123,
|
|
2915
2989
|
S: this,
|
|
2916
2990
|
C: (f, a) => f(...a)
|
|
2917
2991
|
});
|
|
@@ -2922,7 +2996,7 @@ var SimplePeerTransport = class {
|
|
|
2922
2996
|
id: this._instanceId
|
|
2923
2997
|
}), {
|
|
2924
2998
|
F: __dxlog_file12,
|
|
2925
|
-
L:
|
|
2999
|
+
L: 129,
|
|
2926
3000
|
S: this,
|
|
2927
3001
|
C: (f, a) => f(...a)
|
|
2928
3002
|
});
|
|
@@ -2941,8 +3015,8 @@ var SimplePeerTransport = class {
|
|
|
2941
3015
|
return {
|
|
2942
3016
|
bytesSent: stats.transport.bytesSent,
|
|
2943
3017
|
bytesReceived: stats.transport.bytesReceived,
|
|
2944
|
-
packetsSent: stats.transport.
|
|
2945
|
-
packetsReceived: stats.transport.
|
|
3018
|
+
packetsSent: stats.transport.packetsSent,
|
|
3019
|
+
packetsReceived: stats.transport.packetsReceived,
|
|
2946
3020
|
rawStats: stats.raw
|
|
2947
3021
|
};
|
|
2948
3022
|
}
|
|
@@ -2975,29 +3049,28 @@ var SimplePeerTransport = class {
|
|
|
2975
3049
|
if (!rc) {
|
|
2976
3050
|
return "unavailable";
|
|
2977
3051
|
}
|
|
2978
|
-
if (rc.relay) {
|
|
2979
|
-
return `${rc.ip}:${rc.port}/${rc.protocol} relay for
|
|
3052
|
+
if (rc.candidateType === "relay") {
|
|
3053
|
+
return `${rc.ip}:${rc.port}/${rc.protocol} relay for ${rc.relatedAddress}:${rc.relatedPort}`;
|
|
2980
3054
|
}
|
|
2981
3055
|
return `${rc.ip}:${rc.port}/${rc.protocol} ${rc.candidateType}`;
|
|
2982
3056
|
}
|
|
2983
3057
|
async destroy() {
|
|
2984
3058
|
log11("closing...", void 0, {
|
|
2985
3059
|
F: __dxlog_file12,
|
|
2986
|
-
L:
|
|
3060
|
+
L: 192,
|
|
2987
3061
|
S: this,
|
|
2988
3062
|
C: (f, a) => f(...a)
|
|
2989
3063
|
});
|
|
2990
3064
|
if (this._closed) {
|
|
2991
3065
|
return;
|
|
2992
3066
|
}
|
|
2993
|
-
this._closed = true;
|
|
2994
3067
|
this._disconnectStreams();
|
|
2995
3068
|
this._peer.destroy();
|
|
2996
3069
|
this._closed = true;
|
|
2997
3070
|
this.closed.emit();
|
|
2998
3071
|
log11("closed", void 0, {
|
|
2999
3072
|
F: __dxlog_file12,
|
|
3000
|
-
L:
|
|
3073
|
+
L: 200,
|
|
3001
3074
|
S: this,
|
|
3002
3075
|
C: (f, a) => f(...a)
|
|
3003
3076
|
});
|
|
@@ -3445,17 +3518,24 @@ var LibDataChannelTransport = class {
|
|
|
3445
3518
|
this._readyForCandidates = new Trigger2();
|
|
3446
3519
|
this._writeCallback = null;
|
|
3447
3520
|
this._peer = (async () => {
|
|
3448
|
-
const { RTCPeerConnection
|
|
3521
|
+
const { RTCPeerConnection } = (await importESM("node-datachannel/polyfill")).default;
|
|
3449
3522
|
if (this._closed) {
|
|
3450
3523
|
this.errors.raise(new Error("connection already closed"));
|
|
3451
3524
|
}
|
|
3452
|
-
|
|
3525
|
+
if (params.webrtcConfig) {
|
|
3526
|
+
params.webrtcConfig.iceServers = params.webrtcConfig.iceServers ?? [];
|
|
3527
|
+
} else {
|
|
3528
|
+
params.webrtcConfig = {
|
|
3529
|
+
iceServers: []
|
|
3530
|
+
};
|
|
3531
|
+
}
|
|
3532
|
+
const peer = new RTCPeerConnection(params.webrtcConfig);
|
|
3453
3533
|
peer.onicecandidateerror = (event) => {
|
|
3454
3534
|
log14.error("peer.onicecandidateerror", {
|
|
3455
3535
|
event
|
|
3456
3536
|
}, {
|
|
3457
3537
|
F: __dxlog_file15,
|
|
3458
|
-
L:
|
|
3538
|
+
L: 61,
|
|
3459
3539
|
S: this,
|
|
3460
3540
|
C: (f, a) => f(...a)
|
|
3461
3541
|
});
|
|
@@ -3467,7 +3547,7 @@ var LibDataChannelTransport = class {
|
|
|
3467
3547
|
transportConnectionState: this._connected
|
|
3468
3548
|
}, {
|
|
3469
3549
|
F: __dxlog_file15,
|
|
3470
|
-
L:
|
|
3550
|
+
L: 65,
|
|
3471
3551
|
S: this,
|
|
3472
3552
|
C: (f, a) => f(...a)
|
|
3473
3553
|
});
|
|
@@ -3477,7 +3557,7 @@ var LibDataChannelTransport = class {
|
|
|
3477
3557
|
event
|
|
3478
3558
|
}, {
|
|
3479
3559
|
F: __dxlog_file15,
|
|
3480
|
-
L:
|
|
3560
|
+
L: 74,
|
|
3481
3561
|
S: this,
|
|
3482
3562
|
C: (f, a) => f(...a)
|
|
3483
3563
|
});
|
|
@@ -3501,7 +3581,7 @@ var LibDataChannelTransport = class {
|
|
|
3501
3581
|
err
|
|
3502
3582
|
}, {
|
|
3503
3583
|
F: __dxlog_file15,
|
|
3504
|
-
L:
|
|
3584
|
+
L: 91,
|
|
3505
3585
|
S: this,
|
|
3506
3586
|
C: (f, a) => f(...a)
|
|
3507
3587
|
});
|
|
@@ -3510,12 +3590,15 @@ var LibDataChannelTransport = class {
|
|
|
3510
3590
|
};
|
|
3511
3591
|
if (params.initiator) {
|
|
3512
3592
|
peer.createOffer().then(async (offer) => {
|
|
3593
|
+
if (this._closed) {
|
|
3594
|
+
return;
|
|
3595
|
+
}
|
|
3513
3596
|
if (peer.connectionState !== "connecting") {
|
|
3514
3597
|
log14.error("i am initiator but peer not in state connecting", {
|
|
3515
3598
|
peer
|
|
3516
3599
|
}, {
|
|
3517
3600
|
F: __dxlog_file15,
|
|
3518
|
-
L:
|
|
3601
|
+
L: 104,
|
|
3519
3602
|
S: this,
|
|
3520
3603
|
C: (f, a) => f(...a)
|
|
3521
3604
|
});
|
|
@@ -3525,7 +3608,7 @@ var LibDataChannelTransport = class {
|
|
|
3525
3608
|
offer
|
|
3526
3609
|
}, {
|
|
3527
3610
|
F: __dxlog_file15,
|
|
3528
|
-
L:
|
|
3611
|
+
L: 107,
|
|
3529
3612
|
S: this,
|
|
3530
3613
|
C: (f, a) => f(...a)
|
|
3531
3614
|
});
|
|
@@ -3545,7 +3628,7 @@ var LibDataChannelTransport = class {
|
|
|
3545
3628
|
this.handleChannel(peer.createDataChannel(DATACHANNEL_LABEL));
|
|
3546
3629
|
log14.debug("created data channel", void 0, {
|
|
3547
3630
|
F: __dxlog_file15,
|
|
3548
|
-
L:
|
|
3631
|
+
L: 116,
|
|
3549
3632
|
S: this,
|
|
3550
3633
|
C: (f, a) => f(...a)
|
|
3551
3634
|
});
|
|
@@ -3558,7 +3641,7 @@ var LibDataChannelTransport = class {
|
|
|
3558
3641
|
event
|
|
3559
3642
|
}, {
|
|
3560
3643
|
F: __dxlog_file15,
|
|
3561
|
-
L:
|
|
3644
|
+
L: 122,
|
|
3562
3645
|
S: this,
|
|
3563
3646
|
C: (f, a) => f(...a)
|
|
3564
3647
|
});
|
|
@@ -3576,7 +3659,7 @@ var LibDataChannelTransport = class {
|
|
|
3576
3659
|
this._channel.onopen = () => {
|
|
3577
3660
|
log14.debug("dataChannel.onopen", void 0, {
|
|
3578
3661
|
F: __dxlog_file15,
|
|
3579
|
-
L:
|
|
3662
|
+
L: 138,
|
|
3580
3663
|
S: this,
|
|
3581
3664
|
C: (f, a) => f(...a)
|
|
3582
3665
|
});
|
|
@@ -3597,7 +3680,7 @@ var LibDataChannelTransport = class {
|
|
|
3597
3680
|
if (this._writeCallback !== null) {
|
|
3598
3681
|
log14.error("consumer trying to write before we're ready for more data", void 0, {
|
|
3599
3682
|
F: __dxlog_file15,
|
|
3600
|
-
L:
|
|
3683
|
+
L: 155,
|
|
3601
3684
|
S: this,
|
|
3602
3685
|
C: (f, a) => f(...a)
|
|
3603
3686
|
});
|
|
@@ -3622,7 +3705,7 @@ var LibDataChannelTransport = class {
|
|
|
3622
3705
|
err
|
|
3623
3706
|
}, {
|
|
3624
3707
|
F: __dxlog_file15,
|
|
3625
|
-
L:
|
|
3708
|
+
L: 175,
|
|
3626
3709
|
S: this,
|
|
3627
3710
|
C: (f, a) => f(...a)
|
|
3628
3711
|
});
|
|
@@ -3631,7 +3714,7 @@ var LibDataChannelTransport = class {
|
|
|
3631
3714
|
this._channel.onmessage = (event) => {
|
|
3632
3715
|
let data = event.data;
|
|
3633
3716
|
if (data instanceof ArrayBuffer) {
|
|
3634
|
-
data =
|
|
3717
|
+
data = Buffer2.from(data);
|
|
3635
3718
|
}
|
|
3636
3719
|
this._stream.push(data);
|
|
3637
3720
|
};
|
|
@@ -3646,6 +3729,12 @@ var LibDataChannelTransport = class {
|
|
|
3646
3729
|
return;
|
|
3647
3730
|
}
|
|
3648
3731
|
await this._disconnectStreams();
|
|
3732
|
+
const peer = await this._peer;
|
|
3733
|
+
try {
|
|
3734
|
+
peer.close();
|
|
3735
|
+
} catch (err) {
|
|
3736
|
+
this.errors.raise(err);
|
|
3737
|
+
}
|
|
3649
3738
|
this._closed = true;
|
|
3650
3739
|
this.closed.emit();
|
|
3651
3740
|
}
|
|
@@ -3659,7 +3748,7 @@ var LibDataChannelTransport = class {
|
|
|
3659
3748
|
peer
|
|
3660
3749
|
}, {
|
|
3661
3750
|
F: __dxlog_file15,
|
|
3662
|
-
L:
|
|
3751
|
+
L: 216,
|
|
3663
3752
|
S: this,
|
|
3664
3753
|
C: (f, a) => f(...a)
|
|
3665
3754
|
});
|
|
@@ -3687,7 +3776,7 @@ var LibDataChannelTransport = class {
|
|
|
3687
3776
|
err
|
|
3688
3777
|
}, {
|
|
3689
3778
|
F: __dxlog_file15,
|
|
3690
|
-
L:
|
|
3779
|
+
L: 227,
|
|
3691
3780
|
S: this,
|
|
3692
3781
|
C: (f, a) => f(...a)
|
|
3693
3782
|
});
|
|
@@ -3707,7 +3796,7 @@ var LibDataChannelTransport = class {
|
|
|
3707
3796
|
err
|
|
3708
3797
|
}, {
|
|
3709
3798
|
F: __dxlog_file15,
|
|
3710
|
-
L:
|
|
3799
|
+
L: 238,
|
|
3711
3800
|
S: this,
|
|
3712
3801
|
C: (f, a) => f(...a)
|
|
3713
3802
|
});
|
|
@@ -3726,7 +3815,7 @@ var LibDataChannelTransport = class {
|
|
|
3726
3815
|
signal
|
|
3727
3816
|
}, {
|
|
3728
3817
|
F: __dxlog_file15,
|
|
3729
|
-
L:
|
|
3818
|
+
L: 249,
|
|
3730
3819
|
S: this,
|
|
3731
3820
|
C: (f, a) => f(...a)
|
|
3732
3821
|
});
|
|
@@ -3735,51 +3824,61 @@ var LibDataChannelTransport = class {
|
|
|
3735
3824
|
}).catch((err) => {
|
|
3736
3825
|
log14.catch(err, void 0, {
|
|
3737
3826
|
F: __dxlog_file15,
|
|
3738
|
-
L:
|
|
3827
|
+
L: 254,
|
|
3739
3828
|
S: this,
|
|
3740
3829
|
C: (f, a) => f(...a)
|
|
3741
3830
|
});
|
|
3742
3831
|
});
|
|
3743
3832
|
}
|
|
3744
3833
|
async getDetails() {
|
|
3834
|
+
const stats = await this._getStats();
|
|
3835
|
+
const rc = stats?.remoteCandidate;
|
|
3836
|
+
if (!rc) {
|
|
3837
|
+
return "unavailable";
|
|
3838
|
+
}
|
|
3839
|
+
if (rc.candidateType === "relay") {
|
|
3840
|
+
return `${rc.ip}:${rc.port} relay for ${rc.relatedAddress}:${rc.relatedPort}`;
|
|
3841
|
+
}
|
|
3842
|
+
return `${rc.ip}:${rc.port} ${rc.candidateType}`;
|
|
3843
|
+
}
|
|
3844
|
+
async _getStats() {
|
|
3745
3845
|
return this._peer.then(async (peer) => {
|
|
3746
|
-
const
|
|
3747
|
-
|
|
3748
|
-
|
|
3846
|
+
const stats = await peer.getStats();
|
|
3847
|
+
const statsEntries = Array.from(stats.entries());
|
|
3848
|
+
const transport = statsEntries.filter((s) => s[1].type === "transport")[0][1];
|
|
3849
|
+
const candidatePair = statsEntries.filter((s) => s[0] === transport.selectedCandidatePairId);
|
|
3850
|
+
let selectedCandidatePair;
|
|
3851
|
+
let remoteCandidate;
|
|
3852
|
+
if (candidatePair.length > 0) {
|
|
3853
|
+
selectedCandidatePair = candidatePair[0][1];
|
|
3854
|
+
remoteCandidate = statsEntries.filter((s) => s[0] === selectedCandidatePair.remoteCandidateId)[0][1];
|
|
3749
3855
|
}
|
|
3750
|
-
return
|
|
3751
|
-
|
|
3752
|
-
|
|
3753
|
-
|
|
3754
|
-
|
|
3755
|
-
|
|
3756
|
-
C: (f, a) => f(...a)
|
|
3757
|
-
});
|
|
3758
|
-
return "unavailable";
|
|
3856
|
+
return {
|
|
3857
|
+
transport,
|
|
3858
|
+
selectedCandidatePair,
|
|
3859
|
+
remoteCandidate,
|
|
3860
|
+
raw: Object.fromEntries(stats)
|
|
3861
|
+
};
|
|
3759
3862
|
});
|
|
3760
3863
|
}
|
|
3761
3864
|
async getStats() {
|
|
3762
|
-
|
|
3763
|
-
|
|
3764
|
-
bytesSent: peer.bytesSent(),
|
|
3765
|
-
bytesReceived: peer.bytesReceived(),
|
|
3766
|
-
packetsSent: 0,
|
|
3767
|
-
packetsReceived: 0
|
|
3768
|
-
};
|
|
3769
|
-
}).catch((err) => {
|
|
3770
|
-
log14.catch(err, void 0, {
|
|
3771
|
-
F: __dxlog_file15,
|
|
3772
|
-
L: 266,
|
|
3773
|
-
S: this,
|
|
3774
|
-
C: (f, a) => f(...a)
|
|
3775
|
-
});
|
|
3865
|
+
const stats = await this._getStats();
|
|
3866
|
+
if (!stats) {
|
|
3776
3867
|
return {
|
|
3777
3868
|
bytesSent: 0,
|
|
3778
3869
|
bytesReceived: 0,
|
|
3779
3870
|
packetsSent: 0,
|
|
3780
|
-
packetsReceived: 0
|
|
3871
|
+
packetsReceived: 0,
|
|
3872
|
+
rawStats: {}
|
|
3781
3873
|
};
|
|
3782
|
-
}
|
|
3874
|
+
}
|
|
3875
|
+
return {
|
|
3876
|
+
bytesSent: stats.transport.bytesSent,
|
|
3877
|
+
bytesReceived: stats.transport.bytesReceived,
|
|
3878
|
+
packetsSent: 0,
|
|
3879
|
+
packetsReceived: 0,
|
|
3880
|
+
rawStats: stats.raw
|
|
3881
|
+
};
|
|
3783
3882
|
}
|
|
3784
3883
|
// TODO(nf): add classmethod to call node-datachannel.cleanup() when all instances have been destroyed?
|
|
3785
3884
|
async destroy() {
|
|
@@ -3798,6 +3897,7 @@ var createLibDataChannelTransportFactory = (webrtcConfig) => ({
|
|
|
3798
3897
|
webrtcConfig
|
|
3799
3898
|
})
|
|
3800
3899
|
});
|
|
3900
|
+
var importESM = Function("path", "return import(path)");
|
|
3801
3901
|
|
|
3802
3902
|
// packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts
|
|
3803
3903
|
import { Event as Event11 } from "@dxos/async";
|
|
@@ -3847,6 +3947,7 @@ var createTeleportProtocolFactory = (onConnection) => {
|
|
|
3847
3947
|
};
|
|
3848
3948
|
|
|
3849
3949
|
export {
|
|
3950
|
+
process,
|
|
3850
3951
|
ConnectionState,
|
|
3851
3952
|
Connection,
|
|
3852
3953
|
SwarmMessenger,
|
|
@@ -3874,4 +3975,4 @@ export {
|
|
|
3874
3975
|
TcpTransport,
|
|
3875
3976
|
createTeleportProtocolFactory
|
|
3876
3977
|
};
|
|
3877
|
-
//# sourceMappingURL=chunk-
|
|
3978
|
+
//# sourceMappingURL=chunk-XF474R3E.mjs.map
|