@dxos/network-manager 0.3.9-main.26defc6 → 0.3.9-main.2b2db7f

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 (58) hide show
  1. package/dist/lib/browser/{chunk-J7KS7JMZ.mjs → chunk-7JESB3AJ.mjs} +93 -63
  2. package/dist/lib/browser/chunk-7JESB3AJ.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -11
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +1 -2
  6. package/dist/lib/browser/testing/index.mjs.map +1 -1
  7. package/dist/lib/node/{chunk-55WTPQV5.cjs → chunk-Y2B5BDRH.cjs} +97 -65
  8. package/dist/lib/node/chunk-Y2B5BDRH.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +27 -36
  10. package/dist/lib/node/index.cjs.map +2 -2
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/testing/index.cjs +18 -19
  13. package/dist/lib/node/testing/index.cjs.map +1 -1
  14. package/dist/types/src/transport/index.d.ts +0 -1
  15. package/dist/types/src/transport/index.d.ts.map +1 -1
  16. package/dist/types/src/transport/libdatachannel-transport.d.ts +1 -0
  17. package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -1
  18. package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -1
  19. package/package.json +18 -18
  20. package/src/topology/mmst-topology.ts +7 -7
  21. package/src/transport/index.ts +0 -1
  22. package/src/transport/libdatachannel-transport.ts +76 -34
  23. package/src/transport/simplepeer-transport.ts +4 -5
  24. package/dist/lib/browser/chunk-J7KS7JMZ.mjs.map +0 -7
  25. package/dist/lib/browser/chunk-YERMWDRB.mjs +0 -24
  26. package/dist/lib/browser/chunk-YERMWDRB.mjs.map +0 -7
  27. package/dist/lib/browser/index.browser-O53CPVK3.mjs +0 -14
  28. package/dist/lib/browser/index.browser-O53CPVK3.mjs.map +0 -7
  29. package/dist/lib/node/chunk-55WTPQV5.cjs.map +0 -7
  30. package/dist/lib/node/chunk-JDKM4UPJ.cjs +0 -470
  31. package/dist/lib/node/chunk-JDKM4UPJ.cjs.map +0 -7
  32. package/dist/lib/node/datachannel-3VTTIMR5.cjs +0 -35
  33. package/dist/lib/node/datachannel-3VTTIMR5.cjs.map +0 -7
  34. package/dist/types/src/transport/datachannel/index.browser.d.ts +0 -15
  35. package/dist/types/src/transport/datachannel/index.browser.d.ts.map +0 -1
  36. package/dist/types/src/transport/datachannel/index.d.ts +0 -8
  37. package/dist/types/src/transport/datachannel/index.d.ts.map +0 -1
  38. package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts +0 -29
  39. package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts.map +0 -1
  40. package/dist/types/src/transport/datachannel/rtc-events.d.ts +0 -9
  41. package/dist/types/src/transport/datachannel/rtc-events.d.ts.map +0 -1
  42. package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts +0 -22
  43. package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts.map +0 -1
  44. package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts +0 -54
  45. package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts.map +0 -1
  46. package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts +0 -2
  47. package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts.map +0 -1
  48. package/dist/types/src/transport/datachannel/rtc-session-description.d.ts +0 -10
  49. package/dist/types/src/transport/datachannel/rtc-session-description.d.ts.map +0 -1
  50. package/src/transport/datachannel/README.md +0 -2
  51. package/src/transport/datachannel/index.browser.ts +0 -8
  52. package/src/transport/datachannel/index.ts +0 -17
  53. package/src/transport/datachannel/rtc-data-channel.ts +0 -148
  54. package/src/transport/datachannel/rtc-events.ts +0 -23
  55. package/src/transport/datachannel/rtc-ice-candidate.ts +0 -54
  56. package/src/transport/datachannel/rtc-peer-connection.test.ts +0 -112
  57. package/src/transport/datachannel/rtc-peer-connection.ts +0 -355
  58. package/src/transport/datachannel/rtc-session-description.ts +0 -23
@@ -1,7 +1,11 @@
1
1
  import "@dxos/node-std/globals";
2
- import {
3
- __require
4
- } from "./chunk-YERMWDRB.mjs";
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
+ });
5
9
 
6
10
  // packages/core/mesh/network-manager/src/swarm/connection.ts
7
11
  import { DeferredTask, Event, sleep, scheduleTask, scheduleTaskInterval, synchronized } from "@dxos/async";
@@ -2383,7 +2387,7 @@ var MMSTTopology = class {
2383
2387
  });
2384
2388
  const { connected, candidates } = this._controller.getState();
2385
2389
  if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {
2386
- log8.info("Running the algorithm.", void 0, {
2390
+ log8("Running the algorithm.", void 0, {
2387
2391
  F: __dxlog_file9,
2388
2392
  L: 60,
2389
2393
  S: this,
@@ -2427,7 +2431,7 @@ var MMSTTopology = class {
2427
2431
  });
2428
2432
  const { connected, candidates, ownPeerId } = this._controller.getState();
2429
2433
  if (connected.length > this._maxPeers) {
2430
- log8.info(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
2434
+ log8(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
2431
2435
  F: __dxlog_file9,
2432
2436
  L: 85,
2433
2437
  S: this,
@@ -2453,7 +2457,7 @@ var MMSTTopology = class {
2453
2457
  }
2454
2458
  if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
2455
2459
  for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
2456
- log8.info(`Disconnect ${peer}.`, void 0, {
2460
+ log8(`Disconnect ${peer}.`, void 0, {
2457
2461
  F: __dxlog_file9,
2458
2462
  L: 97,
2459
2463
  S: this,
@@ -2463,7 +2467,7 @@ var MMSTTopology = class {
2463
2467
  }
2464
2468
  this._lastAction = /* @__PURE__ */ new Date();
2465
2469
  } else {
2466
- log8.info("rate limited discconnect", void 0, {
2470
+ log8("rate limited discconnect", void 0, {
2467
2471
  F: __dxlog_file9,
2468
2472
  L: 102,
2469
2473
  S: this,
@@ -2471,7 +2475,7 @@ var MMSTTopology = class {
2471
2475
  });
2472
2476
  }
2473
2477
  } else if (connected.length < this._originateConnections) {
2474
- log8.info(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
2478
+ log8(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
2475
2479
  F: __dxlog_file9,
2476
2480
  L: 106,
2477
2481
  S: this,
@@ -2489,7 +2493,7 @@ var MMSTTopology = class {
2489
2493
  }
2490
2494
  if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
2491
2495
  for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
2492
- log8.info(`Connect ${peer}.`, void 0, {
2496
+ log8(`Connect ${peer}.`, void 0, {
2493
2497
  F: __dxlog_file9,
2494
2498
  L: 115,
2495
2499
  S: this,
@@ -2499,7 +2503,7 @@ var MMSTTopology = class {
2499
2503
  }
2500
2504
  this._lastAction = /* @__PURE__ */ new Date();
2501
2505
  } else {
2502
- log8.info("rate limited connect", void 0, {
2506
+ log8("rate limited connect", void 0, {
2503
2507
  F: __dxlog_file9,
2504
2508
  L: 120,
2505
2509
  S: this,
@@ -3004,8 +3008,8 @@ var SimplePeerTransport = class {
3004
3008
  return {
3005
3009
  bytesSent: stats.transport.bytesSent,
3006
3010
  bytesReceived: stats.transport.bytesReceived,
3007
- packetsSent: stats.transport.messagesSent,
3008
- packetsReceived: stats.transport.messagesReceived,
3011
+ packetsSent: stats.transport.packetsSent,
3012
+ packetsReceived: stats.transport.packetsReceived,
3009
3013
  rawStats: stats.raw
3010
3014
  };
3011
3015
  }
@@ -3038,8 +3042,8 @@ var SimplePeerTransport = class {
3038
3042
  if (!rc) {
3039
3043
  return "unavailable";
3040
3044
  }
3041
- if (rc.relay) {
3042
- return `${rc.ip}:${rc.port}/${rc.protocol} relay for XXX ${rc.candidateType}`;
3045
+ if (rc.candidateType === "relay") {
3046
+ return `${rc.ip}:${rc.port}/${rc.protocol} relay for ${rc.relatedAddress}:${rc.relatedPort}`;
3043
3047
  }
3044
3048
  return `${rc.ip}:${rc.port}/${rc.protocol} ${rc.candidateType}`;
3045
3049
  }
@@ -3053,14 +3057,13 @@ var SimplePeerTransport = class {
3053
3057
  if (this._closed) {
3054
3058
  return;
3055
3059
  }
3056
- this._closed = true;
3057
3060
  this._disconnectStreams();
3058
3061
  this._peer.destroy();
3059
3062
  this._closed = true;
3060
3063
  this.closed.emit();
3061
3064
  log11("closed", void 0, {
3062
3065
  F: __dxlog_file12,
3063
- L: 201,
3066
+ L: 200,
3064
3067
  S: this,
3065
3068
  C: (f, a) => f(...a)
3066
3069
  });
@@ -3508,17 +3511,24 @@ var LibDataChannelTransport = class {
3508
3511
  this._readyForCandidates = new Trigger2();
3509
3512
  this._writeCallback = null;
3510
3513
  this._peer = (async () => {
3511
- const { RTCPeerConnection: PeerConnection } = await import("./index.browser-O53CPVK3.mjs");
3514
+ const { RTCPeerConnection } = (await importESM("node-datachannel/polyfill")).default;
3512
3515
  if (this._closed) {
3513
3516
  this.errors.raise(new Error("connection already closed"));
3514
3517
  }
3515
- const peer = new PeerConnection(params.webrtcConfig);
3518
+ if (params.webrtcConfig) {
3519
+ params.webrtcConfig.iceServers = params.webrtcConfig.iceServers ?? [];
3520
+ } else {
3521
+ params.webrtcConfig = {
3522
+ iceServers: []
3523
+ };
3524
+ }
3525
+ const peer = new RTCPeerConnection(params.webrtcConfig);
3516
3526
  peer.onicecandidateerror = (event) => {
3517
3527
  log14.error("peer.onicecandidateerror", {
3518
3528
  event
3519
3529
  }, {
3520
3530
  F: __dxlog_file15,
3521
- L: 53,
3531
+ L: 61,
3522
3532
  S: this,
3523
3533
  C: (f, a) => f(...a)
3524
3534
  });
@@ -3530,7 +3540,7 @@ var LibDataChannelTransport = class {
3530
3540
  transportConnectionState: this._connected
3531
3541
  }, {
3532
3542
  F: __dxlog_file15,
3533
- L: 57,
3543
+ L: 65,
3534
3544
  S: this,
3535
3545
  C: (f, a) => f(...a)
3536
3546
  });
@@ -3540,7 +3550,7 @@ var LibDataChannelTransport = class {
3540
3550
  event
3541
3551
  }, {
3542
3552
  F: __dxlog_file15,
3543
- L: 66,
3553
+ L: 74,
3544
3554
  S: this,
3545
3555
  C: (f, a) => f(...a)
3546
3556
  });
@@ -3564,7 +3574,7 @@ var LibDataChannelTransport = class {
3564
3574
  err
3565
3575
  }, {
3566
3576
  F: __dxlog_file15,
3567
- L: 83,
3577
+ L: 91,
3568
3578
  S: this,
3569
3579
  C: (f, a) => f(...a)
3570
3580
  });
@@ -3573,12 +3583,15 @@ var LibDataChannelTransport = class {
3573
3583
  };
3574
3584
  if (params.initiator) {
3575
3585
  peer.createOffer().then(async (offer) => {
3586
+ if (this._closed) {
3587
+ return;
3588
+ }
3576
3589
  if (peer.connectionState !== "connecting") {
3577
3590
  log14.error("i am initiator but peer not in state connecting", {
3578
3591
  peer
3579
3592
  }, {
3580
3593
  F: __dxlog_file15,
3581
- L: 92,
3594
+ L: 104,
3582
3595
  S: this,
3583
3596
  C: (f, a) => f(...a)
3584
3597
  });
@@ -3588,7 +3601,7 @@ var LibDataChannelTransport = class {
3588
3601
  offer
3589
3602
  }, {
3590
3603
  F: __dxlog_file15,
3591
- L: 95,
3604
+ L: 107,
3592
3605
  S: this,
3593
3606
  C: (f, a) => f(...a)
3594
3607
  });
@@ -3608,7 +3621,7 @@ var LibDataChannelTransport = class {
3608
3621
  this.handleChannel(peer.createDataChannel(DATACHANNEL_LABEL));
3609
3622
  log14.debug("created data channel", void 0, {
3610
3623
  F: __dxlog_file15,
3611
- L: 104,
3624
+ L: 116,
3612
3625
  S: this,
3613
3626
  C: (f, a) => f(...a)
3614
3627
  });
@@ -3621,7 +3634,7 @@ var LibDataChannelTransport = class {
3621
3634
  event
3622
3635
  }, {
3623
3636
  F: __dxlog_file15,
3624
- L: 110,
3637
+ L: 122,
3625
3638
  S: this,
3626
3639
  C: (f, a) => f(...a)
3627
3640
  });
@@ -3639,7 +3652,7 @@ var LibDataChannelTransport = class {
3639
3652
  this._channel.onopen = () => {
3640
3653
  log14.debug("dataChannel.onopen", void 0, {
3641
3654
  F: __dxlog_file15,
3642
- L: 126,
3655
+ L: 138,
3643
3656
  S: this,
3644
3657
  C: (f, a) => f(...a)
3645
3658
  });
@@ -3660,7 +3673,7 @@ var LibDataChannelTransport = class {
3660
3673
  if (this._writeCallback !== null) {
3661
3674
  log14.error("consumer trying to write before we're ready for more data", void 0, {
3662
3675
  F: __dxlog_file15,
3663
- L: 143,
3676
+ L: 155,
3664
3677
  S: this,
3665
3678
  C: (f, a) => f(...a)
3666
3679
  });
@@ -3685,7 +3698,7 @@ var LibDataChannelTransport = class {
3685
3698
  err
3686
3699
  }, {
3687
3700
  F: __dxlog_file15,
3688
- L: 163,
3701
+ L: 175,
3689
3702
  S: this,
3690
3703
  C: (f, a) => f(...a)
3691
3704
  });
@@ -3709,6 +3722,12 @@ var LibDataChannelTransport = class {
3709
3722
  return;
3710
3723
  }
3711
3724
  await this._disconnectStreams();
3725
+ const peer = await this._peer;
3726
+ try {
3727
+ peer.close();
3728
+ } catch (err) {
3729
+ this.errors.raise(err);
3730
+ }
3712
3731
  this._closed = true;
3713
3732
  this.closed.emit();
3714
3733
  }
@@ -3722,7 +3741,7 @@ var LibDataChannelTransport = class {
3722
3741
  peer
3723
3742
  }, {
3724
3743
  F: __dxlog_file15,
3725
- L: 198,
3744
+ L: 216,
3726
3745
  S: this,
3727
3746
  C: (f, a) => f(...a)
3728
3747
  });
@@ -3750,7 +3769,7 @@ var LibDataChannelTransport = class {
3750
3769
  err
3751
3770
  }, {
3752
3771
  F: __dxlog_file15,
3753
- L: 209,
3772
+ L: 227,
3754
3773
  S: this,
3755
3774
  C: (f, a) => f(...a)
3756
3775
  });
@@ -3770,7 +3789,7 @@ var LibDataChannelTransport = class {
3770
3789
  err
3771
3790
  }, {
3772
3791
  F: __dxlog_file15,
3773
- L: 220,
3792
+ L: 238,
3774
3793
  S: this,
3775
3794
  C: (f, a) => f(...a)
3776
3795
  });
@@ -3789,7 +3808,7 @@ var LibDataChannelTransport = class {
3789
3808
  signal
3790
3809
  }, {
3791
3810
  F: __dxlog_file15,
3792
- L: 231,
3811
+ L: 249,
3793
3812
  S: this,
3794
3813
  C: (f, a) => f(...a)
3795
3814
  });
@@ -3798,51 +3817,61 @@ var LibDataChannelTransport = class {
3798
3817
  }).catch((err) => {
3799
3818
  log14.catch(err, void 0, {
3800
3819
  F: __dxlog_file15,
3801
- L: 236,
3820
+ L: 254,
3802
3821
  S: this,
3803
3822
  C: (f, a) => f(...a)
3804
3823
  });
3805
3824
  });
3806
3825
  }
3807
3826
  async getDetails() {
3827
+ const stats = await this._getStats();
3828
+ const rc = stats?.remoteCandidate;
3829
+ if (!rc) {
3830
+ return "unavailable";
3831
+ }
3832
+ if (rc.candidateType === "relay") {
3833
+ return `${rc.ip}:${rc.port} relay for ${rc.relatedAddress}:${rc.relatedPort}`;
3834
+ }
3835
+ return `${rc.ip}:${rc.port} ${rc.candidateType}`;
3836
+ }
3837
+ async _getStats() {
3808
3838
  return this._peer.then(async (peer) => {
3809
- const cp = await peer.getSelectedCandidatePair();
3810
- if (!cp) {
3811
- return "unavailable";
3839
+ const stats = await peer.getStats();
3840
+ const statsEntries = Array.from(stats.entries());
3841
+ const transport = statsEntries.filter((s) => s[1].type === "transport")[0][1];
3842
+ const candidatePair = statsEntries.filter((s) => s[0] === transport.selectedCandidatePairId);
3843
+ let selectedCandidatePair;
3844
+ let remoteCandidate;
3845
+ if (candidatePair.length > 0) {
3846
+ selectedCandidatePair = candidatePair[0][1];
3847
+ remoteCandidate = statsEntries.filter((s) => s[0] === selectedCandidatePair.remoteCandidateId)[0][1];
3812
3848
  }
3813
- return `${cp.remote.address}:${cp.remote.port}/${cp.remote.transportType} ${cp.remote.type}`;
3814
- }).catch((err) => {
3815
- log14.catch(err, void 0, {
3816
- F: __dxlog_file15,
3817
- L: 250,
3818
- S: this,
3819
- C: (f, a) => f(...a)
3820
- });
3821
- return "unavailable";
3849
+ return {
3850
+ transport,
3851
+ selectedCandidatePair,
3852
+ remoteCandidate,
3853
+ raw: Object.fromEntries(stats)
3854
+ };
3822
3855
  });
3823
3856
  }
3824
3857
  async getStats() {
3825
- return this._peer.then((peer) => {
3826
- return {
3827
- bytesSent: peer.bytesSent(),
3828
- bytesReceived: peer.bytesReceived(),
3829
- packetsSent: 0,
3830
- packetsReceived: 0
3831
- };
3832
- }).catch((err) => {
3833
- log14.catch(err, void 0, {
3834
- F: __dxlog_file15,
3835
- L: 266,
3836
- S: this,
3837
- C: (f, a) => f(...a)
3838
- });
3858
+ const stats = await this._getStats();
3859
+ if (!stats) {
3839
3860
  return {
3840
3861
  bytesSent: 0,
3841
3862
  bytesReceived: 0,
3842
3863
  packetsSent: 0,
3843
- packetsReceived: 0
3864
+ packetsReceived: 0,
3865
+ rawStats: {}
3844
3866
  };
3845
- });
3867
+ }
3868
+ return {
3869
+ bytesSent: stats.transport.bytesSent,
3870
+ bytesReceived: stats.transport.bytesReceived,
3871
+ packetsSent: 0,
3872
+ packetsReceived: 0,
3873
+ rawStats: stats.raw
3874
+ };
3846
3875
  }
3847
3876
  // TODO(nf): add classmethod to call node-datachannel.cleanup() when all instances have been destroyed?
3848
3877
  async destroy() {
@@ -3861,6 +3890,7 @@ var createLibDataChannelTransportFactory = (webrtcConfig) => ({
3861
3890
  webrtcConfig
3862
3891
  })
3863
3892
  });
3893
+ var importESM = Function("path", "return import(path)");
3864
3894
 
3865
3895
  // packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts
3866
3896
  import { Event as Event11 } from "@dxos/async";
@@ -3937,4 +3967,4 @@ export {
3937
3967
  TcpTransport,
3938
3968
  createTeleportProtocolFactory
3939
3969
  };
3940
- //# sourceMappingURL=chunk-J7KS7JMZ.mjs.map
3970
+ //# sourceMappingURL=chunk-7JESB3AJ.mjs.map