@dxos/network-manager 0.8.4-main.fd6878d → 0.8.4-staging.60fe92afc8

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 (101) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/{chunk-JUVDHWW4.mjs → chunk-ERB3AQAF.mjs} +478 -1996
  4. package/dist/lib/browser/chunk-ERB3AQAF.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +198 -4
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +45 -77
  9. package/dist/lib/browser/testing/index.mjs.map +3 -3
  10. package/dist/lib/browser/transport/tcp/index.mjs +2 -33
  11. package/dist/lib/browser/transport/tcp/index.mjs.map +4 -4
  12. package/dist/lib/browser/transport/tcp/tcp-transport.browser.mjs +36 -0
  13. package/dist/lib/browser/transport/tcp/tcp-transport.browser.mjs.map +7 -0
  14. package/dist/lib/browser/transport/tcp/tcp-transport.mjs +125 -0
  15. package/dist/lib/browser/transport/tcp/tcp-transport.mjs.map +7 -0
  16. package/dist/lib/node-esm/{chunk-HUSU3OKQ.mjs → chunk-KYLPLEZQ.mjs} +478 -1996
  17. package/dist/lib/node-esm/chunk-KYLPLEZQ.mjs.map +7 -0
  18. package/dist/lib/node-esm/index.mjs +198 -4
  19. package/dist/lib/node-esm/index.mjs.map +4 -4
  20. package/dist/lib/node-esm/meta.json +1 -1
  21. package/dist/lib/node-esm/testing/index.mjs +45 -77
  22. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  23. package/dist/lib/node-esm/transport/tcp/index.mjs +2 -164
  24. package/dist/lib/node-esm/transport/tcp/index.mjs.map +4 -4
  25. package/dist/lib/node-esm/transport/tcp/tcp-transport.browser.mjs +36 -0
  26. package/dist/lib/node-esm/transport/tcp/tcp-transport.browser.mjs.map +7 -0
  27. package/dist/lib/node-esm/transport/tcp/tcp-transport.mjs +125 -0
  28. package/dist/lib/node-esm/transport/tcp/tcp-transport.mjs.map +7 -0
  29. package/dist/types/src/connection-log.d.ts.map +1 -1
  30. package/dist/types/src/network-manager.d.ts +6 -6
  31. package/dist/types/src/network-manager.d.ts.map +1 -1
  32. package/dist/types/src/signal/ice.d.ts.map +1 -1
  33. package/dist/types/src/signal/signal-connection.d.ts +3 -2
  34. package/dist/types/src/signal/signal-connection.d.ts.map +1 -1
  35. package/dist/types/src/signal/signal-messenger.d.ts +3 -2
  36. package/dist/types/src/signal/signal-messenger.d.ts.map +1 -1
  37. package/dist/types/src/signal/swarm-messenger.d.ts +7 -7
  38. package/dist/types/src/signal/swarm-messenger.d.ts.map +1 -1
  39. package/dist/types/src/swarm/connection-limiter.d.ts.map +1 -1
  40. package/dist/types/src/swarm/connection.d.ts +2 -2
  41. package/dist/types/src/swarm/connection.d.ts.map +1 -1
  42. package/dist/types/src/swarm/peer.d.ts +4 -3
  43. package/dist/types/src/swarm/peer.d.ts.map +1 -1
  44. package/dist/types/src/swarm/swarm-mapper.d.ts.map +1 -1
  45. package/dist/types/src/swarm/swarm.d.ts +3 -5
  46. package/dist/types/src/swarm/swarm.d.ts.map +1 -1
  47. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  48. package/dist/types/src/testing/test-wire-protocol.d.ts.map +1 -1
  49. package/dist/types/src/tests/basic-test-suite.d.ts.map +1 -1
  50. package/dist/types/src/tests/property-test-suite.d.ts.map +1 -1
  51. package/dist/types/src/tests/utils.d.ts.map +1 -1
  52. package/dist/types/src/topology/fully-connected-topology.d.ts.map +1 -1
  53. package/dist/types/src/topology/mmst-topology.d.ts.map +1 -1
  54. package/dist/types/src/topology/star-topology.d.ts.map +1 -1
  55. package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
  56. package/dist/types/src/transport/tcp/index.d.ts +1 -1
  57. package/dist/types/src/transport/tcp/index.d.ts.map +1 -1
  58. package/dist/types/src/transport/tcp/tcp-transport.browser.d.ts.map +1 -1
  59. package/dist/types/src/transport/tcp/tcp-transport.d.ts.map +1 -1
  60. package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts +4 -4
  61. package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts.map +1 -1
  62. package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts.map +1 -1
  63. package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts.map +1 -1
  64. package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +1 -1
  65. package/dist/types/src/transport/webrtc/rtc-transport-service.d.ts.map +1 -1
  66. package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts.map +1 -1
  67. package/dist/types/src/transport/webrtc/test-utils.d.ts.map +1 -1
  68. package/dist/types/src/transport/webrtc/utils.d.ts.map +1 -1
  69. package/dist/types/src/wire-protocol.d.ts +5 -5
  70. package/dist/types/src/wire-protocol.d.ts.map +1 -1
  71. package/dist/types/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +34 -44
  73. package/src/network-manager.ts +24 -22
  74. package/src/signal/integration.node.test.ts +11 -10
  75. package/src/signal/signal-connection.ts +3 -2
  76. package/src/signal/signal-messenger.ts +3 -2
  77. package/src/signal/swarm-messenger.node.test.ts +25 -24
  78. package/src/signal/swarm-messenger.ts +65 -55
  79. package/src/swarm/connection.test.ts +8 -8
  80. package/src/swarm/connection.ts +15 -22
  81. package/src/swarm/peer.ts +7 -7
  82. package/src/swarm/swarm.test.ts +4 -4
  83. package/src/swarm/swarm.ts +10 -17
  84. package/src/testing/test-builder.ts +4 -4
  85. package/src/tests/basic-test-suite.ts +0 -1
  86. package/src/tests/memory-transport.test.ts +0 -2
  87. package/src/tests/property-test-suite.ts +4 -3
  88. package/src/tests/tcp-transport.node.test.ts +0 -2
  89. package/src/tests/webrtc-transport.test.ts +4 -3
  90. package/src/transport/tcp/index.ts +1 -1
  91. package/src/transport/webrtc/rtc-peer-connection.ts +1 -2
  92. package/src/transport/webrtc/rtc-transport-channel.test.ts +0 -2
  93. package/src/transport/webrtc/rtc-transport-channel.ts +1 -2
  94. package/src/transport/webrtc/rtc-transport-factory.ts +0 -1
  95. package/src/transport/webrtc/rtc-transport-proxy.test.ts +2 -3
  96. package/src/transport/webrtc/rtc-transport-proxy.ts +6 -4
  97. package/src/transport/webrtc/rtc-transport-service.ts +0 -1
  98. package/src/transport/webrtc/rtc-transport.test.ts +2 -2
  99. package/src/wire-protocol.ts +6 -6
  100. package/dist/lib/browser/chunk-JUVDHWW4.mjs.map +0 -7
  101. package/dist/lib/node-esm/chunk-HUSU3OKQ.mjs.map +0 -7
@@ -7,22 +7,216 @@ import {
7
7
  EventType,
8
8
  FullyConnectedTopology,
9
9
  MAX_CONCURRENT_INITIATING_CONNECTIONS,
10
- MMSTTopology,
11
10
  MemoryTransport,
12
11
  MemoryTransportFactory,
13
12
  RtcTransportProxy,
14
13
  RtcTransportProxyFactory,
15
14
  RtcTransportService,
16
- StarTopology,
17
15
  Swarm,
18
16
  SwarmMapper,
19
17
  SwarmMessenger,
20
18
  SwarmNetworkManager,
21
19
  TransportKind,
22
- createIceProvider,
23
20
  createRtcTransportFactory,
24
21
  createTeleportProtocolFactory
25
- } from "./chunk-JUVDHWW4.mjs";
22
+ } from "./chunk-ERB3AQAF.mjs";
23
+
24
+ // src/signal/ice.ts
25
+ import { asyncTimeout } from "@dxos/async";
26
+ import { log } from "@dxos/log";
27
+ import { isNonNullable } from "@dxos/util";
28
+ var __dxlog_file = "/__w/dxos/dxos/packages/core/mesh/network-manager/src/signal/ice.ts";
29
+ var createIceProvider = (iceProviders) => {
30
+ let cachedIceServers;
31
+ return {
32
+ getIceServers: async () => {
33
+ if (cachedIceServers) {
34
+ return cachedIceServers;
35
+ }
36
+ cachedIceServers = (await Promise.all(iceProviders.map(({ urls }) => asyncTimeout(fetch(urls, {
37
+ method: "GET"
38
+ }), 1e4).then((response) => response.json()).catch((err) => {
39
+ const isDev = typeof window !== "undefined" && window.location.href.includes("localhost");
40
+ if (!isDev) {
41
+ log.error("Failed to fetch ICE servers from provider", {
42
+ urls,
43
+ err
44
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 19, S: void 0 });
45
+ }
46
+ })))).filter(isNonNullable).map(({ iceServers }) => iceServers).flat();
47
+ return cachedIceServers;
48
+ }
49
+ };
50
+ };
51
+
52
+ // src/topology/mmst-topology.ts
53
+ import { invariant } from "@dxos/invariant";
54
+ import { log as log2 } from "@dxos/log";
55
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/core/mesh/network-manager/src/topology/mmst-topology.ts";
56
+ var MIN_UPDATE_INTERVAL = 1e3 * 10;
57
+ var MAX_CHANGES_PER_UPDATE = 1;
58
+ var MMSTTopology = class {
59
+ _originateConnections;
60
+ _maxPeers;
61
+ _sampleSize;
62
+ _controller;
63
+ _sampleCollected = false;
64
+ _lastAction = /* @__PURE__ */ new Date(0);
65
+ constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 } = {}) {
66
+ this._originateConnections = originateConnections;
67
+ this._maxPeers = maxPeers;
68
+ this._sampleSize = sampleSize;
69
+ }
70
+ init(controller) {
71
+ invariant(!this._controller, "Already initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 21, S: this, A: ["!this._controller", "'Already initialized'"] });
72
+ this._controller = controller;
73
+ }
74
+ update() {
75
+ invariant(this._controller, "Not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 25, S: this, A: ["this._controller", "'Not initialized'"] });
76
+ const { connected, candidates } = this._controller.getState();
77
+ if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {
78
+ log2("Running the algorithm.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 29, S: this });
79
+ this._sampleCollected = true;
80
+ this._runAlgorithm();
81
+ }
82
+ }
83
+ forceUpdate() {
84
+ this._lastAction = /* @__PURE__ */ new Date(0);
85
+ this.update();
86
+ }
87
+ async onOffer(peer) {
88
+ invariant(this._controller, "Not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 39, S: this, A: ["this._controller", "'Not initialized'"] });
89
+ const { connected } = this._controller.getState();
90
+ const accept = connected.length < this._maxPeers;
91
+ log2(`Offer ${peer} accept=${accept}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 42, S: this });
92
+ return accept;
93
+ }
94
+ async destroy() {
95
+ }
96
+ _runAlgorithm() {
97
+ invariant(this._controller, "Not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 49, S: this, A: ["this._controller", "'Not initialized'"] });
98
+ const { connected, candidates, ownPeerId } = this._controller.getState();
99
+ if (connected.length > this._maxPeers) {
100
+ log2(`disconnect ${connected.length - this._maxPeers} peers.`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 54, S: this });
101
+ const sorted = sortByXorDistance(connected, ownPeerId).reverse().slice(0, this._maxPeers - connected.length);
102
+ invariant(sorted.length === 0, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 56, S: this, A: ["sorted.length === 0", ""] });
103
+ if (sorted.length > MAX_CHANGES_PER_UPDATE) {
104
+ log2(`want to disconnect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 58, S: this });
105
+ }
106
+ if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
107
+ for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
108
+ log2(`Disconnect ${peer}.`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 62, S: this });
109
+ this._controller.disconnect(peer);
110
+ }
111
+ this._lastAction = /* @__PURE__ */ new Date();
112
+ } else {
113
+ log2("rate limited disconnect", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 67, S: this });
114
+ }
115
+ } else if (connected.length < this._originateConnections) {
116
+ log2(`connect ${this._originateConnections - connected.length} peers.`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 71, S: this });
117
+ const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);
118
+ const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);
119
+ if (sorted.length > MAX_CHANGES_PER_UPDATE) {
120
+ log2(`want to connect ${sorted.length} peers but limited to ${MAX_CHANGES_PER_UPDATE}`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 75, S: this });
121
+ }
122
+ if (Date.now() - this._lastAction.getTime() > MIN_UPDATE_INTERVAL) {
123
+ for (const peer of sorted.slice(0, MAX_CHANGES_PER_UPDATE)) {
124
+ log2(`Connect ${peer}.`, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 79, S: this });
125
+ this._controller.connect(peer);
126
+ }
127
+ this._lastAction = /* @__PURE__ */ new Date();
128
+ } else {
129
+ log2("rate limited connect", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 84, S: this });
130
+ }
131
+ }
132
+ }
133
+ toString() {
134
+ return "MMSTTopology";
135
+ }
136
+ };
137
+ var sortByXorDistance = (keys, reference) => {
138
+ const sorted = keys.sort((a, b) => {
139
+ return compareXor(distXor(a.asBuffer(), reference.asBuffer()), distXor(b.asBuffer(), reference.asBuffer()));
140
+ });
141
+ log2("Sorted keys", {
142
+ keys,
143
+ reference,
144
+ sorted
145
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 96, S: void 0 });
146
+ return sorted;
147
+ };
148
+ var distXor = (a, b) => {
149
+ const maxLength = Math.max(a.length, b.length);
150
+ const result = Buffer.allocUnsafe(maxLength);
151
+ for (let i = 0; i < maxLength; i++) {
152
+ result[i] = (a[i] || 0) ^ (b[i] || 0);
153
+ }
154
+ return result;
155
+ };
156
+ var compareXor = (a, b) => {
157
+ const maxLength = Math.max(a.length, b.length);
158
+ for (let i = 0; i < maxLength; i++) {
159
+ if ((a[i] || 0) === (b[i] || 0)) {
160
+ continue;
161
+ }
162
+ return (a[i] || 0) < (b[i] || 0) ? -1 : 1;
163
+ }
164
+ return 0;
165
+ };
166
+
167
+ // src/topology/star-topology.ts
168
+ import { invariant as invariant2 } from "@dxos/invariant";
169
+ import { log as log3 } from "@dxos/log";
170
+ var __dxlog_file3 = "/__w/dxos/dxos/packages/core/mesh/network-manager/src/topology/star-topology.ts";
171
+ var StarTopology = class {
172
+ _centralPeer;
173
+ _controller;
174
+ constructor(_centralPeer) {
175
+ this._centralPeer = _centralPeer;
176
+ }
177
+ toString() {
178
+ return `StarTopology(${this._centralPeer.truncate()})`;
179
+ }
180
+ init(controller) {
181
+ invariant2(!this._controller, "Already initialized.", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 16, S: this, A: ["!this._controller", "'Already initialized.'"] });
182
+ this._controller = controller;
183
+ }
184
+ update() {
185
+ invariant2(this._controller, "Not initialized.", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 20, S: this, A: ["this._controller", "'Not initialized.'"] });
186
+ const { candidates, connected, ownPeerId } = this._controller.getState();
187
+ if (!ownPeerId.equals(this._centralPeer)) {
188
+ log3("leaf peer dropping all connections apart from central peer.", void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 23, S: this });
189
+ for (const peer of connected) {
190
+ if (!peer.equals(this._centralPeer)) {
191
+ log3("dropping connection", {
192
+ peer
193
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 27, S: this });
194
+ this._controller.disconnect(peer);
195
+ }
196
+ }
197
+ }
198
+ for (const peer of candidates) {
199
+ if (peer.equals(this._centralPeer) || ownPeerId.equals(this._centralPeer)) {
200
+ log3("connecting to peer", {
201
+ peer
202
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 37, S: this });
203
+ this._controller.connect(peer);
204
+ }
205
+ }
206
+ }
207
+ async onOffer(peer) {
208
+ invariant2(this._controller, "Not initialized.", { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 45, S: this, A: ["this._controller", "'Not initialized.'"] });
209
+ const { ownPeerId } = this._controller.getState();
210
+ log3("offer", {
211
+ peer,
212
+ isCentral: peer.equals(this._centralPeer),
213
+ isSelfCentral: ownPeerId.equals(this._centralPeer)
214
+ }, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 47, S: this });
215
+ return ownPeerId.equals(this._centralPeer) || peer.equals(this._centralPeer);
216
+ }
217
+ async destroy() {
218
+ }
219
+ };
26
220
  export {
27
221
  Connection,
28
222
  ConnectionLimiter,
@@ -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 { isNonNullable } 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(isNonNullable)\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(): void {\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(): void {\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(): string {\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(): string {\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": ["asyncTimeout", "log", "isNonNullable", "createIceProvider", "getIceServers", "cachedIceServers", "response", "catch", "err", "isDev", "urls", "filter", "iceServers", "invariant", "log", "__dxlog_file", "MIN_UPDATE_INTERVAL", "MMSTTopology", "_originateConnections", "_maxPeers", "_sampleSize", "_controller", "_sampleCollected", "_lastAction", "originateConnections", "maxPeers", "sampleSize", "init", "controller", "update", "connected", "length", "forceUpdate", "onOffer", "peer", "accept", "destroy", "sorted", "MAX_CHANGES_PER_UPDATE", "Date", "getTime", "disconnect", "sortByXorDistance", "ownPeerId", "slice", "connect", "toString", "distXor", "reference", "result", "Buffer", "i", "maxLength", "compareXor", "invariant", "log", "__dxlog_file", "StarTopology", "_controller", "toString", "init", "controller", "update", "ownPeerId", "equals", "_centralPeer", "peer", "isCentral", "isSelfCentral", "destroy"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/swarm/connection.ts":{"bytes":55658,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"src/signal/ice.ts":{"bytes":4538,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/signal/swarm-messenger.ts":{"bytes":22177,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/signal/index.ts":{"bytes":678,"imports":[{"path":"src/signal/ice.ts","kind":"import-statement","original":"./ice"},{"path":"src/signal/swarm-messenger.ts","kind":"import-statement","original":"./swarm-messenger"}],"format":"esm"},"src/swarm/peer.ts":{"bytes":47308,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/swarm/connection.ts","kind":"import-statement","original":"./connection"}],"format":"esm"},"src/swarm/swarm.ts":{"bytes":55244,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/signal/index.ts","kind":"import-statement","original":"../signal"},{"path":"src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"src/swarm/peer.ts","kind":"import-statement","original":"./peer"}],"format":"esm"},"src/swarm/swarm-mapper.ts":{"bytes":12240,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/swarm/connection-limiter.ts":{"bytes":8455,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/swarm/index.ts":{"bytes":768,"imports":[{"path":"src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"src/swarm/swarm.ts","kind":"import-statement","original":"./swarm"},{"path":"src/swarm/swarm-mapper.ts","kind":"import-statement","original":"./swarm-mapper"},{"path":"src/swarm/connection-limiter.ts","kind":"import-statement","original":"./connection-limiter"}],"format":"esm"},"src/connection-log.ts":{"bytes":16208,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/swarm/index.ts","kind":"import-statement","original":"./swarm"}],"format":"esm"},"src/network-manager.ts":{"bytes":27172,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"src/swarm/index.ts","kind":"import-statement","original":"./swarm"}],"format":"esm"},"src/topology/fully-connected-topology.ts":{"bytes":3536,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"src/topology/mmst-topology.ts":{"bytes":20376,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/topology/star-topology.ts":{"bytes":8007,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/topology/index.ts":{"bytes":760,"imports":[{"path":"src/topology/fully-connected-topology.ts","kind":"import-statement","original":"./fully-connected-topology"},{"path":"src/topology/mmst-topology.ts","kind":"import-statement","original":"./mmst-topology"},{"path":"src/topology/star-topology.ts","kind":"import-statement","original":"./star-topology"}],"format":"esm"},"src/transport/memory-transport.ts":{"bytes":23275,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/transport/transport.ts":{"bytes":3009,"imports":[],"format":"esm"},"src/transport/webrtc/rtc-connection-factory.ts":{"bytes":8665,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"#node-datachannel","kind":"dynamic-import","external":true},{"path":"#node-datachannel/polyfill","kind":"dynamic-import","external":true}],"format":"esm"},"src/transport/webrtc/rtc-transport-stats.ts":{"bytes":7336,"imports":[],"format":"esm"},"src/transport/webrtc/rtc-transport-channel.ts":{"bytes":22841,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/transport/webrtc/rtc-transport-stats.ts","kind":"import-statement","original":"./rtc-transport-stats"}],"format":"esm"},"src/transport/webrtc/utils.ts":{"bytes":3889,"imports":[],"format":"esm"},"src/transport/webrtc/rtc-peer-connection.ts":{"bytes":64174,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"src/transport/webrtc/rtc-transport-channel.ts","kind":"import-statement","original":"./rtc-transport-channel"},{"path":"src/transport/webrtc/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/transport/webrtc/rtc-transport-factory.ts":{"bytes":3420,"imports":[{"path":"src/transport/webrtc/rtc-connection-factory.ts","kind":"import-statement","original":"./rtc-connection-factory"},{"path":"src/transport/webrtc/rtc-peer-connection.ts","kind":"import-statement","original":"./rtc-peer-connection"}],"format":"esm"},"src/transport/webrtc/rtc-transport-proxy.ts":{"bytes":29211,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/transport/webrtc/rtc-transport-service.ts":{"bytes":21443,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/transport/webrtc/rtc-transport-factory.ts","kind":"import-statement","original":"./rtc-transport-factory"}],"format":"esm"},"src/transport/webrtc/index.ts":{"bytes":751,"imports":[{"path":"src/transport/webrtc/rtc-transport-factory.ts","kind":"import-statement","original":"./rtc-transport-factory"},{"path":"src/transport/webrtc/rtc-transport-proxy.ts","kind":"import-statement","original":"./rtc-transport-proxy"},{"path":"src/transport/webrtc/rtc-transport-service.ts","kind":"import-statement","original":"./rtc-transport-service"}],"format":"esm"},"src/transport/index.ts":{"bytes":666,"imports":[{"path":"src/transport/memory-transport.ts","kind":"import-statement","original":"./memory-transport"},{"path":"src/transport/transport.ts","kind":"import-statement","original":"./transport"},{"path":"src/transport/webrtc/index.ts","kind":"import-statement","original":"./webrtc"}],"format":"esm"},"src/wire-protocol.ts":{"bytes":4254,"imports":[{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":1071,"imports":[{"path":"src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"src/network-manager.ts","kind":"import-statement","original":"./network-manager"},{"path":"src/signal/index.ts","kind":"import-statement","original":"./signal"},{"path":"src/swarm/index.ts","kind":"import-statement","original":"./swarm"},{"path":"src/topology/index.ts","kind":"import-statement","original":"./topology"},{"path":"src/transport/index.ts","kind":"import-statement","original":"./transport"},{"path":"src/wire-protocol.ts","kind":"import-statement","original":"./wire-protocol"}],"format":"esm"},"src/testing/test-wire-protocol.ts":{"bytes":12949,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/wire-protocol.ts","kind":"import-statement","original":"../wire-protocol"}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":26007,"imports":[{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#tcp-transport","kind":"import-statement","external":true},{"path":"src/network-manager.ts","kind":"import-statement","original":"../network-manager"},{"path":"src/topology/index.ts","kind":"import-statement","original":"../topology"},{"path":"src/transport/index.ts","kind":"import-statement","original":"../transport"},{"path":"src/testing/test-wire-protocol.ts","kind":"import-statement","original":"./test-wire-protocol"}],"format":"esm"},"src/testing/index.ts":{"bytes":481,"imports":[{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"}],"format":"esm"},"src/transport/tcp/tcp-transport.browser.ts":{"bytes":3255,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/transport/tcp/index.ts":{"bytes":492,"imports":[{"path":"src/transport/tcp/tcp-transport.browser.ts","kind":"import-statement","original":"./tcp-transport"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-JUVDHWW4.mjs","kind":"import-statement"}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","RtcTransportProxy","RtcTransportProxyFactory","RtcTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","SwarmNetworkManager","TransportKind","createIceProvider","createRtcTransportFactory","createTeleportProtocolFactory"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0}},"bytes":1048},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19209},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-JUVDHWW4.mjs","kind":"import-statement"},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#tcp-transport","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["TEST_SIGNAL_HOSTS","TestBuilder","TestPeer","TestSwarmConnection"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/test-builder.ts":{"bytesInOutput":6240},"src/testing/test-wire-protocol.ts":{"bytesInOutput":3400},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":10137},"dist/lib/browser/chunk-JUVDHWW4.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":216520},"dist/lib/browser/chunk-JUVDHWW4.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"#node-datachannel","kind":"dynamic-import","external":true},{"path":"#node-datachannel/polyfill","kind":"dynamic-import","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","RtcTransportProxy","RtcTransportProxyFactory","RtcTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","SwarmNetworkManager","TransportKind","createIceProvider","createRtcTransportFactory","createTeleportProtocolFactory"],"inputs":{"src/swarm/connection.ts":{"bytesInOutput":16804},"src/signal/ice.ts":{"bytesInOutput":1085},"src/signal/swarm-messenger.ts":{"bytesInOutput":6293},"src/signal/index.ts":{"bytesInOutput":0},"src/swarm/swarm.ts":{"bytesInOutput":16820},"src/swarm/peer.ts":{"bytesInOutput":14044},"src/swarm/swarm-mapper.ts":{"bytesInOutput":2331},"src/swarm/connection-limiter.ts":{"bytesInOutput":2575},"src/swarm/index.ts":{"bytesInOutput":0},"src/connection-log.ts":{"bytesInOutput":3407},"src/network-manager.ts":{"bytesInOutput":7433},"src/topology/fully-connected-topology.ts":{"bytesInOutput":967},"src/topology/mmst-topology.ts":{"bytesInOutput":6025},"src/topology/star-topology.ts":{"bytesInOutput":2507},"src/topology/index.ts":{"bytesInOutput":0},"src/transport/memory-transport.ts":{"bytesInOutput":6362},"src/transport/transport.ts":{"bytesInOutput":261},"src/transport/webrtc/rtc-connection-factory.ts":{"bytesInOutput":1521},"src/transport/webrtc/rtc-peer-connection.ts":{"bytesInOutput":19446},"src/transport/webrtc/rtc-transport-channel.ts":{"bytesInOutput":6196},"src/transport/webrtc/rtc-transport-stats.ts":{"bytesInOutput":1668},"src/transport/webrtc/utils.ts":{"bytesInOutput":718},"src/transport/webrtc/rtc-transport-factory.ts":{"bytesInOutput":528},"src/transport/webrtc/rtc-transport-proxy.ts":{"bytesInOutput":7955},"src/transport/webrtc/rtc-transport-service.ts":{"bytesInOutput":6076},"src/transport/index.ts":{"bytesInOutput":0},"src/transport/webrtc/index.ts":{"bytesInOutput":0},"src/wire-protocol.ts":{"bytesInOutput":537}},"bytes":133068},"dist/lib/browser/transport/tcp/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1815},"dist/lib/browser/transport/tcp/index.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["TcpTransport","TcpTransportFactory"],"entryPoint":"src/transport/tcp/index.ts","inputs":{"src/transport/tcp/tcp-transport.browser.ts":{"bytesInOutput":602},"src/transport/tcp/index.ts":{"bytesInOutput":0}},"bytes":767}}}
1
+ {"inputs":{"src/swarm/connection.ts":{"bytes":51118,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true}],"format":"esm"},"src/signal/ice.ts":{"bytes":4387,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/signal/swarm-messenger.ts":{"bytes":21334,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/signal/index.ts":{"bytes":586,"imports":[{"path":"src/signal/ice.ts","kind":"import-statement","original":"./ice"},{"path":"src/signal/swarm-messenger.ts","kind":"import-statement","original":"./swarm-messenger"}],"format":"esm"},"src/swarm/peer.ts":{"bytes":44591,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/swarm/connection.ts","kind":"import-statement","original":"./connection"}],"format":"esm"},"src/swarm/swarm.ts":{"bytes":50834,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/signal/index.ts","kind":"import-statement","original":"../signal"},{"path":"src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"src/swarm/peer.ts","kind":"import-statement","original":"./peer"}],"format":"esm"},"src/swarm/swarm-mapper.ts":{"bytes":11947,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/swarm/connection-limiter.ts":{"bytes":8137,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/swarm/index.ts":{"bytes":677,"imports":[{"path":"src/swarm/connection.ts","kind":"import-statement","original":"./connection"},{"path":"src/swarm/swarm.ts","kind":"import-statement","original":"./swarm"},{"path":"src/swarm/swarm-mapper.ts","kind":"import-statement","original":"./swarm-mapper"},{"path":"src/swarm/connection-limiter.ts","kind":"import-statement","original":"./connection-limiter"}],"format":"esm"},"src/connection-log.ts":{"bytes":16110,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/swarm/index.ts","kind":"import-statement","original":"./swarm"}],"format":"esm"},"src/network-manager.ts":{"bytes":25588,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"src/swarm/index.ts","kind":"import-statement","original":"./swarm"}],"format":"esm"},"src/topology/fully-connected-topology.ts":{"bytes":3329,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true}],"format":"esm"},"src/topology/mmst-topology.ts":{"bytes":18740,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/topology/star-topology.ts":{"bytes":7304,"imports":[{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/topology/index.ts":{"bytes":666,"imports":[{"path":"src/topology/fully-connected-topology.ts","kind":"import-statement","original":"./fully-connected-topology"},{"path":"src/topology/mmst-topology.ts","kind":"import-statement","original":"./mmst-topology"},{"path":"src/topology/star-topology.ts","kind":"import-statement","original":"./star-topology"}],"format":"esm"},"src/transport/memory-transport.ts":{"bytes":22258,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/transport/transport.ts":{"bytes":2906,"imports":[],"format":"esm"},"src/transport/webrtc/rtc-connection-factory.ts":{"bytes":8542,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"#node-datachannel","kind":"dynamic-import","external":true},{"path":"#node-datachannel/polyfill","kind":"dynamic-import","external":true}],"format":"esm"},"src/transport/webrtc/rtc-transport-stats.ts":{"bytes":7220,"imports":[],"format":"esm"},"src/transport/webrtc/rtc-transport-channel.ts":{"bytes":21707,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"src/transport/webrtc/rtc-transport-stats.ts","kind":"import-statement","original":"./rtc-transport-stats"}],"format":"esm"},"src/transport/webrtc/utils.ts":{"bytes":3787,"imports":[],"format":"esm"},"src/transport/webrtc/rtc-peer-connection.ts":{"bytes":61379,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"src/transport/webrtc/rtc-transport-channel.ts","kind":"import-statement","original":"./rtc-transport-channel"},{"path":"src/transport/webrtc/utils.ts","kind":"import-statement","original":"./utils"}],"format":"esm"},"src/transport/webrtc/rtc-transport-factory.ts":{"bytes":3298,"imports":[{"path":"src/transport/webrtc/rtc-connection-factory.ts","kind":"import-statement","original":"./rtc-connection-factory"},{"path":"src/transport/webrtc/rtc-peer-connection.ts","kind":"import-statement","original":"./rtc-peer-connection"}],"format":"esm"},"src/transport/webrtc/rtc-transport-proxy.ts":{"bytes":28608,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"src/transport/webrtc/rtc-transport-service.ts":{"bytes":20556,"imports":[{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/transport/webrtc/rtc-transport-factory.ts","kind":"import-statement","original":"./rtc-transport-factory"}],"format":"esm"},"src/transport/webrtc/index.ts":{"bytes":645,"imports":[{"path":"src/transport/webrtc/rtc-transport-factory.ts","kind":"import-statement","original":"./rtc-transport-factory"},{"path":"src/transport/webrtc/rtc-transport-proxy.ts","kind":"import-statement","original":"./rtc-transport-proxy"},{"path":"src/transport/webrtc/rtc-transport-service.ts","kind":"import-statement","original":"./rtc-transport-service"}],"format":"esm"},"src/transport/index.ts":{"bytes":571,"imports":[{"path":"src/transport/memory-transport.ts","kind":"import-statement","original":"./memory-transport"},{"path":"src/transport/transport.ts","kind":"import-statement","original":"./transport"},{"path":"src/transport/webrtc/index.ts","kind":"import-statement","original":"./webrtc"}],"format":"esm"},"src/wire-protocol.ts":{"bytes":4146,"imports":[{"path":"@dxos/teleport","kind":"import-statement","external":true}],"format":"esm"},"src/index.ts":{"bytes":986,"imports":[{"path":"src/connection-log.ts","kind":"import-statement","original":"./connection-log"},{"path":"src/network-manager.ts","kind":"import-statement","original":"./network-manager"},{"path":"src/signal/index.ts","kind":"import-statement","original":"./signal"},{"path":"src/swarm/index.ts","kind":"import-statement","original":"./swarm"},{"path":"src/topology/index.ts","kind":"import-statement","original":"./topology"},{"path":"src/transport/index.ts","kind":"import-statement","original":"./transport"},{"path":"src/wire-protocol.ts","kind":"import-statement","original":"./wire-protocol"}],"format":"esm"},"src/testing/test-wire-protocol.ts":{"bytes":12438,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/wire-protocol.ts","kind":"import-statement","original":"../wire-protocol"}],"format":"esm"},"src/testing/test-builder.ts":{"bytes":26162,"imports":[{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#tcp-transport","kind":"import-statement","external":true},{"path":"src/network-manager.ts","kind":"import-statement","original":"../network-manager"},{"path":"src/topology/index.ts","kind":"import-statement","original":"../topology"},{"path":"src/transport/index.ts","kind":"import-statement","original":"../transport"},{"path":"src/testing/test-wire-protocol.ts","kind":"import-statement","original":"./test-wire-protocol"}],"format":"esm"},"src/testing/index.ts":{"bytes":388,"imports":[{"path":"src/testing/test-builder.ts","kind":"import-statement","original":"./test-builder"}],"format":"esm"},"src/transport/tcp/index.ts":{"bytes":401,"imports":[{"path":"#tcp-transport-impl","kind":"import-statement","external":true}],"format":"esm"},"src/transport/tcp/tcp-transport.ts":{"bytes":13582,"imports":[{"path":"@dxos/node-std/net","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/net","kind":"dynamic-import","external":true}],"format":"esm"},"src/transport/tcp/tcp-transport.browser.ts":{"bytes":3140,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":15264},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-ERB3AQAF.mjs","kind":"import-statement"},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","MAX_CONCURRENT_INITIATING_CONNECTIONS","MMSTTopology","MemoryTransport","MemoryTransportFactory","RtcTransportProxy","RtcTransportProxyFactory","RtcTransportService","StarTopology","Swarm","SwarmMapper","SwarmMessenger","SwarmNetworkManager","TransportKind","createIceProvider","createRtcTransportFactory","createTeleportProtocolFactory"],"entryPoint":"src/index.ts","inputs":{"src/signal/ice.ts":{"bytesInOutput":1018},"src/index.ts":{"bytesInOutput":0},"src/topology/mmst-topology.ts":{"bytesInOutput":5380},"src/topology/star-topology.ts":{"bytesInOutput":2246}},"bytes":9729},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18166},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-ERB3AQAF.mjs","kind":"import-statement"},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/rpc","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#tcp-transport","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["TEST_SIGNAL_HOSTS","TestBuilder","TestPeer","TestSwarmConnection"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/test-builder.ts":{"bytesInOutput":6354},"src/testing/test-wire-protocol.ts":{"bytesInOutput":3142},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":9993},"dist/lib/browser/chunk-ERB3AQAF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":200022},"dist/lib/browser/chunk-ERB3AQAF.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/messaging","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"#node-datachannel","kind":"dynamic-import","external":true},{"path":"#node-datachannel/polyfill","kind":"dynamic-import","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/tracing","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/node-std/stream","kind":"import-statement","external":true},{"path":"@dxos/codec-protobuf/stream","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/protocols/proto/dxos/mesh/bridge","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"@dxos/teleport","kind":"import-statement","external":true}],"exports":["Connection","ConnectionLimiter","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","MAX_CONCURRENT_INITIATING_CONNECTIONS","MemoryTransport","MemoryTransportFactory","RtcTransportProxy","RtcTransportProxyFactory","RtcTransportService","Swarm","SwarmMapper","SwarmMessenger","SwarmNetworkManager","TransportKind","createRtcTransportFactory","createTeleportProtocolFactory"],"inputs":{"src/swarm/connection.ts":{"bytesInOutput":15073},"src/signal/swarm-messenger.ts":{"bytesInOutput":5828},"src/swarm/swarm.ts":{"bytesInOutput":15096},"src/swarm/peer.ts":{"bytesInOutput":12842},"src/swarm/swarm-mapper.ts":{"bytesInOutput":2180},"src/swarm/connection-limiter.ts":{"bytesInOutput":2483},"src/connection-log.ts":{"bytesInOutput":3409},"src/network-manager.ts":{"bytesInOutput":6732},"src/topology/fully-connected-topology.ts":{"bytesInOutput":911},"src/transport/memory-transport.ts":{"bytesInOutput":5905},"src/transport/transport.ts":{"bytesInOutput":263},"src/transport/webrtc/rtc-connection-factory.ts":{"bytesInOutput":1521},"src/transport/webrtc/rtc-peer-connection.ts":{"bytesInOutput":18266},"src/transport/webrtc/rtc-transport-channel.ts":{"bytesInOutput":5680},"src/transport/webrtc/rtc-transport-stats.ts":{"bytesInOutput":1668},"src/transport/webrtc/utils.ts":{"bytesInOutput":718},"src/transport/webrtc/rtc-transport-factory.ts":{"bytesInOutput":528},"src/transport/webrtc/rtc-transport-proxy.ts":{"bytesInOutput":7665},"src/transport/webrtc/rtc-transport-service.ts":{"bytesInOutput":5765},"src/wire-protocol.ts":{"bytesInOutput":535}},"bytes":114434},"dist/lib/browser/transport/tcp/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":227},"dist/lib/browser/transport/tcp/index.mjs":{"imports":[{"path":"#tcp-transport-impl","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/transport/tcp/index.ts","inputs":{"src/transport/tcp/index.ts":{"bytesInOutput":37}},"bytes":136},"dist/lib/browser/transport/tcp/tcp-transport.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6522},"dist/lib/browser/transport/tcp/tcp-transport.mjs":{"imports":[{"path":"@dxos/node-std/net","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/node-std/net","kind":"dynamic-import","external":true}],"exports":["TcpTransport","TcpTransportFactory"],"entryPoint":"src/transport/tcp/tcp-transport.ts","inputs":{"src/transport/tcp/tcp-transport.ts":{"bytesInOutput":3482}},"bytes":3647},"dist/lib/browser/transport/tcp/tcp-transport.browser.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1791},"dist/lib/browser/transport/tcp/tcp-transport.browser.mjs":{"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["TcpTransport","TcpTransportFactory"],"entryPoint":"src/transport/tcp/tcp-transport.browser.ts","inputs":{"src/transport/tcp/tcp-transport.browser.ts":{"bytesInOutput":602}},"bytes":783}}}