@streamr/dht 101.1.2 → 102.0.0-beta.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 (369) hide show
  1. package/dist/package.json +17 -18
  2. package/dist/src/connection/Connection.d.ts +1 -1
  3. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +5 -3
  4. package/dist/src/connection/ConnectionLockRpcLocal.js +9 -3
  5. package/dist/src/connection/ConnectionLockRpcLocal.js.map +1 -1
  6. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +3 -2
  7. package/dist/src/connection/ConnectionLockRpcRemote.js +14 -3
  8. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  9. package/dist/src/connection/ConnectionLockStates.d.ts +5 -0
  10. package/dist/src/connection/ConnectionLockStates.js +14 -0
  11. package/dist/src/connection/ConnectionLockStates.js.map +1 -1
  12. package/dist/src/connection/ConnectionManager.d.ts +8 -1
  13. package/dist/src/connection/ConnectionManager.js +96 -32
  14. package/dist/src/connection/ConnectionManager.js.map +1 -1
  15. package/dist/src/connection/ConnectionsView.d.ts +1 -1
  16. package/dist/src/connection/ConnectorFacade.d.ts +1 -1
  17. package/dist/src/connection/Handshaker.d.ts +2 -2
  18. package/dist/src/connection/Handshaker.js +11 -7
  19. package/dist/src/connection/Handshaker.js.map +1 -1
  20. package/dist/src/connection/ManagedConnection.d.ts +7 -1
  21. package/dist/src/connection/ManagedConnection.js +41 -8
  22. package/dist/src/connection/ManagedConnection.js.map +1 -1
  23. package/dist/src/connection/PendingConnection.d.ts +1 -1
  24. package/dist/src/connection/connectivityChecker.d.ts +1 -1
  25. package/dist/src/connection/connectivityChecker.js +22 -11
  26. package/dist/src/connection/connectivityChecker.js.map +1 -1
  27. package/dist/src/connection/connectivityRequestHandler.js +4 -4
  28. package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
  29. package/dist/src/connection/simulator/Simulator.d.ts +1 -1
  30. package/dist/src/connection/simulator/Simulator.js +5 -4
  31. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  32. package/dist/src/connection/simulator/SimulatorConnection.d.ts +1 -1
  33. package/dist/src/connection/simulator/SimulatorConnection.js +9 -9
  34. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -1
  35. package/dist/src/connection/simulator/SimulatorConnector.d.ts +1 -1
  36. package/dist/src/connection/simulator/SimulatorConnector.js +4 -4
  37. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
  38. package/dist/src/connection/simulator/SimulatorTransport.d.ts +1 -1
  39. package/dist/src/connection/simulator/SimulatorTransport.js +2 -1
  40. package/dist/src/connection/simulator/SimulatorTransport.js.map +1 -1
  41. package/dist/src/connection/simulator/pings.d.ts +1 -1
  42. package/dist/src/connection/simulator/pings.js +3 -3
  43. package/dist/src/connection/simulator/pings.js.map +1 -1
  44. package/dist/src/connection/webrtc/NodeWebrtcConnection.d.ts +2 -1
  45. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +13 -8
  46. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  47. package/dist/src/connection/webrtc/WebrtcConnector.d.ts +2 -1
  48. package/dist/src/connection/webrtc/WebrtcConnector.js +28 -17
  49. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  50. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +3 -3
  51. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +4 -4
  52. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  53. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +1 -1
  54. package/dist/src/connection/webrtc/iceServerAsString.js +1 -2
  55. package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
  56. package/dist/src/connection/websocket/AbstractWebsocketClientConnection.d.ts +0 -1
  57. package/dist/src/connection/websocket/WebsocketClientConnector.d.ts +1 -1
  58. package/dist/src/connection/websocket/WebsocketClientConnector.js +3 -3
  59. package/dist/src/connection/websocket/WebsocketClientConnector.js.map +1 -1
  60. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.d.ts +3 -4
  61. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.js +1 -1
  62. package/dist/src/connection/websocket/WebsocketClientConnectorRpcLocal.js.map +1 -1
  63. package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.d.ts +1 -1
  64. package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.js +1 -1
  65. package/dist/src/connection/websocket/WebsocketClientConnectorRpcRemote.js.map +1 -1
  66. package/dist/src/connection/websocket/WebsocketServerConnection.d.ts +0 -1
  67. package/dist/src/connection/websocket/WebsocketServerConnector.d.ts +1 -1
  68. package/dist/src/connection/websocket/WebsocketServerConnector.js +34 -24
  69. package/dist/src/connection/websocket/WebsocketServerConnector.js.map +1 -1
  70. package/dist/src/dht/DhtNode.d.ts +5 -2
  71. package/dist/src/dht/DhtNode.js +20 -8
  72. package/dist/src/dht/DhtNode.js.map +1 -1
  73. package/dist/src/dht/DhtNodeRpcLocal.d.ts +4 -4
  74. package/dist/src/dht/DhtNodeRpcLocal.js +3 -3
  75. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  76. package/dist/src/dht/DhtNodeRpcRemote.d.ts +2 -2
  77. package/dist/src/dht/DhtNodeRpcRemote.js +3 -3
  78. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  79. package/dist/src/dht/ExternalApiRpcLocal.d.ts +3 -3
  80. package/dist/src/dht/ExternalApiRpcLocal.js +3 -3
  81. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  82. package/dist/src/dht/ExternalApiRpcRemote.d.ts +3 -3
  83. package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
  84. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  85. package/dist/src/dht/PeerManager.d.ts +3 -2
  86. package/dist/src/dht/PeerManager.js +12 -11
  87. package/dist/src/dht/PeerManager.js.map +1 -1
  88. package/dist/src/dht/contact/Contact.d.ts +1 -1
  89. package/dist/src/dht/contact/Contact.js +1 -1
  90. package/dist/src/dht/contact/Contact.js.map +1 -1
  91. package/dist/src/dht/contact/RingContactList.d.ts +1 -1
  92. package/dist/src/dht/contact/RingContactList.js +1 -1
  93. package/dist/src/dht/contact/RingContactList.js.map +1 -1
  94. package/dist/src/dht/contact/RpcRemote.d.ts +1 -1
  95. package/dist/src/dht/contact/SortedContactList.js +2 -2
  96. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  97. package/dist/src/dht/contact/ringIdentifiers.d.ts +1 -1
  98. package/dist/src/dht/discovery/DiscoverySession.d.ts +1 -2
  99. package/dist/src/dht/discovery/DiscoverySession.js +3 -3
  100. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  101. package/dist/src/dht/discovery/PeerDiscovery.d.ts +1 -2
  102. package/dist/src/dht/discovery/PeerDiscovery.js +7 -7
  103. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  104. package/dist/src/dht/discovery/RingDiscoverySession.d.ts +0 -1
  105. package/dist/src/dht/discovery/RingDiscoverySession.js +1 -1
  106. package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -1
  107. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +3 -3
  108. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +8 -8
  109. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -1
  110. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.d.ts +2 -2
  111. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js +2 -2
  112. package/dist/src/dht/recursive-operation/RecursiveOperationRpcLocal.js.map +1 -1
  113. package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.d.ts +2 -2
  114. package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js +3 -3
  115. package/dist/src/dht/recursive-operation/RecursiveOperationRpcRemote.js.map +1 -1
  116. package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +1 -1
  117. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +7 -7
  118. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -1
  119. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.d.ts +3 -3
  120. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js +1 -1
  121. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.js.map +1 -1
  122. package/dist/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.d.ts +2 -2
  123. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  124. package/dist/src/dht/routing/Router.d.ts +4 -1
  125. package/dist/src/dht/routing/Router.js +17 -9
  126. package/dist/src/dht/routing/Router.js.map +1 -1
  127. package/dist/src/dht/routing/RouterRpcLocal.d.ts +2 -2
  128. package/dist/src/dht/routing/RouterRpcLocal.js +5 -5
  129. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  130. package/dist/src/dht/routing/RouterRpcRemote.d.ts +2 -2
  131. package/dist/src/dht/routing/RouterRpcRemote.js +7 -7
  132. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  133. package/dist/src/dht/routing/RoutingSession.d.ts +1 -1
  134. package/dist/src/dht/routing/RoutingSession.js +7 -8
  135. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  136. package/dist/src/dht/routing/RoutingTablesCache.d.ts +1 -1
  137. package/dist/src/dht/routing/getPreviousPeer.d.ts +1 -1
  138. package/dist/src/dht/store/LocalDataStore.d.ts +1 -1
  139. package/dist/src/dht/store/LocalDataStore.js +3 -3
  140. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  141. package/dist/src/dht/store/StoreManager.d.ts +3 -3
  142. package/dist/src/dht/store/StoreManager.js +8 -8
  143. package/dist/src/dht/store/StoreManager.js.map +1 -1
  144. package/dist/src/dht/store/StoreRpcLocal.d.ts +4 -4
  145. package/dist/src/dht/store/StoreRpcLocal.js +4 -4
  146. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  147. package/dist/src/dht/store/StoreRpcRemote.d.ts +3 -3
  148. package/dist/src/dht/store/StoreRpcRemote.js +7 -4
  149. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  150. package/dist/src/exports.d.ts +2 -2
  151. package/dist/src/exports.js +6 -6
  152. package/dist/src/exports.js.map +1 -1
  153. package/dist/src/helpers/AddressTools.js +2 -3
  154. package/dist/src/helpers/AddressTools.js.map +1 -1
  155. package/dist/src/helpers/Connectivity.d.ts +1 -1
  156. package/dist/src/helpers/Connectivity.js +1 -1
  157. package/dist/src/helpers/Connectivity.js.map +1 -1
  158. package/dist/src/helpers/createPeerDescriptor.d.ts +1 -1
  159. package/dist/src/helpers/createPeerDescriptor.js +2 -2
  160. package/dist/src/helpers/createPeerDescriptor.js.map +1 -1
  161. package/dist/src/helpers/createPeerDescriptorSignaturePayload.d.ts +1 -1
  162. package/dist/src/helpers/createPeerDescriptorSignaturePayload.js +1 -1
  163. package/dist/src/helpers/createPeerDescriptorSignaturePayload.js.map +1 -1
  164. package/dist/src/helpers/debugHelpers.js +2 -2
  165. package/dist/src/helpers/debugHelpers.js.map +1 -1
  166. package/dist/src/helpers/protoClasses.d.ts +1 -1
  167. package/dist/src/helpers/protoClasses.js +1 -1
  168. package/dist/src/helpers/protoClasses.js.map +1 -1
  169. package/dist/src/helpers/protoToString.js +1 -2
  170. package/dist/src/helpers/protoToString.js.map +1 -1
  171. package/dist/src/helpers/version.d.ts +1 -1
  172. package/dist/src/helpers/version.js +4 -4
  173. package/dist/src/helpers/version.js.map +1 -1
  174. package/dist/src/identifiers.d.ts +5 -5
  175. package/dist/src/identifiers.js +11 -11
  176. package/dist/src/identifiers.js.map +1 -1
  177. package/dist/src/rpc-protocol/DhtCallContext.d.ts +1 -1
  178. package/dist/src/rpc-protocol/DhtRpcOptions.d.ts +1 -1
  179. package/dist/src/transport/ITransport.d.ts +2 -1
  180. package/dist/src/transport/ListeningRpcCommunicator.d.ts +2 -1
  181. package/dist/src/transport/ListeningRpcCommunicator.js +13 -4
  182. package/dist/src/transport/ListeningRpcCommunicator.js.map +1 -1
  183. package/dist/src/transport/RoutingRpcCommunicator.d.ts +1 -1
  184. package/eslint.config.mjs +12 -0
  185. package/jest.config.ts +12 -0
  186. package/package.json +17 -18
  187. package/proto.sh +2 -3
  188. package/protos/DhtRpc.proto +11 -4
  189. package/src/connection/Connection.ts +1 -1
  190. package/src/connection/ConnectionLockRpcLocal.ts +16 -7
  191. package/src/connection/ConnectionLockRpcRemote.ts +18 -6
  192. package/src/connection/ConnectionLockStates.ts +18 -0
  193. package/src/connection/ConnectionManager.ts +93 -27
  194. package/src/connection/ConnectionsView.ts +1 -1
  195. package/src/connection/ConnectorFacade.ts +1 -1
  196. package/src/connection/Handshaker.ts +18 -14
  197. package/src/connection/ManagedConnection.ts +28 -3
  198. package/src/connection/PendingConnection.ts +1 -1
  199. package/src/connection/connectivityChecker.ts +6 -5
  200. package/src/connection/connectivityRequestHandler.ts +4 -4
  201. package/src/connection/simulator/Simulator.ts +8 -7
  202. package/src/connection/simulator/SimulatorConnection.ts +10 -10
  203. package/src/connection/simulator/SimulatorConnector.ts +5 -5
  204. package/src/connection/simulator/SimulatorTransport.ts +3 -2
  205. package/src/connection/simulator/pings.ts +1 -1
  206. package/src/connection/webrtc/BrowserWebrtcConnection.ts +10 -1
  207. package/src/connection/webrtc/NodeWebrtcConnection.ts +15 -11
  208. package/src/connection/webrtc/WebrtcConnector.ts +13 -11
  209. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +8 -8
  210. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +2 -2
  211. package/src/connection/websocket/WebsocketClientConnector.ts +5 -5
  212. package/src/connection/websocket/WebsocketClientConnectorRpcLocal.ts +5 -5
  213. package/src/connection/websocket/WebsocketClientConnectorRpcRemote.ts +4 -4
  214. package/src/connection/websocket/WebsocketServerConnector.ts +24 -20
  215. package/src/dht/DhtNode.ts +29 -11
  216. package/src/dht/DhtNodeRpcLocal.ts +8 -8
  217. package/src/dht/DhtNodeRpcRemote.ts +5 -5
  218. package/src/dht/ExternalApiRpcLocal.ts +8 -8
  219. package/src/dht/ExternalApiRpcRemote.ts +6 -6
  220. package/src/dht/PeerManager.ts +16 -14
  221. package/src/dht/contact/Contact.ts +3 -3
  222. package/src/dht/contact/RingContactList.ts +3 -3
  223. package/src/dht/contact/RpcRemote.ts +1 -1
  224. package/src/dht/contact/SortedContactList.ts +3 -3
  225. package/src/dht/contact/ringIdentifiers.ts +1 -1
  226. package/src/dht/discovery/DiscoverySession.ts +5 -5
  227. package/src/dht/discovery/PeerDiscovery.ts +12 -12
  228. package/src/dht/discovery/RingDiscoverySession.ts +3 -3
  229. package/src/dht/recursive-operation/RecursiveOperationManager.ts +10 -10
  230. package/src/dht/recursive-operation/RecursiveOperationRpcLocal.ts +4 -4
  231. package/src/dht/recursive-operation/RecursiveOperationRpcRemote.ts +6 -6
  232. package/src/dht/recursive-operation/RecursiveOperationSession.ts +8 -8
  233. package/src/dht/recursive-operation/RecursiveOperationSessionRpcLocal.ts +5 -5
  234. package/src/dht/recursive-operation/RecursiveOperationSessionRpcRemote.ts +2 -2
  235. package/src/dht/routing/DuplicateDetector.ts +1 -1
  236. package/src/dht/routing/Router.ts +19 -10
  237. package/src/dht/routing/RouterRpcLocal.ts +7 -7
  238. package/src/dht/routing/RouterRpcRemote.ts +9 -9
  239. package/src/dht/routing/RoutingSession.ts +9 -10
  240. package/src/dht/routing/RoutingTablesCache.ts +1 -1
  241. package/src/dht/routing/getPreviousPeer.ts +1 -1
  242. package/src/dht/store/LocalDataStore.ts +5 -5
  243. package/src/dht/store/StoreManager.ts +13 -13
  244. package/src/dht/store/StoreRpcLocal.ts +9 -9
  245. package/src/dht/store/StoreRpcRemote.ts +10 -7
  246. package/src/exports.ts +5 -5
  247. package/src/helpers/Connectivity.ts +1 -1
  248. package/src/helpers/createPeerDescriptor.ts +3 -3
  249. package/src/helpers/createPeerDescriptorSignaturePayload.ts +1 -1
  250. package/src/helpers/protoClasses.ts +2 -2
  251. package/src/helpers/version.ts +2 -2
  252. package/src/identifiers.ts +7 -7
  253. package/src/rpc-protocol/DhtCallContext.ts +1 -1
  254. package/src/rpc-protocol/DhtRpcOptions.ts +1 -1
  255. package/src/transport/ITransport.ts +2 -1
  256. package/src/transport/ListeningRpcCommunicator.ts +14 -6
  257. package/src/transport/RoutingRpcCommunicator.ts +2 -2
  258. package/test/benchmark/Find.test.ts +9 -9
  259. package/test/benchmark/KademliaCorrectness.test.ts +7 -7
  260. package/test/benchmark/RingCorrectness.test.ts +8 -8
  261. package/test/benchmark/SortedContactListBenchmark.test.ts +10 -10
  262. package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +3 -3
  263. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +6 -6
  264. package/test/end-to-end/Layer0Webrtc.test.ts +6 -6
  265. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +1 -1
  266. package/test/end-to-end/WebsocketConnectionRequest.test.ts +3 -3
  267. package/test/end-to-end/memory-leak.test.ts +6 -6
  268. package/test/integration/ConnectionLocking.test.ts +48 -37
  269. package/test/integration/ConnectionManager.test.ts +62 -6
  270. package/test/integration/ConnectivityChecking.test.ts +3 -2
  271. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -2
  272. package/test/integration/DhtNode.test.ts +6 -6
  273. package/test/integration/DhtNodeExternalAPI.test.ts +7 -7
  274. package/test/integration/DhtNodeRpcRemote.test.ts +9 -9
  275. package/test/integration/DhtRpc.test.ts +12 -13
  276. package/test/integration/Find.test.ts +5 -5
  277. package/test/integration/GeoIpConnectivityChecking.test.ts +8 -7
  278. package/test/integration/Layer1-scale.test.ts +3 -3
  279. package/test/integration/Mock-Layer1-Layer0.test.ts +6 -6
  280. package/test/integration/MultipleEntryPointJoining.test.ts +1 -1
  281. package/test/integration/ReplicateData.test.ts +10 -11
  282. package/test/integration/RouteMessage.test.ts +13 -13
  283. package/test/integration/RouterRpcRemote.test.ts +7 -7
  284. package/test/integration/SimultaneousConnections.test.ts +14 -13
  285. package/test/integration/Store.test.ts +9 -9
  286. package/test/integration/StoreAndDelete.test.ts +10 -10
  287. package/test/integration/StoreOnDhtWithThreeNodes.test.ts +10 -10
  288. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +10 -10
  289. package/test/integration/StoreRpcRemote.test.ts +11 -11
  290. package/test/integration/WebrtcConnectionManagement.test.ts +4 -31
  291. package/test/integration/WebrtcConnectorRpc.test.ts +14 -14
  292. package/test/integration/Websocket.test.ts +0 -2
  293. package/test/integration/WebsocketClientConnectorRpc.test.ts +8 -8
  294. package/test/integration/WebsocketConnectionManagement.test.ts +11 -12
  295. package/test/integration/{rpc-connections-over-webrpc.test.ts → rpc-connections-over-webrtc.test.ts} +12 -46
  296. package/test/unit/AutoCertifierClientFacade.test.ts +6 -6
  297. package/test/unit/ConnectionManager.test.ts +4 -3
  298. package/test/unit/ConnectivityHelpers.test.ts +1 -1
  299. package/test/unit/DiscoverySession.test.ts +6 -6
  300. package/test/unit/Handshaker.test.ts +2 -2
  301. package/test/unit/ListeningRpcCommunicator.test.ts +52 -0
  302. package/test/unit/LocalDataStore.test.ts +21 -21
  303. package/test/unit/PeerManager.test.ts +15 -15
  304. package/test/unit/PendingConnection.test.ts +1 -1
  305. package/test/unit/ProtobufMessage.test.ts +1 -1
  306. package/test/unit/RandomContactList.test.ts +2 -2
  307. package/test/unit/RecursiveOperationManager.test.ts +3 -3
  308. package/test/unit/RecursiveOperationSession.test.ts +6 -6
  309. package/test/unit/Router.test.ts +6 -6
  310. package/test/unit/RoutingSession.test.ts +13 -6
  311. package/test/unit/SortedContactList.test.ts +8 -8
  312. package/test/unit/StoreManager.test.ts +12 -12
  313. package/test/unit/StoreRpcLocal.test.ts +9 -9
  314. package/test/unit/WebrtcConnection.test.ts +29 -0
  315. package/test/unit/WebsocketClientConnector.test.ts +1 -1
  316. package/test/unit/WebsocketServerConnector.test.ts +1 -1
  317. package/test/unit/connectivityRequestHandler.test.ts +6 -6
  318. package/test/unit/createPeerDescriptor.test.ts +4 -4
  319. package/test/unit/customMatchers.test.ts +18 -0
  320. package/test/unit/getClosestNodes.test.ts +5 -5
  321. package/test/unit/version.test.ts +9 -9
  322. package/test/utils/FakeConnectorFacade.ts +1 -1
  323. package/test/utils/FakeTransport.ts +12 -9
  324. package/test/utils/customMatchers.ts +9 -9
  325. package/test/utils/mock/MockConnectionsView.ts +1 -1
  326. package/test/utils/mock/MockRouter.ts +5 -1
  327. package/test/utils/mock/MockTransport.ts +6 -1
  328. package/test/utils/mock/mockDataEntry.ts +6 -6
  329. package/test/utils/topology.ts +3 -4
  330. package/test/utils/utils.ts +11 -11
  331. package/tsconfig.jest.json +2 -1
  332. package/tsconfig.node.json +1 -0
  333. package/.eslintignore +0 -5
  334. package/.eslintrc +0 -3
  335. package/dist/src/proto/google/protobuf/any.d.ts +0 -173
  336. package/dist/src/proto/google/protobuf/any.js +0 -155
  337. package/dist/src/proto/google/protobuf/any.js.map +0 -1
  338. package/dist/src/proto/google/protobuf/empty.d.ts +0 -32
  339. package/dist/src/proto/google/protobuf/empty.js +0 -32
  340. package/dist/src/proto/google/protobuf/empty.js.map +0 -1
  341. package/dist/src/proto/google/protobuf/timestamp.d.ts +0 -149
  342. package/dist/src/proto/google/protobuf/timestamp.js +0 -136
  343. package/dist/src/proto/google/protobuf/timestamp.js.map +0 -1
  344. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +0 -352
  345. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +0 -278
  346. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +0 -1
  347. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -975
  348. package/dist/src/proto/packages/dht/protos/DhtRpc.js +0 -661
  349. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +0 -1
  350. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +0 -157
  351. package/dist/src/proto/packages/dht/protos/DhtRpc.server.js +0 -3
  352. package/dist/src/proto/packages/dht/protos/DhtRpc.server.js.map +0 -1
  353. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.d.ts +0 -87
  354. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js +0 -66
  355. package/dist/src/proto/packages/proto-rpc/protos/ProtoRpc.js.map +0 -1
  356. package/dist/src/proto/tests.d.ts +0 -39
  357. package/dist/src/proto/tests.js +0 -34
  358. package/dist/src/proto/tests.js.map +0 -1
  359. package/jest.config.js +0 -5
  360. package/src/proto/google/protobuf/any.ts +0 -319
  361. package/src/proto/google/protobuf/empty.ts +0 -82
  362. package/src/proto/google/protobuf/timestamp.ts +0 -281
  363. package/src/proto/packages/dht/protos/DhtRpc.client.ts +0 -407
  364. package/src/proto/packages/dht/protos/DhtRpc.server.ts +0 -160
  365. package/src/proto/packages/dht/protos/DhtRpc.ts +0 -1244
  366. package/src/proto/packages/proto-rpc/protos/ProtoRpc.ts +0 -108
  367. package/src/proto/tests.ts +0 -52
  368. package/test/benchmark/any.test.ts +0 -28
  369. /package/{src/types/glogal.d.ts → test/types/global.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/helpers/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,KAAK,CAAA;AAE3C;;;;;;;GAOG;AACI,MAAM,uBAAuB,GAAG,CAAC,aAAqB,EAAW,EAAE;IACtE,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,8BAAsB,CAAE,CAAC,KAAK,CAAA;IAC9D,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IACtD,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAA;IAChB,CAAC;SAAM,CAAC;QACJ,sEAAsE;QACtE,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AATY,QAAA,uBAAuB,2BASnC;AAEM,MAAM,YAAY,GAAG,CAAC,OAAe,EAAgD,EAAE;IAC1F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QACjD,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC,CAAA;AAVY,QAAA,YAAY,gBAUxB"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/helpers/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,KAAK,CAAA;AAE3C;;;;;;;GAOG;AACI,MAAM,+BAA+B,GAAG,CAAC,aAAqB,EAAW,EAAE;IAC9E,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC,8BAAsB,CAAE,CAAC,KAAK,CAAA;IAC9D,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,EAAE,KAAK,CAAA;IACtD,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAA;IAChB,CAAC;SAAM,CAAC;QACJ,sEAAsE;QACtE,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA;AATY,QAAA,+BAA+B,mCAS3C;AAEM,MAAM,YAAY,GAAG,CAAC,OAAe,EAAgD,EAAE;IAC1F,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QACjD,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC,CAAA;AAVY,QAAA,YAAY,gBAUxB"}
@@ -1,10 +1,10 @@
1
1
  import { BrandedString } from '@streamr/utils';
2
- import { PeerDescriptor } from './proto/packages/dht/protos/DhtRpc';
2
+ import { PeerDescriptor } from '../generated/packages/dht/protos/DhtRpc';
3
3
  export declare const KADEMLIA_ID_LENGTH_IN_BYTES = 20;
4
4
  export type DhtAddress = BrandedString<'DhtAddress'>;
5
5
  export type DhtAddressRaw = Uint8Array;
6
- export declare const getDhtAddressFromRaw: (raw: DhtAddressRaw) => DhtAddress;
7
- export declare const getRawFromDhtAddress: (address: DhtAddress) => DhtAddressRaw;
8
- export declare const getNodeIdFromPeerDescriptor: (peerDescriptor: PeerDescriptor) => DhtAddress;
6
+ export declare const toDhtAddress: (raw: DhtAddressRaw) => DhtAddress;
7
+ export declare const toDhtAddressRaw: (address: DhtAddress) => DhtAddressRaw;
8
+ export declare const toNodeId: (peerDescriptor: PeerDescriptor) => DhtAddress;
9
9
  export declare const areEqualPeerDescriptors: (peerDescriptor1: PeerDescriptor, peerDescriptor2: PeerDescriptor) => boolean;
10
- export declare const createRandomDhtAddress: () => DhtAddress;
10
+ export declare const randomDhtAddress: () => DhtAddress;
@@ -3,29 +3,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createRandomDhtAddress = exports.areEqualPeerDescriptors = exports.getNodeIdFromPeerDescriptor = exports.getRawFromDhtAddress = exports.getDhtAddressFromRaw = exports.KADEMLIA_ID_LENGTH_IN_BYTES = void 0;
6
+ exports.randomDhtAddress = exports.areEqualPeerDescriptors = exports.toNodeId = exports.toDhtAddressRaw = exports.toDhtAddress = exports.KADEMLIA_ID_LENGTH_IN_BYTES = void 0;
7
7
  const utils_1 = require("@streamr/utils");
8
8
  const crypto_1 = __importDefault(require("crypto"));
9
9
  // https://www.scs.stanford.edu/~dm/home/papers/kpos.pdf
10
10
  exports.KADEMLIA_ID_LENGTH_IN_BYTES = 20;
11
- const getDhtAddressFromRaw = (raw) => {
11
+ const toDhtAddress = (raw) => {
12
12
  return (0, utils_1.binaryToHex)(raw);
13
13
  };
14
- exports.getDhtAddressFromRaw = getDhtAddressFromRaw;
15
- const getRawFromDhtAddress = (address) => {
14
+ exports.toDhtAddress = toDhtAddress;
15
+ const toDhtAddressRaw = (address) => {
16
16
  return (0, utils_1.hexToBinary)(address);
17
17
  };
18
- exports.getRawFromDhtAddress = getRawFromDhtAddress;
19
- const getNodeIdFromPeerDescriptor = (peerDescriptor) => {
20
- return (0, exports.getDhtAddressFromRaw)(peerDescriptor.nodeId);
18
+ exports.toDhtAddressRaw = toDhtAddressRaw;
19
+ const toNodeId = (peerDescriptor) => {
20
+ return (0, exports.toDhtAddress)(peerDescriptor.nodeId);
21
21
  };
22
- exports.getNodeIdFromPeerDescriptor = getNodeIdFromPeerDescriptor;
22
+ exports.toNodeId = toNodeId;
23
23
  const areEqualPeerDescriptors = (peerDescriptor1, peerDescriptor2) => {
24
24
  return (0, utils_1.areEqualBinaries)(peerDescriptor1.nodeId, peerDescriptor2.nodeId);
25
25
  };
26
26
  exports.areEqualPeerDescriptors = areEqualPeerDescriptors;
27
- const createRandomDhtAddress = () => {
28
- return (0, exports.getDhtAddressFromRaw)(crypto_1.default.randomBytes(exports.KADEMLIA_ID_LENGTH_IN_BYTES));
27
+ const randomDhtAddress = () => {
28
+ return (0, exports.toDhtAddress)(crypto_1.default.randomBytes(exports.KADEMLIA_ID_LENGTH_IN_BYTES));
29
29
  };
30
- exports.createRandomDhtAddress = createRandomDhtAddress;
30
+ exports.randomDhtAddress = randomDhtAddress;
31
31
  //# sourceMappingURL=identifiers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":";;;;;;AAAA,0CAA0F;AAC1F,oDAA2B;AAG3B,wDAAwD;AAC3C,QAAA,2BAA2B,GAAG,EAAE,CAAA;AAKtC,MAAM,oBAAoB,GAAG,CAAC,GAAkB,EAAc,EAAE;IACnE,OAAO,IAAA,mBAAW,EAAC,GAAG,CAA0B,CAAA;AACpD,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC;AAEM,MAAM,oBAAoB,GAAG,CAAC,OAAmB,EAAiB,EAAE;IACvE,OAAO,IAAA,mBAAW,EAAC,OAAO,CAA6B,CAAA;AAC3D,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC;AAEM,MAAM,2BAA2B,GAAG,CAAC,cAA8B,EAAc,EAAE;IACtF,OAAO,IAAA,4BAAoB,EAAC,cAAc,CAAC,MAAM,CAAC,CAAA;AACtD,CAAC,CAAA;AAFY,QAAA,2BAA2B,+BAEvC;AAEM,MAAM,uBAAuB,GAAG,CAAC,eAA+B,EAAE,eAA+B,EAAW,EAAE;IACjH,OAAO,IAAA,wBAAgB,EAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;AAC3E,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC;AAEM,MAAM,sBAAsB,GAAG,GAAe,EAAE;IACnD,OAAO,IAAA,4BAAoB,EAAC,gBAAM,CAAC,WAAW,CAAC,mCAA2B,CAAC,CAAC,CAAA;AAChF,CAAC,CAAA;AAFY,QAAA,sBAAsB,0BAElC"}
1
+ {"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../src/identifiers.ts"],"names":[],"mappings":";;;;;;AAAA,0CAA0F;AAC1F,oDAA2B;AAG3B,wDAAwD;AAC3C,QAAA,2BAA2B,GAAG,EAAE,CAAA;AAKtC,MAAM,YAAY,GAAG,CAAC,GAAkB,EAAc,EAAE;IAC3D,OAAO,IAAA,mBAAW,EAAC,GAAG,CAA0B,CAAA;AACpD,CAAC,CAAA;AAFY,QAAA,YAAY,gBAExB;AAEM,MAAM,eAAe,GAAG,CAAC,OAAmB,EAAiB,EAAE;IAClE,OAAO,IAAA,mBAAW,EAAC,OAAO,CAA6B,CAAA;AAC3D,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAEM,MAAM,QAAQ,GAAG,CAAC,cAA8B,EAAc,EAAE;IACnE,OAAO,IAAA,oBAAY,EAAC,cAAc,CAAC,MAAM,CAAC,CAAA;AAC9C,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB;AAEM,MAAM,uBAAuB,GAAG,CAAC,eAA+B,EAAE,eAA+B,EAAW,EAAE;IACjH,OAAO,IAAA,wBAAgB,EAAC,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;AAC3E,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC;AAEM,MAAM,gBAAgB,GAAG,GAAe,EAAE;IAC7C,OAAO,IAAA,oBAAY,EAAC,gBAAM,CAAC,WAAW,CAAC,mCAA2B,CAAC,CAAC,CAAA;AACxE,CAAC,CAAA;AAFY,QAAA,gBAAgB,oBAE5B"}
@@ -1,5 +1,5 @@
1
1
  import { ProtoCallContext } from '@streamr/proto-rpc';
2
- import { PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc';
2
+ import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc';
3
3
  import { DhtRpcOptions } from './DhtRpcOptions';
4
4
  export declare class DhtCallContext extends ProtoCallContext implements DhtRpcOptions {
5
5
  targetDescriptor?: PeerDescriptor;
@@ -1,5 +1,5 @@
1
1
  import { ProtoRpcOptions } from '@streamr/proto-rpc';
2
- import { PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc';
2
+ import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc';
3
3
  export interface DhtRpcOptions extends ProtoRpcOptions {
4
4
  targetDescriptor?: PeerDescriptor;
5
5
  sourceDescriptor?: PeerDescriptor;
@@ -1,4 +1,4 @@
1
- import { Message, PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc';
1
+ import { Message, PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc';
2
2
  export interface TransportEvents {
3
3
  disconnected: (peerDescriptor: PeerDescriptor, gracefulLeave: boolean) => void;
4
4
  message: (message: Message) => void;
@@ -25,4 +25,5 @@ export interface ITransport {
25
25
  send(msg: Message, opts?: SendOptions): Promise<void>;
26
26
  getLocalPeerDescriptor(): PeerDescriptor;
27
27
  stop(): void | Promise<void>;
28
+ getDiagnosticInfo(): Record<string, unknown>;
28
29
  }
@@ -4,7 +4,8 @@ import { RpcCommunicatorOptions } from '@streamr/proto-rpc';
4
4
  import { ServiceID } from '../types/ServiceID';
5
5
  export declare class ListeningRpcCommunicator extends RoutingRpcCommunicator {
6
6
  private readonly transport;
7
- private readonly listener;
7
+ private readonly messageListener;
8
+ private readonly disconnectedListener;
8
9
  constructor(ownServiceId: ServiceID, transport: ITransport, options?: RpcCommunicatorOptions);
9
10
  destroy(): void;
10
11
  }
@@ -2,19 +2,28 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ListeningRpcCommunicator = void 0;
4
4
  const RoutingRpcCommunicator_1 = require("./RoutingRpcCommunicator");
5
+ const proto_rpc_1 = require("@streamr/proto-rpc");
6
+ const identifiers_1 = require("../identifiers");
5
7
  class ListeningRpcCommunicator extends RoutingRpcCommunicator_1.RoutingRpcCommunicator {
6
8
  transport;
7
- listener;
9
+ messageListener;
10
+ disconnectedListener;
8
11
  constructor(ownServiceId, transport, options) {
9
12
  super(ownServiceId, (msg, opts) => transport.send(msg, opts), options);
10
- this.listener = (msg) => {
13
+ this.messageListener = (msg) => {
11
14
  this.handleMessageFromPeer(msg);
12
15
  };
16
+ this.disconnectedListener = (peerDescriptor) => {
17
+ const requests = this.getRequestIds((request) => (0, identifiers_1.areEqualPeerDescriptors)(peerDescriptor, request.getCallContext().targetDescriptor));
18
+ requests.forEach((id) => this.handleClientError(id, new proto_rpc_1.RpcError.Disconnected('Peer disconnected')));
19
+ };
13
20
  this.transport = transport;
14
- transport.on('message', this.listener);
21
+ transport.on('message', this.messageListener);
22
+ transport.on('disconnected', this.disconnectedListener);
15
23
  }
16
24
  destroy() {
17
- this.transport.off('message', this.listener);
25
+ this.transport.off('message', this.messageListener);
26
+ this.transport.off('disconnected', this.disconnectedListener);
18
27
  this.stop();
19
28
  }
20
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ListeningRpcCommunicator.js","sourceRoot":"","sources":["../../../src/transport/ListeningRpcCommunicator.ts"],"names":[],"mappings":";;;AACA,qEAAiE;AAKjE,MAAa,wBAAyB,SAAQ,+CAAsB;IAC/C,SAAS,CAAY;IACrB,QAAQ,CAAwB;IAEjD,YAAY,YAAuB,EAAE,SAAqB,EAAE,OAAgC;QACxF,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QACtE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAY,EAAE,EAAE;YAC7B,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAA;IACf,CAAC;CACJ;AAjBD,4DAiBC"}
1
+ {"version":3,"file":"ListeningRpcCommunicator.js","sourceRoot":"","sources":["../../../src/transport/ListeningRpcCommunicator.ts"],"names":[],"mappings":";;;AACA,qEAAiE;AACjE,kDAAqE;AAGrE,gDAAwD;AAExD,MAAa,wBAAyB,SAAQ,+CAAsB;IAC/C,SAAS,CAAY;IACrB,eAAe,CAAwB;IACvC,oBAAoB,CAA0C;IAE/E,YAAY,YAAuB,EAAE,SAAqB,EAAE,OAAgC;QACxF,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;QACtE,IAAI,CAAC,eAAe,GAAG,CAAC,GAAY,EAAE,EAAE;YACpC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC,CAAA;QACD,IAAI,CAAC,oBAAoB,GAAG,CAAC,cAA8B,EAAE,EAAE;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,qCAAuB,EAAC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,gBAAiB,CAAC,CAAC,CAAA;YACrI,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,oBAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;QACxG,CAAC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QAC7C,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAC3D,CAAC;IAED,OAAO;QACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC7D,IAAI,CAAC,IAAI,EAAE,CAAA;IACf,CAAC;CACJ;AAxBD,4DAwBC"}
@@ -1,4 +1,4 @@
1
- import { Message } from '../proto/packages/dht/protos/DhtRpc';
1
+ import { Message } from '../../generated/packages/dht/protos/DhtRpc';
2
2
  import { RpcCommunicator, RpcCommunicatorOptions } from '@streamr/proto-rpc';
3
3
  import { DhtCallContext } from '../rpc-protocol/DhtCallContext';
4
4
  import { ServiceID } from '../types/ServiceID';
@@ -0,0 +1,12 @@
1
+ import baseConfig from '../../eslint.config.mjs'
2
+
3
+ export default [
4
+ {
5
+ // TODO remove when https://github.com/streamr-dev/network/pull/2848 merged to main
6
+ ignores: [
7
+ 'src/connection/webrtc/BrowserWebrtcConnection.ts',
8
+ 'src/connection/websocket/BrowserWebsocketClientConnection.ts'
9
+ ]
10
+ },
11
+ ...baseConfig
12
+ ]
package/jest.config.ts ADDED
@@ -0,0 +1,12 @@
1
+ import type { Config } from '@jest/types'
2
+ import defaultConfig from '../../jest.config'
3
+
4
+ const config: Config.InitialOptions = {
5
+ ...defaultConfig,
6
+ setupFilesAfterEnv: [
7
+ ...defaultConfig.setupFilesAfterEnv,
8
+ './test/utils/customMatchers.ts',
9
+ ],
10
+ }
11
+
12
+ export default config
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamr/dht",
3
- "version": "101.1.2",
3
+ "version": "102.0.0-beta.1",
4
4
  "description": "Streamr Network DHT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -12,10 +12,10 @@
12
12
  "license": "STREAMR NETWORK OPEN SOURCE LICENSE",
13
13
  "author": "Streamr Network AG <contact@streamr.network>",
14
14
  "scripts": {
15
- "generate-protoc-code": "./proto.sh",
15
+ "prebuild": "./proto.sh",
16
16
  "build": "tsc -b tsconfig.node.json",
17
17
  "build-browser": "webpack --mode=development --progress",
18
- "check": "tsc -p ./tsconfig.jest.json --noEmit",
18
+ "check": "tsc -p ./tsconfig.jest.json",
19
19
  "clean": "jest --clearCache || true; rm -rf dist *.tsbuildinfo node_modules/.cache || true",
20
20
  "eslint": "eslint --cache --cache-location=node_modules/.cache/.eslintcache/ '*/**/*.{js,ts}'",
21
21
  "test": "npm run test-unit && npm run test-integration && npm run test-end-to-end",
@@ -29,38 +29,37 @@
29
29
  "@js-sdsl/ordered-map": "^4.4.2",
30
30
  "@protobuf-ts/runtime": "^2.8.2",
31
31
  "@protobuf-ts/runtime-rpc": "^2.8.2",
32
- "@streamr/autocertifier-client": "101.1.2",
33
- "@streamr/cdn-location": "101.1.2",
34
- "@streamr/geoip-location": "101.1.2",
35
- "@streamr/proto-rpc": "101.1.2",
36
- "@streamr/utils": "101.1.2",
32
+ "@streamr/autocertifier-client": "102.0.0-beta.1",
33
+ "@streamr/cdn-location": "102.0.0-beta.1",
34
+ "@streamr/geoip-location": "102.0.0-beta.1",
35
+ "@streamr/proto-rpc": "102.0.0-beta.1",
36
+ "@streamr/utils": "102.0.0-beta.1",
37
37
  "eventemitter3": "^5.0.0",
38
38
  "heap": "^0.2.6",
39
39
  "ipaddr.js": "^2.0.1",
40
40
  "k-bucket": "^5.1.0",
41
41
  "lodash": "^4.17.21",
42
- "lru-cache": "11.0.0",
42
+ "lru-cache": "^11.0.2",
43
43
  "node-datachannel": "^0.10.1",
44
44
  "querystring": "0.2.1",
45
- "uuid": "^10.0.0",
45
+ "uuid": "^11.0.5",
46
46
  "websocket": "^1.0.34",
47
47
  "ws": "^8.18.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@streamr/browser-test-runner": "^0.0.1",
51
- "@streamr/test-utils": "101.1.2",
51
+ "@streamr/test-utils": "102.0.0-beta.1",
52
52
  "@types/heap": "^0.2.34",
53
53
  "@types/k-bucket": "^5.0.1",
54
- "@types/lodash": "^4.17.7",
55
- "@types/uuid": "^10.0.0",
54
+ "@types/lodash": "^4.17.14",
56
55
  "@types/websocket": "^1.0.10",
57
- "@types/ws": "^8.5.12",
56
+ "@types/ws": "^8.5.13",
58
57
  "jest-leak-detector": "^27.3.1",
59
- "jest-matcher-utils": "^29.5.0",
60
- "ts-essentials": "^10.0.2"
58
+ "jest-matcher-utils": "^29.7.0",
59
+ "ts-essentials": "^10.0.4"
61
60
  },
62
61
  "optionalDependencies": {
63
- "bufferutil": "^4.0.8",
64
- "utf-8-validate": "^6.0.3"
62
+ "bufferutil": "^4.0.9",
63
+ "utf-8-validate": "^6.0.5"
65
64
  }
66
65
  }
package/proto.sh CHANGED
@@ -1,3 +1,2 @@
1
- mkdir -p ./src/proto
2
- # npx protoc --ts_out ./src/proto --ts_opt server_generic,generate_dependencies --proto_path ../.. packages/trackerless-network/protos/NetworkRpc.proto
3
- npx protoc --ts_out ./src/proto --ts_opt server_generic,generate_dependencies,long_type_number --proto_path ../.. packages/dht/protos/DhtRpc.proto
1
+ mkdir -p ./generated
2
+ npx protoc --ts_out ./generated --ts_opt server_generic,generate_dependencies,long_type_number --proto_path ../.. packages/dht/protos/DhtRpc.proto
@@ -50,6 +50,7 @@ service ConnectionLockRpc {
50
50
  rpc lockRequest (LockRequest) returns (LockResponse);
51
51
  rpc unlockRequest (UnlockRequest) returns (google.protobuf.Empty);
52
52
  rpc gracefulDisconnect (DisconnectNotice) returns (google.protobuf.Empty);
53
+ rpc setPrivate (SetPrivateRequest) returns (google.protobuf.Empty);
53
54
  }
54
55
 
55
56
  service ExternalApiRpc {
@@ -214,7 +215,7 @@ message ConnectivityResponse {
214
215
  string natType = 2;
215
216
  ConnectivityMethod websocket = 3;
216
217
  uint32 ipAddress = 4;
217
- string version = 5;
218
+ string protocolVersion = 5;
218
219
  optional double latitude = 6;
219
220
  optional double longitude = 7;
220
221
  }
@@ -222,19 +223,21 @@ message ConnectivityResponse {
222
223
  message HandshakeRequest {
223
224
  PeerDescriptor sourcePeerDescriptor = 1;
224
225
  optional PeerDescriptor targetPeerDescriptor = 2;
225
- string version = 3;
226
+ string protocolVersion = 3;
227
+ string applicationVersion = 4;
226
228
  }
227
229
 
228
230
  message HandshakeResponse {
229
231
  PeerDescriptor sourcePeerDescriptor = 1;
230
232
  optional HandshakeError error = 2;
231
- string version = 3;
233
+ string protocolVersion = 3;
234
+ string applicationVersion = 4;
232
235
  }
233
236
 
234
237
  enum HandshakeError {
235
238
  DUPLICATE_CONNECTION = 0;
236
239
  INVALID_TARGET_PEER_DESCRIPTOR = 1;
237
- UNSUPPORTED_VERSION = 2;
240
+ UNSUPPORTED_PROTOCOL_VERSION = 2;
238
241
  }
239
242
 
240
243
  // Wraps all messages
@@ -301,6 +304,10 @@ message DisconnectNotice {
301
304
  DisconnectMode disconnectMode = 1;
302
305
  }
303
306
 
307
+ message SetPrivateRequest {
308
+ bool isPrivate = 1;
309
+ }
310
+
304
311
  message ExternalFetchDataRequest {
305
312
  bytes key = 1;
306
313
  }
@@ -1,5 +1,5 @@
1
1
  import EventEmitter from 'eventemitter3'
2
- import { PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc'
2
+ import { PeerDescriptor } from '../../generated/packages/dht/protos/DhtRpc'
3
3
  import { ConnectionID, ConnectionType, ConnectionEvents } from './IConnection'
4
4
  import { v4 as uuid } from 'uuid'
5
5
 
@@ -1,25 +1,27 @@
1
1
  import { ServerCallContext } from '@protobuf-ts/runtime-rpc'
2
2
  import { Logger } from '@streamr/utils'
3
- import { Empty } from '../proto/google/protobuf/empty'
3
+ import { Empty } from '../../generated/google/protobuf/empty'
4
4
  import {
5
5
  DisconnectMode,
6
6
  DisconnectNotice,
7
7
  LockRequest,
8
8
  LockResponse,
9
9
  PeerDescriptor,
10
- UnlockRequest
11
- } from '../proto/packages/dht/protos/DhtRpc'
12
- import { IConnectionLockRpc } from '../proto/packages/dht/protos/DhtRpc.server'
10
+ UnlockRequest,
11
+ SetPrivateRequest
12
+ } from '../../generated/packages/dht/protos/DhtRpc'
13
+ import { IConnectionLockRpc } from '../../generated/packages/dht/protos/DhtRpc.server'
13
14
  import { DhtCallContext } from '../rpc-protocol/DhtCallContext'
14
15
  import { getNodeIdOrUnknownFromPeerDescriptor } from './ConnectionManager'
15
16
  import { LockID } from './ConnectionLockStates'
16
- import { DhtAddress, areEqualPeerDescriptors, getNodeIdFromPeerDescriptor } from '../identifiers'
17
+ import { DhtAddress, areEqualPeerDescriptors, toNodeId } from '../identifiers'
17
18
 
18
19
  interface ConnectionLockRpcLocalOptions {
19
20
  addRemoteLocked: (id: DhtAddress, lockId: LockID) => void
20
21
  removeRemoteLocked: (id: DhtAddress, lockId: LockID) => void
21
22
  closeConnection: (peerDescriptor: PeerDescriptor, gracefulLeave: boolean, reason?: string) => Promise<void>
22
23
  getLocalPeerDescriptor: () => PeerDescriptor
24
+ setPrivate: (id: DhtAddress, isPrivate: boolean) => void
23
25
  }
24
26
 
25
27
  const logger = new Logger(module)
@@ -40,7 +42,7 @@ export class ConnectionLockRpcLocal implements IConnectionLockRpc {
40
42
  }
41
43
  return response
42
44
  }
43
- const remoteNodeId = getNodeIdFromPeerDescriptor(senderPeerDescriptor)
45
+ const remoteNodeId = toNodeId(senderPeerDescriptor)
44
46
  this.options.addRemoteLocked(remoteNodeId, lockRequest.lockId)
45
47
  const response: LockResponse = {
46
48
  accepted: true
@@ -50,7 +52,7 @@ export class ConnectionLockRpcLocal implements IConnectionLockRpc {
50
52
 
51
53
  async unlockRequest(unlockRequest: UnlockRequest, context: ServerCallContext): Promise<Empty> {
52
54
  const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
53
- const nodeId = getNodeIdFromPeerDescriptor(senderPeerDescriptor)
55
+ const nodeId = toNodeId(senderPeerDescriptor)
54
56
  this.options.removeRemoteLocked(nodeId, unlockRequest.lockId)
55
57
  return {}
56
58
  }
@@ -66,4 +68,11 @@ export class ConnectionLockRpcLocal implements IConnectionLockRpc {
66
68
  }
67
69
  return {}
68
70
  }
71
+
72
+ async setPrivate(request: SetPrivateRequest, context: ServerCallContext): Promise<Empty> {
73
+ const senderPeerDescriptor = (context as DhtCallContext).incomingSourceDescriptor!
74
+ const senderId = toNodeId(senderPeerDescriptor)
75
+ this.options.setPrivate(senderId, request.isPrivate)
76
+ return {}
77
+ }
69
78
  }
@@ -1,16 +1,16 @@
1
1
  import { Logger } from '@streamr/utils'
2
2
  import { RpcRemote } from '../dht/contact/RpcRemote'
3
- import { DisconnectMode, DisconnectNotice, LockRequest, UnlockRequest } from '../proto/packages/dht/protos/DhtRpc'
4
- import { ConnectionLockRpcClient } from '../proto/packages/dht/protos/DhtRpc.client'
3
+ import { DisconnectMode, DisconnectNotice, LockRequest, UnlockRequest, SetPrivateRequest } from '../../generated/packages/dht/protos/DhtRpc'
4
+ import { ConnectionLockRpcClient } from '../../generated/packages/dht/protos/DhtRpc.client'
5
5
  import { LockID } from './ConnectionLockStates'
6
- import { getNodeIdFromPeerDescriptor } from '../identifiers'
6
+ import { toNodeId } from '../identifiers'
7
7
 
8
8
  const logger = new Logger(module)
9
9
 
10
10
  export class ConnectionLockRpcRemote extends RpcRemote<ConnectionLockRpcClient> {
11
11
 
12
12
  public async lockRequest(lockId: LockID): Promise<boolean> {
13
- logger.trace(`Requesting locked connection to ${getNodeIdFromPeerDescriptor(this.getPeerDescriptor())}`)
13
+ logger.trace(`Requesting locked connection to ${toNodeId(this.getPeerDescriptor())}`)
14
14
  const request: LockRequest = {
15
15
  lockId
16
16
  }
@@ -25,7 +25,7 @@ export class ConnectionLockRpcRemote extends RpcRemote<ConnectionLockRpcClient>
25
25
  }
26
26
 
27
27
  public unlockRequest(lockId: LockID): void {
28
- logger.trace(`Requesting connection to be unlocked from ${getNodeIdFromPeerDescriptor(this.getPeerDescriptor())}`)
28
+ logger.trace(`Requesting connection to be unlocked from ${toNodeId(this.getPeerDescriptor())}`)
29
29
  const request: UnlockRequest = {
30
30
  lockId
31
31
  }
@@ -38,7 +38,7 @@ export class ConnectionLockRpcRemote extends RpcRemote<ConnectionLockRpcClient>
38
38
  }
39
39
 
40
40
  public async gracefulDisconnect(disconnectMode: DisconnectMode): Promise<void> {
41
- logger.trace(`Notifying a graceful disconnect to ${getNodeIdFromPeerDescriptor(this.getPeerDescriptor())}`)
41
+ logger.trace(`Notifying a graceful disconnect to ${toNodeId(this.getPeerDescriptor())}`)
42
42
  const request: DisconnectNotice = {
43
43
  disconnectMode
44
44
  }
@@ -49,4 +49,16 @@ export class ConnectionLockRpcRemote extends RpcRemote<ConnectionLockRpcClient>
49
49
  })
50
50
  await this.getClient().gracefulDisconnect(request, options)
51
51
  }
52
+
53
+ public async setPrivate(isPrivate: boolean): Promise<void> {
54
+ logger.trace(`Setting isPrivate: ${isPrivate} for ${toNodeId(this.getPeerDescriptor())}`)
55
+ const request: SetPrivateRequest = {
56
+ isPrivate
57
+ }
58
+ const options = this.formDhtRpcOptions({
59
+ connect: false,
60
+ notification: true
61
+ })
62
+ await this.getClient().setPrivate(request, options)
63
+ }
52
64
  }
@@ -12,6 +12,8 @@ export class ConnectionLockStates {
12
12
  // TODO: remove weakLocks use localLocks instead. When opening weakLocks from the ConnectioManager,
13
13
  // simply do not send lock requests.
14
14
  private weakLocks: Map<DhtAddress, Set<LockID>> = new Map()
15
+ // Used to filter proxy connections from the connections view
16
+ private remotePrivateConnections: Set<DhtAddress> = new Set()
15
17
 
16
18
  public getLocalLockedConnectionCount(): number {
17
19
  return this.localLocks.size
@@ -99,6 +101,22 @@ export class ConnectionLockStates {
99
101
  }
100
102
  }
101
103
 
104
+ public addPrivate(id: DhtAddress): void {
105
+ this.remotePrivateConnections.add(id)
106
+ }
107
+
108
+ public removePrivate(id: DhtAddress): void {
109
+ this.remotePrivateConnections.delete(id)
110
+ }
111
+
112
+ public getPrivateConnections(): Set<DhtAddress> {
113
+ return this.remotePrivateConnections
114
+ }
115
+
116
+ public isPrivate(id: DhtAddress): boolean {
117
+ return this.remotePrivateConnections.has(id)
118
+ }
119
+
102
120
  public clearAllLocks(id: DhtAddress): void {
103
121
  this.localLocks.delete(id)
104
122
  this.remoteLocks.delete(id)