@streamr/trackerless-network 100.0.0-testnet-two.4 → 100.0.0-testnet-three.1

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 (188) hide show
  1. package/dist/src/NetworkNode.d.ts +2 -1
  2. package/dist/src/NetworkNode.js +6 -2
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +6 -2
  5. package/dist/src/NetworkStack.js +21 -1
  6. package/dist/src/NetworkStack.js.map +1 -1
  7. package/dist/src/exports.d.ts +1 -0
  8. package/dist/src/exports.js +4 -1
  9. package/dist/src/exports.js.map +1 -1
  10. package/dist/src/logic/DeliveryRpcLocal.js +1 -0
  11. package/dist/src/logic/DeliveryRpcLocal.js.map +1 -1
  12. package/dist/src/logic/DuplicateMessageDetector.d.ts +3 -3
  13. package/dist/src/logic/DuplicateMessageDetector.js +10 -6
  14. package/dist/src/logic/DuplicateMessageDetector.js.map +1 -1
  15. package/dist/src/logic/EntryPointDiscovery.js +8 -5
  16. package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
  17. package/dist/src/logic/Layer0Node.d.ts +2 -0
  18. package/dist/src/logic/Layer1Node.d.ts +4 -4
  19. package/dist/src/logic/NodeList.d.ts +6 -8
  20. package/dist/src/logic/NodeList.js +10 -12
  21. package/dist/src/logic/NodeList.js.map +1 -1
  22. package/dist/src/logic/RandomGraphNode.d.ts +5 -5
  23. package/dist/src/logic/RandomGraphNode.js +27 -22
  24. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  25. package/dist/src/logic/StreamrNode.d.ts +3 -2
  26. package/dist/src/logic/StreamrNode.js +25 -6
  27. package/dist/src/logic/StreamrNode.js.map +1 -1
  28. package/dist/src/logic/createRandomGraphNode.d.ts +2 -2
  29. package/dist/src/logic/createRandomGraphNode.js +16 -15
  30. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  31. package/dist/src/logic/inspect/InspectSession.js +3 -2
  32. package/dist/src/logic/inspect/InspectSession.js.map +1 -1
  33. package/dist/src/logic/inspect/Inspector.d.ts +5 -3
  34. package/dist/src/logic/inspect/Inspector.js +15 -2
  35. package/dist/src/logic/inspect/Inspector.js.map +1 -1
  36. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +1 -1
  37. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +18 -17
  38. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
  39. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
  40. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +3 -4
  41. package/dist/src/logic/neighbor-discovery/Handshaker.js +29 -27
  42. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  43. package/dist/src/logic/neighbor-discovery/NeighborFinder.d.ts +1 -1
  44. package/dist/src/logic/neighbor-discovery/NeighborFinder.js +4 -2
  45. package/dist/src/logic/neighbor-discovery/NeighborFinder.js.map +1 -1
  46. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.d.ts +2 -1
  47. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js +8 -4
  48. package/dist/src/logic/neighbor-discovery/NeighborUpdateManager.js.map +1 -1
  49. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.d.ts +4 -1
  50. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +31 -20
  51. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  52. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
  53. package/dist/src/logic/node-info/NodeInfoClient.d.ts +9 -0
  54. package/dist/src/logic/node-info/NodeInfoClient.js +19 -0
  55. package/dist/src/logic/node-info/NodeInfoClient.js.map +1 -0
  56. package/dist/src/logic/node-info/NodeInfoRpcLocal.d.ts +12 -0
  57. package/dist/src/logic/node-info/NodeInfoRpcLocal.js +29 -0
  58. package/dist/src/logic/node-info/NodeInfoRpcLocal.js.map +1 -0
  59. package/dist/src/logic/node-info/NodeInfoRpcRemote.d.ts +6 -0
  60. package/dist/src/logic/node-info/NodeInfoRpcRemote.js +11 -0
  61. package/dist/src/logic/node-info/NodeInfoRpcRemote.js.map +1 -0
  62. package/dist/src/logic/propagation/FifoMapWithTTL.js +7 -3
  63. package/dist/src/logic/propagation/FifoMapWithTTL.js.map +1 -1
  64. package/dist/src/logic/propagation/Propagation.js +3 -0
  65. package/dist/src/logic/propagation/Propagation.js.map +1 -1
  66. package/dist/src/logic/propagation/PropagationTaskStore.js +1 -0
  67. package/dist/src/logic/propagation/PropagationTaskStore.js.map +1 -1
  68. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js +1 -1
  69. package/dist/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.js.map +1 -1
  70. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js +1 -1
  71. package/dist/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.js.map +1 -1
  72. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +43 -15
  73. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
  74. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.d.ts +3 -0
  75. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js +14 -0
  76. package/dist/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.js.map +1 -0
  77. package/dist/src/logic/proxy/ProxyClient.d.ts +1 -1
  78. package/dist/src/logic/proxy/ProxyClient.js +18 -11
  79. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  80. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +2 -1
  81. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  82. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
  83. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.d.ts +5 -3
  84. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +9 -2
  85. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  86. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.d.ts +1 -0
  87. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js +11 -0
  88. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
  89. package/dist/src/logic/utils.js.map +1 -1
  90. package/dist/src/proto/google/protobuf/any.js +8 -8
  91. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  92. package/dist/src/proto/google/protobuf/empty.js +2 -4
  93. package/dist/src/proto/google/protobuf/empty.js.map +1 -1
  94. package/dist/src/proto/google/protobuf/timestamp.js +10 -10
  95. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  96. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +4 -5
  97. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +38 -29
  98. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  99. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +26 -12
  100. package/dist/src/proto/packages/dht/protos/DhtRpc.js +12 -16
  101. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  102. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +2 -3
  103. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +1 -1
  104. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +36 -0
  105. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +50 -17
  106. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  107. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +118 -5
  108. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +91 -8
  109. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  110. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +16 -0
  111. package/dist/test/benchmark/first-message.js +7 -5
  112. package/dist/test/benchmark/first-message.js.map +1 -1
  113. package/dist/test/utils/utils.js +2 -1
  114. package/dist/test/utils/utils.js.map +1 -1
  115. package/jest.config.js +3 -38
  116. package/package.json +7 -7
  117. package/protos/NetworkRpc.proto +38 -5
  118. package/src/NetworkNode.ts +5 -1
  119. package/src/NetworkStack.ts +23 -2
  120. package/src/exports.ts +4 -0
  121. package/src/logic/DuplicateMessageDetector.ts +7 -7
  122. package/src/logic/EntryPointDiscovery.ts +3 -3
  123. package/src/logic/Layer0Node.ts +2 -0
  124. package/src/logic/Layer1Node.ts +4 -4
  125. package/src/logic/NodeList.ts +9 -15
  126. package/src/logic/RandomGraphNode.ts +27 -23
  127. package/src/logic/StreamrNode.ts +18 -4
  128. package/src/logic/createRandomGraphNode.ts +19 -18
  129. package/src/logic/inspect/Inspector.ts +18 -5
  130. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +18 -18
  131. package/src/logic/neighbor-discovery/Handshaker.ts +31 -32
  132. package/src/logic/neighbor-discovery/NeighborFinder.ts +2 -2
  133. package/src/logic/neighbor-discovery/NeighborUpdateManager.ts +7 -5
  134. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +39 -27
  135. package/src/logic/node-info/NodeInfoClient.ts +21 -0
  136. package/src/logic/node-info/NodeInfoRpcLocal.ts +35 -0
  137. package/src/logic/node-info/NodeInfoRpcRemote.ts +11 -0
  138. package/src/logic/protocol-integration/stream-message/GroupKeyRequestTranslator.ts +1 -1
  139. package/src/logic/protocol-integration/stream-message/GroupKeyResponseTranslator.ts +1 -1
  140. package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +56 -27
  141. package/src/logic/protocol-integration/stream-message/oldStreamMessageBinaryUtils.ts +11 -0
  142. package/src/logic/proxy/ProxyClient.ts +10 -10
  143. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +15 -4
  144. package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +11 -0
  145. package/src/proto/google/protobuf/any.ts +4 -4
  146. package/src/proto/google/protobuf/empty.ts +2 -4
  147. package/src/proto/google/protobuf/timestamp.ts +4 -4
  148. package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -7
  149. package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -4
  150. package/src/proto/packages/dht/protos/DhtRpc.ts +37 -20
  151. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +1 -1
  152. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +42 -1
  153. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +17 -1
  154. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +155 -12
  155. package/test/benchmark/first-message.ts +28 -8
  156. package/test/end-to-end/inspect.test.ts +13 -1
  157. package/test/end-to-end/proxy-and-full-node.test.ts +14 -1
  158. package/test/end-to-end/proxy-connections.test.ts +14 -2
  159. package/test/end-to-end/proxy-key-exchange.test.ts +15 -8
  160. package/test/end-to-end/random-graph-with-real-connections.test.ts +21 -21
  161. package/test/end-to-end/webrtc-full-node-network.test.ts +3 -3
  162. package/test/end-to-end/websocket-full-node-network.test.ts +3 -3
  163. package/test/integration/Handshakes.test.ts +8 -8
  164. package/test/integration/NetworkNode.test.ts +19 -1
  165. package/test/integration/NetworkRpc.test.ts +3 -2
  166. package/test/integration/NodeInfoRpc.test.ts +103 -0
  167. package/test/integration/Propagation.test.ts +2 -2
  168. package/test/integration/RandomGraphNode-Layer1Node-Latencies.test.ts +20 -21
  169. package/test/integration/RandomGraphNode-Layer1Node.test.ts +22 -19
  170. package/test/integration/stream-without-default-entrypoints.test.ts +17 -11
  171. package/test/unit/HandshakeRpcLocal.test.ts +15 -15
  172. package/test/unit/Handshaker.test.ts +3 -3
  173. package/test/unit/NeighborFinder.test.ts +5 -5
  174. package/test/unit/NeighborUpdateRpcLocal.test.ts +125 -0
  175. package/test/unit/NodeList.test.ts +56 -57
  176. package/test/unit/Propagation.test.ts +4 -2
  177. package/test/unit/RandomGraphNode.test.ts +7 -8
  178. package/test/unit/StreamMessageTranslator.test.ts +7 -4
  179. package/test/unit/StreamrNode.test.ts +2 -0
  180. package/test/unit/TemporaryConnectionRpcLocal.test.ts +32 -0
  181. package/test/unit/oldStreamMessageBinaryUtils.test.ts +39 -0
  182. package/test/utils/mock/MockLayer0Node.ts +6 -1
  183. package/test/utils/mock/MockLayer1Node.ts +2 -2
  184. package/test/utils/mock/Transport.ts +1 -1
  185. package/test/utils/utils.ts +3 -1
  186. package/tsconfig.jest.json +3 -3
  187. package/tsconfig.node.json +0 -1
  188. package/dist/package.json +0 -55
@@ -1,11 +1,10 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/dht/protos/DhtRpc.proto" (package "dht", syntax proto3)
3
3
  // tslint:disable
4
4
  import { ExternalStoreDataResponse } from "./DhtRpc";
5
5
  import { ExternalStoreDataRequest } from "./DhtRpc";
6
6
  import { ExternalFindDataResponse } from "./DhtRpc";
7
7
  import { ExternalFindDataRequest } from "./DhtRpc";
8
- import { DisconnectNoticeResponse } from "./DhtRpc";
9
8
  import { DisconnectNotice } from "./DhtRpc";
10
9
  import { UnlockRequest } from "./DhtRpc";
11
10
  import { LockResponse } from "./DhtRpc";
@@ -132,9 +131,9 @@ export interface IConnectionLockRpc<T = ServerCallContext> {
132
131
  */
133
132
  unlockRequest(request: UnlockRequest, context: T): Promise<Empty>;
134
133
  /**
135
- * @generated from protobuf rpc: gracefulDisconnect(dht.DisconnectNotice) returns (dht.DisconnectNoticeResponse);
134
+ * @generated from protobuf rpc: gracefulDisconnect(dht.DisconnectNotice) returns (google.protobuf.Empty);
136
135
  */
137
- gracefulDisconnect(request: DisconnectNotice, context: T): Promise<DisconnectNoticeResponse>;
136
+ gracefulDisconnect(request: DisconnectNotice, context: T): Promise<Empty>;
138
137
  }
139
138
  /**
140
139
  * @generated from protobuf service dht.ExternalApiRpc
@@ -1,4 +1,4 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/dht/protos/DhtRpc.proto" (package "dht", syntax proto3)
3
3
  // tslint:disable
4
4
  import { Empty } from "../../../google/protobuf/empty";
@@ -218,6 +218,20 @@ export interface PeerDescriptor {
218
218
  * @generated from protobuf field: optional uint32 region = 6;
219
219
  */
220
220
  region?: number;
221
+ /**
222
+ * @generated from protobuf field: optional uint32 ipAddress = 7;
223
+ */
224
+ ipAddress?: number;
225
+ /**
226
+ * @generated from protobuf field: optional bytes publicKey = 8;
227
+ */
228
+ publicKey?: Uint8Array;
229
+ /**
230
+ * signature of fields 2-8
231
+ *
232
+ * @generated from protobuf field: optional bytes signature = 9;
233
+ */
234
+ signature?: Uint8Array;
221
235
  }
222
236
  /**
223
237
  * @generated from protobuf message dht.ConnectivityMethod
@@ -264,6 +278,10 @@ export interface RouteMessageWrapper {
264
278
  * @generated from protobuf field: repeated dht.PeerDescriptor routingPath = 6;
265
279
  */
266
280
  routingPath: PeerDescriptor[];
281
+ /**
282
+ * @generated from protobuf field: repeated string parallelRootNodeIds = 7;
283
+ */
284
+ parallelRootNodeIds: string[];
267
285
  }
268
286
  /**
269
287
  * @generated from protobuf message dht.RouteMessageAck
@@ -317,6 +335,14 @@ export interface ConnectivityResponse {
317
335
  * @generated from protobuf field: dht.ConnectivityMethod websocket = 3;
318
336
  */
319
337
  websocket?: ConnectivityMethod;
338
+ /**
339
+ * @generated from protobuf field: uint32 ipAddress = 4;
340
+ */
341
+ ipAddress: number;
342
+ /**
343
+ * @generated from protobuf field: string version = 5;
344
+ */
345
+ version: string;
320
346
  }
321
347
  /**
322
348
  * @generated from protobuf message dht.HandshakeRequest
@@ -514,11 +540,6 @@ export interface DisconnectNotice {
514
540
  */
515
541
  disconnectMode: DisconnectMode;
516
542
  }
517
- /**
518
- * @generated from protobuf message dht.DisconnectNoticeResponse
519
- */
520
- export interface DisconnectNoticeResponse {
521
- }
522
543
  /**
523
544
  * @generated from protobuf message dht.ExternalFindDataRequest
524
545
  */
@@ -848,7 +869,10 @@ class PeerDescriptor$Type extends MessageType$<PeerDescriptor> {
848
869
  { no: 3, name: "udp", kind: "message", T: () => ConnectivityMethod },
849
870
  { no: 4, name: "tcp", kind: "message", T: () => ConnectivityMethod },
850
871
  { no: 5, name: "websocket", kind: "message", T: () => ConnectivityMethod },
851
- { no: 6, name: "region", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ }
872
+ { no: 6, name: "region", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ },
873
+ { no: 7, name: "ipAddress", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ },
874
+ { no: 8, name: "publicKey", kind: "scalar", opt: true, T: 12 /*ScalarType.BYTES*/ },
875
+ { no: 9, name: "signature", kind: "scalar", opt: true, T: 12 /*ScalarType.BYTES*/ }
852
876
  ]);
853
877
  }
854
878
  }
@@ -879,7 +903,8 @@ class RouteMessageWrapper$Type extends MessageType$<RouteMessageWrapper> {
879
903
  { no: 3, name: "target", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
880
904
  { no: 4, name: "message", kind: "message", T: () => Message },
881
905
  { no: 5, name: "reachableThrough", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor },
882
- { no: 6, name: "routingPath", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor }
906
+ { no: 6, name: "routingPath", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor },
907
+ { no: 7, name: "parallelRootNodeIds", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
883
908
  ]);
884
909
  }
885
910
  }
@@ -921,7 +946,9 @@ class ConnectivityResponse$Type extends MessageType$<ConnectivityResponse> {
921
946
  super("dht.ConnectivityResponse", [
922
947
  { no: 1, name: "host", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
923
948
  { no: 2, name: "natType", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
924
- { no: 3, name: "websocket", kind: "message", T: () => ConnectivityMethod }
949
+ { no: 3, name: "websocket", kind: "message", T: () => ConnectivityMethod },
950
+ { no: 4, name: "ipAddress", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
951
+ { no: 5, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
925
952
  ]);
926
953
  }
927
954
  }
@@ -1088,16 +1115,6 @@ class DisconnectNotice$Type extends MessageType$<DisconnectNotice> {
1088
1115
  */
1089
1116
  export const DisconnectNotice = new DisconnectNotice$Type();
1090
1117
  // @generated message type with reflection information, may provide speed optimized methods
1091
- class DisconnectNoticeResponse$Type extends MessageType$<DisconnectNoticeResponse> {
1092
- constructor() {
1093
- super("dht.DisconnectNoticeResponse", []);
1094
- }
1095
- }
1096
- /**
1097
- * @generated MessageType for protobuf message dht.DisconnectNoticeResponse
1098
- */
1099
- export const DisconnectNoticeResponse = new DisconnectNoticeResponse$Type();
1100
- // @generated message type with reflection information, may provide speed optimized methods
1101
1118
  class ExternalFindDataRequest$Type extends MessageType$<ExternalFindDataRequest> {
1102
1119
  constructor() {
1103
1120
  super("dht.ExternalFindDataRequest", [
@@ -1176,7 +1193,7 @@ export const WebrtcConnectorRpc = new ServiceType("dht.WebrtcConnectorRpc", [
1176
1193
  export const ConnectionLockRpc = new ServiceType("dht.ConnectionLockRpc", [
1177
1194
  { name: "lockRequest", options: {}, I: LockRequest, O: LockResponse },
1178
1195
  { name: "unlockRequest", options: {}, I: UnlockRequest, O: Empty },
1179
- { name: "gracefulDisconnect", options: {}, I: DisconnectNotice, O: DisconnectNoticeResponse }
1196
+ { name: "gracefulDisconnect", options: {}, I: DisconnectNotice, O: Empty }
1180
1197
  ]);
1181
1198
  /**
1182
1199
  * @generated ServiceType for protobuf service dht.ExternalApiRpc
@@ -1,4 +1,4 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/proto-rpc/protos/ProtoRpc.proto" (package "protorpc", syntax proto3)
3
3
  // tslint:disable
4
4
  import { MessageType } from "@protobuf-ts/runtime";
@@ -1,7 +1,11 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/trackerless-network/protos/NetworkRpc.proto" (syntax proto3)
3
3
  // tslint:disable
4
+ import { NodeInfoRpc } from "./NetworkRpc";
5
+ import type { NodeInfoResponse } from "./NetworkRpc";
6
+ import type { NodeInfoRequest } from "./NetworkRpc";
4
7
  import { TemporaryConnectionRpc } from "./NetworkRpc";
8
+ import type { CloseTemporaryConnection } from "./NetworkRpc";
5
9
  import type { TemporaryConnectionResponse } from "./NetworkRpc";
6
10
  import type { TemporaryConnectionRequest } from "./NetworkRpc";
7
11
  import { NeighborUpdateRpc } from "./NetworkRpc";
@@ -157,6 +161,10 @@ export interface ITemporaryConnectionRpcClient {
157
161
  * @generated from protobuf rpc: openConnection(TemporaryConnectionRequest) returns (TemporaryConnectionResponse);
158
162
  */
159
163
  openConnection(input: TemporaryConnectionRequest, options?: RpcOptions): UnaryCall<TemporaryConnectionRequest, TemporaryConnectionResponse>;
164
+ /**
165
+ * @generated from protobuf rpc: closeConnection(CloseTemporaryConnection) returns (google.protobuf.Empty);
166
+ */
167
+ closeConnection(input: CloseTemporaryConnection, options?: RpcOptions): UnaryCall<CloseTemporaryConnection, Empty>;
160
168
  }
161
169
  /**
162
170
  * @generated from protobuf service TemporaryConnectionRpc
@@ -174,4 +182,37 @@ export class TemporaryConnectionRpcClient implements ITemporaryConnectionRpcClie
174
182
  const method = this.methods[0], opt = this._transport.mergeOptions(options);
175
183
  return stackIntercept<TemporaryConnectionRequest, TemporaryConnectionResponse>("unary", this._transport, method, opt, input);
176
184
  }
185
+ /**
186
+ * @generated from protobuf rpc: closeConnection(CloseTemporaryConnection) returns (google.protobuf.Empty);
187
+ */
188
+ closeConnection(input: CloseTemporaryConnection, options?: RpcOptions): UnaryCall<CloseTemporaryConnection, Empty> {
189
+ const method = this.methods[1], opt = this._transport.mergeOptions(options);
190
+ return stackIntercept<CloseTemporaryConnection, Empty>("unary", this._transport, method, opt, input);
191
+ }
192
+ }
193
+ /**
194
+ * @generated from protobuf service NodeInfoRpc
195
+ */
196
+ export interface INodeInfoRpcClient {
197
+ /**
198
+ * @generated from protobuf rpc: getInfo(NodeInfoRequest) returns (NodeInfoResponse);
199
+ */
200
+ getInfo(input: NodeInfoRequest, options?: RpcOptions): UnaryCall<NodeInfoRequest, NodeInfoResponse>;
201
+ }
202
+ /**
203
+ * @generated from protobuf service NodeInfoRpc
204
+ */
205
+ export class NodeInfoRpcClient implements INodeInfoRpcClient, ServiceInfo {
206
+ typeName = NodeInfoRpc.typeName;
207
+ methods = NodeInfoRpc.methods;
208
+ options = NodeInfoRpc.options;
209
+ constructor(private readonly _transport: RpcTransport) {
210
+ }
211
+ /**
212
+ * @generated from protobuf rpc: getInfo(NodeInfoRequest) returns (NodeInfoResponse);
213
+ */
214
+ getInfo(input: NodeInfoRequest, options?: RpcOptions): UnaryCall<NodeInfoRequest, NodeInfoResponse> {
215
+ const method = this.methods[0], opt = this._transport.mergeOptions(options);
216
+ return stackIntercept<NodeInfoRequest, NodeInfoResponse>("unary", this._transport, method, opt, input);
217
+ }
177
218
  }
@@ -1,6 +1,9 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/trackerless-network/protos/NetworkRpc.proto" (syntax proto3)
3
3
  // tslint:disable
4
+ import { NodeInfoResponse } from "./NetworkRpc";
5
+ import { NodeInfoRequest } from "./NetworkRpc";
6
+ import { CloseTemporaryConnection } from "./NetworkRpc";
4
7
  import { TemporaryConnectionResponse } from "./NetworkRpc";
5
8
  import { TemporaryConnectionRequest } from "./NetworkRpc";
6
9
  import { NeighborUpdate } from "./NetworkRpc";
@@ -66,4 +69,17 @@ export interface ITemporaryConnectionRpc<T = ServerCallContext> {
66
69
  * @generated from protobuf rpc: openConnection(TemporaryConnectionRequest) returns (TemporaryConnectionResponse);
67
70
  */
68
71
  openConnection(request: TemporaryConnectionRequest, context: T): Promise<TemporaryConnectionResponse>;
72
+ /**
73
+ * @generated from protobuf rpc: closeConnection(CloseTemporaryConnection) returns (google.protobuf.Empty);
74
+ */
75
+ closeConnection(request: CloseTemporaryConnection, context: T): Promise<Empty>;
76
+ }
77
+ /**
78
+ * @generated from protobuf service NodeInfoRpc
79
+ */
80
+ export interface INodeInfoRpc<T = ServerCallContext> {
81
+ /**
82
+ * @generated from protobuf rpc: getInfo(NodeInfoRequest) returns (NodeInfoResponse);
83
+ */
84
+ getInfo(request: NodeInfoRequest, context: T): Promise<NodeInfoResponse>;
69
85
  }
@@ -1,4 +1,4 @@
1
- // @generated by protobuf-ts 2.9.1 with parameter server_generic,generate_dependencies,long_type_number
1
+ // @generated by protobuf-ts 2.9.3 with parameter server_generic,generate_dependencies,long_type_number
2
2
  // @generated from protobuf file "packages/trackerless-network/protos/NetworkRpc.proto" (syntax proto3)
3
3
  // tslint:disable
4
4
  import { Empty } from "../../../google/protobuf/empty";
@@ -68,25 +68,29 @@ export interface StreamMessage {
68
68
  */
69
69
  content: Uint8Array;
70
70
  /**
71
- * @generated from protobuf field: bytes signature = 5;
71
+ * @generated from protobuf field: SignatureType signatureType = 5;
72
+ */
73
+ signatureType: SignatureType;
74
+ /**
75
+ * @generated from protobuf field: bytes signature = 6;
72
76
  */
73
77
  signature: Uint8Array;
74
78
  /**
75
79
  * this is a required field but in generated NetworkRpc.ts it is incorrectly annotated as optional (NET-1082)
76
80
  *
77
- * @generated from protobuf field: MessageID messageId = 6;
81
+ * @generated from protobuf field: MessageID messageId = 7;
78
82
  */
79
83
  messageId?: MessageID;
80
84
  /**
81
- * @generated from protobuf field: optional MessageRef previousMessageRef = 7;
85
+ * @generated from protobuf field: optional MessageRef previousMessageRef = 8;
82
86
  */
83
87
  previousMessageRef?: MessageRef;
84
88
  /**
85
- * @generated from protobuf field: optional string groupKeyId = 8;
89
+ * @generated from protobuf field: optional string groupKeyId = 9;
86
90
  */
87
91
  groupKeyId?: string;
88
92
  /**
89
- * @generated from protobuf field: optional GroupKey newGroupKey = 9;
93
+ * @generated from protobuf field: optional GroupKey newGroupKey = 10;
90
94
  */
91
95
  newGroupKey?: GroupKey;
92
96
  }
@@ -269,6 +273,63 @@ export interface TemporaryConnectionResponse {
269
273
  */
270
274
  accepted: boolean;
271
275
  }
276
+ /**
277
+ * @generated from protobuf message CloseTemporaryConnection
278
+ */
279
+ export interface CloseTemporaryConnection {
280
+ }
281
+ /**
282
+ * @generated from protobuf message StreamPartitionInfo
283
+ */
284
+ export interface StreamPartitionInfo {
285
+ /**
286
+ * @generated from protobuf field: string id = 1;
287
+ */
288
+ id: string;
289
+ /**
290
+ * @generated from protobuf field: repeated dht.PeerDescriptor controlLayerNeighbors = 2;
291
+ */
292
+ controlLayerNeighbors: PeerDescriptor[];
293
+ /**
294
+ * @generated from protobuf field: repeated dht.PeerDescriptor deliveryLayerNeighbors = 3;
295
+ */
296
+ deliveryLayerNeighbors: PeerDescriptor[];
297
+ }
298
+ /**
299
+ * @generated from protobuf message ControlLayerInfo
300
+ */
301
+ export interface ControlLayerInfo {
302
+ /**
303
+ * @generated from protobuf field: repeated dht.PeerDescriptor neighbors = 1;
304
+ */
305
+ neighbors: PeerDescriptor[];
306
+ /**
307
+ * @generated from protobuf field: repeated dht.PeerDescriptor connections = 2;
308
+ */
309
+ connections: PeerDescriptor[];
310
+ }
311
+ /**
312
+ * @generated from protobuf message NodeInfoRequest
313
+ */
314
+ export interface NodeInfoRequest {
315
+ }
316
+ /**
317
+ * @generated from protobuf message NodeInfoResponse
318
+ */
319
+ export interface NodeInfoResponse {
320
+ /**
321
+ * @generated from protobuf field: dht.PeerDescriptor peerDescriptor = 1;
322
+ */
323
+ peerDescriptor?: PeerDescriptor;
324
+ /**
325
+ * @generated from protobuf field: repeated StreamPartitionInfo streamPartitions = 2;
326
+ */
327
+ streamPartitions: StreamPartitionInfo[];
328
+ /**
329
+ * @generated from protobuf field: optional ControlLayerInfo controlLayer = 3;
330
+ */
331
+ controlLayer?: ControlLayerInfo;
332
+ }
272
333
  /**
273
334
  * @generated from protobuf enum StreamMessageType
274
335
  */
@@ -312,6 +373,19 @@ export enum EncryptionType {
312
373
  */
313
374
  AES = 1
314
375
  }
376
+ /**
377
+ * @generated from protobuf enum SignatureType
378
+ */
379
+ export enum SignatureType {
380
+ /**
381
+ * @generated from protobuf enum value: LEGACY_SECP256K1 = 0;
382
+ */
383
+ LEGACY_SECP256K1 = 0,
384
+ /**
385
+ * @generated from protobuf enum value: SECP256K1 = 1;
386
+ */
387
+ SECP256K1 = 1
388
+ }
315
389
  /**
316
390
  * @generated from protobuf enum ProxyDirection
317
391
  */
@@ -363,11 +437,12 @@ class StreamMessage$Type extends MessageType<StreamMessage> {
363
437
  { no: 2, name: "contentType", kind: "enum", T: () => ["ContentType", ContentType] },
364
438
  { no: 3, name: "encryptionType", kind: "enum", T: () => ["EncryptionType", EncryptionType] },
365
439
  { no: 4, name: "content", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
366
- { no: 5, name: "signature", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
367
- { no: 6, name: "messageId", kind: "message", T: () => MessageID },
368
- { no: 7, name: "previousMessageRef", kind: "message", T: () => MessageRef },
369
- { no: 8, name: "groupKeyId", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
370
- { no: 9, name: "newGroupKey", kind: "message", T: () => GroupKey }
440
+ { no: 5, name: "signatureType", kind: "enum", T: () => ["SignatureType", SignatureType] },
441
+ { no: 6, name: "signature", kind: "scalar", T: 12 /*ScalarType.BYTES*/ },
442
+ { no: 7, name: "messageId", kind: "message", T: () => MessageID },
443
+ { no: 8, name: "previousMessageRef", kind: "message", T: () => MessageRef },
444
+ { no: 9, name: "groupKeyId", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
445
+ { no: 10, name: "newGroupKey", kind: "message", T: () => GroupKey }
371
446
  ]);
372
447
  }
373
448
  }
@@ -545,6 +620,67 @@ class TemporaryConnectionResponse$Type extends MessageType<TemporaryConnectionRe
545
620
  * @generated MessageType for protobuf message TemporaryConnectionResponse
546
621
  */
547
622
  export const TemporaryConnectionResponse = new TemporaryConnectionResponse$Type();
623
+ // @generated message type with reflection information, may provide speed optimized methods
624
+ class CloseTemporaryConnection$Type extends MessageType<CloseTemporaryConnection> {
625
+ constructor() {
626
+ super("CloseTemporaryConnection", []);
627
+ }
628
+ }
629
+ /**
630
+ * @generated MessageType for protobuf message CloseTemporaryConnection
631
+ */
632
+ export const CloseTemporaryConnection = new CloseTemporaryConnection$Type();
633
+ // @generated message type with reflection information, may provide speed optimized methods
634
+ class StreamPartitionInfo$Type extends MessageType<StreamPartitionInfo> {
635
+ constructor() {
636
+ super("StreamPartitionInfo", [
637
+ { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
638
+ { no: 2, name: "controlLayerNeighbors", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor },
639
+ { no: 3, name: "deliveryLayerNeighbors", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor }
640
+ ]);
641
+ }
642
+ }
643
+ /**
644
+ * @generated MessageType for protobuf message StreamPartitionInfo
645
+ */
646
+ export const StreamPartitionInfo = new StreamPartitionInfo$Type();
647
+ // @generated message type with reflection information, may provide speed optimized methods
648
+ class ControlLayerInfo$Type extends MessageType<ControlLayerInfo> {
649
+ constructor() {
650
+ super("ControlLayerInfo", [
651
+ { no: 1, name: "neighbors", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor },
652
+ { no: 2, name: "connections", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => PeerDescriptor }
653
+ ]);
654
+ }
655
+ }
656
+ /**
657
+ * @generated MessageType for protobuf message ControlLayerInfo
658
+ */
659
+ export const ControlLayerInfo = new ControlLayerInfo$Type();
660
+ // @generated message type with reflection information, may provide speed optimized methods
661
+ class NodeInfoRequest$Type extends MessageType<NodeInfoRequest> {
662
+ constructor() {
663
+ super("NodeInfoRequest", []);
664
+ }
665
+ }
666
+ /**
667
+ * @generated MessageType for protobuf message NodeInfoRequest
668
+ */
669
+ export const NodeInfoRequest = new NodeInfoRequest$Type();
670
+ // @generated message type with reflection information, may provide speed optimized methods
671
+ class NodeInfoResponse$Type extends MessageType<NodeInfoResponse> {
672
+ constructor() {
673
+ super("NodeInfoResponse", [
674
+ { no: 1, name: "peerDescriptor", kind: "message", T: () => PeerDescriptor },
675
+ { no: 2, name: "streamPartitions", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => StreamPartitionInfo },
676
+ { no: 3, name: "controlLayer", kind: "message", T: () => ControlLayerInfo }
677
+ ]);
678
+ }
679
+ }
680
+ /**
681
+ * @generated MessageType for protobuf message NodeInfoResponse
682
+ */
683
+ export const NodeInfoResponse = new NodeInfoResponse$Type();
548
684
  /**
549
685
  * @generated ServiceType for protobuf service DeliveryRpc
550
686
  */
@@ -575,5 +711,12 @@ export const NeighborUpdateRpc = new ServiceType("NeighborUpdateRpc", [
575
711
  * @generated ServiceType for protobuf service TemporaryConnectionRpc
576
712
  */
577
713
  export const TemporaryConnectionRpc = new ServiceType("TemporaryConnectionRpc", [
578
- { name: "openConnection", options: {}, I: TemporaryConnectionRequest, O: TemporaryConnectionResponse }
714
+ { name: "openConnection", options: {}, I: TemporaryConnectionRequest, O: TemporaryConnectionResponse },
715
+ { name: "closeConnection", options: {}, I: CloseTemporaryConnection, O: Empty }
716
+ ]);
717
+ /**
718
+ * @generated ServiceType for protobuf service NodeInfoRpc
719
+ */
720
+ export const NodeInfoRpc = new ServiceType("NodeInfoRpc", [
721
+ { name: "getInfo", options: {}, I: NodeInfoRequest, O: NodeInfoResponse }
579
722
  ]);
@@ -1,10 +1,27 @@
1
1
  /* eslint-disable no-console */
2
2
 
3
- import { DhtNode, LatencyType, Simulator, getNodeIdFromPeerDescriptor, getRandomRegion } from '@streamr/dht'
4
- import { MessageID, StreamMessage, StreamMessageType, StreamPartID, StreamPartIDUtils, toStreamID, toStreamPartID } from '@streamr/protocol'
3
+ import {
4
+ DhtNode,
5
+ getNodeIdFromPeerDescriptor,
6
+ getRandomRegion,
7
+ LatencyType,
8
+ PeerDescriptor,
9
+ Simulator
10
+ } from '@streamr/dht'
11
+ import {
12
+ ContentType,
13
+ EncryptionType,
14
+ MessageID,
15
+ SignatureType,
16
+ StreamMessage,
17
+ StreamMessageType,
18
+ StreamPartID,
19
+ StreamPartIDUtils,
20
+ toStreamID,
21
+ toStreamPartID
22
+ } from '@streamr/protocol'
5
23
  import { hexToBinary, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
6
24
  import fs from 'fs'
7
- import { PeerDescriptor } from '@streamr/dht'
8
25
  import { NetworkNode } from '../../src/NetworkNode'
9
26
  import { streamPartIdToDataKey } from '../../src/logic/EntryPointDiscovery'
10
27
  import { createMockPeerDescriptor, createNetworkNodeWithSimulator } from '../utils/utils'
@@ -78,12 +95,15 @@ const measureJoiningTime = async () => {
78
95
  '2222' as any,
79
96
  'msgChainId'
80
97
  ),
81
- prevMsgRef: null,
82
98
  content: utf8ToBinary(JSON.stringify({
83
99
  hello: 'world'
84
100
  })),
85
101
  messageType: StreamMessageType.MESSAGE,
102
+ contentType: ContentType.JSON,
103
+ encryptionType: EncryptionType.NONE,
86
104
  signature: hexToBinary('0x1234'),
105
+ signatureType: SignatureType.SECP256K1,
106
+
87
107
  })
88
108
  streamParts.get(stream)!.broadcast(streamMessage)
89
109
  }, 1000)
@@ -138,11 +158,11 @@ run().then(() => {
138
158
  const foundData = nodes[0].stack.getLayer0Node().getDataFromDht(streamPartIdToDataKey(streamParts[0]))
139
159
  console.log(foundData)
140
160
  const layer0Node = currentNode.stack.getLayer0Node() as DhtNode
141
- console.log(layer0Node.getAllNeighborPeerDescriptors().length)
142
- console.log(layer0Node.getNumberOfConnections())
161
+ console.log(layer0Node.getNeighbors().length)
162
+ console.log(layer0Node.getConnectionCount())
143
163
  const streamPartDelivery = streamrNode.getStreamPartDelivery(streamParts[0])! as { layer1Node: Layer1Node, node: RandomGraphNode }
144
- console.log(streamPartDelivery.layer1Node.getAllNeighborPeerDescriptors())
145
- console.log(streamPartDelivery.node.getTargetNeighborIds())
164
+ console.log(streamPartDelivery.layer1Node.getNeighbors())
165
+ console.log(streamPartDelivery.node.getNeighbors())
146
166
  console.log(nodes[nodes.length - 1])
147
167
  if (publishInterval) {
148
168
  clearInterval(publishInterval)
@@ -1,4 +1,13 @@
1
- import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartIDUtils } from '@streamr/protocol'
1
+ import {
2
+ ContentType,
3
+ EncryptionType,
4
+ MessageID,
5
+ MessageRef,
6
+ SignatureType,
7
+ StreamMessage,
8
+ StreamMessageType,
9
+ StreamPartIDUtils
10
+ } from '@streamr/protocol'
2
11
  import { randomEthereumAddress } from '@streamr/test-utils'
3
12
  import { hexToBinary, utf8ToBinary, waitForCondition } from '@streamr/utils'
4
13
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
@@ -52,6 +61,9 @@ describe('inspect', () => {
52
61
  hello: 'world'
53
62
  })),
54
63
  messageType: StreamMessageType.MESSAGE,
64
+ contentType: ContentType.JSON,
65
+ encryptionType: EncryptionType.NONE,
66
+ signatureType: SignatureType.SECP256K1,
55
67
  signature: hexToBinary('0x1234'),
56
68
  })
57
69
 
@@ -1,4 +1,14 @@
1
- import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartID, StreamPartIDUtils } from '@streamr/protocol'
1
+ import {
2
+ ContentType,
3
+ EncryptionType,
4
+ MessageID,
5
+ MessageRef,
6
+ SignatureType,
7
+ StreamMessage,
8
+ StreamMessageType,
9
+ StreamPartID,
10
+ StreamPartIDUtils
11
+ } from '@streamr/protocol'
2
12
  import { randomEthereumAddress } from '@streamr/test-utils'
3
13
  import { hexToBinary, utf8ToBinary, waitForEvent3 } from '@streamr/utils'
4
14
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
@@ -22,6 +32,9 @@ const createMessage = (streamPartId: StreamPartID): StreamMessage => {
22
32
  hello: 'world'
23
33
  })),
24
34
  messageType: StreamMessageType.MESSAGE,
35
+ contentType: ContentType.JSON,
36
+ encryptionType: EncryptionType.NONE,
37
+ signatureType: SignatureType.SECP256K1,
25
38
  signature: hexToBinary('0x1234'),
26
39
  })
27
40
  }
@@ -1,4 +1,13 @@
1
- import { MessageID, MessageRef, StreamMessage, StreamMessageType, StreamPartIDUtils } from '@streamr/protocol'
1
+ import {
2
+ ContentType,
3
+ EncryptionType,
4
+ MessageID,
5
+ MessageRef,
6
+ SignatureType,
7
+ StreamMessage,
8
+ StreamMessageType,
9
+ StreamPartIDUtils
10
+ } from '@streamr/protocol'
2
11
  import { randomEthereumAddress } from '@streamr/test-utils'
3
12
  import { hexToBinary, utf8ToBinary, wait, waitForCondition, waitForEvent3 } from '@streamr/utils'
4
13
  import { NetworkNode, createNetworkNode } from '../../src/NetworkNode'
@@ -24,7 +33,10 @@ const MESSAGE = new StreamMessage({
24
33
  hello: 'world'
25
34
  })),
26
35
  messageType: StreamMessageType.MESSAGE,
27
- signature: hexToBinary('0x1234')
36
+ encryptionType: EncryptionType.NONE,
37
+ signatureType: SignatureType.SECP256K1,
38
+ signature: hexToBinary('0x1234'),
39
+ contentType: ContentType.JSON
28
40
  })
29
41
 
30
42
  describe('Proxy connections', () => {