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

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 (56) hide show
  1. package/dist/lib/browser/{chunk-Q5B7EFTV.mjs → chunk-XF474R3E.mjs} +98 -59
  2. package/dist/lib/browser/chunk-XF474R3E.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 +3 -3
  6. package/dist/lib/node/{chunk-YLQJ2ALQ.cjs → chunk-Y2B5BDRH.cjs} +94 -61
  7. package/dist/lib/node/chunk-Y2B5BDRH.cjs.map +7 -0
  8. package/dist/lib/node/index.cjs +27 -36
  9. package/dist/lib/node/index.cjs.map +2 -2
  10. package/dist/lib/node/meta.json +1 -1
  11. package/dist/lib/node/testing/index.cjs +18 -19
  12. package/dist/lib/node/testing/index.cjs.map +1 -1
  13. package/dist/types/src/transport/index.d.ts +0 -1
  14. package/dist/types/src/transport/index.d.ts.map +1 -1
  15. package/dist/types/src/transport/libdatachannel-transport.d.ts +1 -0
  16. package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -1
  17. package/package.json +18 -18
  18. package/src/topology/mmst-topology.ts +7 -7
  19. package/src/transport/index.ts +0 -1
  20. package/src/transport/libdatachannel-transport.ts +76 -34
  21. package/src/transport/simplepeer-transport.ts +2 -2
  22. package/dist/lib/browser/chunk-Q5B7EFTV.mjs.map +0 -7
  23. package/dist/lib/browser/chunk-YERMWDRB.mjs +0 -24
  24. package/dist/lib/browser/chunk-YERMWDRB.mjs.map +0 -7
  25. package/dist/lib/browser/index.browser-O53CPVK3.mjs +0 -14
  26. package/dist/lib/browser/index.browser-O53CPVK3.mjs.map +0 -7
  27. package/dist/lib/node/chunk-JDKM4UPJ.cjs +0 -470
  28. package/dist/lib/node/chunk-JDKM4UPJ.cjs.map +0 -7
  29. package/dist/lib/node/chunk-YLQJ2ALQ.cjs.map +0 -7
  30. package/dist/lib/node/datachannel-3VTTIMR5.cjs +0 -35
  31. package/dist/lib/node/datachannel-3VTTIMR5.cjs.map +0 -7
  32. package/dist/types/src/transport/datachannel/index.browser.d.ts +0 -15
  33. package/dist/types/src/transport/datachannel/index.browser.d.ts.map +0 -1
  34. package/dist/types/src/transport/datachannel/index.d.ts +0 -8
  35. package/dist/types/src/transport/datachannel/index.d.ts.map +0 -1
  36. package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts +0 -29
  37. package/dist/types/src/transport/datachannel/rtc-data-channel.d.ts.map +0 -1
  38. package/dist/types/src/transport/datachannel/rtc-events.d.ts +0 -9
  39. package/dist/types/src/transport/datachannel/rtc-events.d.ts.map +0 -1
  40. package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts +0 -22
  41. package/dist/types/src/transport/datachannel/rtc-ice-candidate.d.ts.map +0 -1
  42. package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts +0 -54
  43. package/dist/types/src/transport/datachannel/rtc-peer-connection.d.ts.map +0 -1
  44. package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts +0 -2
  45. package/dist/types/src/transport/datachannel/rtc-peer-connection.test.d.ts.map +0 -1
  46. package/dist/types/src/transport/datachannel/rtc-session-description.d.ts +0 -10
  47. package/dist/types/src/transport/datachannel/rtc-session-description.d.ts.map +0 -1
  48. package/src/transport/datachannel/README.md +0 -2
  49. package/src/transport/datachannel/index.browser.ts +0 -8
  50. package/src/transport/datachannel/index.ts +0 -17
  51. package/src/transport/datachannel/rtc-data-channel.ts +0 -148
  52. package/src/transport/datachannel/rtc-events.ts +0 -23
  53. package/src/transport/datachannel/rtc-ice-candidate.ts +0 -54
  54. package/src/transport/datachannel/rtc-peer-connection.test.ts +0 -112
  55. package/src/transport/datachannel/rtc-peer-connection.ts +0 -355
  56. 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
- __require
4
- } from "./chunk-YERMWDRB.mjs";
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";
@@ -2383,7 +2394,7 @@ var MMSTTopology = class {
2383
2394
  });
2384
2395
  const { connected, candidates } = this._controller.getState();
2385
2396
  if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {
2386
- log8.info("Running the algorithm.", void 0, {
2397
+ log8("Running the algorithm.", void 0, {
2387
2398
  F: __dxlog_file9,
2388
2399
  L: 60,
2389
2400
  S: this,
@@ -2427,7 +2438,7 @@ var MMSTTopology = class {
2427
2438
  });
2428
2439
  const { connected, candidates, ownPeerId } = this._controller.getState();
2429
2440
  if (connected.length > this._maxPeers) {
2430
- log8.info(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
2441
+ log8(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
2431
2442
  F: __dxlog_file9,
2432
2443
  L: 85,
2433
2444
  S: this,
@@ -2453,7 +2464,7 @@ var MMSTTopology = class {
2453
2464
  }
2454
2465
  if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
2455
2466
  for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
2456
- log8.info(`Disconnect ${peer}.`, void 0, {
2467
+ log8(`Disconnect ${peer}.`, void 0, {
2457
2468
  F: __dxlog_file9,
2458
2469
  L: 97,
2459
2470
  S: this,
@@ -2463,7 +2474,7 @@ var MMSTTopology = class {
2463
2474
  }
2464
2475
  this._lastAction = /* @__PURE__ */ new Date();
2465
2476
  } else {
2466
- log8.info("rate limited discconnect", void 0, {
2477
+ log8("rate limited discconnect", void 0, {
2467
2478
  F: __dxlog_file9,
2468
2479
  L: 102,
2469
2480
  S: this,
@@ -2471,7 +2482,7 @@ var MMSTTopology = class {
2471
2482
  });
2472
2483
  }
2473
2484
  } else if (connected.length < this._originateConnections) {
2474
- log8.info(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
2485
+ log8(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
2475
2486
  F: __dxlog_file9,
2476
2487
  L: 106,
2477
2488
  S: this,
@@ -2489,7 +2500,7 @@ var MMSTTopology = class {
2489
2500
  }
2490
2501
  if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
2491
2502
  for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
2492
- log8.info(`Connect ${peer}.`, void 0, {
2503
+ log8(`Connect ${peer}.`, void 0, {
2493
2504
  F: __dxlog_file9,
2494
2505
  L: 115,
2495
2506
  S: this,
@@ -2499,7 +2510,7 @@ var MMSTTopology = class {
2499
2510
  }
2500
2511
  this._lastAction = /* @__PURE__ */ new Date();
2501
2512
  } else {
2502
- log8.info("rate limited connect", void 0, {
2513
+ log8("rate limited connect", void 0, {
2503
2514
  F: __dxlog_file9,
2504
2515
  L: 120,
2505
2516
  S: this,
@@ -3004,8 +3015,8 @@ var SimplePeerTransport = class {
3004
3015
  return {
3005
3016
  bytesSent: stats.transport.bytesSent,
3006
3017
  bytesReceived: stats.transport.bytesReceived,
3007
- packetsSent: stats.transport.messagesSent,
3008
- packetsReceived: stats.transport.messagesReceived,
3018
+ packetsSent: stats.transport.packetsSent,
3019
+ packetsReceived: stats.transport.packetsReceived,
3009
3020
  rawStats: stats.raw
3010
3021
  };
3011
3022
  }
@@ -3507,17 +3518,24 @@ var LibDataChannelTransport = class {
3507
3518
  this._readyForCandidates = new Trigger2();
3508
3519
  this._writeCallback = null;
3509
3520
  this._peer = (async () => {
3510
- const { RTCPeerConnection: PeerConnection } = await import("./index.browser-O53CPVK3.mjs");
3521
+ const { RTCPeerConnection } = (await importESM("node-datachannel/polyfill")).default;
3511
3522
  if (this._closed) {
3512
3523
  this.errors.raise(new Error("connection already closed"));
3513
3524
  }
3514
- const peer = new PeerConnection(params.webrtcConfig);
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);
3515
3533
  peer.onicecandidateerror = (event) => {
3516
3534
  log14.error("peer.onicecandidateerror", {
3517
3535
  event
3518
3536
  }, {
3519
3537
  F: __dxlog_file15,
3520
- L: 53,
3538
+ L: 61,
3521
3539
  S: this,
3522
3540
  C: (f, a) => f(...a)
3523
3541
  });
@@ -3529,7 +3547,7 @@ var LibDataChannelTransport = class {
3529
3547
  transportConnectionState: this._connected
3530
3548
  }, {
3531
3549
  F: __dxlog_file15,
3532
- L: 57,
3550
+ L: 65,
3533
3551
  S: this,
3534
3552
  C: (f, a) => f(...a)
3535
3553
  });
@@ -3539,7 +3557,7 @@ var LibDataChannelTransport = class {
3539
3557
  event
3540
3558
  }, {
3541
3559
  F: __dxlog_file15,
3542
- L: 66,
3560
+ L: 74,
3543
3561
  S: this,
3544
3562
  C: (f, a) => f(...a)
3545
3563
  });
@@ -3563,7 +3581,7 @@ var LibDataChannelTransport = class {
3563
3581
  err
3564
3582
  }, {
3565
3583
  F: __dxlog_file15,
3566
- L: 83,
3584
+ L: 91,
3567
3585
  S: this,
3568
3586
  C: (f, a) => f(...a)
3569
3587
  });
@@ -3572,12 +3590,15 @@ var LibDataChannelTransport = class {
3572
3590
  };
3573
3591
  if (params.initiator) {
3574
3592
  peer.createOffer().then(async (offer) => {
3593
+ if (this._closed) {
3594
+ return;
3595
+ }
3575
3596
  if (peer.connectionState !== "connecting") {
3576
3597
  log14.error("i am initiator but peer not in state connecting", {
3577
3598
  peer
3578
3599
  }, {
3579
3600
  F: __dxlog_file15,
3580
- L: 92,
3601
+ L: 104,
3581
3602
  S: this,
3582
3603
  C: (f, a) => f(...a)
3583
3604
  });
@@ -3587,7 +3608,7 @@ var LibDataChannelTransport = class {
3587
3608
  offer
3588
3609
  }, {
3589
3610
  F: __dxlog_file15,
3590
- L: 95,
3611
+ L: 107,
3591
3612
  S: this,
3592
3613
  C: (f, a) => f(...a)
3593
3614
  });
@@ -3607,7 +3628,7 @@ var LibDataChannelTransport = class {
3607
3628
  this.handleChannel(peer.createDataChannel(DATACHANNEL_LABEL));
3608
3629
  log14.debug("created data channel", void 0, {
3609
3630
  F: __dxlog_file15,
3610
- L: 104,
3631
+ L: 116,
3611
3632
  S: this,
3612
3633
  C: (f, a) => f(...a)
3613
3634
  });
@@ -3620,7 +3641,7 @@ var LibDataChannelTransport = class {
3620
3641
  event
3621
3642
  }, {
3622
3643
  F: __dxlog_file15,
3623
- L: 110,
3644
+ L: 122,
3624
3645
  S: this,
3625
3646
  C: (f, a) => f(...a)
3626
3647
  });
@@ -3638,7 +3659,7 @@ var LibDataChannelTransport = class {
3638
3659
  this._channel.onopen = () => {
3639
3660
  log14.debug("dataChannel.onopen", void 0, {
3640
3661
  F: __dxlog_file15,
3641
- L: 126,
3662
+ L: 138,
3642
3663
  S: this,
3643
3664
  C: (f, a) => f(...a)
3644
3665
  });
@@ -3659,7 +3680,7 @@ var LibDataChannelTransport = class {
3659
3680
  if (this._writeCallback !== null) {
3660
3681
  log14.error("consumer trying to write before we're ready for more data", void 0, {
3661
3682
  F: __dxlog_file15,
3662
- L: 143,
3683
+ L: 155,
3663
3684
  S: this,
3664
3685
  C: (f, a) => f(...a)
3665
3686
  });
@@ -3684,7 +3705,7 @@ var LibDataChannelTransport = class {
3684
3705
  err
3685
3706
  }, {
3686
3707
  F: __dxlog_file15,
3687
- L: 163,
3708
+ L: 175,
3688
3709
  S: this,
3689
3710
  C: (f, a) => f(...a)
3690
3711
  });
@@ -3693,7 +3714,7 @@ var LibDataChannelTransport = class {
3693
3714
  this._channel.onmessage = (event) => {
3694
3715
  let data = event.data;
3695
3716
  if (data instanceof ArrayBuffer) {
3696
- data = Buffer.from(data);
3717
+ data = Buffer2.from(data);
3697
3718
  }
3698
3719
  this._stream.push(data);
3699
3720
  };
@@ -3708,6 +3729,12 @@ var LibDataChannelTransport = class {
3708
3729
  return;
3709
3730
  }
3710
3731
  await this._disconnectStreams();
3732
+ const peer = await this._peer;
3733
+ try {
3734
+ peer.close();
3735
+ } catch (err) {
3736
+ this.errors.raise(err);
3737
+ }
3711
3738
  this._closed = true;
3712
3739
  this.closed.emit();
3713
3740
  }
@@ -3721,7 +3748,7 @@ var LibDataChannelTransport = class {
3721
3748
  peer
3722
3749
  }, {
3723
3750
  F: __dxlog_file15,
3724
- L: 198,
3751
+ L: 216,
3725
3752
  S: this,
3726
3753
  C: (f, a) => f(...a)
3727
3754
  });
@@ -3749,7 +3776,7 @@ var LibDataChannelTransport = class {
3749
3776
  err
3750
3777
  }, {
3751
3778
  F: __dxlog_file15,
3752
- L: 209,
3779
+ L: 227,
3753
3780
  S: this,
3754
3781
  C: (f, a) => f(...a)
3755
3782
  });
@@ -3769,7 +3796,7 @@ var LibDataChannelTransport = class {
3769
3796
  err
3770
3797
  }, {
3771
3798
  F: __dxlog_file15,
3772
- L: 220,
3799
+ L: 238,
3773
3800
  S: this,
3774
3801
  C: (f, a) => f(...a)
3775
3802
  });
@@ -3788,7 +3815,7 @@ var LibDataChannelTransport = class {
3788
3815
  signal
3789
3816
  }, {
3790
3817
  F: __dxlog_file15,
3791
- L: 231,
3818
+ L: 249,
3792
3819
  S: this,
3793
3820
  C: (f, a) => f(...a)
3794
3821
  });
@@ -3797,51 +3824,61 @@ var LibDataChannelTransport = class {
3797
3824
  }).catch((err) => {
3798
3825
  log14.catch(err, void 0, {
3799
3826
  F: __dxlog_file15,
3800
- L: 236,
3827
+ L: 254,
3801
3828
  S: this,
3802
3829
  C: (f, a) => f(...a)
3803
3830
  });
3804
3831
  });
3805
3832
  }
3806
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() {
3807
3845
  return this._peer.then(async (peer) => {
3808
- const cp = await peer.getSelectedCandidatePair();
3809
- if (!cp) {
3810
- return "unavailable";
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];
3811
3855
  }
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";
3856
+ return {
3857
+ transport,
3858
+ selectedCandidatePair,
3859
+ remoteCandidate,
3860
+ raw: Object.fromEntries(stats)
3861
+ };
3821
3862
  });
3822
3863
  }
3823
3864
  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
- });
3865
+ const stats = await this._getStats();
3866
+ if (!stats) {
3838
3867
  return {
3839
3868
  bytesSent: 0,
3840
3869
  bytesReceived: 0,
3841
3870
  packetsSent: 0,
3842
- packetsReceived: 0
3871
+ packetsReceived: 0,
3872
+ rawStats: {}
3843
3873
  };
3844
- });
3874
+ }
3875
+ return {
3876
+ bytesSent: stats.transport.bytesSent,
3877
+ bytesReceived: stats.transport.bytesReceived,
3878
+ packetsSent: 0,
3879
+ packetsReceived: 0,
3880
+ rawStats: stats.raw
3881
+ };
3845
3882
  }
3846
3883
  // TODO(nf): add classmethod to call node-datachannel.cleanup() when all instances have been destroyed?
3847
3884
  async destroy() {
@@ -3860,6 +3897,7 @@ var createLibDataChannelTransportFactory = (webrtcConfig) => ({
3860
3897
  webrtcConfig
3861
3898
  })
3862
3899
  });
3900
+ var importESM = Function("path", "return import(path)");
3863
3901
 
3864
3902
  // packages/core/mesh/network-manager/src/transport/tcp-transport.browser.ts
3865
3903
  import { Event as Event11 } from "@dxos/async";
@@ -3909,6 +3947,7 @@ var createTeleportProtocolFactory = (onConnection) => {
3909
3947
  };
3910
3948
 
3911
3949
  export {
3950
+ process,
3912
3951
  ConnectionState,
3913
3952
  Connection,
3914
3953
  SwarmMessenger,
@@ -3936,4 +3975,4 @@ export {
3936
3975
  TcpTransport,
3937
3976
  createTeleportProtocolFactory
3938
3977
  };
3939
- //# sourceMappingURL=chunk-Q5B7EFTV.mjs.map
3978
+ //# sourceMappingURL=chunk-XF474R3E.mjs.map