@dxos/network-manager 0.3.9-main.c2ac8a5 → 0.3.9-main.cdfefb1

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 (57) hide show
  1. package/dist/lib/browser/{chunk-Q5B7EFTV.mjs → chunk-7JESB3AJ.mjs} +90 -59
  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-YLQJ2ALQ.cjs → chunk-Y2B5BDRH.cjs} +94 -61
  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/package.json +18 -18
  19. package/src/topology/mmst-topology.ts +7 -7
  20. package/src/transport/index.ts +0 -1
  21. package/src/transport/libdatachannel-transport.ts +76 -34
  22. package/src/transport/simplepeer-transport.ts +2 -2
  23. package/dist/lib/browser/chunk-Q5B7EFTV.mjs.map +0 -7
  24. package/dist/lib/browser/chunk-YERMWDRB.mjs +0 -24
  25. package/dist/lib/browser/chunk-YERMWDRB.mjs.map +0 -7
  26. package/dist/lib/browser/index.browser-O53CPVK3.mjs +0 -14
  27. package/dist/lib/browser/index.browser-O53CPVK3.mjs.map +0 -7
  28. package/dist/lib/node/chunk-JDKM4UPJ.cjs +0 -470
  29. package/dist/lib/node/chunk-JDKM4UPJ.cjs.map +0 -7
  30. package/dist/lib/node/chunk-YLQJ2ALQ.cjs.map +0 -7
  31. package/dist/lib/node/datachannel-3VTTIMR5.cjs +0 -35
  32. package/dist/lib/node/datachannel-3VTTIMR5.cjs.map +0 -7
  33. package/dist/types/src/transport/datachannel/index.browser.d.ts +0 -15
  34. package/dist/types/src/transport/datachannel/index.browser.d.ts.map +0 -1
  35. package/dist/types/src/transport/datachannel/index.d.ts +0 -8
  36. package/dist/types/src/transport/datachannel/index.d.ts.map +0 -1
  37. package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts +0 -29
  38. package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts.map +0 -1
  39. package/dist/types/src/transport/datachannel/rtc-events.d.ts +0 -9
  40. package/dist/types/src/transport/datachannel/rtc-events.d.ts.map +0 -1
  41. package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts +0 -22
  42. package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts.map +0 -1
  43. package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts +0 -54
  44. package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts.map +0 -1
  45. package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts +0 -2
  46. package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts.map +0 -1
  47. package/dist/types/src/transport/datachannel/rtc-session-description.d.ts +0 -10
  48. package/dist/types/src/transport/datachannel/rtc-session-description.d.ts.map +0 -1
  49. package/src/transport/datachannel/README.md +0 -2
  50. package/src/transport/datachannel/index.browser.ts +0 -8
  51. package/src/transport/datachannel/index.ts +0 -17
  52. package/src/transport/datachannel/rtc-data-channel.ts +0 -148
  53. package/src/transport/datachannel/rtc-events.ts +0 -23
  54. package/src/transport/datachannel/rtc-ice-candidate.ts +0 -54
  55. package/src/transport/datachannel/rtc-peer-connection.test.ts +0 -112
  56. package/src/transport/datachannel/rtc-peer-connection.ts +0 -355
  57. 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
  }
@@ -3507,17 +3511,24 @@ var LibDataChannelTransport = class {
3507
3511
  this._readyForCandidates = new Trigger2();
3508
3512
  this._writeCallback = null;
3509
3513
  this._peer = (async () => {
3510
- const { RTCPeerConnection: PeerConnection } = await import("./index.browser-O53CPVK3.mjs");
3514
+ const { RTCPeerConnection } = (await importESM("node-datachannel/polyfill")).default;
3511
3515
  if (this._closed) {
3512
3516
  this.errors.raise(new Error("connection already closed"));
3513
3517
  }
3514
- 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);
3515
3526
  peer.onicecandidateerror = (event) => {
3516
3527
  log14.error("peer.onicecandidateerror", {
3517
3528
  event
3518
3529
  }, {
3519
3530
  F: __dxlog_file15,
3520
- L: 53,
3531
+ L: 61,
3521
3532
  S: this,
3522
3533
  C: (f, a) => f(...a)
3523
3534
  });
@@ -3529,7 +3540,7 @@ var LibDataChannelTransport = class {
3529
3540
  transportConnectionState: this._connected
3530
3541
  }, {
3531
3542
  F: __dxlog_file15,
3532
- L: 57,
3543
+ L: 65,
3533
3544
  S: this,
3534
3545
  C: (f, a) => f(...a)
3535
3546
  });
@@ -3539,7 +3550,7 @@ var LibDataChannelTransport = class {
3539
3550
  event
3540
3551
  }, {
3541
3552
  F: __dxlog_file15,
3542
- L: 66,
3553
+ L: 74,
3543
3554
  S: this,
3544
3555
  C: (f, a) => f(...a)
3545
3556
  });
@@ -3563,7 +3574,7 @@ var LibDataChannelTransport = class {
3563
3574
  err
3564
3575
  }, {
3565
3576
  F: __dxlog_file15,
3566
- L: 83,
3577
+ L: 91,
3567
3578
  S: this,
3568
3579
  C: (f, a) => f(...a)
3569
3580
  });
@@ -3572,12 +3583,15 @@ var LibDataChannelTransport = class {
3572
3583
  };
3573
3584
  if (params.initiator) {
3574
3585
  peer.createOffer().then(async (offer) => {
3586
+ if (this._closed) {
3587
+ return;
3588
+ }
3575
3589
  if (peer.connectionState !== "connecting") {
3576
3590
  log14.error("i am initiator but peer not in state connecting", {
3577
3591
  peer
3578
3592
  }, {
3579
3593
  F: __dxlog_file15,
3580
- L: 92,
3594
+ L: 104,
3581
3595
  S: this,
3582
3596
  C: (f, a) => f(...a)
3583
3597
  });
@@ -3587,7 +3601,7 @@ var LibDataChannelTransport = class {
3587
3601
  offer
3588
3602
  }, {
3589
3603
  F: __dxlog_file15,
3590
- L: 95,
3604
+ L: 107,
3591
3605
  S: this,
3592
3606
  C: (f, a) => f(...a)
3593
3607
  });
@@ -3607,7 +3621,7 @@ var LibDataChannelTransport = class {
3607
3621
  this.handleChannel(peer.createDataChannel(DATACHANNEL_LABEL));
3608
3622
  log14.debug("created data channel", void 0, {
3609
3623
  F: __dxlog_file15,
3610
- L: 104,
3624
+ L: 116,
3611
3625
  S: this,
3612
3626
  C: (f, a) => f(...a)
3613
3627
  });
@@ -3620,7 +3634,7 @@ var LibDataChannelTransport = class {
3620
3634
  event
3621
3635
  }, {
3622
3636
  F: __dxlog_file15,
3623
- L: 110,
3637
+ L: 122,
3624
3638
  S: this,
3625
3639
  C: (f, a) => f(...a)
3626
3640
  });
@@ -3638,7 +3652,7 @@ var LibDataChannelTransport = class {
3638
3652
  this._channel.onopen = () => {
3639
3653
  log14.debug("dataChannel.onopen", void 0, {
3640
3654
  F: __dxlog_file15,
3641
- L: 126,
3655
+ L: 138,
3642
3656
  S: this,
3643
3657
  C: (f, a) => f(...a)
3644
3658
  });
@@ -3659,7 +3673,7 @@ var LibDataChannelTransport = class {
3659
3673
  if (this._writeCallback !== null) {
3660
3674
  log14.error("consumer trying to write before we're ready for more data", void 0, {
3661
3675
  F: __dxlog_file15,
3662
- L: 143,
3676
+ L: 155,
3663
3677
  S: this,
3664
3678
  C: (f, a) => f(...a)
3665
3679
  });
@@ -3684,7 +3698,7 @@ var LibDataChannelTransport = class {
3684
3698
  err
3685
3699
  }, {
3686
3700
  F: __dxlog_file15,
3687
- L: 163,
3701
+ L: 175,
3688
3702
  S: this,
3689
3703
  C: (f, a) => f(...a)
3690
3704
  });
@@ -3708,6 +3722,12 @@ var LibDataChannelTransport = class {
3708
3722
  return;
3709
3723
  }
3710
3724
  await this._disconnectStreams();
3725
+ const peer = await this._peer;
3726
+ try {
3727
+ peer.close();
3728
+ } catch (err) {
3729
+ this.errors.raise(err);
3730
+ }
3711
3731
  this._closed = true;
3712
3732
  this.closed.emit();
3713
3733
  }
@@ -3721,7 +3741,7 @@ var LibDataChannelTransport = class {
3721
3741
  peer
3722
3742
  }, {
3723
3743
  F: __dxlog_file15,
3724
- L: 198,
3744
+ L: 216,
3725
3745
  S: this,
3726
3746
  C: (f, a) => f(...a)
3727
3747
  });
@@ -3749,7 +3769,7 @@ var LibDataChannelTransport = class {
3749
3769
  err
3750
3770
  }, {
3751
3771
  F: __dxlog_file15,
3752
- L: 209,
3772
+ L: 227,
3753
3773
  S: this,
3754
3774
  C: (f, a) => f(...a)
3755
3775
  });
@@ -3769,7 +3789,7 @@ var LibDataChannelTransport = class {
3769
3789
  err
3770
3790
  }, {
3771
3791
  F: __dxlog_file15,
3772
- L: 220,
3792
+ L: 238,
3773
3793
  S: this,
3774
3794
  C: (f, a) => f(...a)
3775
3795
  });
@@ -3788,7 +3808,7 @@ var LibDataChannelTransport = class {
3788
3808
  signal
3789
3809
  }, {
3790
3810
  F: __dxlog_file15,
3791
- L: 231,
3811
+ L: 249,
3792
3812
  S: this,
3793
3813
  C: (f, a) => f(...a)
3794
3814
  });
@@ -3797,51 +3817,61 @@ var LibDataChannelTransport = class {
3797
3817
  }).catch((err) => {
3798
3818
  log14.catch(err, void 0, {
3799
3819
  F: __dxlog_file15,
3800
- L: 236,
3820
+ L: 254,
3801
3821
  S: this,
3802
3822
  C: (f, a) => f(...a)
3803
3823
  });
3804
3824
  });
3805
3825
  }
3806
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() {
3807
3838
  return this._peer.then(async (peer) => {
3808
- const cp = await peer.getSelectedCandidatePair();
3809
- if (!cp) {
3810
- 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];
3811
3848
  }
3812
- return `${cp.remote.address}:${cp.remote.port}/${cp.remote.transportType} ${cp.remote.type}`;
3813
- }).catch((err) => {
3814
- log14.catch(err, void 0, {
3815
- F: __dxlog_file15,
3816
- L: 250,
3817
- S: this,
3818
- C: (f, a) => f(...a)
3819
- });
3820
- return "unavailable";
3849
+ return {
3850
+ transport,
3851
+ selectedCandidatePair,
3852
+ remoteCandidate,
3853
+ raw: Object.fromEntries(stats)
3854
+ };
3821
3855
  });
3822
3856
  }
3823
3857
  async getStats() {
3824
- return this._peer.then((peer) => {
3825
- return {
3826
- bytesSent: peer.bytesSent(),
3827
- bytesReceived: peer.bytesReceived(),
3828
- packetsSent: 0,
3829
- packetsReceived: 0
3830
- };
3831
- }).catch((err) => {
3832
- log14.catch(err, void 0, {
3833
- F: __dxlog_file15,
3834
- L: 266,
3835
- S: this,
3836
- C: (f, a) => f(...a)
3837
- });
3858
+ const stats = await this._getStats();
3859
+ if (!stats) {
3838
3860
  return {
3839
3861
  bytesSent: 0,
3840
3862
  bytesReceived: 0,
3841
3863
  packetsSent: 0,
3842
- packetsReceived: 0
3864
+ packetsReceived: 0,
3865
+ rawStats: {}
3843
3866
  };
3844
- });
3867
+ }
3868
+ return {
3869
+ bytesSent: stats.transport.bytesSent,
3870
+ bytesReceived: stats.transport.bytesReceived,
3871
+ packetsSent: 0,
3872
+ packetsReceived: 0,
3873
+ rawStats: stats.raw
3874
+ };
3845
3875
  }
3846
3876
  // TODO(nf): add classmethod to call node-datachannel.cleanup() when all instances have been destroyed?
3847
3877
  async destroy() {
@@ -3860,6 +3890,7 @@ var createLibDataChannelTransportFactory = (webrtcConfig) => ({
3860
3890
  webrtcConfig
3861
3891
  })
3862
3892
  });
3893
+ var importESM = Function("path", "return import(path)");
3863
3894
 
3864
3895
  // packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts
3865
3896
  import { Event as Event11 } from "@dxos/async";
@@ -3936,4 +3967,4 @@ export {
3936
3967
  TcpTransport,
3937
3968
  createTeleportProtocolFactory
3938
3969
  };
3939
- //# sourceMappingURL=chunk-Q5B7EFTV.mjs.map
3970
+ //# sourceMappingURL=chunk-7JESB3AJ.mjs.map