@streamr/dht 0.0.1-tatum.6 → 0.0.1-tatum.8

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 (255) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +10 -0
  4. package/dist/src/connection/{RemoteConnectionLocker.js → ConnectionLockRpcRemote.js} +21 -35
  5. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -0
  6. package/dist/src/connection/ConnectionManager.d.ts +17 -41
  7. package/dist/src/connection/ConnectionManager.js +148 -212
  8. package/dist/src/connection/ConnectionManager.js.map +1 -1
  9. package/dist/src/connection/ConnectivityChecker.js +16 -13
  10. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  11. package/dist/src/connection/ConnectorFacade.d.ts +49 -0
  12. package/dist/src/connection/ConnectorFacade.js +83 -0
  13. package/dist/src/connection/ConnectorFacade.js.map +1 -0
  14. package/dist/src/connection/Handshaker.d.ts +1 -2
  15. package/dist/src/connection/Handshaker.js +1 -4
  16. package/dist/src/connection/Handshaker.js.map +1 -1
  17. package/dist/src/connection/ManagedConnection.d.ts +2 -6
  18. package/dist/src/connection/ManagedConnection.js +27 -36
  19. package/dist/src/connection/ManagedConnection.js.map +1 -1
  20. package/dist/src/connection/ManagedWebRtcConnection.d.ts +1 -1
  21. package/dist/src/connection/ManagedWebRtcConnection.js +2 -2
  22. package/dist/src/connection/ManagedWebRtcConnection.js.map +1 -1
  23. package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
  24. package/dist/src/connection/Simulator/Simulator.js +0 -5
  25. package/dist/src/connection/Simulator/Simulator.js.map +1 -1
  26. package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
  27. package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
  28. package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -3
  29. package/dist/src/connection/Simulator/SimulatorConnector.js +12 -14
  30. package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
  31. package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
  32. package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
  33. package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +3 -1
  34. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
  35. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
  36. package/dist/src/connection/WebRTC/{WebRtcConnector.d.ts → WebRtcConnectorRpcLocal.d.ts} +13 -13
  37. package/dist/src/connection/WebRTC/{WebRtcConnector.js → WebRtcConnectorRpcLocal.js} +46 -38
  38. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +1 -0
  39. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.d.ts +11 -0
  40. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js +55 -0
  41. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +1 -0
  42. package/dist/src/connection/WebRTC/iceServerAsString.d.ts +1 -1
  43. package/dist/src/connection/WebSocket/{WebSocketConnector.d.ts → WebSocketConnectorRpcLocal.d.ts} +21 -11
  44. package/dist/src/connection/WebSocket/{WebSocketConnector.js → WebSocketConnectorRpcLocal.js} +80 -59
  45. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +1 -0
  46. package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.d.ts +8 -0
  47. package/dist/src/connection/WebSocket/{RemoteWebSocketConnector.js → WebSocketConnectorRpcRemote.js} +12 -16
  48. package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.js.map +1 -0
  49. package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
  50. package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
  51. package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
  52. package/dist/src/dht/DhtNode.d.ts +18 -55
  53. package/dist/src/dht/DhtNode.js +122 -145
  54. package/dist/src/dht/DhtNode.js.map +1 -1
  55. package/dist/src/dht/{RemoteExternalApi.d.ts → ExternalApiRpcRemote.d.ts} +2 -2
  56. package/dist/src/dht/{RemoteExternalApi.js → ExternalApiRpcRemote.js} +5 -6
  57. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -0
  58. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
  59. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
  60. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  61. package/dist/src/dht/contact/ContactList.d.ts +0 -1
  62. package/dist/src/dht/contact/ContactList.js +0 -3
  63. package/dist/src/dht/contact/ContactList.js.map +1 -1
  64. package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
  65. package/dist/src/dht/contact/RandomContactList.js +0 -3
  66. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  67. package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
  68. package/dist/src/dht/contact/SortedContactList.js +0 -9
  69. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  70. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  71. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  72. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  73. package/dist/src/dht/discovery/PeerDiscovery.d.ts +12 -11
  74. package/dist/src/dht/discovery/PeerDiscovery.js +33 -37
  75. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  76. package/dist/src/dht/find/RecursiveFindSession.d.ts +9 -10
  77. package/dist/src/dht/find/RecursiveFindSession.js +13 -13
  78. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  79. package/dist/src/dht/find/RecursiveFinder.d.ts +9 -11
  80. package/dist/src/dht/find/RecursiveFinder.js +35 -36
  81. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  82. package/dist/src/dht/find/RemoteRecursiveFindSession.d.ts +1 -1
  83. package/dist/src/dht/find/RemoteRecursiveFindSession.js +4 -4
  84. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +1 -1
  85. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  86. package/dist/src/dht/registerExternalApiRpcMethods.js +4 -3
  87. package/dist/src/dht/registerExternalApiRpcMethods.js.map +1 -1
  88. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  89. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  90. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  91. package/dist/src/dht/routing/Router.d.ts +12 -15
  92. package/dist/src/dht/routing/Router.js +30 -33
  93. package/dist/src/dht/routing/Router.js.map +1 -1
  94. package/dist/src/dht/routing/{RemoteRouter.d.ts → RouterRpcRemote.d.ts} +2 -2
  95. package/dist/src/dht/routing/{RemoteRouter.js → RouterRpcRemote.js} +5 -5
  96. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -0
  97. package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
  98. package/dist/src/dht/routing/RoutingSession.js +6 -5
  99. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  100. package/dist/src/dht/store/{DataStore.d.ts → StoreRpcLocal.d.ts} +6 -6
  101. package/dist/src/dht/store/{DataStore.js → StoreRpcLocal.js} +34 -34
  102. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -0
  103. package/dist/src/dht/store/{RemoteStore.d.ts → StoreRpcRemote.d.ts} +2 -2
  104. package/dist/src/dht/store/{RemoteStore.js → StoreRpcRemote.js} +4 -4
  105. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -0
  106. package/dist/src/exports.d.ts +2 -8
  107. package/dist/src/exports.js +2 -14
  108. package/dist/src/exports.js.map +1 -1
  109. package/dist/src/helpers/PeerID.d.ts +0 -1
  110. package/dist/src/helpers/PeerID.js +0 -6
  111. package/dist/src/helpers/PeerID.js.map +1 -1
  112. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  113. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  114. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  115. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  116. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  117. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  118. package/dist/src/helpers/kademliaId.d.ts +1 -0
  119. package/dist/src/helpers/kademliaId.js +14 -0
  120. package/dist/src/helpers/kademliaId.js.map +1 -0
  121. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  122. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  123. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  124. package/dist/src/helpers/protoClasses.js +2 -2
  125. package/dist/src/helpers/protoClasses.js.map +1 -1
  126. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +29 -29
  127. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +39 -39
  128. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  129. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +49 -162
  130. package/dist/src/proto/packages/dht/protos/DhtRpc.js +47 -88
  131. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  132. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +15 -15
  133. package/dist/src/transport/RoutingRpcCommunicator.js +1 -0
  134. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  135. package/package.json +10 -9
  136. package/protos/DhtRpc.proto +30 -60
  137. package/src/connection/ConnectionLockHandler.ts +1 -1
  138. package/src/connection/ConnectionLockRpcRemote.ts +62 -0
  139. package/src/connection/ConnectionManager.ts +178 -274
  140. package/src/connection/ConnectivityChecker.ts +15 -12
  141. package/src/connection/ConnectorFacade.ts +140 -0
  142. package/src/connection/Handshaker.ts +0 -5
  143. package/src/connection/ManagedConnection.ts +26 -40
  144. package/src/connection/ManagedWebRtcConnection.ts +0 -2
  145. package/src/connection/Simulator/Simulator.ts +0 -7
  146. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  147. package/src/connection/Simulator/SimulatorConnector.ts +13 -19
  148. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  149. package/src/connection/WebRTC/NodeWebRtcConnection.ts +15 -14
  150. package/src/connection/WebRTC/{WebRtcConnector.ts → WebRtcConnectorRpcLocal.ts} +68 -56
  151. package/src/connection/WebRTC/WebRtcConnectorRpcRemote.ts +71 -0
  152. package/src/connection/WebRTC/iceServerAsString.ts +1 -1
  153. package/src/connection/WebSocket/{WebSocketConnector.ts → WebSocketConnectorRpcLocal.ts} +102 -79
  154. package/src/connection/WebSocket/WebSocketConnectorRpcRemote.ts +45 -0
  155. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  156. package/src/dht/DhtNode.ts +176 -203
  157. package/src/dht/{RemoteExternalApi.ts → ExternalApiRpcRemote.ts} +3 -4
  158. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
  159. package/src/dht/contact/ContactList.ts +0 -4
  160. package/src/dht/contact/RandomContactList.ts +0 -4
  161. package/src/dht/contact/SortedContactList.ts +0 -12
  162. package/src/dht/discovery/DiscoverySession.ts +20 -23
  163. package/src/dht/discovery/PeerDiscovery.ts +47 -45
  164. package/src/dht/find/RecursiveFindSession.ts +21 -22
  165. package/src/dht/find/RecursiveFinder.ts +45 -49
  166. package/src/dht/find/RemoteRecursiveFindSession.ts +6 -6
  167. package/src/dht/registerExternalApiRpcMethods.ts +8 -5
  168. package/src/dht/routing/DuplicateDetector.ts +3 -10
  169. package/src/dht/routing/Router.ts +39 -45
  170. package/src/dht/routing/{RemoteRouter.ts → RouterRpcRemote.ts} +4 -4
  171. package/src/dht/routing/RoutingSession.ts +15 -15
  172. package/src/dht/store/{DataStore.ts → StoreRpcLocal.ts} +42 -42
  173. package/src/dht/store/{RemoteStore.ts → StoreRpcRemote.ts} +2 -2
  174. package/src/exports.ts +2 -8
  175. package/src/helpers/PeerID.ts +0 -7
  176. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  177. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  178. package/src/helpers/kademliaId.ts +8 -0
  179. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  180. package/src/helpers/protoClasses.ts +4 -4
  181. package/src/proto/packages/dht/protos/DhtRpc.client.ts +54 -54
  182. package/src/proto/packages/dht/protos/DhtRpc.server.ts +15 -15
  183. package/src/proto/packages/dht/protos/DhtRpc.ts +77 -216
  184. package/src/transport/RoutingRpcCommunicator.ts +1 -0
  185. package/test/benchmark/KademliaCorrectness.test.ts +4 -2
  186. package/test/benchmark/RecursiveFind.test.ts +6 -6
  187. package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
  188. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  189. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  190. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  191. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  192. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  193. package/test/integration/ConnectionLocking.test.ts +32 -26
  194. package/test/integration/ConnectionManager.test.ts +90 -93
  195. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  196. package/test/integration/DhtRpc.test.ts +4 -6
  197. package/test/integration/Layer1-scale.test.ts +8 -8
  198. package/test/integration/MigrateData.test.ts +9 -9
  199. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  200. package/test/integration/RecursiveFind.test.ts +5 -5
  201. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  202. package/test/integration/RouteMessage.test.ts +7 -9
  203. package/test/integration/{RemoteRouter.test.ts → RouterRpcRemote.test.ts} +13 -14
  204. package/test/integration/RpcErrors.test.ts +25 -10
  205. package/test/integration/ScaleDownDht.test.ts +8 -8
  206. package/test/integration/SimultaneousConnections.test.ts +35 -36
  207. package/test/integration/Store.test.ts +8 -9
  208. package/test/integration/StoreAndDelete.test.ts +11 -11
  209. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  210. package/test/integration/{RemoteStore.test.ts → StoreRpcRemote.test.ts} +17 -18
  211. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  212. package/test/integration/WebRtcConnectorRpc.test.ts +17 -32
  213. package/test/integration/WebSocket.test.ts +4 -2
  214. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  215. package/test/integration/WebSocketConnectorRpc.test.ts +10 -15
  216. package/test/unit/DuplicateDetector.test.ts +3 -4
  217. package/test/unit/LocalDataStore.test.ts +6 -8
  218. package/test/unit/RandomContactList.test.ts +1 -1
  219. package/test/unit/RecursiveFinder.test.ts +13 -18
  220. package/test/unit/Router.test.ts +18 -21
  221. package/test/unit/WebSocketConnectorRpcLocal.test.ts +64 -0
  222. package/test/unit/WebSocketServer.test.ts +24 -12
  223. package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +1 -1
  224. package/test/utils/mock/RecursiveFinder.ts +2 -2
  225. package/test/utils/mock/Router.ts +9 -11
  226. package/test/utils/mock/Transport.ts +2 -2
  227. package/test/utils/utils.ts +55 -74
  228. package/dist/src/connection/RemoteConnectionLocker.d.ts +0 -13
  229. package/dist/src/connection/RemoteConnectionLocker.js.map +0 -1
  230. package/dist/src/connection/WebRTC/RemoteWebrtcConnector.d.ts +0 -12
  231. package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js +0 -74
  232. package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js.map +0 -1
  233. package/dist/src/connection/WebRTC/WebRtcConnector.js.map +0 -1
  234. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.d.ts +0 -9
  235. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +0 -1
  236. package/dist/src/connection/WebSocket/WebSocketConnector.js.map +0 -1
  237. package/dist/src/dht/DhtPeer.js.map +0 -1
  238. package/dist/src/dht/RemoteExternalApi.js.map +0 -1
  239. package/dist/src/dht/routing/RemoteRouter.js.map +0 -1
  240. package/dist/src/dht/store/DataStore.js.map +0 -1
  241. package/dist/src/dht/store/RemoteStore.js.map +0 -1
  242. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  243. package/dist/src/helpers/browser/isBrowser.js +0 -6
  244. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  245. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  246. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  247. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  248. package/src/connection/RemoteConnectionLocker.ts +0 -84
  249. package/src/connection/WebRTC/RemoteWebrtcConnector.ts +0 -93
  250. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +0 -49
  251. package/src/helpers/browser/isBrowser.ts +0 -1
  252. package/src/helpers/browser/isNodeJS.ts +0 -1
  253. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  254. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  255. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
@@ -1,5 +1,4 @@
1
1
  import {
2
- FindMode,
3
2
  Message,
4
3
  MessageType,
5
4
  NodeType,
@@ -10,40 +9,37 @@ import { PeerID, PeerIDKey } from '../../src/helpers/PeerID'
10
9
  import {
11
10
  createMockRoutingRpcCommunicator,
12
11
  createWrappedClosestPeersRequest,
13
- createRecursiveFindRequest
12
+ createFindRequest
14
13
  } from '../utils/utils'
15
14
  import { RecursiveFinder } from '../../src/dht/find/RecursiveFinder'
16
- import { DhtPeer } from '../../src/dht/DhtPeer'
15
+ import { RemoteDhtNode } from '../../src/dht/RemoteDhtNode'
17
16
  import { LocalDataStore } from '../../src/dht/store/LocalDataStore'
18
17
  import { v4 } from 'uuid'
19
18
  import { MockRouter } from '../utils/mock/Router'
20
19
  import { MockTransport } from '../utils/mock/Transport'
21
- import { isSamePeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
20
+ import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
22
21
 
23
22
  describe('RecursiveFinder', () => {
24
23
 
25
24
  let recursiveFinder: RecursiveFinder
26
- let connections: Map<PeerIDKey, DhtPeer>
25
+ let connections: Map<PeerIDKey, RemoteDhtNode>
27
26
 
28
- const peerId1 = PeerID.fromString('peerid')
29
27
  const peerDescriptor1: PeerDescriptor = {
30
- kademliaId: peerId1.value,
31
- type: NodeType.NODEJS,
32
- nodeName: 'peerid'
28
+ kademliaId: PeerID.fromString('peerid').value,
29
+ type: NodeType.NODEJS
33
30
  }
34
31
  const peerDescriptor2: PeerDescriptor = {
35
32
  kademliaId: PeerID.fromString('destination').value,
36
- type: NodeType.NODEJS,
37
- nodeName: 'destination'
33
+ type: NodeType.NODEJS
38
34
  }
39
- const recursiveFindRequest = createRecursiveFindRequest(FindMode.NODE)
35
+ const findRequest = createFindRequest(false)
40
36
  const message: Message = {
41
37
  serviceId: 'unknown',
42
38
  messageId: v4(),
43
39
  messageType: MessageType.RPC,
44
40
  body: {
45
- oneofKind: 'recursiveFindRequest',
46
- recursiveFindRequest
41
+ oneofKind: 'findRequest',
42
+ findRequest
47
43
  },
48
44
  sourceDescriptor: peerDescriptor1,
49
45
  targetDescriptor: peerDescriptor2
@@ -61,7 +57,6 @@ describe('RecursiveFinder', () => {
61
57
  connections = new Map()
62
58
  recursiveFinder = new RecursiveFinder({
63
59
  ownPeerDescriptor: peerDescriptor1,
64
- ownPeerId: peerId1,
65
60
  router: new MockRouter(),
66
61
  connections,
67
62
  serviceId: 'RecursiveFinder',
@@ -84,11 +79,11 @@ describe('RecursiveFinder', () => {
84
79
 
85
80
  it('startRecursiveFind with mode Node returns self if no peers', async () => {
86
81
  const res = await recursiveFinder.startRecursiveFind(PeerID.fromString('find').value)
87
- expect(isSamePeerDescriptor(res.closestNodes[0], peerDescriptor1)).toEqual(true)
82
+ expect(areEqualPeerDescriptors(res.closestNodes[0], peerDescriptor1)).toEqual(true)
88
83
  })
89
84
 
90
- it('RecursiveFinder server throws if payload is not recursiveFindRequest', async () => {
91
- const rpcWrapper = createWrappedClosestPeersRequest(peerDescriptor1, peerDescriptor2)
85
+ it('RecursiveFinder server throws if payload is not FindRequest', async () => {
86
+ const rpcWrapper = createWrappedClosestPeersRequest(peerDescriptor1)
92
87
  const badMessage: Message = {
93
88
  serviceId: 'unknown',
94
89
  messageId: v4(),
@@ -1,10 +1,9 @@
1
1
  import { Router } from '../../src/dht/routing/Router'
2
2
  import { Message, MessageType, NodeType, PeerDescriptor, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
3
3
  import { PeerID, PeerIDKey } from '../../src/helpers/PeerID'
4
- import { DhtPeer } from '../../src/dht/DhtPeer'
4
+ import { RemoteDhtNode } from '../../src/dht/RemoteDhtNode'
5
5
  import { createWrappedClosestPeersRequest, createMockRoutingRpcCommunicator } from '../utils/utils'
6
6
  import { v4 } from 'uuid'
7
- import { keyFromPeerDescriptor } from '../../src/helpers/peerIdFromPeerDescriptor'
8
7
 
9
8
  describe('Router', () => {
10
9
  let router: Router
@@ -12,14 +11,13 @@ describe('Router', () => {
12
11
  const peerId = PeerID.fromString('router')
13
12
  const peerDescriptor1: PeerDescriptor = {
14
13
  kademliaId: peerId.value,
15
- type: NodeType.NODEJS,
16
- nodeName: 'router'
14
+ type: NodeType.NODEJS
17
15
  }
18
16
  const peerDescriptor2: PeerDescriptor = {
19
17
  kademliaId: PeerID.fromString('destination').value,
20
- type: NodeType.NODEJS,
18
+ type: NodeType.NODEJS
21
19
  }
22
- const rpcWrapper = createWrappedClosestPeersRequest(peerDescriptor1, peerDescriptor2)
20
+ const rpcWrapper = createWrappedClosestPeersRequest(peerDescriptor1)
23
21
  const message: Message = {
24
22
  serviceId: 'unknown',
25
23
  messageId: v4(),
@@ -39,18 +37,17 @@ describe('Router', () => {
39
37
  destinationPeer: peerDescriptor1,
40
38
  sourcePeer: peerDescriptor2
41
39
  }
42
- let connections: Map<PeerIDKey, DhtPeer>
40
+ let connections: Map<PeerIDKey, RemoteDhtNode>
43
41
  const mockRpcCommunicator = createMockRoutingRpcCommunicator()
44
42
 
45
- const createMockDhtPeer = (destination: PeerDescriptor): DhtPeer => {
46
- return new DhtPeer(peerDescriptor1, destination, {} as any, 'router')
43
+ const createMockRemoteDhtNode = (destination: PeerDescriptor): RemoteDhtNode => {
44
+ return new RemoteDhtNode(peerDescriptor1, destination, {} as any, 'router')
47
45
  }
48
46
 
49
47
  beforeEach(() => {
50
48
  connections = new Map()
51
49
  router = new Router({
52
50
  ownPeerDescriptor: peerDescriptor1,
53
- ownPeerId: peerId,
54
51
  rpcCommunicator: mockRpcCommunicator,
55
52
  addContact: (_contact) => {},
56
53
  serviceId: 'router',
@@ -75,7 +72,7 @@ describe('Router', () => {
75
72
  })
76
73
 
77
74
  it('doRouteMessage with connections', () => {
78
- connections.set(PeerID.fromString('test').toKey(), createMockDhtPeer(peerDescriptor2))
75
+ connections.set(PeerID.fromString('test').toKey(), createMockRemoteDhtNode(peerDescriptor2))
79
76
  const ack = router.doRouteMessage({
80
77
  message,
81
78
  destinationPeer: peerDescriptor2,
@@ -88,36 +85,36 @@ describe('Router', () => {
88
85
  })
89
86
 
90
87
  it('route server is destination without connections', async () => {
91
- const ack = await router.routeMessage(routedMessage, {} as any)
88
+ const ack = await router.routeMessage(routedMessage)
92
89
  expect(ack.error).toEqual('')
93
90
  })
94
91
 
95
92
  it('route server with connections', async () => {
96
- connections.set(PeerID.fromString('test').toKey(), createMockDhtPeer(peerDescriptor2))
97
- const ack = await router.routeMessage(routedMessage, {} as any)
93
+ connections.set(PeerID.fromString('test').toKey(), createMockRemoteDhtNode(peerDescriptor2))
94
+ const ack = await router.routeMessage(routedMessage)
98
95
  expect(ack.error).toEqual('')
99
96
  })
100
97
 
101
98
  it('route server on duplicate message', async () => {
102
- router.addToDuplicateDetector(routedMessage.requestId, keyFromPeerDescriptor(peerDescriptor2))
103
- const ack = await router.routeMessage(routedMessage, {} as any)
99
+ router.addToDuplicateDetector(routedMessage.requestId)
100
+ const ack = await router.routeMessage(routedMessage)
104
101
  expect(ack.error).toEqual('message given to routeMessage() service is likely a duplicate')
105
102
  })
106
103
 
107
104
  it('forward server no connections', async () => {
108
- const ack = await router.forwardMessage(routedMessage, {} as any)
105
+ const ack = await router.forwardMessage(routedMessage)
109
106
  expect(ack.error).toEqual('No routing candidates found')
110
107
  })
111
108
 
112
109
  it('forward server with connections', async () => {
113
- connections.set(PeerID.fromString('test').toKey(), createMockDhtPeer(peerDescriptor2))
114
- const ack = await router.forwardMessage(routedMessage, {} as any)
110
+ connections.set(PeerID.fromString('test').toKey(), createMockRemoteDhtNode(peerDescriptor2))
111
+ const ack = await router.forwardMessage(routedMessage)
115
112
  expect(ack.error).toEqual('')
116
113
  })
117
114
 
118
115
  it('forward server on duplicate message', async () => {
119
- router.addToDuplicateDetector(routedMessage.requestId, keyFromPeerDescriptor(peerDescriptor2))
120
- const ack = await router.forwardMessage(routedMessage, {} as any)
116
+ router.addToDuplicateDetector(routedMessage.requestId)
117
+ const ack = await router.forwardMessage(routedMessage)
121
118
  expect(ack.error).toEqual('message given to forwardMessage() service is likely a duplicate')
122
119
  })
123
120
 
@@ -0,0 +1,64 @@
1
+ /* eslint-disable max-len */
2
+ import { WebSocketConnectorRpcLocal } from '../../src/connection/WebSocket/WebSocketConnectorRpcLocal'
3
+ import { ConnectivityMethod, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
4
+ import crypto from 'crypto'
5
+ import { MockTransport } from '../utils/mock/Transport'
6
+
7
+ const createMockPeerDescriptor = (nodeType: NodeType, websocket?: ConnectivityMethod): PeerDescriptor => {
8
+ return {
9
+ kademliaId: crypto.randomBytes(10),
10
+ type: nodeType,
11
+ websocket
12
+ }
13
+ }
14
+
15
+ describe('WebSocketConnectorRpcLocal', () => {
16
+
17
+ describe('isPossibleToFormConnection', () => {
18
+
19
+ const connector = new WebSocketConnectorRpcLocal({
20
+ transport: new MockTransport(),
21
+ canConnect: () => {}
22
+ } as any)
23
+
24
+ it('node without server', () => {
25
+ connector.setOwnPeerDescriptor(createMockPeerDescriptor(NodeType.NODEJS))
26
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: false }))).toBe(true)
27
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: true }))).toBe(true)
28
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS))).toBe(false)
29
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.BROWSER))).toBe(false)
30
+ })
31
+
32
+ it('node with TLS server', () => {
33
+ connector.setOwnPeerDescriptor(createMockPeerDescriptor(NodeType.NODEJS, { host: '1.1.1.1', port: 11, tls: true }))
34
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: false }))).toBe(true)
35
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: true }))).toBe(true)
36
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS))).toBe(true)
37
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.BROWSER))).toBe(true)
38
+ })
39
+
40
+ it('node with non-TLS server', () => {
41
+ connector.setOwnPeerDescriptor(createMockPeerDescriptor(NodeType.NODEJS, { host: '1.1.1.1', port: 11, tls: false }))
42
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: false }))).toBe(true)
43
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: true }))).toBe(true)
44
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS))).toBe(true)
45
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.BROWSER))).toBe(false)
46
+ })
47
+
48
+ it('node with non-TLS server in local network', () => {
49
+ connector.setOwnPeerDescriptor(createMockPeerDescriptor(NodeType.NODEJS, { host: '192.168.11.11', port: 11, tls: false }))
50
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: false }))).toBe(true)
51
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: true }))).toBe(true)
52
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS))).toBe(true)
53
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.BROWSER))).toBe(true)
54
+ })
55
+
56
+ it('browser', () => {
57
+ connector.setOwnPeerDescriptor(createMockPeerDescriptor(NodeType.BROWSER))
58
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: false }))).toBe(false)
59
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS, { host: '2.2.2.2', port: 22, tls: true }))).toBe(true)
60
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.NODEJS))).toBe(false)
61
+ expect(connector.isPossibleToFormConnection(createMockPeerDescriptor(NodeType.BROWSER))).toBe(false)
62
+ })
63
+ })
64
+ })
@@ -3,19 +3,25 @@ import { WebSocketServer } from '../../src/connection/WebSocket/WebSocketServer'
3
3
  describe('WebSocketServer', () => {
4
4
 
5
5
  it('starts and stops', async () => {
6
- const server = new WebSocketServer()
7
- const port = await server.start({ min: 19792, max: 19792 })
6
+ const server = new WebSocketServer({
7
+ portRange: { min: 19792, max: 19792 }
8
+ })
9
+ const port = await server.start()
8
10
  expect(port).toEqual(19792)
9
11
  await server.stop()
10
12
  })
11
13
 
12
14
  it('throws if server is already in use', async () => {
13
- const server1 = new WebSocketServer()
14
- const port = await server1.start({ min: 19792, max: 19792 })
15
+ const server1 = new WebSocketServer({
16
+ portRange: { min: 19792, max: 19792 }
17
+ })
18
+ const port = await server1.start()
15
19
  expect(port).toEqual(19792)
16
20
 
17
- const server2 = new WebSocketServer()
18
- await expect(server2.start({ min: 19792, max: 19792 }))
21
+ const server2 = new WebSocketServer({
22
+ portRange: { min: 19792, max: 19792 }
23
+ })
24
+ await expect(server2.start())
19
25
  .rejects
20
26
  .toThrow()
21
27
 
@@ -24,12 +30,16 @@ describe('WebSocketServer', () => {
24
30
  })
25
31
 
26
32
  it('Starts server in next port if first one is already in use', async () => {
27
- const server1 = new WebSocketServer()
28
- const port1 = await server1.start({ min: 19792, max: 19793 })
33
+ const server1 = new WebSocketServer({
34
+ portRange: { min: 19792, max: 19793 }
35
+ })
36
+ const port1 = await server1.start()
29
37
  expect(port1).toEqual(19792)
30
38
 
31
- const server2 = new WebSocketServer()
32
- const port2 = await server2.start({ min: 19792, max: 19793 })
39
+ const server2 = new WebSocketServer({
40
+ portRange: { min: 19792, max: 19793 }
41
+ })
42
+ const port2 = await server2.start()
33
43
  expect(port2).toEqual(19793)
34
44
 
35
45
  await server1.stop()
@@ -37,9 +47,11 @@ describe('WebSocketServer', () => {
37
47
  })
38
48
 
39
49
  it('throws if too big a port number is given', async () => {
40
- const server = new WebSocketServer()
50
+ const server = new WebSocketServer({
51
+ portRange: { min: 197923233, max: 197923233 }
52
+ })
41
53
 
42
- await expect(server.start({ min: 197923233, max: 197923233 }))
54
+ await expect(server.start())
43
55
  .rejects
44
56
  .toThrow()
45
57
 
@@ -1,4 +1,4 @@
1
- import { replaceInternalIpWithExternalIp } from '../../src/connection/WebRTC/WebRtcConnector'
1
+ import { replaceInternalIpWithExternalIp } from '../../src/connection/WebRTC/WebRtcConnectorRpcLocal'
2
2
 
3
3
  describe('replaceIpIfCandidateTypeIsHost', () => {
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { RecursiveFindResult, IRecursiveFinder } from '../../../src/dht/find/RecursiveFinder'
2
- import { RouteMessageAck, RouteMessageWrapper } from '../../../src/proto/packages/dht/protos/DhtRpc'
2
+ import { RouteMessageAck } from '../../../src/proto/packages/dht/protos/DhtRpc'
3
3
 
4
4
  export class MockRecursiveFinder implements IRecursiveFinder {
5
5
 
@@ -12,7 +12,7 @@ export class MockRecursiveFinder implements IRecursiveFinder {
12
12
  }
13
13
 
14
14
  // eslint-disable-next-line class-methods-use-this
15
- async findRecursively(_routedMessage: RouteMessageWrapper): Promise<RouteMessageAck> {
15
+ async findRecursively(): Promise<RouteMessageAck> {
16
16
  return RouteMessageAck.create()
17
17
  }
18
18
 
@@ -1,37 +1,35 @@
1
1
  import { IRouter } from '../../../src/dht/routing/Router'
2
- import { RoutingSession, RoutingMode } from '../../../src/dht/routing/RoutingSession'
3
- import { PeerDescriptor, Message, RouteMessageAck, RouteMessageWrapper } from '../../../src/proto/packages/dht/protos/DhtRpc'
4
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
2
+ import { RouteMessageAck } from '../../../src/proto/packages/dht/protos/DhtRpc'
5
3
 
6
4
  export class MockRouter implements IRouter {
7
5
 
8
6
  // eslint-disable-next-line class-methods-use-this
9
- addRoutingSession(_session: RoutingSession): void {
7
+ addRoutingSession(): void {
10
8
  return
11
9
  }
12
10
 
13
11
  // eslint-disable-next-line class-methods-use-this
14
- removeRoutingSession(_sessionId: string): void {
12
+ removeRoutingSession(): void {
15
13
  return
16
14
  }
17
15
 
18
16
  // eslint-disable-next-line class-methods-use-this
19
- addToDuplicateDetector(_messageId: string, _senderId: string, _message?: Message): void {
17
+ addToDuplicateDetector(): void {
20
18
  return
21
19
  }
22
20
 
23
21
  // eslint-disable-next-line class-methods-use-this
24
- checkDuplicate(_messageId: string): boolean {
22
+ isMostLikelyDuplicate(): boolean {
25
23
  return false
26
24
  }
27
25
 
28
26
  // eslint-disable-next-line class-methods-use-this
29
- doRouteMessage(_routedMessage: RouteMessageWrapper, _mode: RoutingMode): RouteMessageAck {
27
+ doRouteMessage(): RouteMessageAck {
30
28
  return RouteMessageAck.create()
31
29
  }
32
30
 
33
31
  // eslint-disable-next-line class-methods-use-this
34
- send(_msg: Message, _reachableThrough: PeerDescriptor[]): Promise<void> {
32
+ send(): Promise<void> {
35
33
  throw Error('Not implemented')
36
34
  }
37
35
 
@@ -41,12 +39,12 @@ export class MockRouter implements IRouter {
41
39
  }
42
40
 
43
41
  // eslint-disable-next-line class-methods-use-this
44
- async routeMessage(_routedMessage: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
42
+ async routeMessage(): Promise<RouteMessageAck> {
45
43
  return RouteMessageAck.create()
46
44
  }
47
45
 
48
46
  // eslint-disable-next-line class-methods-use-this
49
- async forwardMessage(_forwardMessage: RouteMessageWrapper, _context: ServerCallContext): Promise<RouteMessageAck> {
47
+ async forwardMessage(): Promise<RouteMessageAck> {
50
48
  return RouteMessageAck.create()
51
49
  }
52
50
 
@@ -1,11 +1,11 @@
1
1
  import { ITransport, TransportEvents } from '../../../src/transport/ITransport'
2
2
  import { EventEmitter } from 'eventemitter3'
3
- import { Message, PeerDescriptor } from '../../../src/proto/packages/dht/protos/DhtRpc'
3
+ import { PeerDescriptor } from '../../../src/proto/packages/dht/protos/DhtRpc'
4
4
 
5
5
  export class MockTransport extends EventEmitter<TransportEvents> implements ITransport {
6
6
 
7
7
  // eslint-disable-next-line class-methods-use-this
8
- async send(_msg: Message, _doNotConnect?: boolean): Promise<void> {
8
+ async send(): Promise<void> {
9
9
 
10
10
  }
11
11