@dxos/network-manager 0.1.0

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 (184) hide show
  1. package/LICENSE +21 -0
  2. package/dist/src/connection-log.d.ts +23 -0
  3. package/dist/src/connection-log.d.ts.map +1 -0
  4. package/dist/src/connection-log.js +98 -0
  5. package/dist/src/connection-log.js.map +1 -0
  6. package/dist/src/index.d.ts +9 -0
  7. package/dist/src/index.d.ts.map +1 -0
  8. package/dist/src/index.js +28 -0
  9. package/dist/src/index.js.map +1 -0
  10. package/dist/src/network-manager.d.ts +80 -0
  11. package/dist/src/network-manager.d.ts.map +1 -0
  12. package/dist/src/network-manager.js +123 -0
  13. package/dist/src/network-manager.js.map +1 -0
  14. package/dist/src/network-manager.test.d.ts +2 -0
  15. package/dist/src/network-manager.test.d.ts.map +1 -0
  16. package/dist/src/network-manager.test.js +621 -0
  17. package/dist/src/network-manager.test.js.map +1 -0
  18. package/dist/src/presence.test.d.ts +2 -0
  19. package/dist/src/presence.test.d.ts.map +1 -0
  20. package/dist/src/presence.test.js +60 -0
  21. package/dist/src/presence.test.js.map +1 -0
  22. package/dist/src/protocol-factory.d.ts +30 -0
  23. package/dist/src/protocol-factory.d.ts.map +1 -0
  24. package/dist/src/protocol-factory.js +64 -0
  25. package/dist/src/protocol-factory.js.map +1 -0
  26. package/dist/src/signal/index.d.ts +4 -0
  27. package/dist/src/signal/index.d.ts.map +1 -0
  28. package/dist/src/signal/index.js +23 -0
  29. package/dist/src/signal/index.js.map +1 -0
  30. package/dist/src/signal/integration.test.d.ts +2 -0
  31. package/dist/src/signal/integration.test.d.ts.map +1 -0
  32. package/dist/src/signal/integration.test.js +105 -0
  33. package/dist/src/signal/integration.test.js.map +1 -0
  34. package/dist/src/signal/message-router.d.ts +39 -0
  35. package/dist/src/signal/message-router.d.ts.map +1 -0
  36. package/dist/src/signal/message-router.js +135 -0
  37. package/dist/src/signal/message-router.js.map +1 -0
  38. package/dist/src/signal/message-router.test.d.ts +2 -0
  39. package/dist/src/signal/message-router.test.d.ts.map +1 -0
  40. package/dist/src/signal/message-router.test.js +211 -0
  41. package/dist/src/signal/message-router.test.js.map +1 -0
  42. package/dist/src/signal/signal-connection.d.ts +21 -0
  43. package/dist/src/signal/signal-connection.d.ts.map +1 -0
  44. package/dist/src/signal/signal-connection.js +6 -0
  45. package/dist/src/signal/signal-connection.js.map +1 -0
  46. package/dist/src/signal/signal-messaging.d.ts +34 -0
  47. package/dist/src/signal/signal-messaging.d.ts.map +1 -0
  48. package/dist/src/signal/signal-messaging.js +6 -0
  49. package/dist/src/signal/signal-messaging.js.map +1 -0
  50. package/dist/src/swarm/connection.d.ts +69 -0
  51. package/dist/src/swarm/connection.d.ts.map +1 -0
  52. package/dist/src/swarm/connection.js +187 -0
  53. package/dist/src/swarm/connection.js.map +1 -0
  54. package/dist/src/swarm/index.d.ts +4 -0
  55. package/dist/src/swarm/index.d.ts.map +1 -0
  56. package/dist/src/swarm/index.js +23 -0
  57. package/dist/src/swarm/index.js.map +1 -0
  58. package/dist/src/swarm/swarm-mapper.d.ts +30 -0
  59. package/dist/src/swarm/swarm-mapper.d.ts.map +1 -0
  60. package/dist/src/swarm/swarm-mapper.js +90 -0
  61. package/dist/src/swarm/swarm-mapper.js.map +1 -0
  62. package/dist/src/swarm/swarm.d.ts +64 -0
  63. package/dist/src/swarm/swarm.d.ts.map +1 -0
  64. package/dist/src/swarm/swarm.js +276 -0
  65. package/dist/src/swarm/swarm.js.map +1 -0
  66. package/dist/src/swarm/swarm.test.d.ts +2 -0
  67. package/dist/src/swarm/swarm.test.d.ts.map +1 -0
  68. package/dist/src/swarm/swarm.test.js +145 -0
  69. package/dist/src/swarm/swarm.test.js.map +1 -0
  70. package/dist/src/testing/index.d.ts +2 -0
  71. package/dist/src/testing/index.d.ts.map +1 -0
  72. package/dist/src/testing/index.js +21 -0
  73. package/dist/src/testing/index.js.map +1 -0
  74. package/dist/src/testing/test-protocol.d.ts +59 -0
  75. package/dist/src/testing/test-protocol.d.ts.map +1 -0
  76. package/dist/src/testing/test-protocol.js +140 -0
  77. package/dist/src/testing/test-protocol.js.map +1 -0
  78. package/dist/src/topology/fully-connected-topology.d.ts +11 -0
  79. package/dist/src/topology/fully-connected-topology.d.ts.map +1 -0
  80. package/dist/src/topology/fully-connected-topology.js +34 -0
  81. package/dist/src/topology/fully-connected-topology.js.map +1 -0
  82. package/dist/src/topology/index.d.ts +5 -0
  83. package/dist/src/topology/index.d.ts.map +1 -0
  84. package/dist/src/topology/index.js +24 -0
  85. package/dist/src/topology/index.js.map +1 -0
  86. package/dist/src/topology/mmst-topology.d.ts +31 -0
  87. package/dist/src/topology/mmst-topology.d.ts.map +1 -0
  88. package/dist/src/topology/mmst-topology.js +73 -0
  89. package/dist/src/topology/mmst-topology.js.map +1 -0
  90. package/dist/src/topology/star-topology.d.ts +13 -0
  91. package/dist/src/topology/star-topology.d.ts.map +1 -0
  92. package/dist/src/topology/star-topology.js +60 -0
  93. package/dist/src/topology/star-topology.js.map +1 -0
  94. package/dist/src/topology/topology.d.ts +56 -0
  95. package/dist/src/topology/topology.d.ts.map +1 -0
  96. package/dist/src/topology/topology.js +6 -0
  97. package/dist/src/topology/topology.js.map +1 -0
  98. package/dist/src/transport/index.d.ts +6 -0
  99. package/dist/src/transport/index.d.ts.map +1 -0
  100. package/dist/src/transport/index.js +25 -0
  101. package/dist/src/transport/index.js.map +1 -0
  102. package/dist/src/transport/memory-transport.d.ts +32 -0
  103. package/dist/src/transport/memory-transport.d.ts.map +1 -0
  104. package/dist/src/transport/memory-transport.js +98 -0
  105. package/dist/src/transport/memory-transport.js.map +1 -0
  106. package/dist/src/transport/memory-transport.test.d.ts +2 -0
  107. package/dist/src/transport/memory-transport.test.d.ts.map +1 -0
  108. package/dist/src/transport/memory-transport.test.js +84 -0
  109. package/dist/src/transport/memory-transport.test.js.map +1 -0
  110. package/dist/src/transport/transport.d.ts +38 -0
  111. package/dist/src/transport/transport.d.ts.map +1 -0
  112. package/dist/src/transport/transport.js +6 -0
  113. package/dist/src/transport/transport.js.map +1 -0
  114. package/dist/src/transport/webrtc-transport-proxy.d.ts +48 -0
  115. package/dist/src/transport/webrtc-transport-proxy.d.ts.map +1 -0
  116. package/dist/src/transport/webrtc-transport-proxy.js +139 -0
  117. package/dist/src/transport/webrtc-transport-proxy.js.map +1 -0
  118. package/dist/src/transport/webrtc-transport-proxy.test.d.ts +2 -0
  119. package/dist/src/transport/webrtc-transport-proxy.test.d.ts.map +1 -0
  120. package/dist/src/transport/webrtc-transport-proxy.test.js +245 -0
  121. package/dist/src/transport/webrtc-transport-proxy.test.js.map +1 -0
  122. package/dist/src/transport/webrtc-transport-service.d.ts +15 -0
  123. package/dist/src/transport/webrtc-transport-service.d.ts.map +1 -0
  124. package/dist/src/transport/webrtc-transport-service.js +97 -0
  125. package/dist/src/transport/webrtc-transport-service.js.map +1 -0
  126. package/dist/src/transport/webrtc-transport.d.ts +34 -0
  127. package/dist/src/transport/webrtc-transport.d.ts.map +1 -0
  128. package/dist/src/transport/webrtc-transport.js +100 -0
  129. package/dist/src/transport/webrtc-transport.js.map +1 -0
  130. package/dist/src/transport/webrtc-transport.test.d.ts +2 -0
  131. package/dist/src/transport/webrtc-transport.test.d.ts.map +1 -0
  132. package/dist/src/transport/webrtc-transport.test.js +80 -0
  133. package/dist/src/transport/webrtc-transport.test.js.map +1 -0
  134. package/dist/src/transport/webrtc.d.ts +6 -0
  135. package/dist/src/transport/webrtc.d.ts.map +1 -0
  136. package/dist/src/transport/webrtc.js +17 -0
  137. package/dist/src/transport/webrtc.js.map +1 -0
  138. package/dist/src/transport/wrtc-simple-peer.test.d.ts +2 -0
  139. package/dist/src/transport/wrtc-simple-peer.test.d.ts.map +1 -0
  140. package/dist/src/transport/wrtc-simple-peer.test.js +24 -0
  141. package/dist/src/transport/wrtc-simple-peer.test.js.map +1 -0
  142. package/dist/src/types.d.ts +6 -0
  143. package/dist/src/types.d.ts.map +1 -0
  144. package/dist/src/types.js +6 -0
  145. package/dist/src/types.js.map +1 -0
  146. package/package.json +58 -0
  147. package/src/connection-log.ts +102 -0
  148. package/src/globals.d.ts +7 -0
  149. package/src/index.ts +12 -0
  150. package/src/network-manager.test.ts +764 -0
  151. package/src/network-manager.ts +204 -0
  152. package/src/presence.test.ts +78 -0
  153. package/src/protocol-factory.ts +83 -0
  154. package/src/signal/index.ts +7 -0
  155. package/src/signal/integration.test.ts +129 -0
  156. package/src/signal/message-router.test.ts +274 -0
  157. package/src/signal/message-router.ts +200 -0
  158. package/src/signal/signal-connection.ts +20 -0
  159. package/src/signal/signal-messaging.ts +38 -0
  160. package/src/swarm/connection.ts +206 -0
  161. package/src/swarm/index.ts +7 -0
  162. package/src/swarm/swarm-mapper.ts +120 -0
  163. package/src/swarm/swarm.test.ts +192 -0
  164. package/src/swarm/swarm.ts +328 -0
  165. package/src/testing/index.ts +5 -0
  166. package/src/testing/test-protocol.ts +160 -0
  167. package/src/topology/fully-connected-topology.ts +38 -0
  168. package/src/topology/index.ts +8 -0
  169. package/src/topology/mmst-topology.ts +105 -0
  170. package/src/topology/star-topology.ts +67 -0
  171. package/src/topology/topology.ts +69 -0
  172. package/src/transport/index.ts +9 -0
  173. package/src/transport/memory-transport.test.ts +110 -0
  174. package/src/transport/memory-transport.ts +128 -0
  175. package/src/transport/transport.ts +47 -0
  176. package/src/transport/webrtc-transport-proxy.test.ts +290 -0
  177. package/src/transport/webrtc-transport-proxy.ts +167 -0
  178. package/src/transport/webrtc-transport-service.ts +115 -0
  179. package/src/transport/webrtc-transport.test.ts +112 -0
  180. package/src/transport/webrtc-transport.ts +122 -0
  181. package/src/transport/webrtc.ts +15 -0
  182. package/src/transport/wrtc-simple-peer.test.ts +24 -0
  183. package/src/types.ts +10 -0
  184. package/src/typings.d.ts +7 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 DXOS.org
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,23 @@
1
+ import { Event } from '@dxos/async';
2
+ import { PublicKey } from '@dxos/keys';
3
+ import { SwarmInfo } from '@dxos/protocols/proto/dxos/devtools/swarmLog';
4
+ import { Swarm } from './swarm';
5
+ export declare enum EventType {
6
+ CONNECTION_STATE_CHANGED = "CONNECTION_STATE_CHANGED",
7
+ PROTOCOL_ERROR = "PROTOCOL_ERROR",
8
+ PROTOCOL_EXTENSIONS_INITIALIZED = "PROTOCOL_EXTENSIONS_INITIALIZED",
9
+ PROTOCOL_EXTENSIONS_HANDSHAKE = "PROTOCOL_EXTENSIONS_HANDSHAKE",
10
+ PROTOCOL_HANDSHAKE = "PROTOCOL_HANDSHAKE"
11
+ }
12
+ export declare class ConnectionLog {
13
+ /**
14
+ * SwarmId => info
15
+ */
16
+ private readonly _swarms;
17
+ readonly update: Event<void>;
18
+ getSwarmInfo(swarmId: PublicKey): SwarmInfo;
19
+ get swarms(): SwarmInfo[];
20
+ swarmJoined(swarm: Swarm): void;
21
+ swarmLeft(swarm: Swarm): void;
22
+ }
23
+ //# sourceMappingURL=connection-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-log.d.ts","sourceRoot":"","sources":["../../src/connection-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAkB,MAAM,8CAA8C,CAAC;AAGzF,OAAO,EAAmB,KAAK,EAAE,MAAM,SAAS,CAAC;AAEjD,oBAAY,SAAS;IACnB,wBAAwB,6BAA6B;IACrD,cAAc,mBAAmB;IACjC,+BAA+B,oCAAoC;IACnE,6BAA6B,kCAAkC;IAC/D,kBAAkB,uBAAuB;CAC1C;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,QAAQ,CAAC,MAAM,cAAe;IAE9B,YAAY,CAAC,OAAO,EAAE,SAAS;IAI/B,IAAI,MAAM,IAAI,SAAS,EAAE,CAExB;IAED,WAAW,CAAC,KAAK,EAAE,KAAK;IA6DxB,SAAS,CAAC,KAAK,EAAE,KAAK;CAIvB"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2021 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ConnectionLog = exports.EventType = void 0;
7
+ const async_1 = require("@dxos/async");
8
+ const debug_1 = require("@dxos/debug");
9
+ const keys_1 = require("@dxos/keys");
10
+ const util_1 = require("@dxos/util");
11
+ const swarm_1 = require("./swarm");
12
+ var EventType;
13
+ (function (EventType) {
14
+ EventType["CONNECTION_STATE_CHANGED"] = "CONNECTION_STATE_CHANGED";
15
+ EventType["PROTOCOL_ERROR"] = "PROTOCOL_ERROR";
16
+ EventType["PROTOCOL_EXTENSIONS_INITIALIZED"] = "PROTOCOL_EXTENSIONS_INITIALIZED";
17
+ EventType["PROTOCOL_EXTENSIONS_HANDSHAKE"] = "PROTOCOL_EXTENSIONS_HANDSHAKE";
18
+ EventType["PROTOCOL_HANDSHAKE"] = "PROTOCOL_HANDSHAKE";
19
+ })(EventType = exports.EventType || (exports.EventType = {}));
20
+ class ConnectionLog {
21
+ constructor() {
22
+ /**
23
+ * SwarmId => info
24
+ */
25
+ this._swarms = new util_1.ComplexMap(keys_1.PublicKey.hash);
26
+ this.update = new async_1.Event();
27
+ }
28
+ getSwarmInfo(swarmId) {
29
+ var _a;
30
+ return (_a = this._swarms.get(swarmId)) !== null && _a !== void 0 ? _a : (0, debug_1.raise)(new Error(`Swarm not found: ${swarmId}`));
31
+ }
32
+ get swarms() {
33
+ return Array.from(this._swarms.values());
34
+ }
35
+ swarmJoined(swarm) {
36
+ const info = {
37
+ id: swarm.id,
38
+ topic: swarm.topic,
39
+ isActive: true,
40
+ label: swarm.label,
41
+ connections: []
42
+ };
43
+ this._swarms.set(swarm.id, info);
44
+ this.update.emit();
45
+ swarm.connectionAdded.on((connection) => {
46
+ const connectionInfo = {
47
+ state: swarm_1.ConnectionState.INITIAL,
48
+ remotePeerId: connection.remoteId,
49
+ sessionId: connection.sessionId,
50
+ transport: connection.transport && Object.getPrototypeOf(connection.transport).constructor.name,
51
+ protocolExtensions: connection.protocol.extensionNames,
52
+ events: []
53
+ };
54
+ info.connections.push(connectionInfo);
55
+ this.update.emit();
56
+ connection.stateChanged.on((state) => {
57
+ connectionInfo.state = state;
58
+ connectionInfo.events.push({
59
+ type: EventType.CONNECTION_STATE_CHANGED,
60
+ newState: state
61
+ });
62
+ this.update.emit();
63
+ });
64
+ connection.protocol.error.on((error) => {
65
+ var _a;
66
+ connectionInfo.events.push({
67
+ type: EventType.PROTOCOL_ERROR,
68
+ error: (_a = error.stack) !== null && _a !== void 0 ? _a : error.message
69
+ });
70
+ this.update.emit();
71
+ });
72
+ connection.protocol.extensionsInitialized.on(() => {
73
+ connectionInfo.events.push({
74
+ type: EventType.PROTOCOL_EXTENSIONS_INITIALIZED
75
+ });
76
+ this.update.emit();
77
+ });
78
+ connection.protocol.extensionsHandshake.on(() => {
79
+ connectionInfo.events.push({
80
+ type: EventType.PROTOCOL_EXTENSIONS_HANDSHAKE
81
+ });
82
+ this.update.emit();
83
+ });
84
+ connection.protocol.handshake.on(() => {
85
+ connectionInfo.events.push({
86
+ type: EventType.PROTOCOL_HANDSHAKE
87
+ });
88
+ this.update.emit();
89
+ });
90
+ });
91
+ }
92
+ swarmLeft(swarm) {
93
+ this.getSwarmInfo(swarm.id).isActive = false;
94
+ this.update.emit();
95
+ }
96
+ }
97
+ exports.ConnectionLog = ConnectionLog;
98
+ //# sourceMappingURL=connection-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-log.js","sourceRoot":"","sources":["../../src/connection-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export * from './network-manager';
2
+ export * from './protocol-factory';
3
+ export * from './swarm';
4
+ export * from './topology';
5
+ export * from './transport';
6
+ export * from './signal';
7
+ export * from './types';
8
+ export * from './connection-log';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./network-manager"), exports);
21
+ __exportStar(require("./protocol-factory"), exports);
22
+ __exportStar(require("./swarm"), exports);
23
+ __exportStar(require("./topology"), exports);
24
+ __exportStar(require("./transport"), exports);
25
+ __exportStar(require("./signal"), exports);
26
+ __exportStar(require("./types"), exports);
27
+ __exportStar(require("./connection-log"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;AAEF,oDAAkC;AAClC,qDAAmC;AACnC,0CAAwB;AACxB,6CAA2B;AAC3B,8CAA4B;AAC5B,2CAAyB;AACzB,0CAAwB;AACxB,mDAAiC"}
@@ -0,0 +1,80 @@
1
+ /// <reference types="node" />
2
+ import { Event } from '@dxos/async';
3
+ import { PublicKey } from '@dxos/keys';
4
+ import { Protocol } from '@dxos/mesh-protocol';
5
+ import { SignalManager } from '@dxos/messaging';
6
+ import { ConnectionLog } from './connection-log';
7
+ import { Swarm, SwarmMapper } from './swarm';
8
+ import { Topology } from './topology';
9
+ import { TransportFactory } from './transport';
10
+ export declare type ProtocolProvider = (opts: {
11
+ channel: Buffer;
12
+ initiator: boolean;
13
+ }) => Protocol;
14
+ export declare type SwarmConnection = {
15
+ close(): Promise<void>;
16
+ };
17
+ export declare type SwarmOptions = {
18
+ /**
19
+ * Swarm topic.
20
+ */
21
+ topic: PublicKey;
22
+ /**
23
+ * This node's peer id.
24
+ */
25
+ peerId: PublicKey;
26
+ /**
27
+ * Protocol to use for every connection.
28
+ */
29
+ protocol: ProtocolProvider;
30
+ /**
31
+ * Requested topology. Must be a new instance for every swarm.
32
+ */
33
+ topology?: Topology;
34
+ /**
35
+ * Presence plugin for network mapping, if exists.
36
+ */
37
+ presence?: any;
38
+ /**
39
+ * Custom label assigned to this swarm. Used in devtools to display human-readable names for swarms.
40
+ */
41
+ label?: string;
42
+ };
43
+ export declare type NetworkManagerOptions = {
44
+ transportFactory: TransportFactory;
45
+ signalManager: SignalManager;
46
+ log?: boolean;
47
+ };
48
+ /**
49
+ * Manages connection to the swarm.
50
+ */
51
+ export declare class NetworkManager {
52
+ private readonly _transportFactory;
53
+ private readonly _swarms;
54
+ private readonly _mappers;
55
+ private readonly _signalManager;
56
+ private readonly _messenger;
57
+ private readonly _signalConnection;
58
+ private readonly _connectionLog?;
59
+ readonly topicsUpdated: Event<void>;
60
+ constructor({ transportFactory, signalManager, log }: NetworkManagerOptions);
61
+ get signal(): SignalManager;
62
+ get topics(): PublicKey[];
63
+ get connectionLog(): ConnectionLog | undefined;
64
+ getSwarmMap(topic: PublicKey): SwarmMapper | undefined;
65
+ getSwarm(topic: PublicKey): Swarm | undefined;
66
+ /**
67
+ * Join the swarm.
68
+ */
69
+ openSwarmConnection({ topic, peerId, topology, protocol, presence, label }: SwarmOptions): Promise<SwarmConnection>;
70
+ /**
71
+ * Close the connection.
72
+ */
73
+ closeSwarmConnection(topic: PublicKey): Promise<void>;
74
+ /**
75
+ * @deprecated
76
+ */
77
+ start(): Promise<void>;
78
+ destroy(): Promise<void>;
79
+ }
80
+ //# sourceMappingURL=network-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-manager.d.ts","sourceRoot":"","sources":["../../src/network-manager.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,oBAAY,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,KAAK,QAAQ,CAAC;AAE3F,oBAAY,eAAe,GAAG;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAGF,oBAAY,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,gBAAgB,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0D;IAEnF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAgB;IAEhD,SAAgB,aAAa,cAAqB;gBAEtC,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,qBAAqB;IAkB3E,IAAI,MAAM,kBAET;IAGD,IAAI,MAAM,gBAET;IAGD,IAAI,aAAa,8BAEhB;IAED,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS;IAItD,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS;IAI7C;;OAEG;IAEG,mBAAmB,CAAC,EACxB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,KAAK,EACN,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA4B1C;;OAEG;IACG,oBAAoB,CAAC,KAAK,EAAE,SAAS;IAsB3C;;OAEG;IAEG,KAAK;IAKL,OAAO;CAUd"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.NetworkManager = void 0;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const async_1 = require("@dxos/async");
12
+ const keys_1 = require("@dxos/keys");
13
+ const log_1 = require("@dxos/log");
14
+ const messaging_1 = require("@dxos/messaging");
15
+ const util_1 = require("@dxos/util");
16
+ const connection_log_1 = require("./connection-log");
17
+ const swarm_1 = require("./swarm");
18
+ /**
19
+ * Manages connection to the swarm.
20
+ */
21
+ class NetworkManager {
22
+ constructor({ transportFactory, signalManager, log }) {
23
+ this._swarms = new util_1.ComplexMap(keys_1.PublicKey.hash);
24
+ this._mappers = new util_1.ComplexMap(keys_1.PublicKey.hash);
25
+ this.topicsUpdated = new async_1.Event();
26
+ this._transportFactory = transportFactory;
27
+ // Listen for signal manager events.
28
+ this._signalManager = signalManager;
29
+ this._signalManager.swarmEvent.on(({ topic, swarmEvent: event }) => { var _a; return (_a = this._swarms.get(topic)) === null || _a === void 0 ? void 0 : _a.onSwarmEvent(event); });
30
+ this._messenger = new messaging_1.Messenger({ signalManager: this._signalManager });
31
+ this._signalConnection = {
32
+ join: (opts) => this._signalManager.join(opts),
33
+ leave: (opts) => this._signalManager.leave(opts)
34
+ };
35
+ if (log) {
36
+ this._connectionLog = new connection_log_1.ConnectionLog();
37
+ }
38
+ }
39
+ get signal() {
40
+ return this._signalManager;
41
+ }
42
+ // TODO(burdon): Reconcile with "discovery_key".
43
+ get topics() {
44
+ return Array.from(this._swarms.keys());
45
+ }
46
+ // TODO(burdon): Factor out devtools.
47
+ get connectionLog() {
48
+ return this._connectionLog;
49
+ }
50
+ getSwarmMap(topic) {
51
+ return this._mappers.get(topic);
52
+ }
53
+ getSwarm(topic) {
54
+ return this._swarms.get(topic);
55
+ }
56
+ /**
57
+ * Join the swarm.
58
+ */
59
+ // TODO(burdon): Join/Open?
60
+ async openSwarmConnection({ topic, peerId, topology, protocol, presence, label }) {
61
+ var _a;
62
+ (0, node_assert_1.default)(keys_1.PublicKey.isPublicKey(topic));
63
+ (0, node_assert_1.default)(keys_1.PublicKey.isPublicKey(peerId));
64
+ (0, node_assert_1.default)(topology);
65
+ (0, node_assert_1.default)(typeof protocol === 'function');
66
+ if (this._swarms.has(topic)) {
67
+ throw new Error(`Already connected to swarm: ${topic}`);
68
+ }
69
+ (0, log_1.log)('joining', { topic, peerId, topology: topology.toString() }, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 141 });
70
+ const swarm = new swarm_1.Swarm(topic, peerId, topology, protocol, this._messenger, this._transportFactory, label);
71
+ swarm.errors.handle((error) => {
72
+ (0, log_1.log)(`Swarm error: ${error}`, {}, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 144 });
73
+ });
74
+ this._swarms.set(topic, swarm);
75
+ this._signalConnection.join({ topic, peerId }).catch((error) => log_1.log.catch(error, {}, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 148 }));
76
+ this._mappers.set(topic, new swarm_1.SwarmMapper(swarm, presence));
77
+ this.topicsUpdated.emit();
78
+ (_a = this._connectionLog) === null || _a === void 0 ? void 0 : _a.swarmJoined(swarm);
79
+ (0, log_1.log)('open', { topic }, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 153 });
80
+ return {
81
+ close: () => this.closeSwarmConnection(topic)
82
+ };
83
+ }
84
+ /**
85
+ * Close the connection.
86
+ */
87
+ async closeSwarmConnection(topic) {
88
+ var _a;
89
+ if (!this._swarms.has(topic)) {
90
+ return;
91
+ }
92
+ (0, log_1.log)('closing', { topic }, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 168 });
93
+ const swarm = this._swarms.get(topic);
94
+ await this._signalConnection.leave({ topic, peerId: swarm.ownPeerId });
95
+ const map = this._mappers.get(topic);
96
+ map.destroy();
97
+ this._mappers.delete(topic);
98
+ (_a = this._connectionLog) === null || _a === void 0 ? void 0 : _a.swarmLeft(swarm);
99
+ await swarm.destroy();
100
+ this._swarms.delete(topic);
101
+ await this.topicsUpdated.emit();
102
+ (0, log_1.log)('closed', { topic }, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 182 });
103
+ }
104
+ /**
105
+ * @deprecated
106
+ */
107
+ // TODO(dmaretskyi): Remove.
108
+ async start() {
109
+ console.warn('NetworkManger.start is deprecated.');
110
+ }
111
+ // TODO(burdon): Open/close?
112
+ async destroy() {
113
+ for (const topic of this._swarms.keys()) {
114
+ await this.closeSwarmConnection(topic).catch((err) => {
115
+ (0, log_1.log)(`Failed to leave swarm ${topic} on NetworkManager.destroy}`, {}, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 197 });
116
+ (0, log_1.log)(err, {}, { file: "packages/core/mesh/network-manager/src/network-manager.ts", line: 198 });
117
+ });
118
+ }
119
+ await this._signalManager.destroy();
120
+ }
121
+ }
122
+ exports.NetworkManager = NetworkManager;
123
+ //# sourceMappingURL=network-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-manager.js","sourceRoot":"","sources":["../../src/network-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=network-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-manager.test.d.ts","sourceRoot":"","sources":["../../src/network-manager.test.ts"],"names":[],"mappings":""}