@streamr/dht 100.0.0-pretestnet.2 → 100.0.0-pretestnet.3

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 (316) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +7 -8
  2. package/dist/src/connection/ConnectionLockHandler.js +16 -14
  3. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  4. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +20 -0
  5. package/dist/src/connection/ConnectionLockRpcLocal.js +47 -0
  6. package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -0
  7. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +4 -3
  8. package/dist/src/connection/ConnectionLockRpcRemote.js +6 -6
  9. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  10. package/dist/src/connection/ConnectionManager.d.ts +5 -8
  11. package/dist/src/connection/ConnectionManager.js +77 -107
  12. package/dist/src/connection/ConnectionManager.js.map +1 -1
  13. package/dist/src/connection/ConnectivityChecker.d.ts +7 -6
  14. package/dist/src/connection/ConnectivityChecker.js +23 -20
  15. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  16. package/dist/src/connection/ConnectorFacade.d.ts +15 -12
  17. package/dist/src/connection/ConnectorFacade.js +61 -26
  18. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  19. package/dist/src/connection/Handshaker.d.ts +2 -2
  20. package/dist/src/connection/Handshaker.js +28 -28
  21. package/dist/src/connection/Handshaker.js.map +1 -1
  22. package/dist/src/connection/IConnection.d.ts +5 -6
  23. package/dist/src/connection/IConnection.js.map +1 -1
  24. package/dist/src/connection/ManagedConnection.d.ts +3 -4
  25. package/dist/src/connection/ManagedConnection.js +30 -30
  26. package/dist/src/connection/ManagedConnection.js.map +1 -1
  27. package/dist/src/connection/ManagedWebrtcConnection.d.ts +7 -0
  28. package/dist/src/connection/ManagedWebrtcConnection.js +20 -0
  29. package/dist/src/connection/ManagedWebrtcConnection.js.map +1 -0
  30. package/dist/src/connection/{Simulator → simulator}/Simulator.js +3 -3
  31. package/dist/src/connection/{Simulator → simulator}/Simulator.js.map +1 -1
  32. package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.d.ts +3 -4
  33. package/dist/src/connection/{Simulator → simulator}/SimulatorConnection.js +22 -22
  34. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -0
  35. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.d.ts +2 -2
  36. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js +11 -11
  37. package/dist/src/connection/{Simulator → simulator}/SimulatorConnector.js.map +1 -1
  38. package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.d.ts +1 -1
  39. package/dist/src/connection/{Simulator → simulator}/SimulatorTransport.js +2 -2
  40. package/dist/src/connection/simulator/SimulatorTransport.js.map +1 -0
  41. package/dist/src/connection/{Simulator → simulator}/pings.js.map +1 -1
  42. package/dist/src/connection/{WebRTC/IWebRtcConnection.d.ts → webrtc/IWebrtcConnection.d.ts} +2 -2
  43. package/dist/src/connection/{WebRTC/IWebRtcConnection.js → webrtc/IWebrtcConnection.js} +1 -1
  44. package/dist/src/connection/webrtc/IWebrtcConnection.js.map +1 -0
  45. package/dist/src/connection/{WebRTC/NodeWebRtcConnection.d.ts → webrtc/NodeWebrtcConnection.d.ts} +6 -7
  46. package/dist/src/connection/{WebRTC/NodeWebRtcConnection.js → webrtc/NodeWebrtcConnection.js} +36 -36
  47. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -0
  48. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +38 -0
  49. package/dist/src/connection/webrtc/WebrtcConnector.js +178 -0
  50. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -0
  51. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +26 -0
  52. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +99 -0
  53. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -0
  54. package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.d.ts → webrtc/WebrtcConnectorRpcRemote.d.ts} +4 -4
  55. package/dist/src/connection/{WebRTC/WebRtcConnectorRpcRemote.js → webrtc/WebrtcConnectorRpcRemote.js} +6 -8
  56. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -0
  57. package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.d.ts +1 -1
  58. package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js.map +1 -1
  59. package/dist/src/connection/websocket/AutoCertifierClientFacade.d.ts +26 -0
  60. package/dist/src/connection/websocket/AutoCertifierClientFacade.js +37 -0
  61. package/dist/src/connection/websocket/AutoCertifierClientFacade.js.map +1 -0
  62. package/dist/src/connection/{WebSocket/ClientWebSocket.d.ts → websocket/ClientWebsocket.d.ts} +5 -4
  63. package/dist/src/connection/{WebSocket/ClientWebSocket.js → websocket/ClientWebsocket.js} +20 -16
  64. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -0
  65. package/dist/src/connection/{WebSocket/ServerWebSocket.d.ts → websocket/ServerWebsocket.d.ts} +2 -2
  66. package/dist/src/connection/{WebSocket/ServerWebSocket.js → websocket/ServerWebsocket.js} +23 -27
  67. package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -0
  68. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcLocal.d.ts → websocket/WebsocketConnector.d.ts} +23 -15
  69. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcLocal.js → websocket/WebsocketConnector.js} +107 -101
  70. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -0
  71. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +17 -0
  72. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +26 -0
  73. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -0
  74. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.d.ts → websocket/WebsocketConnectorRpcRemote.d.ts} +3 -3
  75. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js → websocket/WebsocketConnectorRpcRemote.js} +5 -10
  76. package/dist/src/connection/{WebSocket/WebSocketConnectorRpcRemote.js.map → websocket/WebsocketConnectorRpcRemote.js.map} +1 -1
  77. package/dist/src/connection/{WebSocket/WebSocketServer.d.ts → websocket/WebsocketServer.d.ts} +6 -3
  78. package/dist/src/connection/{WebSocket/WebSocketServer.js → websocket/WebsocketServer.js} +39 -19
  79. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -0
  80. package/dist/src/dht/DhtNode.d.ts +11 -19
  81. package/dist/src/dht/DhtNode.js +119 -150
  82. package/dist/src/dht/DhtNode.js.map +1 -1
  83. package/dist/src/dht/DhtNodeRpcLocal.d.ts +22 -0
  84. package/dist/src/dht/DhtNodeRpcLocal.js +42 -0
  85. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -0
  86. package/dist/src/dht/{RemoteDhtNode.d.ts → DhtNodeRpcRemote.d.ts} +5 -3
  87. package/dist/src/dht/{RemoteDhtNode.js → DhtNodeRpcRemote.js} +17 -21
  88. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -0
  89. package/dist/src/dht/ExternalApiRpcLocal.d.ts +16 -0
  90. package/dist/src/dht/ExternalApiRpcLocal.js +30 -0
  91. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -0
  92. package/dist/src/dht/ExternalApiRpcRemote.d.ts +1 -1
  93. package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
  94. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  95. package/dist/src/dht/contact/Remote.d.ts +4 -1
  96. package/dist/src/dht/contact/Remote.js +28 -2
  97. package/dist/src/dht/contact/Remote.js.map +1 -1
  98. package/dist/src/dht/contact/SortedContactList.d.ts +2 -2
  99. package/dist/src/dht/contact/SortedContactList.js +3 -3
  100. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  101. package/dist/src/dht/discovery/DiscoverySession.d.ts +9 -7
  102. package/dist/src/dht/discovery/DiscoverySession.js +8 -8
  103. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  104. package/dist/src/dht/discovery/PeerDiscovery.d.ts +7 -10
  105. package/dist/src/dht/discovery/PeerDiscovery.js +5 -5
  106. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  107. package/dist/src/dht/find/FindRpcLocal.d.ts +14 -0
  108. package/dist/src/dht/find/FindRpcLocal.js +25 -0
  109. package/dist/src/dht/find/FindRpcLocal.js.map +1 -0
  110. package/dist/src/dht/find/{RecursiveFindSession.d.ts → FindSession.d.ts} +12 -13
  111. package/dist/src/dht/find/{RecursiveFindSession.js → FindSession.js} +17 -15
  112. package/dist/src/dht/find/FindSession.js.map +1 -0
  113. package/dist/src/dht/find/FindSessionRpcLocal.d.ts +12 -0
  114. package/dist/src/dht/find/FindSessionRpcLocal.js +17 -0
  115. package/dist/src/dht/find/FindSessionRpcLocal.js.map +1 -0
  116. package/dist/src/dht/find/{RemoteRecursiveFindSession.d.ts → FindSessionRpcRemote.d.ts} +2 -2
  117. package/dist/src/dht/find/{RemoteRecursiveFindSession.js → FindSessionRpcRemote.js} +5 -5
  118. package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -0
  119. package/dist/src/dht/find/{RecursiveFinder.d.ts → Finder.d.ts} +16 -19
  120. package/dist/src/dht/find/{RecursiveFinder.js → Finder.js} +50 -46
  121. package/dist/src/dht/find/Finder.js.map +1 -0
  122. package/dist/src/dht/routing/FindRpcRemote.d.ts +6 -0
  123. package/dist/src/dht/routing/FindRpcRemote.js +41 -0
  124. package/dist/src/dht/routing/FindRpcRemote.js.map +1 -0
  125. package/dist/src/dht/routing/Router.d.ts +10 -17
  126. package/dist/src/dht/routing/Router.js +47 -90
  127. package/dist/src/dht/routing/Router.js.map +1 -1
  128. package/dist/src/dht/routing/RouterRpcLocal.d.ts +22 -0
  129. package/dist/src/dht/routing/RouterRpcLocal.js +66 -0
  130. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -0
  131. package/dist/src/dht/routing/RouterRpcRemote.d.ts +0 -1
  132. package/dist/src/dht/routing/RouterRpcRemote.js +15 -43
  133. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  134. package/dist/src/dht/routing/RoutingSession.d.ts +17 -8
  135. package/dist/src/dht/routing/RoutingSession.js +124 -131
  136. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  137. package/dist/src/dht/routing/getPreviousPeer.d.ts +2 -0
  138. package/dist/src/dht/routing/getPreviousPeer.js +9 -0
  139. package/dist/src/dht/routing/getPreviousPeer.js.map +1 -0
  140. package/dist/src/dht/store/StoreRpcLocal.d.ts +11 -8
  141. package/dist/src/dht/store/StoreRpcLocal.js +25 -24
  142. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  143. package/dist/src/dht/store/StoreRpcRemote.js +3 -7
  144. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  145. package/dist/src/exports.d.ts +11 -5
  146. package/dist/src/exports.js +17 -4
  147. package/dist/src/exports.js.map +1 -1
  148. package/dist/src/helpers/Connectivity.d.ts +4 -0
  149. package/dist/src/helpers/Connectivity.js +24 -0
  150. package/dist/src/helpers/Connectivity.js.map +1 -0
  151. package/dist/src/helpers/errors.d.ts +3 -3
  152. package/dist/src/helpers/errors.js +7 -7
  153. package/dist/src/helpers/protoClasses.js +3 -3
  154. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +56 -39
  155. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +49 -36
  156. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  157. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +64 -84
  158. package/dist/src/proto/packages/dht/protos/DhtRpc.js +64 -66
  159. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  160. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +26 -21
  161. package/dist/src/rpc-protocol/DhtCallContext.d.ts +0 -1
  162. package/dist/src/rpc-protocol/DhtCallContext.js.map +1 -1
  163. package/dist/src/transport/ITransport.d.ts +5 -6
  164. package/dist/src/transport/ListeningRpcCommunicator.d.ts +2 -1
  165. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  166. package/dist/src/transport/RoutingRpcCommunicator.d.ts +2 -1
  167. package/dist/src/transport/RoutingRpcCommunicator.js +0 -1
  168. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  169. package/dist/src/types/ServiceID.d.ts +1 -0
  170. package/dist/src/types/ServiceID.js +3 -0
  171. package/dist/src/types/ServiceID.js.map +1 -0
  172. package/karma.config.js +4 -4
  173. package/package.json +10 -8
  174. package/protos/DhtRpc.proto +32 -35
  175. package/src/connection/ConnectionLockHandler.ts +19 -17
  176. package/src/connection/ConnectionLockRpcLocal.ts +74 -0
  177. package/src/connection/ConnectionLockRpcRemote.ts +7 -6
  178. package/src/connection/ConnectionManager.ts +59 -95
  179. package/src/connection/ConnectivityChecker.ts +30 -26
  180. package/src/connection/ConnectorFacade.ts +74 -34
  181. package/src/connection/Handshaker.ts +9 -9
  182. package/src/connection/IConnection.ts +5 -6
  183. package/src/connection/ManagedConnection.ts +21 -22
  184. package/src/connection/{ManagedWebRtcConnection.ts → ManagedWebrtcConnection.ts} +9 -9
  185. package/src/connection/{Simulator → simulator}/Simulator.ts +4 -4
  186. package/src/connection/{Simulator → simulator}/SimulatorConnection.ts +23 -24
  187. package/src/connection/{Simulator → simulator}/SimulatorConnector.ts +13 -13
  188. package/src/connection/{Simulator → simulator}/SimulatorTransport.ts +2 -2
  189. package/src/connection/{WebRTC/BrowserWebRtcConnection.ts → webrtc/BrowserWebrtcConnection.ts} +12 -13
  190. package/src/connection/{WebRTC/IWebRtcConnection.ts → webrtc/IWebrtcConnection.ts} +2 -2
  191. package/src/connection/{WebRTC/NodeWebRtcConnection.ts → webrtc/NodeWebrtcConnection.ts} +32 -33
  192. package/src/connection/webrtc/WebrtcConnector.ts +225 -0
  193. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +132 -0
  194. package/src/connection/{WebRTC/WebRtcConnectorRpcRemote.ts → webrtc/WebrtcConnectorRpcRemote.ts} +6 -7
  195. package/src/connection/{WebRTC → webrtc}/iceServerAsString.ts +1 -1
  196. package/src/connection/websocket/AutoCertifierClientFacade.ts +91 -0
  197. package/src/connection/{WebSocket/ClientWebSocket.ts → websocket/ClientWebsocket.ts} +19 -17
  198. package/src/connection/{WebSocket/ServerWebSocket.ts → websocket/ServerWebsocket.ts} +21 -27
  199. package/src/connection/{WebSocket/WebSocketConnectorRpcLocal.ts → websocket/WebsocketConnector.ts} +109 -100
  200. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +41 -0
  201. package/src/connection/{WebSocket/WebSocketConnectorRpcRemote.ts → websocket/WebsocketConnectorRpcRemote.ts} +6 -12
  202. package/src/connection/{WebSocket/WebSocketServer.ts → websocket/WebsocketServer.ts} +40 -22
  203. package/src/dht/DhtNode.ts +144 -179
  204. package/src/dht/DhtNodeRpcLocal.ts +68 -0
  205. package/src/dht/{RemoteDhtNode.ts → DhtNodeRpcRemote.ts} +12 -13
  206. package/src/dht/ExternalApiRpcLocal.ts +46 -0
  207. package/src/dht/ExternalApiRpcRemote.ts +4 -4
  208. package/src/dht/contact/Remote.ts +32 -4
  209. package/src/dht/contact/SortedContactList.ts +4 -4
  210. package/src/dht/discovery/DiscoverySession.ts +23 -20
  211. package/src/dht/discovery/PeerDiscovery.ts +14 -17
  212. package/src/dht/find/FindRpcLocal.ts +35 -0
  213. package/src/dht/find/{RecursiveFindSession.ts → FindSession.ts} +25 -25
  214. package/src/dht/find/FindSessionRpcLocal.ts +25 -0
  215. package/src/dht/find/{RemoteRecursiveFindSession.ts → FindSessionRpcRemote.ts} +9 -5
  216. package/src/dht/find/{RecursiveFinder.ts → Finder.ts} +77 -71
  217. package/src/dht/routing/FindRpcRemote.ts +40 -0
  218. package/src/dht/routing/Router.ts +69 -105
  219. package/src/dht/routing/RouterRpcLocal.ts +81 -0
  220. package/src/dht/routing/RouterRpcRemote.ts +15 -45
  221. package/src/dht/routing/RoutingSession.ts +56 -61
  222. package/src/dht/routing/getPreviousPeer.ts +6 -0
  223. package/src/dht/store/StoreRpcLocal.ts +44 -37
  224. package/src/dht/store/StoreRpcRemote.ts +4 -8
  225. package/src/exports.ts +11 -5
  226. package/src/helpers/Connectivity.ts +19 -0
  227. package/src/helpers/errors.ts +3 -3
  228. package/src/helpers/protoClasses.ts +6 -6
  229. package/src/proto/packages/dht/protos/DhtRpc.client.ts +75 -59
  230. package/src/proto/packages/dht/protos/DhtRpc.server.ts +26 -21
  231. package/src/proto/packages/dht/protos/DhtRpc.ts +87 -114
  232. package/src/rpc-protocol/DhtCallContext.ts +0 -1
  233. package/src/transport/ITransport.ts +5 -8
  234. package/src/transport/ListeningRpcCommunicator.ts +2 -1
  235. package/src/transport/RoutingRpcCommunicator.ts +3 -4
  236. package/src/types/ServiceID.ts +1 -0
  237. package/test/benchmark/{RecursiveFind.test.ts → Find.test.ts} +6 -6
  238. package/test/benchmark/KademliaCorrectness.test.ts +2 -2
  239. package/test/benchmark/kademlia-simulation/SimulationNode.ts +3 -3
  240. package/test/end-to-end/Layer0-Layer1.test.ts +13 -5
  241. package/test/end-to-end/Layer0.test.ts +35 -17
  242. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +24 -6
  243. package/test/end-to-end/{Layer0WebRTC-Layer1.test.ts → Layer0Webrtc-Layer1.test.ts} +1 -1
  244. package/test/end-to-end/{Layer0WebRTC.test.ts → Layer0Webrtc.test.ts} +14 -10
  245. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +8 -4
  246. package/test/end-to-end/{Layer1-Scale-WebRTC.test.ts → Layer1-Scale-Webrtc.test.ts} +2 -2
  247. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +52 -0
  248. package/test/end-to-end/{WebSocketConnectionRequest.test.ts → WebsocketConnectionRequest.test.ts} +16 -8
  249. package/test/end-to-end/memory-leak.test.ts +85 -0
  250. package/test/integration/ConnectionLocking.test.ts +4 -4
  251. package/test/integration/ConnectionManager.test.ts +37 -28
  252. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  253. package/test/integration/DhtNodeExternalAPI.test.ts +10 -10
  254. package/test/integration/{RemoteDhtNode.test.ts → DhtNodeRpcRemote.test.ts} +10 -10
  255. package/test/integration/DhtRpc.test.ts +5 -5
  256. package/test/integration/{RecursiveFind.test.ts → Find.test.ts} +3 -3
  257. package/test/integration/Layer1-scale.test.ts +1 -1
  258. package/test/integration/MigrateData.test.ts +6 -5
  259. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
  260. package/test/integration/MultipleEntryPointJoining.test.ts +6 -6
  261. package/test/integration/RouteMessage.test.ts +26 -26
  262. package/test/integration/RpcErrors.test.ts +10 -10
  263. package/test/integration/ScaleDownDht.test.ts +3 -3
  264. package/test/integration/SimultaneousConnections.test.ts +10 -7
  265. package/test/integration/Store.test.ts +1 -1
  266. package/test/integration/StoreAndDelete.test.ts +1 -1
  267. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +12 -12
  268. package/test/integration/{WebRtcConnectionManagement.test.ts → WebrtcConnectionManagement.test.ts} +4 -4
  269. package/test/integration/{WebRtcConnectorRpc.test.ts → WebrtcConnectorRpc.test.ts} +7 -8
  270. package/test/integration/{WebSocket.test.ts → Websocket.test.ts} +14 -13
  271. package/test/integration/{WebSocketConnectionManagement.test.ts → WebsocketConnectionManagement.test.ts} +4 -4
  272. package/test/integration/{WebSocketConnectorRpc.test.ts → WebsocketConnectorRpc.test.ts} +15 -15
  273. package/test/unit/AutoCertifierClientFacade.test.ts +58 -0
  274. package/test/unit/ConnectivityHelpers.test.ts +69 -0
  275. package/test/unit/{RecursiveFinder.test.ts → Finder.test.ts} +19 -17
  276. package/test/unit/Router.test.ts +26 -26
  277. package/test/unit/UUID.test.ts +1 -1
  278. package/test/unit/{WebSocketConnectorRpcLocal.test.ts → WebsocketConnector.test.ts} +8 -8
  279. package/test/unit/{WebSocketServer.test.ts → WebsocketServer.test.ts} +20 -14
  280. package/test/unit/webrtcReplaceInternalIpWithExternalIp.test.ts +1 -1
  281. package/test/utils/FakeRpcCommunicator.ts +23 -0
  282. package/test/utils/mock/Transport.ts +1 -1
  283. package/test/utils/utils.ts +14 -24
  284. package/tsconfig.browser.json +1 -1
  285. package/tsconfig.jest.json +3 -2
  286. package/tsconfig.node.json +3 -2
  287. package/dist/src/connection/ManagedWebRtcConnection.d.ts +0 -7
  288. package/dist/src/connection/ManagedWebRtcConnection.js +0 -20
  289. package/dist/src/connection/ManagedWebRtcConnection.js.map +0 -1
  290. package/dist/src/connection/Simulator/SimulatorConnection.js.map +0 -1
  291. package/dist/src/connection/Simulator/SimulatorTransport.js.map +0 -1
  292. package/dist/src/connection/WebRTC/IWebRtcConnection.js.map +0 -1
  293. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +0 -1
  294. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.d.ts +0 -51
  295. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js +0 -249
  296. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +0 -1
  297. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +0 -1
  298. package/dist/src/connection/WebSocket/ClientWebSocket.js.map +0 -1
  299. package/dist/src/connection/WebSocket/ServerWebSocket.js.map +0 -1
  300. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +0 -1
  301. package/dist/src/connection/WebSocket/WebSocketServer.js.map +0 -1
  302. package/dist/src/dht/RemoteDhtNode.js.map +0 -1
  303. package/dist/src/dht/find/RecursiveFindSession.js.map +0 -1
  304. package/dist/src/dht/find/RecursiveFinder.js.map +0 -1
  305. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +0 -1
  306. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +0 -2
  307. package/dist/src/dht/registerExternalApiRpcMethods.js +0 -32
  308. package/dist/src/dht/registerExternalApiRpcMethods.js.map +0 -1
  309. package/src/connection/WebRTC/WebRtcConnectorRpcLocal.ts +0 -335
  310. package/src/dht/registerExternalApiRpcMethods.ts +0 -44
  311. package/test/utils/mock/RecursiveFinder.ts +0 -19
  312. /package/dist/src/connection/{Simulator → simulator}/Simulator.d.ts +0 -0
  313. /package/dist/src/connection/{Simulator → simulator}/pings.d.ts +0 -0
  314. /package/dist/src/connection/{Simulator → simulator}/pings.js +0 -0
  315. /package/dist/src/connection/{WebRTC → webrtc}/iceServerAsString.js +0 -0
  316. /package/src/connection/{Simulator → simulator}/pings.ts +0 -0
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DhtNode = exports.createPeerDescriptor = void 0;
7
- const RemoteDhtNode_1 = require("./RemoteDhtNode");
7
+ const DhtNodeRpcRemote_1 = require("./DhtNodeRpcRemote");
8
8
  const k_bucket_1 = __importDefault(require("k-bucket"));
9
9
  const eventemitter3_1 = require("eventemitter3");
10
10
  const SortedContactList_1 = require("./contact/SortedContactList");
@@ -18,16 +18,17 @@ const proto_rpc_1 = require("@streamr/proto-rpc");
18
18
  const RandomContactList_1 = require("./contact/RandomContactList");
19
19
  const peerIdFromPeerDescriptor_1 = require("../helpers/peerIdFromPeerDescriptor");
20
20
  const Router_1 = require("./routing/Router");
21
- const RecursiveFinder_1 = require("./find/RecursiveFinder");
21
+ const Finder_1 = require("./find/Finder");
22
22
  const StoreRpcLocal_1 = require("./store/StoreRpcLocal");
23
23
  const PeerDiscovery_1 = require("./discovery/PeerDiscovery");
24
24
  const LocalDataStore_1 = require("./store/LocalDataStore");
25
- const registerExternalApiRpcMethods_1 = require("./registerExternalApiRpcMethods");
26
25
  const ExternalApiRpcRemote_1 = require("./ExternalApiRpcRemote");
27
26
  const UUID_1 = require("../helpers/UUID");
28
27
  const isBrowserEnvironment_1 = require("../helpers/browser/isBrowserEnvironment");
29
28
  const lodash_1 = require("lodash");
30
29
  const ConnectorFacade_1 = require("../connection/ConnectorFacade");
30
+ const DhtNodeRpcLocal_1 = require("./DhtNodeRpcLocal");
31
+ const ExternalApiRpcLocal_1 = require("./ExternalApiRpcLocal");
31
32
  const logger = new utils_1.Logger(module);
32
33
  const createPeerDescriptor = (msg, peerId) => {
33
34
  let kademliaId;
@@ -41,7 +42,6 @@ const createPeerDescriptor = (msg, peerId) => {
41
42
  const ret = { kademliaId, type: nodeType };
42
43
  if (msg && msg.websocket) {
43
44
  ret.websocket = { host: msg.websocket.host, port: msg.websocket.port, tls: msg.websocket.tls };
44
- ret.openInternet = true;
45
45
  }
46
46
  return ret;
47
47
  };
@@ -53,54 +53,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
53
53
  this.localDataStore = new LocalDataStore_1.LocalDataStore();
54
54
  this.started = false;
55
55
  this.stopped = false;
56
- this.initKBuckets = (selfId) => {
57
- this.bucket = new k_bucket_1.default({
58
- localNodeId: selfId.value,
59
- numberOfNodesPerKBucket: this.config.numberOfNodesPerKBucket,
60
- numberOfNodesToPing: this.config.numberOfNodesPerKBucket
61
- });
62
- this.bucket.on('ping', (oldContacts, newContact) => this.onKBucketPing(oldContacts, newContact));
63
- this.bucket.on('removed', (contact) => this.onKBucketRemoved(contact));
64
- this.bucket.on('added', (contact) => this.onKBucketAdded(contact));
65
- this.bucket.on('updated', () => {
66
- // TODO: Update contact info to the connection manager and reconnect
67
- });
68
- this.neighborList = new SortedContactList_1.SortedContactList(selfId, this.config.maxNeighborListSize);
69
- this.neighborList.on('contactRemoved', (removedContact, activeContacts) => {
70
- if (this.stopped) {
71
- return;
72
- }
73
- this.emit('contactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor()));
74
- this.randomPeers.addContact(new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, removedContact.getPeerDescriptor(), (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId));
75
- });
76
- this.neighborList.on('newContact', (newContact, activeContacts) => this.emit('newContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
77
- this.openInternetPeers = new SortedContactList_1.SortedContactList(selfId, this.config.maxNeighborListSize / 2);
78
- this.openInternetPeers.on('contactRemoved', (removedContact, activeContacts) => this.emit('openInternetContactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
79
- this.openInternetPeers.on('newContact', (newContact, activeContacts) => this.emit('newOpenInternetContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
80
- this.transport.on('connected', (peerDescriptor) => this.onTransportConnected(peerDescriptor));
81
- this.transport.on('disconnected', (peerDescriptor, disonnectionType) => {
82
- this.onTransportDisconnected(peerDescriptor, disonnectionType);
83
- });
84
- this.transport.getAllConnectionPeerDescriptors().forEach((peer) => {
85
- const remoteDhtNode = new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, peer, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
86
- if ((0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(peer, this.ownPeerDescriptor)) {
87
- logger.error('own peerdescriptor added to connections in initKBucket');
88
- }
89
- this.connections.set((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peer), remoteDhtNode);
90
- });
91
- this.randomPeers = new RandomContactList_1.RandomContactList(selfId, this.config.maxNeighborListSize);
92
- this.randomPeers.on('contactRemoved', (removedContact, activeContacts) => this.emit('randomContactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
93
- this.randomPeers.on('newContact', (newContact, activeContacts) => this.emit('newRandomContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
94
- };
95
- this.generatePeerDescriptorCallBack = (connectivityResponse) => {
96
- if (this.config.peerDescriptor) {
97
- this.ownPeerDescriptor = this.config.peerDescriptor;
98
- }
99
- else {
100
- this.ownPeerDescriptor = (0, exports.createPeerDescriptor)(connectivityResponse, this.config.peerId);
101
- }
102
- return this.ownPeerDescriptor;
103
- };
104
56
  this.config = (0, utils_1.merge)({
105
57
  serviceId: 'layer0',
106
58
  joinParallelism: 3,
@@ -134,7 +86,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
134
86
  // If transport is given, do not create a ConnectionManager
135
87
  if (this.config.transport) {
136
88
  this.transport = this.config.transport;
137
- this.ownPeerDescriptor = this.transport.getPeerDescriptor();
89
+ this.localPeerDescriptor = this.transport.getLocalPeerDescriptor();
138
90
  if (this.config.transport instanceof ConnectionManager_1.ConnectionManager) {
139
91
  this.connectionManager = this.config.transport;
140
92
  }
@@ -150,9 +102,12 @@ class DhtNode extends eventemitter3_1.EventEmitter {
150
102
  webrtcNewConnectionTimeout: this.config.webrtcNewConnectionTimeout,
151
103
  webrtcPortRange: this.config.webrtcPortRange,
152
104
  maxMessageSize: this.config.maxMessageSize,
105
+ websocketServerEnableTls: this.config.websocketServerEnableTls,
153
106
  tlsCertificate: this.config.tlsCertificate,
154
107
  externalIp: this.config.externalIp,
155
- createOwnPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse),
108
+ autoCertifierUrl: this.config.autoCertifierUrl,
109
+ autoCertifierConfigFile: this.config.autoCertifierConfigFile,
110
+ createLocalPeerDescriptor: (connectivityResponse) => this.generatePeerDescriptorCallBack(connectivityResponse),
156
111
  };
157
112
  // If own PeerDescriptor is given in config, create a ConnectionManager with ws server
158
113
  if (this.config.peerDescriptor?.websocket) {
@@ -178,38 +133,35 @@ class DhtNode extends eventemitter3_1.EventEmitter {
178
133
  }
179
134
  this.rpcCommunicator = new RoutingRpcCommunicator_1.RoutingRpcCommunicator(this.config.serviceId, this.transport.send, { rpcRequestTimeout: this.config.rpcRequestTimeout });
180
135
  this.transport.on('message', (message) => this.handleMessage(message));
181
- this.bindDefaultServerMethods();
182
- this.initKBuckets((0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.ownPeerDescriptor));
136
+ this.initKBuckets((0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.localPeerDescriptor));
183
137
  this.peerDiscovery = new PeerDiscovery_1.PeerDiscovery({
184
138
  rpcCommunicator: this.rpcCommunicator,
185
- ownPeerDescriptor: this.ownPeerDescriptor,
139
+ localPeerDescriptor: this.localPeerDescriptor,
186
140
  bucket: this.bucket,
187
- connections: this.connections,
188
141
  neighborList: this.neighborList,
189
- randomPeers: this.randomPeers,
190
- openInternetPeers: this.openInternetPeers,
191
142
  joinNoProgressLimit: this.config.joinNoProgressLimit,
192
143
  peerDiscoveryQueryBatchSize: this.config.peerDiscoveryQueryBatchSize,
193
144
  joinTimeout: this.config.dhtJoinTimeout,
194
145
  serviceId: this.config.serviceId,
195
146
  parallelism: this.config.joinParallelism,
196
147
  addContact: this.addNewContact.bind(this),
197
- connectionManager: this.connectionManager
148
+ connectionManager: this.connectionManager,
149
+ rpcRequestTimeout: this.config.rpcRequestTimeout
198
150
  });
199
151
  this.router = new Router_1.Router({
200
152
  rpcCommunicator: this.rpcCommunicator,
201
153
  connections: this.connections,
202
- ownPeerDescriptor: this.ownPeerDescriptor,
154
+ localPeerDescriptor: this.localPeerDescriptor,
203
155
  addContact: this.addNewContact.bind(this),
204
156
  serviceId: this.config.serviceId,
205
157
  connectionManager: this.connectionManager
206
158
  });
207
- this.recursiveFinder = new RecursiveFinder_1.RecursiveFinder({
159
+ this.finder = new Finder_1.Finder({
208
160
  rpcCommunicator: this.rpcCommunicator,
209
161
  router: this.router,
210
162
  sessionTransport: this,
211
163
  connections: this.connections,
212
- ownPeerDescriptor: this.ownPeerDescriptor,
164
+ localPeerDescriptor: this.localPeerDescriptor,
213
165
  serviceId: this.config.serviceId,
214
166
  addContact: this.addNewContact.bind(this),
215
167
  isPeerCloserToIdThanSelf: this.isPeerCloserToIdThanSelf.bind(this),
@@ -217,8 +169,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
217
169
  });
218
170
  this.storeRpcLocal = new StoreRpcLocal_1.StoreRpcLocal({
219
171
  rpcCommunicator: this.rpcCommunicator,
220
- recursiveFinder: this.recursiveFinder,
221
- ownPeerDescriptor: this.ownPeerDescriptor,
172
+ finder: this.finder,
173
+ localPeerDescriptor: this.localPeerDescriptor,
222
174
  serviceId: this.config.serviceId,
223
175
  highestTtl: this.config.storeHighestTtl,
224
176
  maxTtl: this.config.storeMaxTtl,
@@ -227,21 +179,58 @@ class DhtNode extends eventemitter3_1.EventEmitter {
227
179
  dhtNodeEmitter: this,
228
180
  getNodesClosestToIdFromBucket: (id, n) => {
229
181
  return this.bucket.closest(id, n);
230
- }
182
+ },
183
+ rpcRequestTimeout: this.config.rpcRequestTimeout
231
184
  });
232
- (0, registerExternalApiRpcMethods_1.registerExternalApiRpcMethods)(this);
185
+ this.bindRpcLocalMethods();
233
186
  if (this.connectionManager && this.config.entryPoints && this.config.entryPoints.length > 0
234
- && !(0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(this.config.entryPoints[0], this.ownPeerDescriptor)) {
187
+ && !(0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(this.config.entryPoints[0], this.localPeerDescriptor)) {
235
188
  this.connectToEntryPoint(this.config.entryPoints[0]);
236
189
  }
237
190
  }
191
+ initKBuckets(selfId) {
192
+ this.bucket = new k_bucket_1.default({
193
+ localNodeId: selfId.value,
194
+ numberOfNodesPerKBucket: this.config.numberOfNodesPerKBucket,
195
+ numberOfNodesToPing: this.config.numberOfNodesPerKBucket
196
+ });
197
+ this.bucket.on('ping', (oldContacts, newContact) => this.onKBucketPing(oldContacts, newContact));
198
+ this.bucket.on('removed', (contact) => this.onKBucketRemoved(contact));
199
+ this.bucket.on('added', (contact) => this.onKBucketAdded(contact));
200
+ this.bucket.on('updated', () => {
201
+ // TODO: Update contact info to the connection manager and reconnect
202
+ });
203
+ this.neighborList = new SortedContactList_1.SortedContactList(selfId, this.config.maxNeighborListSize);
204
+ this.neighborList.on('contactRemoved', (removedContact, activeContacts) => {
205
+ if (this.stopped) {
206
+ return;
207
+ }
208
+ this.emit('contactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor()));
209
+ this.randomPeers.addContact(new DhtNodeRpcRemote_1.DhtNodeRpcRemote(this.localPeerDescriptor, removedContact.getPeerDescriptor(), (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtNodeRpcClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId, this.config.rpcRequestTimeout));
210
+ });
211
+ this.neighborList.on('newContact', (newContact, activeContacts) => this.emit('newContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
212
+ this.transport.on('connected', (peerDescriptor) => this.onTransportConnected(peerDescriptor));
213
+ this.transport.on('disconnected', (peerDescriptor, gracefulLeave) => {
214
+ this.onTransportDisconnected(peerDescriptor, gracefulLeave);
215
+ });
216
+ this.transport.getAllConnectionPeerDescriptors().forEach((peer) => {
217
+ const rpcRemote = new DhtNodeRpcRemote_1.DhtNodeRpcRemote(this.localPeerDescriptor, peer, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtNodeRpcClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId, this.config.rpcRequestTimeout);
218
+ if ((0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(peer, this.localPeerDescriptor)) {
219
+ logger.error('own peerdescriptor added to connections in initKBucket');
220
+ }
221
+ this.connections.set((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peer), rpcRemote);
222
+ });
223
+ this.randomPeers = new RandomContactList_1.RandomContactList(selfId, this.config.maxNeighborListSize);
224
+ this.randomPeers.on('contactRemoved', (removedContact, activeContacts) => this.emit('randomContactRemoved', removedContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
225
+ this.randomPeers.on('newContact', (newContact, activeContacts) => this.emit('newRandomContact', newContact.getPeerDescriptor(), activeContacts.map((c) => c.getPeerDescriptor())));
226
+ }
238
227
  onTransportConnected(peerDescriptor) {
239
- if ((0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(this.ownPeerDescriptor, peerDescriptor)) {
228
+ if ((0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(this.localPeerDescriptor, peerDescriptor)) {
240
229
  logger.error('onTransportConnected() to self');
241
230
  }
242
- const remoteDhtNode = new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, peerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
243
- if (!this.connections.has(PeerID_1.PeerID.fromValue(remoteDhtNode.id).toKey())) {
244
- this.connections.set(PeerID_1.PeerID.fromValue(remoteDhtNode.id).toKey(), remoteDhtNode);
231
+ const rpcRemote = new DhtNodeRpcRemote_1.DhtNodeRpcRemote(this.localPeerDescriptor, peerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtNodeRpcClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId, this.config.rpcRequestTimeout);
232
+ if (!this.connections.has(PeerID_1.PeerID.fromValue(rpcRemote.id).toKey())) {
233
+ this.connections.set(PeerID_1.PeerID.fromValue(rpcRemote.id).toKey(), rpcRemote);
245
234
  logger.trace('connectionschange add ' + this.connections.size);
246
235
  }
247
236
  else {
@@ -250,34 +239,48 @@ class DhtNode extends eventemitter3_1.EventEmitter {
250
239
  logger.trace('connected: ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + this.connections.size);
251
240
  this.emit('connected', peerDescriptor);
252
241
  }
253
- onTransportDisconnected(peerDescriptor, dicsonnectionType) {
242
+ onTransportDisconnected(peerDescriptor, gracefulLeave) {
254
243
  logger.trace('disconnected: ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor));
255
244
  this.connections.delete((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor));
256
245
  // only remove from bucket if we are on layer 0
257
246
  if (this.connectionManager) {
258
247
  this.bucket.remove(peerDescriptor.kademliaId);
259
- if (dicsonnectionType === 'OUTGOING_GRACEFUL_LEAVE' || dicsonnectionType === 'INCOMING_GRACEFUL_LEAVE') {
260
- logger.trace((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + 'onTransportDisconnected with type ' + dicsonnectionType);
261
- this.removeContact(peerDescriptor, true);
248
+ if (gracefulLeave === true) {
249
+ logger.trace((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + 'onTransportDisconnected with gracefulLeave ' + gracefulLeave);
250
+ this.removeContact(peerDescriptor);
262
251
  }
263
252
  else {
264
- logger.trace((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + 'onTransportDisconnected with type ' + dicsonnectionType);
253
+ logger.trace((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(peerDescriptor) + ' ' + 'onTransportDisconnected with gracefulLeave ' + gracefulLeave);
265
254
  }
266
255
  }
267
- this.emit('disconnected', peerDescriptor, dicsonnectionType);
256
+ this.emit('disconnected', peerDescriptor, gracefulLeave);
268
257
  }
269
- bindDefaultServerMethods() {
258
+ bindRpcLocalMethods() {
270
259
  if (!this.started || this.stopped) {
271
260
  return;
272
261
  }
273
- logger.trace(`Binding default DHT RPC methods`);
274
- this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ClosestPeersRequest, DhtRpc_1.ClosestPeersResponse, 'getClosestPeers', (req, context) => this.getClosestPeers(req, context));
275
- this.rpcCommunicator.registerRpcMethod(DhtRpc_1.PingRequest, DhtRpc_1.PingResponse, 'ping', (req, context) => this.ping(req, context));
276
- this.rpcCommunicator.registerRpcNotification(DhtRpc_1.LeaveNotice, 'leaveNotice', (req, context) => this.leaveNotice(req, context));
262
+ const dhtNodeRpcLocal = new DhtNodeRpcLocal_1.DhtNodeRpcLocal({
263
+ bucket: this.bucket,
264
+ serviceId: this.config.serviceId,
265
+ peerDiscoveryQueryBatchSize: this.config.peerDiscoveryQueryBatchSize,
266
+ addNewContact: (contact) => this.addNewContact(contact),
267
+ removeContact: (contact) => this.removeContact(contact)
268
+ });
269
+ this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ClosestPeersRequest, DhtRpc_1.ClosestPeersResponse, 'getClosestPeers', (req, context) => dhtNodeRpcLocal.getClosestPeers(req, context));
270
+ this.rpcCommunicator.registerRpcMethod(DhtRpc_1.PingRequest, DhtRpc_1.PingResponse, 'ping', (req, context) => dhtNodeRpcLocal.ping(req, context));
271
+ this.rpcCommunicator.registerRpcNotification(DhtRpc_1.LeaveNotice, 'leaveNotice', (req, context) => dhtNodeRpcLocal.leaveNotice(req, context));
272
+ const externalApiRpcLocal = new ExternalApiRpcLocal_1.ExternalApiRpcLocal({
273
+ startFind: (idToFind, fetchData, excludedPeer) => {
274
+ return this.startFind(idToFind, fetchData, excludedPeer);
275
+ },
276
+ storeDataToDht: (key, data) => this.storeDataToDht(key, data)
277
+ });
278
+ this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ExternalFindDataRequest, DhtRpc_1.ExternalFindDataResponse, 'externalFindData', (req, context) => externalApiRpcLocal.externalFindData(req, context), { timeout: 10000 });
279
+ this.rpcCommunicator.registerRpcMethod(DhtRpc_1.ExternalStoreDataRequest, DhtRpc_1.ExternalStoreDataResponse, 'externalStoreData', (req) => externalApiRpcLocal.externalStoreData(req), { timeout: 10000 });
277
280
  }
278
281
  isPeerCloserToIdThanSelf(peer1, compareToId) {
279
282
  const distance1 = this.bucket.distance(peer1.kademliaId, compareToId.value);
280
- const distance2 = this.bucket.distance(this.ownPeerDescriptor.kademliaId, compareToId.value);
283
+ const distance2 = this.bucket.distance(this.localPeerDescriptor.kademliaId, compareToId.value);
281
284
  return distance1 < distance2;
282
285
  }
283
286
  handleMessage(message) {
@@ -291,9 +294,14 @@ class DhtNode extends eventemitter3_1.EventEmitter {
291
294
  this.emit('message', message);
292
295
  }
293
296
  }
294
- getClosestPeerDescriptors(kademliaId, limit) {
295
- const closestPeers = this.bucket.closest(kademliaId, limit);
296
- return closestPeers.map((remoteDhtNode) => remoteDhtNode.getPeerDescriptor());
297
+ generatePeerDescriptorCallBack(connectivityResponse) {
298
+ if (this.config.peerDescriptor) {
299
+ this.localPeerDescriptor = this.config.peerDescriptor;
300
+ }
301
+ else {
302
+ this.localPeerDescriptor = (0, exports.createPeerDescriptor)(connectivityResponse, this.config.peerId);
303
+ }
304
+ return this.localPeerDescriptor;
297
305
  }
298
306
  onKBucketPing(oldContacts, newContact) {
299
307
  if (this.stopped) {
@@ -312,7 +320,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
312
320
  }
313
321
  this.connectionManager?.weakUnlockConnection(contact.getPeerDescriptor());
314
322
  logger.trace(`Removed contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor())}`);
315
- this.emit('kbucketContactRemoved', contact.getPeerDescriptor());
316
323
  if (this.bucket.count() === 0
317
324
  && !this.peerDiscovery.isJoinOngoing()
318
325
  && this.config.entryPoints
@@ -326,19 +333,17 @@ class DhtNode extends eventemitter3_1.EventEmitter {
326
333
  if (this.stopped) {
327
334
  return;
328
335
  }
329
- if (!this.stopped && !contact.getPeerId().equals(this.getNodeId())) {
336
+ if (!contact.getPeerId().equals(this.getNodeId())) {
330
337
  // Important to lock here, before the ping result is known
331
338
  this.connectionManager?.weakLockConnection(contact.getPeerDescriptor());
332
339
  if (this.connections.has(contact.getPeerId().toKey())) {
333
340
  logger.trace(`Added new contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor())}`);
334
- this.emit('newKbucketContact', contact.getPeerDescriptor(), this.neighborList.getClosestContacts(this.config.peerDiscoveryQueryBatchSize).map((peer) => peer.getPeerDescriptor()));
335
341
  }
336
342
  else { // open connection by pinging
337
343
  logger.trace('starting ping ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor()));
338
344
  contact.ping().then((result) => {
339
345
  if (result) {
340
346
  logger.trace(`Added new contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor())}`);
341
- this.emit('newKbucketContact', contact.getPeerDescriptor(), this.neighborList.getClosestContacts(this.config.peerDiscoveryQueryBatchSize).map((peer) => peer.getPeerDescriptor()));
342
347
  }
343
348
  else {
344
349
  logger.trace('ping failed ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact.getPeerDescriptor()));
@@ -376,7 +381,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
376
381
  return this.neighborList.getClosestContacts(maxCount).map((c) => c.getPeerDescriptor());
377
382
  }
378
383
  getNodeId() {
379
- return (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.ownPeerDescriptor);
384
+ return (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(this.localPeerDescriptor);
380
385
  }
381
386
  getBucketSize() {
382
387
  return this.bucket.count();
@@ -385,23 +390,19 @@ class DhtNode extends eventemitter3_1.EventEmitter {
385
390
  if (!this.started || this.stopped) {
386
391
  return;
387
392
  }
388
- if (!(0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(contact, this.ownPeerDescriptor)) {
393
+ if (!(0, peerIdFromPeerDescriptor_1.areEqualPeerDescriptors)(contact, this.localPeerDescriptor)) {
389
394
  logger.trace(`Adding new contact ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(contact)}`);
390
- const remoteDhtNode = new RemoteDhtNode_1.RemoteDhtNode(this.ownPeerDescriptor, contact, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtRpcServiceClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId);
395
+ const rpcRemote = new DhtNodeRpcRemote_1.DhtNodeRpcRemote(this.localPeerDescriptor, contact, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.DhtNodeRpcClient(this.rpcCommunicator.getRpcClientTransport())), this.config.serviceId, this.config.rpcRequestTimeout);
391
396
  if (!this.bucket.get(contact.kademliaId) && !this.neighborList.getContact((0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(contact))) {
392
- this.neighborList.addContact(remoteDhtNode);
393
- if (contact.openInternet) {
394
- this.openInternetPeers.addContact(remoteDhtNode);
395
- }
397
+ this.neighborList.addContact(rpcRemote);
396
398
  if (setActive) {
397
399
  const peerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(contact);
398
400
  this.neighborList.setActive(peerId);
399
- this.openInternetPeers.setActive(peerId);
400
401
  }
401
- this.bucket.add(remoteDhtNode);
402
+ this.bucket.add(rpcRemote);
402
403
  }
403
404
  else {
404
- this.randomPeers.addContact(remoteDhtNode);
405
+ this.randomPeers.addContact(rpcRemote);
405
406
  }
406
407
  }
407
408
  }
@@ -411,7 +412,7 @@ class DhtNode extends eventemitter3_1.EventEmitter {
411
412
  this.connectionManager.unlockConnection(entryPoint, 'temporary-layer0-connection');
412
413
  }, 10 * 1000);
413
414
  }
414
- removeContact(contact, removeFromOpenInternetPeers = false) {
415
+ removeContact(contact) {
415
416
  if (!this.started || this.stopped) {
416
417
  return;
417
418
  }
@@ -420,15 +421,12 @@ class DhtNode extends eventemitter3_1.EventEmitter {
420
421
  this.bucket.remove(peerId.value);
421
422
  this.neighborList.removeContact(peerId);
422
423
  this.randomPeers.removeContact(peerId);
423
- if (removeFromOpenInternetPeers) {
424
- this.openInternetPeers.removeContact(peerId);
425
- }
426
424
  }
427
425
  async send(msg) {
428
426
  if (!this.started || this.stopped) {
429
427
  return;
430
428
  }
431
- const reachableThrough = this.peerDiscovery.isJoinOngoing() ? this.config.entryPoints || [] : [];
429
+ const reachableThrough = this.peerDiscovery.isJoinOngoing() ? this.config.entryPoints ?? [] : [];
432
430
  await this.router.send(msg, reachableThrough);
433
431
  }
434
432
  async joinDht(entryPointDescriptors, doAdditionalRandomPeerDiscovery, retry) {
@@ -437,8 +435,8 @@ class DhtNode extends eventemitter3_1.EventEmitter {
437
435
  }
438
436
  await Promise.all(entryPointDescriptors.map((entryPoint) => this.peerDiscovery.joinDht(entryPoint, doAdditionalRandomPeerDiscovery, retry)));
439
437
  }
440
- async startRecursiveFind(idToFind, fetchData, excludedPeer) {
441
- return this.recursiveFinder.startRecursiveFind(idToFind, fetchData, excludedPeer);
438
+ async startFind(idToFind, fetchData, excludedPeer) {
439
+ return this.finder.startFind(idToFind, fetchData, excludedPeer);
442
440
  }
443
441
  async storeDataToDht(key, data) {
444
442
  if (this.peerDiscovery.isJoinOngoing() && this.config.entryPoints && this.config.entryPoints.length > 0) {
@@ -447,14 +445,14 @@ class DhtNode extends eventemitter3_1.EventEmitter {
447
445
  return this.storeRpcLocal.storeDataToDht(key, data);
448
446
  }
449
447
  async storeDataViaPeer(key, data, peer) {
450
- const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.ownPeerDescriptor, peer, this.config.serviceId, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.ExternalApiRpcClient(this.rpcCommunicator.getRpcClientTransport())));
448
+ const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.localPeerDescriptor, peer, this.config.serviceId, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.ExternalApiRpcClient(this.rpcCommunicator.getRpcClientTransport())));
451
449
  return await rpcRemote.storeData(key, data);
452
450
  }
453
451
  async getDataFromDht(idToFind) {
454
452
  if (this.peerDiscovery.isJoinOngoing() && this.config.entryPoints && this.config.entryPoints.length > 0) {
455
453
  return this.findDataViaPeer(idToFind, (0, lodash_1.sample)(this.config.entryPoints));
456
454
  }
457
- const result = await this.recursiveFinder.startRecursiveFind(idToFind, true);
455
+ const result = await this.finder.startFind(idToFind, true);
458
456
  return result.dataEntries ?? [];
459
457
  }
460
458
  async deleteDataFromDht(idToDelete) {
@@ -463,23 +461,20 @@ class DhtNode extends eventemitter3_1.EventEmitter {
463
461
  }
464
462
  }
465
463
  async findDataViaPeer(idToFind, peer) {
466
- const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.ownPeerDescriptor, peer, this.config.serviceId, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.ExternalApiRpcClient(this.rpcCommunicator.getRpcClientTransport())));
467
- return await rpcRemote.findData(idToFind);
468
- }
469
- getRpcCommunicator() {
470
- return this.rpcCommunicator;
464
+ const rpcRemote = new ExternalApiRpcRemote_1.ExternalApiRpcRemote(this.localPeerDescriptor, peer, this.config.serviceId, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.ExternalApiRpcClient(this.rpcCommunicator.getRpcClientTransport())));
465
+ return await rpcRemote.externalFindData(idToFind);
471
466
  }
472
467
  getTransport() {
473
468
  return this.transport;
474
469
  }
475
- getPeerDescriptor() {
476
- return this.ownPeerDescriptor;
470
+ getLocalPeerDescriptor() {
471
+ return this.localPeerDescriptor;
477
472
  }
478
473
  getAllConnectionPeerDescriptors() {
479
474
  return Array.from(this.connections.values()).map((peer) => peer.getPeerDescriptor());
480
475
  }
481
476
  getKBucketPeers() {
482
- return this.bucket.toArray().map((remoteDhtNode) => remoteDhtNode.getPeerDescriptor());
477
+ return this.bucket.toArray().map((rpcRemote) => rpcRemote.getPeerDescriptor());
483
478
  }
484
479
  getNumberOfConnections() {
485
480
  return this.connections.size;
@@ -508,15 +503,17 @@ class DhtNode extends eventemitter3_1.EventEmitter {
508
503
  if (this.entryPointDisconnectTimeout) {
509
504
  clearTimeout(this.entryPointDisconnectTimeout);
510
505
  }
511
- this.bucket.toArray().forEach((remoteDhtNode) => this.bucket.remove(remoteDhtNode.id));
506
+ this.bucket.toArray().forEach((rpcRemote) => {
507
+ rpcRemote.leaveNotice();
508
+ this.bucket.remove(rpcRemote.id);
509
+ });
512
510
  this.bucket.removeAllListeners();
513
511
  this.localDataStore.clear();
514
512
  this.neighborList.stop();
515
513
  this.randomPeers.stop();
516
- this.openInternetPeers.stop();
517
514
  this.rpcCommunicator.stop();
518
515
  this.router.stop();
519
- this.recursiveFinder.stop();
516
+ this.finder.stop();
520
517
  this.peerDiscovery.stop();
521
518
  if (this.connectionManager) {
522
519
  await this.connectionManager.stop();
@@ -526,34 +523,6 @@ class DhtNode extends eventemitter3_1.EventEmitter {
526
523
  this.connections.clear();
527
524
  this.removeAllListeners();
528
525
  }
529
- // IDHTRpcService implementation
530
- async getClosestPeers(request, context) {
531
- this.addNewContact(context.incomingSourceDescriptor);
532
- const response = {
533
- peers: this.getClosestPeerDescriptors(request.kademliaId, this.config.peerDiscoveryQueryBatchSize),
534
- requestId: request.requestId
535
- };
536
- return response;
537
- }
538
- // IDHTRpcService implementation
539
- async ping(request, context) {
540
- logger.trace('received ping request: ' + (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(context.incomingSourceDescriptor));
541
- setImmediate(() => {
542
- this.addNewContact(context.incomingSourceDescriptor);
543
- });
544
- const response = {
545
- requestId: request.requestId
546
- };
547
- return response;
548
- }
549
- // IDHTRpcService implementation
550
- async leaveNotice(request, context) {
551
- // TODO check signature??
552
- if (request.serviceId === this.config.serviceId) {
553
- this.removeContact(context.incomingSourceDescriptor);
554
- }
555
- return {};
556
- }
557
526
  }
558
527
  exports.DhtNode = DhtNode;
559
528
  //# sourceMappingURL=DhtNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DhtNode.js","sourceRoot":"","sources":["../../../src/dht/DhtNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DhtNode.js","sourceRoot":"","sources":["../../../src/dht/DhtNode.ts"],"names":[],"mappings":"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"}