@dxos/network-manager 0.6.13 → 0.6.14-main.2b6a0f3
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-GW3YM55A.mjs +14 -0
- package/dist/lib/browser/chunk-GW3YM55A.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XYSYUN63.mjs → chunk-V3IRGRVX.mjs} +1501 -1655
- package/dist/lib/browser/chunk-V3IRGRVX.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +347 -22
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +22 -32
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/transport/tcp/index.mjs +39 -0
- package/dist/lib/browser/transport/tcp/index.mjs.map +7 -0
- package/dist/lib/node/{chunk-4YAYC7WN.cjs → chunk-4TTFBX3M.cjs} +1504 -1782
- package/dist/lib/node/chunk-4TTFBX3M.cjs.map +7 -0
- package/dist/lib/node/index.cjs +356 -37
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +24 -34
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/lib/node/transport/tcp/index.cjs +191 -0
- package/dist/lib/node/transport/tcp/index.cjs.map +7 -0
- package/dist/lib/node-esm/chunk-6MN5JVRP.mjs +4035 -0
- package/dist/lib/node-esm/chunk-6MN5JVRP.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +382 -0
- package/dist/lib/node-esm/index.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -0
- package/dist/lib/node-esm/testing/index.mjs +279 -0
- package/dist/lib/node-esm/testing/index.mjs.map +7 -0
- package/dist/lib/node-esm/transport/tcp/index.mjs +159 -0
- package/dist/lib/node-esm/transport/tcp/index.mjs.map +7 -0
- package/dist/types/src/network-manager.d.ts +2 -1
- package/dist/types/src/network-manager.d.ts.map +1 -1
- package/dist/types/src/signal/ice.d.ts.map +1 -1
- package/dist/types/src/signal/integration.node.test.d.ts +2 -0
- package/dist/types/src/signal/integration.node.test.d.ts.map +1 -0
- package/dist/types/src/signal/swarm-messenger.node.test.d.ts +2 -0
- package/dist/types/src/signal/swarm-messenger.node.test.d.ts.map +1 -0
- package/dist/types/src/swarm/connection.d.ts.map +1 -1
- package/dist/types/src/swarm/swarm.d.ts +1 -1
- package/dist/types/src/testing/test-builder.d.ts +2 -2
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-wire-protocol.d.ts +1 -2
- package/dist/types/src/testing/test-wire-protocol.d.ts.map +1 -1
- package/dist/types/src/tests/basic-test-suite.d.ts.map +1 -1
- package/dist/types/src/tests/property-test-suite.d.ts.map +1 -1
- package/dist/types/src/tests/tcp-transport.node.test.d.ts +2 -0
- package/dist/types/src/tests/tcp-transport.node.test.d.ts.map +1 -0
- package/dist/types/src/tests/utils.d.ts.map +1 -1
- package/dist/types/src/transport/index.d.ts +1 -5
- package/dist/types/src/transport/index.d.ts.map +1 -1
- package/dist/types/src/transport/memory-transport.d.ts +2 -2
- package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
- package/dist/types/src/transport/tcp/index.d.ts +2 -0
- package/dist/types/src/transport/tcp/index.d.ts.map +1 -0
- package/dist/types/src/transport/{tcp-transport.browser.d.ts → tcp/tcp-transport.browser.d.ts} +3 -3
- package/dist/types/src/transport/tcp/tcp-transport.browser.d.ts.map +1 -0
- package/dist/types/src/transport/{tcp-transport.d.ts → tcp/tcp-transport.d.ts} +3 -3
- package/dist/types/src/transport/tcp/tcp-transport.d.ts.map +1 -0
- package/dist/types/src/transport/transport.d.ts +7 -6
- package/dist/types/src/transport/transport.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc/index.d.ts +4 -0
- package/dist/types/src/transport/webrtc/index.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts +14 -0
- package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts +68 -0
- package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts +33 -0
- package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts +2 -0
- package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts +4 -0
- package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts.map +1 -0
- package/dist/types/src/transport/{simplepeer-transport-proxy.d.ts → webrtc/rtc-transport-proxy.d.ts} +10 -12
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts +2 -0
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts.map +1 -0
- package/dist/types/src/transport/{simplepeer-transport-service.d.ts → webrtc/rtc-transport-service.d.ts} +9 -7
- package/dist/types/src/transport/webrtc/rtc-transport-service.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts +4 -0
- package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts +2 -0
- package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/test-utils.d.ts +5 -0
- package/dist/types/src/transport/webrtc/test-utils.d.ts.map +1 -0
- package/dist/types/src/transport/webrtc/utils.d.ts +3 -0
- package/dist/types/src/transport/webrtc/utils.d.ts.map +1 -0
- package/package.json +56 -30
- package/src/network-manager.ts +5 -13
- package/src/signal/ice.test.ts +1 -3
- package/src/signal/ice.ts +6 -1
- package/src/signal/{integration.test.ts → integration.node.test.ts} +9 -15
- package/src/signal/{swarm-messenger.test.ts → swarm-messenger.node.test.ts} +13 -23
- package/src/swarm/connection-limiter.test.ts +3 -6
- package/src/swarm/connection.test.ts +63 -38
- package/src/swarm/connection.ts +5 -5
- package/src/swarm/swarm.test.ts +10 -12
- package/src/swarm/swarm.ts +1 -1
- package/src/testing/test-builder.ts +13 -29
- package/src/testing/test-wire-protocol.ts +1 -4
- package/src/tests/basic-test-suite.ts +34 -33
- package/src/tests/memory-transport.test.ts +40 -42
- package/src/tests/property-test-suite.ts +21 -22
- package/src/tests/tcp-transport.node.test.ts +65 -0
- package/src/tests/utils.ts +3 -2
- package/src/tests/webrtc-transport.test.ts +9 -9
- package/src/transport/index.ts +1 -5
- package/src/transport/memory-transport.ts +2 -0
- package/src/transport/tcp/index.ts +5 -0
- package/src/transport/{tcp-transport.browser.ts → tcp/tcp-transport.browser.ts} +7 -3
- package/src/transport/{tcp-transport.ts → tcp/tcp-transport.ts} +3 -1
- package/src/transport/transport.ts +8 -7
- package/src/transport/webrtc/index.ts +7 -0
- package/src/transport/webrtc/rtc-connection-factory.ts +82 -0
- package/src/transport/webrtc/rtc-peer-connection.ts +472 -0
- package/src/transport/webrtc/rtc-transport-channel.test.ts +176 -0
- package/src/transport/webrtc/rtc-transport-channel.ts +195 -0
- package/src/transport/webrtc/rtc-transport-factory.ts +28 -0
- package/src/transport/webrtc/rtc-transport-proxy.test.ts +413 -0
- package/src/transport/webrtc/rtc-transport-proxy.ts +264 -0
- package/src/transport/webrtc/rtc-transport-service.ts +192 -0
- package/src/transport/webrtc/rtc-transport-stats.ts +67 -0
- package/src/transport/webrtc/rtc-transport.test.ts +198 -0
- package/src/transport/webrtc/test-utils.ts +22 -0
- package/src/transport/webrtc/utils.ts +36 -0
- package/src/typings.d.ts +8 -2
- package/dist/lib/browser/chunk-XYSYUN63.mjs.map +0 -7
- package/dist/lib/node/chunk-4YAYC7WN.cjs.map +0 -7
- package/dist/types/src/signal/integration.test.d.ts +0 -2
- package/dist/types/src/signal/integration.test.d.ts.map +0 -1
- package/dist/types/src/signal/swarm-messenger.test.d.ts +0 -2
- package/dist/types/src/signal/swarm-messenger.test.d.ts.map +0 -1
- package/dist/types/src/tests/tcp-transport.test.d.ts +0 -2
- package/dist/types/src/tests/tcp-transport.test.d.ts.map +0 -1
- package/dist/types/src/transport/libdatachannel-transport.d.ts +0 -42
- package/dist/types/src/transport/libdatachannel-transport.d.ts.map +0 -1
- package/dist/types/src/transport/libdatachannel-transport.test.d.ts +0 -2
- package/dist/types/src/transport/libdatachannel-transport.test.d.ts.map +0 -1
- package/dist/types/src/transport/memory-transport.test.d.ts +0 -2
- package/dist/types/src/transport/memory-transport.test.d.ts.map +0 -1
- package/dist/types/src/transport/simplepeer-simple-peer.d.ts +0 -2
- package/dist/types/src/transport/simplepeer-simple-peer.d.ts.map +0 -1
- package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts +0 -2
- package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts.map +0 -1
- package/dist/types/src/transport/simplepeer-transport-proxy.d.ts.map +0 -1
- package/dist/types/src/transport/simplepeer-transport-service.d.ts.map +0 -1
- package/dist/types/src/transport/simplepeer-transport.d.ts +0 -36
- package/dist/types/src/transport/simplepeer-transport.d.ts.map +0 -1
- package/dist/types/src/transport/simplepeer-transport.test.d.ts +0 -2
- package/dist/types/src/transport/simplepeer-transport.test.d.ts.map +0 -1
- package/dist/types/src/transport/tcp-transport.browser.d.ts.map +0 -1
- package/dist/types/src/transport/tcp-transport.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc.d.ts +0 -6
- package/dist/types/src/transport/webrtc.d.ts.map +0 -1
- package/src/globals.d.ts +0 -7
- package/src/tests/tcp-transport.test.ts +0 -67
- package/src/transport/libdatachannel-transport.test.ts +0 -100
- package/src/transport/libdatachannel-transport.ts +0 -376
- package/src/transport/memory-transport.test.ts +0 -74
- package/src/transport/simplepeer-simple-peer.ts +0 -26
- package/src/transport/simplepeer-transport-proxy-test.ts +0 -181
- package/src/transport/simplepeer-transport-proxy.ts +0 -246
- package/src/transport/simplepeer-transport-service.ts +0 -160
- package/src/transport/simplepeer-transport.test.ts +0 -61
- package/src/transport/simplepeer-transport.ts +0 -250
- package/src/transport/webrtc.ts +0 -15
package/dist/lib/node/index.cjs
CHANGED
|
@@ -18,36 +18,360 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var node_exports = {};
|
|
20
20
|
__export(node_exports, {
|
|
21
|
-
Connection: () =>
|
|
22
|
-
ConnectionLimiter: () =>
|
|
23
|
-
ConnectionLog: () =>
|
|
24
|
-
ConnectionState: () =>
|
|
25
|
-
EventType: () =>
|
|
26
|
-
FullyConnectedTopology: () =>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
TransportKind: () => import_chunk_4YAYC7WN.TransportKind,
|
|
44
|
-
createIceProvider: () => import_chunk_4YAYC7WN.createIceProvider,
|
|
45
|
-
createLibDataChannelTransportFactory: () => import_chunk_4YAYC7WN.createLibDataChannelTransportFactory,
|
|
46
|
-
createSimplePeerTransportFactory: () => import_chunk_4YAYC7WN.createSimplePeerTransportFactory,
|
|
47
|
-
createTeleportProtocolFactory: () => import_chunk_4YAYC7WN.createTeleportProtocolFactory
|
|
21
|
+
Connection: () => import_chunk_4TTFBX3M.Connection,
|
|
22
|
+
ConnectionLimiter: () => import_chunk_4TTFBX3M.ConnectionLimiter,
|
|
23
|
+
ConnectionLog: () => import_chunk_4TTFBX3M.ConnectionLog,
|
|
24
|
+
ConnectionState: () => import_chunk_4TTFBX3M.ConnectionState,
|
|
25
|
+
EventType: () => import_chunk_4TTFBX3M.EventType,
|
|
26
|
+
FullyConnectedTopology: () => import_chunk_4TTFBX3M.FullyConnectedTopology,
|
|
27
|
+
MAX_CONCURRENT_INITIATING_CONNECTIONS: () => import_chunk_4TTFBX3M.MAX_CONCURRENT_INITIATING_CONNECTIONS,
|
|
28
|
+
MMSTTopology: () => MMSTTopology,
|
|
29
|
+
MemoryTransport: () => import_chunk_4TTFBX3M.MemoryTransport,
|
|
30
|
+
MemoryTransportFactory: () => import_chunk_4TTFBX3M.MemoryTransportFactory,
|
|
31
|
+
RtcTransportProxy: () => import_chunk_4TTFBX3M.RtcTransportProxy,
|
|
32
|
+
RtcTransportProxyFactory: () => import_chunk_4TTFBX3M.RtcTransportProxyFactory,
|
|
33
|
+
RtcTransportService: () => import_chunk_4TTFBX3M.RtcTransportService,
|
|
34
|
+
StarTopology: () => StarTopology,
|
|
35
|
+
Swarm: () => import_chunk_4TTFBX3M.Swarm,
|
|
36
|
+
SwarmMapper: () => import_chunk_4TTFBX3M.SwarmMapper,
|
|
37
|
+
SwarmMessenger: () => import_chunk_4TTFBX3M.SwarmMessenger,
|
|
38
|
+
SwarmNetworkManager: () => import_chunk_4TTFBX3M.SwarmNetworkManager,
|
|
39
|
+
TransportKind: () => import_chunk_4TTFBX3M.TransportKind,
|
|
40
|
+
createIceProvider: () => createIceProvider,
|
|
41
|
+
createRtcTransportFactory: () => import_chunk_4TTFBX3M.createRtcTransportFactory,
|
|
42
|
+
createTeleportProtocolFactory: () => import_chunk_4TTFBX3M.createTeleportProtocolFactory
|
|
48
43
|
});
|
|
49
44
|
module.exports = __toCommonJS(node_exports);
|
|
50
|
-
var
|
|
45
|
+
var import_chunk_4TTFBX3M = require("./chunk-4TTFBX3M.cjs");
|
|
46
|
+
var import_async = require("@dxos/async");
|
|
47
|
+
var import_log = require("@dxos/log");
|
|
48
|
+
var import_util = require("@dxos/util");
|
|
49
|
+
var import_invariant = require("@dxos/invariant");
|
|
50
|
+
var import_log2 = require("@dxos/log");
|
|
51
|
+
var import_invariant2 = require("@dxos/invariant");
|
|
52
|
+
var import_log3 = require("@dxos/log");
|
|
53
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/signal/ice.ts";
|
|
54
|
+
var createIceProvider = (iceProviders) => {
|
|
55
|
+
let cachedIceServers;
|
|
56
|
+
return {
|
|
57
|
+
getIceServers: async () => {
|
|
58
|
+
if (cachedIceServers) {
|
|
59
|
+
return cachedIceServers;
|
|
60
|
+
}
|
|
61
|
+
cachedIceServers = (await Promise.all(iceProviders.map(({ urls }) => (0, import_async.asyncTimeout)(fetch(urls, {
|
|
62
|
+
method: "GET"
|
|
63
|
+
}), 1e4).then((response) => response.json()).catch((err) => {
|
|
64
|
+
const isDev = typeof window !== "undefined" && window.location.href.includes("localhost");
|
|
65
|
+
if (!isDev) {
|
|
66
|
+
import_log.log.error("Failed to fetch ICE servers from provider", {
|
|
67
|
+
urls,
|
|
68
|
+
err
|
|
69
|
+
}, {
|
|
70
|
+
F: __dxlog_file,
|
|
71
|
+
L: 30,
|
|
72
|
+
S: void 0,
|
|
73
|
+
C: (f, a) => f(...a)
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
})))).filter(import_util.isNotNullOrUndefined).map(({ iceServers }) => iceServers).flat();
|
|
77
|
+
return cachedIceServers;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/mmst-topology.ts";
|
|
82
|
+
var MIN_UPDATE_INTERVAL = 1e3 * 10;
|
|
83
|
+
var MAX_CHANGES_PER_UPDATE = 1;
|
|
84
|
+
var MMSTTopology = class {
|
|
85
|
+
constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 } = {}) {
|
|
86
|
+
this._sampleCollected = false;
|
|
87
|
+
this._lastAction = /* @__PURE__ */ new Date(0);
|
|
88
|
+
this._originateConnections = originateConnections;
|
|
89
|
+
this._maxPeers = maxPeers;
|
|
90
|
+
this._sampleSize = sampleSize;
|
|
91
|
+
}
|
|
92
|
+
init(controller) {
|
|
93
|
+
(0, import_invariant.invariant)(!this._controller, "Already initialized", {
|
|
94
|
+
F: __dxlog_file2,
|
|
95
|
+
L: 49,
|
|
96
|
+
S: this,
|
|
97
|
+
A: [
|
|
98
|
+
"!this._controller",
|
|
99
|
+
"'Already initialized'"
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
this._controller = controller;
|
|
103
|
+
}
|
|
104
|
+
update() {
|
|
105
|
+
(0, import_invariant.invariant)(this._controller, "Not initialized", {
|
|
106
|
+
F: __dxlog_file2,
|
|
107
|
+
L: 54,
|
|
108
|
+
S: this,
|
|
109
|
+
A: [
|
|
110
|
+
"this._controller",
|
|
111
|
+
"'Not initialized'"
|
|
112
|
+
]
|
|
113
|
+
});
|
|
114
|
+
const { connected, candidates } = this._controller.getState();
|
|
115
|
+
if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {
|
|
116
|
+
(0, import_log2.log)("Running the algorithm.", void 0, {
|
|
117
|
+
F: __dxlog_file2,
|
|
118
|
+
L: 58,
|
|
119
|
+
S: this,
|
|
120
|
+
C: (f, a) => f(...a)
|
|
121
|
+
});
|
|
122
|
+
this._sampleCollected = true;
|
|
123
|
+
this._runAlgorithm();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
forceUpdate() {
|
|
127
|
+
this._lastAction = /* @__PURE__ */ new Date(0);
|
|
128
|
+
this.update();
|
|
129
|
+
}
|
|
130
|
+
async onOffer(peer) {
|
|
131
|
+
(0, import_invariant.invariant)(this._controller, "Not initialized", {
|
|
132
|
+
F: __dxlog_file2,
|
|
133
|
+
L: 70,
|
|
134
|
+
S: this,
|
|
135
|
+
A: [
|
|
136
|
+
"this._controller",
|
|
137
|
+
"'Not initialized'"
|
|
138
|
+
]
|
|
139
|
+
});
|
|
140
|
+
const { connected } = this._controller.getState();
|
|
141
|
+
const accept = connected.length < this._maxPeers;
|
|
142
|
+
(0, import_log2.log)(`Offer ${peer} accept=${accept}`, void 0, {
|
|
143
|
+
F: __dxlog_file2,
|
|
144
|
+
L: 73,
|
|
145
|
+
S: this,
|
|
146
|
+
C: (f, a) => f(...a)
|
|
147
|
+
});
|
|
148
|
+
return accept;
|
|
149
|
+
}
|
|
150
|
+
async destroy() {
|
|
151
|
+
}
|
|
152
|
+
_runAlgorithm() {
|
|
153
|
+
(0, import_invariant.invariant)(this._controller, "Not initialized", {
|
|
154
|
+
F: __dxlog_file2,
|
|
155
|
+
L: 82,
|
|
156
|
+
S: this,
|
|
157
|
+
A: [
|
|
158
|
+
"this._controller",
|
|
159
|
+
"'Not initialized'"
|
|
160
|
+
]
|
|
161
|
+
});
|
|
162
|
+
const { connected, candidates, ownPeerId } = this._controller.getState();
|
|
163
|
+
if (connected.length > this._maxPeers) {
|
|
164
|
+
(0, import_log2.log)(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, {
|
|
165
|
+
F: __dxlog_file2,
|
|
166
|
+
L: 88,
|
|
167
|
+
S: this,
|
|
168
|
+
C: (f, a) => f(...a)
|
|
169
|
+
});
|
|
170
|
+
const sorted = sortByXorDistance(connected, ownPeerId).reverse().slice(0, this._maxPeers - connected.length);
|
|
171
|
+
(0, import_invariant.invariant)(sorted.length === 0, void 0, {
|
|
172
|
+
F: __dxlog_file2,
|
|
173
|
+
L: 92,
|
|
174
|
+
S: this,
|
|
175
|
+
A: [
|
|
176
|
+
"sorted.length === 0",
|
|
177
|
+
""
|
|
178
|
+
]
|
|
179
|
+
});
|
|
180
|
+
if (sorted.length > MAX_CHANGES_PER_UPDATE) {
|
|
181
|
+
(0, import_log2.log)(`want to disconnect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, {
|
|
182
|
+
F: __dxlog_file2,
|
|
183
|
+
L: 95,
|
|
184
|
+
S: this,
|
|
185
|
+
C: (f, a) => f(...a)
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
|
|
189
|
+
for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
|
|
190
|
+
(0, import_log2.log)(`Disconnect ${peer}.`, void 0, {
|
|
191
|
+
F: __dxlog_file2,
|
|
192
|
+
L: 100,
|
|
193
|
+
S: this,
|
|
194
|
+
C: (f, a) => f(...a)
|
|
195
|
+
});
|
|
196
|
+
this._controller.disconnect(peer);
|
|
197
|
+
}
|
|
198
|
+
this._lastAction = /* @__PURE__ */ new Date();
|
|
199
|
+
} else {
|
|
200
|
+
(0, import_log2.log)("rate limited disconnect", void 0, {
|
|
201
|
+
F: __dxlog_file2,
|
|
202
|
+
L: 105,
|
|
203
|
+
S: this,
|
|
204
|
+
C: (f, a) => f(...a)
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
} else if (connected.length < this._originateConnections) {
|
|
208
|
+
(0, import_log2.log)(`connect ${this._originateConnections - connected.length} peers.`, void 0, {
|
|
209
|
+
F: __dxlog_file2,
|
|
210
|
+
L: 109,
|
|
211
|
+
S: this,
|
|
212
|
+
C: (f, a) => f(...a)
|
|
213
|
+
});
|
|
214
|
+
const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);
|
|
215
|
+
const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);
|
|
216
|
+
if (sorted.length > MAX_CHANGES_PER_UPDATE) {
|
|
217
|
+
(0, import_log2.log)(`want to connect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, {
|
|
218
|
+
F: __dxlog_file2,
|
|
219
|
+
L: 114,
|
|
220
|
+
S: this,
|
|
221
|
+
C: (f, a) => f(...a)
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
|
|
225
|
+
for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
|
|
226
|
+
(0, import_log2.log)(`Connect ${peer}.`, void 0, {
|
|
227
|
+
F: __dxlog_file2,
|
|
228
|
+
L: 118,
|
|
229
|
+
S: this,
|
|
230
|
+
C: (f, a) => f(...a)
|
|
231
|
+
});
|
|
232
|
+
this._controller.connect(peer);
|
|
233
|
+
}
|
|
234
|
+
this._lastAction = /* @__PURE__ */ new Date();
|
|
235
|
+
} else {
|
|
236
|
+
(0, import_log2.log)("rate limited connect", void 0, {
|
|
237
|
+
F: __dxlog_file2,
|
|
238
|
+
L: 123,
|
|
239
|
+
S: this,
|
|
240
|
+
C: (f, a) => f(...a)
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
toString() {
|
|
246
|
+
return "MMSTTopology";
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
var sortByXorDistance = (keys, reference) => {
|
|
250
|
+
const sorted = keys.sort((a, b) => {
|
|
251
|
+
return compareXor(distXor(a.asBuffer(), reference.asBuffer()), distXor(b.asBuffer(), reference.asBuffer()));
|
|
252
|
+
});
|
|
253
|
+
(0, import_log2.log)("Sorted keys", {
|
|
254
|
+
keys,
|
|
255
|
+
reference,
|
|
256
|
+
sorted
|
|
257
|
+
}, {
|
|
258
|
+
F: __dxlog_file2,
|
|
259
|
+
L: 137,
|
|
260
|
+
S: void 0,
|
|
261
|
+
C: (f, a) => f(...a)
|
|
262
|
+
});
|
|
263
|
+
return sorted;
|
|
264
|
+
};
|
|
265
|
+
var distXor = (a, b) => {
|
|
266
|
+
const maxLength = Math.max(a.length, b.length);
|
|
267
|
+
const result = Buffer.allocUnsafe(maxLength);
|
|
268
|
+
for (let i = 0; i < maxLength; i++) {
|
|
269
|
+
result[i] = (a[i] || 0) ^ (b[i] || 0);
|
|
270
|
+
}
|
|
271
|
+
return result;
|
|
272
|
+
};
|
|
273
|
+
var compareXor = (a, b) => {
|
|
274
|
+
const maxLength = Math.max(a.length, b.length);
|
|
275
|
+
for (let i = 0; i < maxLength; i++) {
|
|
276
|
+
if ((a[i] || 0) === (b[i] || 0)) {
|
|
277
|
+
continue;
|
|
278
|
+
}
|
|
279
|
+
return (a[i] || 0) < (b[i] || 0) ? -1 : 1;
|
|
280
|
+
}
|
|
281
|
+
return 0;
|
|
282
|
+
};
|
|
283
|
+
var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/star-topology.ts";
|
|
284
|
+
var StarTopology = class {
|
|
285
|
+
constructor(_centralPeer) {
|
|
286
|
+
this._centralPeer = _centralPeer;
|
|
287
|
+
}
|
|
288
|
+
toString() {
|
|
289
|
+
return `StarTopology(${this._centralPeer.truncate()})`;
|
|
290
|
+
}
|
|
291
|
+
init(controller) {
|
|
292
|
+
(0, import_invariant2.invariant)(!this._controller, "Already initialized.", {
|
|
293
|
+
F: __dxlog_file3,
|
|
294
|
+
L: 21,
|
|
295
|
+
S: this,
|
|
296
|
+
A: [
|
|
297
|
+
"!this._controller",
|
|
298
|
+
"'Already initialized.'"
|
|
299
|
+
]
|
|
300
|
+
});
|
|
301
|
+
this._controller = controller;
|
|
302
|
+
}
|
|
303
|
+
update() {
|
|
304
|
+
(0, import_invariant2.invariant)(this._controller, "Not initialized.", {
|
|
305
|
+
F: __dxlog_file3,
|
|
306
|
+
L: 26,
|
|
307
|
+
S: this,
|
|
308
|
+
A: [
|
|
309
|
+
"this._controller",
|
|
310
|
+
"'Not initialized.'"
|
|
311
|
+
]
|
|
312
|
+
});
|
|
313
|
+
const { candidates, connected, ownPeerId } = this._controller.getState();
|
|
314
|
+
if (!ownPeerId.equals(this._centralPeer)) {
|
|
315
|
+
(0, import_log3.log)("leaf peer dropping all connections apart from central peer.", void 0, {
|
|
316
|
+
F: __dxlog_file3,
|
|
317
|
+
L: 29,
|
|
318
|
+
S: this,
|
|
319
|
+
C: (f, a) => f(...a)
|
|
320
|
+
});
|
|
321
|
+
for (const peer of connected) {
|
|
322
|
+
if (!peer.equals(this._centralPeer)) {
|
|
323
|
+
(0, import_log3.log)("dropping connection", {
|
|
324
|
+
peer
|
|
325
|
+
}, {
|
|
326
|
+
F: __dxlog_file3,
|
|
327
|
+
L: 34,
|
|
328
|
+
S: this,
|
|
329
|
+
C: (f, a) => f(...a)
|
|
330
|
+
});
|
|
331
|
+
this._controller.disconnect(peer);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
for (const peer of candidates) {
|
|
336
|
+
if (peer.equals(this._centralPeer) || ownPeerId.equals(this._centralPeer)) {
|
|
337
|
+
(0, import_log3.log)("connecting to peer", {
|
|
338
|
+
peer
|
|
339
|
+
}, {
|
|
340
|
+
F: __dxlog_file3,
|
|
341
|
+
L: 43,
|
|
342
|
+
S: this,
|
|
343
|
+
C: (f, a) => f(...a)
|
|
344
|
+
});
|
|
345
|
+
this._controller.connect(peer);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
async onOffer(peer) {
|
|
350
|
+
(0, import_invariant2.invariant)(this._controller, "Not initialized.", {
|
|
351
|
+
F: __dxlog_file3,
|
|
352
|
+
L: 50,
|
|
353
|
+
S: this,
|
|
354
|
+
A: [
|
|
355
|
+
"this._controller",
|
|
356
|
+
"'Not initialized.'"
|
|
357
|
+
]
|
|
358
|
+
});
|
|
359
|
+
const { ownPeerId } = this._controller.getState();
|
|
360
|
+
(0, import_log3.log)("offer", {
|
|
361
|
+
peer,
|
|
362
|
+
isCentral: peer.equals(this._centralPeer),
|
|
363
|
+
isSelfCentral: ownPeerId.equals(this._centralPeer)
|
|
364
|
+
}, {
|
|
365
|
+
F: __dxlog_file3,
|
|
366
|
+
L: 52,
|
|
367
|
+
S: this,
|
|
368
|
+
C: (f, a) => f(...a)
|
|
369
|
+
});
|
|
370
|
+
return ownPeerId.equals(this._centralPeer) || peer.equals(this._centralPeer);
|
|
371
|
+
}
|
|
372
|
+
async destroy() {
|
|
373
|
+
}
|
|
374
|
+
};
|
|
51
375
|
// Annotate the CommonJS export names for ESM import in node:
|
|
52
376
|
0 && (module.exports = {
|
|
53
377
|
Connection,
|
|
@@ -56,26 +380,21 @@ var import_chunk_4YAYC7WN = require("./chunk-4YAYC7WN.cjs");
|
|
|
56
380
|
ConnectionState,
|
|
57
381
|
EventType,
|
|
58
382
|
FullyConnectedTopology,
|
|
59
|
-
LibDataChannelTransport,
|
|
60
383
|
MAX_CONCURRENT_INITIATING_CONNECTIONS,
|
|
61
384
|
MMSTTopology,
|
|
62
385
|
MemoryTransport,
|
|
63
386
|
MemoryTransportFactory,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
SimplePeerTransportService,
|
|
387
|
+
RtcTransportProxy,
|
|
388
|
+
RtcTransportProxyFactory,
|
|
389
|
+
RtcTransportService,
|
|
68
390
|
StarTopology,
|
|
69
391
|
Swarm,
|
|
70
392
|
SwarmMapper,
|
|
71
393
|
SwarmMessenger,
|
|
72
394
|
SwarmNetworkManager,
|
|
73
|
-
TcpTransport,
|
|
74
|
-
TcpTransportFactory,
|
|
75
395
|
TransportKind,
|
|
76
396
|
createIceProvider,
|
|
77
|
-
|
|
78
|
-
createSimplePeerTransportFactory,
|
|
397
|
+
createRtcTransportFactory,
|
|
79
398
|
createTeleportProtocolFactory
|
|
80
399
|
});
|
|
81
400
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
3
|
+
"sources": ["../../../src/signal/ice.ts", "../../../src/topology/mmst-topology.ts", "../../../src/topology/star-topology.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { asyncTimeout } from '@dxos/async';\nimport { log } from '@dxos/log';\nimport { type Runtime } from '@dxos/protocols/proto/dxos/config';\nimport { isNotNullOrUndefined } from '@dxos/util';\n\nexport interface IceProvider {\n getIceServers: () => Promise<RTCIceServer[]>;\n}\n\nexport const createIceProvider = (iceProviders: Runtime.Services.IceProvider[]): IceProvider => {\n let cachedIceServers: RTCIceServer[];\n return {\n getIceServers: async () => {\n if (cachedIceServers) {\n return cachedIceServers;\n }\n\n cachedIceServers = (\n await Promise.all(\n iceProviders.map(({ urls }) =>\n asyncTimeout(fetch(urls, { method: 'GET' }), 10_000)\n .then((response) => response.json())\n .catch((err) => {\n const isDev = typeof window !== 'undefined' && window.location.href.includes('localhost');\n if (!isDev) {\n log.error('Failed to fetch ICE servers from provider', { urls, err });\n }\n }),\n ),\n )\n )\n .filter(isNotNullOrUndefined)\n .map(({ iceServers }: { iceServers: RTCIceServer[] }) => iceServers)\n .flat();\n\n return cachedIceServers;\n },\n };\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { type SwarmController, type Topology } from './topology';\n\nconst MIN_UPDATE_INTERVAL = 1000 * 10;\nconst MAX_CHANGES_PER_UPDATE = 1;\n\nexport interface MMSTTopologyOptions {\n /**\n * Number of connections the peer will originate by itself.\n */\n originateConnections?: number;\n\n /**\n * Maximum number of connections allowed, all other connections will be dropped.\n */\n maxPeers?: number;\n\n /**\n * Size of random sample from which peer candidates are selected.\n */\n sampleSize?: number;\n}\n\nexport class MMSTTopology implements Topology {\n private readonly _originateConnections: number;\n private readonly _maxPeers: number;\n private readonly _sampleSize: number;\n\n private _controller?: SwarmController;\n\n private _sampleCollected = false;\n\n private _lastAction = new Date(0);\n\n constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 }: MMSTTopologyOptions = {}) {\n this._originateConnections = originateConnections;\n this._maxPeers = maxPeers;\n this._sampleSize = sampleSize;\n }\n\n init(controller: SwarmController): void {\n invariant(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n invariant(this._controller, 'Not initialized');\n const { connected, candidates } = this._controller.getState();\n // Run the algorithms if we have first candidates, ran it before, or have more connections than needed.\n if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {\n log('Running the algorithm.');\n this._sampleCollected = true;\n this._runAlgorithm();\n }\n }\n\n forceUpdate() {\n this._lastAction = new Date(0);\n this.update();\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n invariant(this._controller, 'Not initialized');\n const { connected } = this._controller.getState();\n const accept = connected.length < this._maxPeers;\n log(`Offer ${peer} accept=${accept}`);\n return accept;\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n\n private _runAlgorithm() {\n invariant(this._controller, 'Not initialized');\n const { connected, candidates, ownPeerId } = this._controller.getState();\n\n // TODO(nf): does this rate limiting/flap dampening logic belong here or in the SwarmController?\n if (connected.length > this._maxPeers) {\n // Disconnect extra peers.\n log(`disconnect ${connected.length - this._maxPeers} peers.`);\n const sorted = sortByXorDistance(connected, ownPeerId)\n .reverse()\n .slice(0, this._maxPeers - connected.length);\n invariant(sorted.length === 0);\n\n if (sorted.length > MAX_CHANGES_PER_UPDATE) {\n log(`want to disconnect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`);\n }\n\n if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {\n for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {\n log(`Disconnect ${peer}.`);\n this._controller.disconnect(peer);\n }\n this._lastAction = new Date();\n } else {\n log('rate limited disconnect');\n }\n } else if (connected.length < this._originateConnections) {\n // Connect new peers to reach desired quota.\n log(`connect ${this._originateConnections - connected.length} peers.`);\n const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);\n const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);\n\n if (sorted.length > MAX_CHANGES_PER_UPDATE) {\n log(`want to connect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`);\n }\n if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {\n for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {\n log(`Connect ${peer}.`);\n this._controller.connect(peer);\n }\n this._lastAction = new Date();\n } else {\n log('rate limited connect');\n }\n }\n }\n\n toString() {\n return 'MMSTTopology';\n }\n}\n\nconst sortByXorDistance = (keys: PublicKey[], reference: PublicKey): PublicKey[] => {\n const sorted = keys.sort((a, b) => {\n return compareXor(distXor(a.asBuffer(), reference.asBuffer()), distXor(b.asBuffer(), reference.asBuffer()));\n });\n log('Sorted keys', { keys, reference, sorted });\n return sorted;\n};\n\nconst distXor = (a: Buffer, b: Buffer) => {\n const maxLength = Math.max(a.length, b.length);\n const result = Buffer.allocUnsafe(maxLength);\n for (let i = 0; i < maxLength; i++) {\n result[i] = (a[i] || 0) ^ (b[i] || 0);\n }\n return result;\n};\n\nconst compareXor = (a: Buffer, b: Buffer) => {\n const maxLength = Math.max(a.length, b.length);\n for (let i = 0; i < maxLength; i++) {\n if ((a[i] || 0) === (b[i] || 0)) {\n continue;\n }\n return (a[i] || 0) < (b[i] || 0) ? -1 : 1;\n }\n return 0;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { type SwarmController, type Topology } from './topology';\n\nexport class StarTopology implements Topology {\n private _controller?: SwarmController;\n\n constructor(private readonly _centralPeer: PublicKey) {}\n\n toString() {\n return `StarTopology(${this._centralPeer.truncate()})`;\n }\n\n init(controller: SwarmController): void {\n invariant(!this._controller, 'Already initialized.');\n this._controller = controller;\n }\n\n update(): void {\n invariant(this._controller, 'Not initialized.');\n const { candidates, connected, ownPeerId } = this._controller.getState();\n if (!ownPeerId.equals(this._centralPeer)) {\n log('leaf peer dropping all connections apart from central peer.');\n\n // Drop all connections other than central peer.\n for (const peer of connected) {\n if (!peer.equals(this._centralPeer)) {\n log('dropping connection', { peer });\n this._controller.disconnect(peer);\n }\n }\n }\n\n for (const peer of candidates) {\n // Connect to central peer.\n if (peer.equals(this._centralPeer) || ownPeerId.equals(this._centralPeer)) {\n log('connecting to peer', { peer });\n this._controller.connect(peer);\n }\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n invariant(this._controller, 'Not initialized.');\n const { ownPeerId } = this._controller.getState();\n log('offer', {\n peer,\n isCentral: peer.equals(this._centralPeer),\n isSelfCentral: ownPeerId.equals(this._centralPeer),\n });\n return ownPeerId.equals(this._centralPeer) || peer.equals(this._centralPeer);\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_log", "import_invariant", "createIceProvider", "iceProviders", "cachedIceServers", "getIceServers", "Promise", "all", "map", "urls", "asyncTimeout", "fetch", "method", "then", "response", "json", "catch", "err", "isDev", "window", "location", "href", "includes", "log", "error", "filter", "isNotNullOrUndefined", "iceServers", "flat", "MIN_UPDATE_INTERVAL", "MAX_CHANGES_PER_UPDATE", "MMSTTopology", "constructor", "originateConnections", "maxPeers", "sampleSize", "_sampleCollected", "_lastAction", "Date", "_originateConnections", "_maxPeers", "_sampleSize", "init", "controller", "invariant", "_controller", "update", "connected", "candidates", "getState", "length", "_runAlgorithm", "forceUpdate", "onOffer", "peer", "accept", "destroy", "ownPeerId", "sorted", "sortByXorDistance", "reverse", "slice", "now", "getTime", "disconnect", "sample", "sort", "Math", "random", "connect", "toString", "keys", "reference", "a", "b", "compareXor", "distXor", "asBuffer", "maxLength", "max", "result", "Buffer", "allocUnsafe", "i", "StarTopology", "_centralPeer", "truncate", "equals", "isCentral", "isSelfCentral"]
|
|
7
7
|
}
|