@streamr/dht 100.0.0-pretestnet.6 → 100.0.0-testnet-one.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/dist/src/connection/ConnectionLockHandler.js +2 -2
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +2 -2
  4. package/dist/src/connection/ConnectionLockRpcRemote.js +2 -2
  5. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  6. package/dist/src/connection/ConnectionManager.js +4 -1
  7. package/dist/src/connection/ConnectionManager.js.map +1 -1
  8. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  9. package/dist/src/connection/ManagedConnection.js +1 -0
  10. package/dist/src/connection/ManagedConnection.js.map +1 -1
  11. package/dist/src/connection/connectivityChecker.d.ts +9 -0
  12. package/dist/src/connection/connectivityChecker.js +121 -0
  13. package/dist/src/connection/connectivityChecker.js.map +1 -0
  14. package/dist/src/connection/connectivityRequestHandler.d.ts +2 -0
  15. package/dist/src/connection/connectivityRequestHandler.js +79 -0
  16. package/dist/src/connection/connectivityRequestHandler.js.map +1 -0
  17. package/dist/src/connection/simulator/Simulator.js +3 -2
  18. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  19. package/dist/src/connection/simulator/SimulatorConnection.js +1 -1
  20. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -1
  21. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +1 -1
  22. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  23. package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
  24. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  25. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +1 -1
  26. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  27. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +2 -2
  28. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +2 -2
  29. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -1
  30. package/dist/src/connection/webrtc/iceServerAsString.js +1 -1
  31. package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
  32. package/dist/src/connection/websocket/ClientWebsocket.js +1 -0
  33. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
  34. package/dist/src/connection/websocket/WebsocketConnector.d.ts +0 -1
  35. package/dist/src/connection/websocket/WebsocketConnector.js +41 -7
  36. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  37. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +2 -2
  38. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +2 -2
  39. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
  40. package/dist/src/dht/DhtNode.d.ts +9 -19
  41. package/dist/src/dht/DhtNode.js +76 -216
  42. package/dist/src/dht/DhtNode.js.map +1 -1
  43. package/dist/src/dht/DhtNodeRpcLocal.js +3 -3
  44. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  45. package/dist/src/dht/DhtNodeRpcRemote.d.ts +3 -3
  46. package/dist/src/dht/DhtNodeRpcRemote.js +4 -4
  47. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  48. package/dist/src/dht/ExternalApiRpcLocal.d.ts +4 -4
  49. package/dist/src/dht/ExternalApiRpcLocal.js +5 -12
  50. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  51. package/dist/src/dht/ExternalApiRpcRemote.d.ts +3 -3
  52. package/dist/src/dht/ExternalApiRpcRemote.js +5 -5
  53. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  54. package/dist/src/dht/PeerManager.d.ts +48 -0
  55. package/dist/src/dht/PeerManager.js +208 -0
  56. package/dist/src/dht/PeerManager.js.map +1 -0
  57. package/dist/src/dht/contact/ContactList.d.ts +1 -1
  58. package/dist/src/dht/contact/ContactList.js +1 -0
  59. package/dist/src/dht/contact/ContactList.js.map +1 -1
  60. package/dist/src/dht/contact/{Remote.d.ts → RpcRemote.d.ts} +3 -3
  61. package/dist/src/dht/contact/{Remote.js → RpcRemote.js} +8 -8
  62. package/dist/src/dht/contact/RpcRemote.js.map +1 -0
  63. package/dist/src/dht/discovery/DiscoverySession.d.ts +2 -9
  64. package/dist/src/dht/discovery/DiscoverySession.js +12 -26
  65. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  66. package/dist/src/dht/discovery/PeerDiscovery.d.ts +2 -9
  67. package/dist/src/dht/discovery/PeerDiscovery.js +13 -15
  68. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  69. package/dist/src/dht/find/FindRpcLocal.js +2 -1
  70. package/dist/src/dht/find/FindRpcLocal.js.map +1 -1
  71. package/dist/src/dht/find/FindSession.d.ts +6 -6
  72. package/dist/src/dht/find/FindSession.js +13 -13
  73. package/dist/src/dht/find/FindSession.js.map +1 -1
  74. package/dist/src/dht/find/FindSessionRpcLocal.d.ts +1 -1
  75. package/dist/src/dht/find/FindSessionRpcRemote.d.ts +2 -2
  76. package/dist/src/dht/find/FindSessionRpcRemote.js +2 -2
  77. package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -1
  78. package/dist/src/dht/find/Finder.d.ts +4 -4
  79. package/dist/src/dht/find/Finder.js +50 -42
  80. package/dist/src/dht/find/Finder.js.map +1 -1
  81. package/dist/src/dht/routing/FindRpcRemote.d.ts +2 -2
  82. package/dist/src/dht/routing/FindRpcRemote.js +7 -5
  83. package/dist/src/dht/routing/FindRpcRemote.js.map +1 -1
  84. package/dist/src/dht/routing/Router.d.ts +2 -6
  85. package/dist/src/dht/routing/Router.js +21 -18
  86. package/dist/src/dht/routing/Router.js.map +1 -1
  87. package/dist/src/dht/routing/RouterRpcLocal.d.ts +2 -2
  88. package/dist/src/dht/routing/RouterRpcLocal.js +4 -3
  89. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  90. package/dist/src/dht/routing/RouterRpcRemote.d.ts +2 -2
  91. package/dist/src/dht/routing/RouterRpcRemote.js +13 -8
  92. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  93. package/dist/src/dht/routing/RoutingSession.d.ts +1 -1
  94. package/dist/src/dht/routing/RoutingSession.js +16 -11
  95. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  96. package/dist/src/dht/routing/getPreviousPeer.js.map +1 -1
  97. package/dist/src/dht/store/LocalDataStore.d.ts +3 -3
  98. package/dist/src/dht/store/LocalDataStore.js +18 -17
  99. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  100. package/dist/src/dht/store/StoreRpcLocal.d.ts +10 -9
  101. package/dist/src/dht/store/StoreRpcLocal.js +91 -99
  102. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  103. package/dist/src/dht/store/StoreRpcRemote.d.ts +4 -5
  104. package/dist/src/dht/store/StoreRpcRemote.js +6 -15
  105. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  106. package/dist/src/exports.d.ts +1 -1
  107. package/dist/src/exports.js +4 -4
  108. package/dist/src/exports.js.map +1 -1
  109. package/dist/src/helpers/PeerID.js +2 -2
  110. package/dist/src/helpers/PeerID.js.map +1 -1
  111. package/dist/src/helpers/UUID.js +1 -1
  112. package/dist/src/helpers/UUID.js.map +1 -1
  113. package/dist/src/helpers/nodeId.d.ts +1 -0
  114. package/dist/src/helpers/{kademliaId.js → nodeId.js} +4 -4
  115. package/dist/src/helpers/nodeId.js.map +1 -0
  116. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  117. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  118. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +5 -16
  119. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +2 -9
  120. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  121. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +80 -95
  122. package/dist/src/proto/packages/dht/protos/DhtRpc.js +67 -66
  123. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  124. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +3 -10
  125. package/dist/src/transport/RoutingRpcCommunicator.js +2 -0
  126. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  127. package/karma.config.js +2 -2
  128. package/package.json +5 -5
  129. package/protos/DhtRpc.proto +36 -36
  130. package/src/connection/ConnectionLockHandler.ts +2 -2
  131. package/src/connection/ConnectionLockRpcRemote.ts +2 -2
  132. package/src/connection/ConnectionManager.ts +4 -1
  133. package/src/connection/ConnectorFacade.ts +5 -4
  134. package/src/connection/ManagedConnection.ts +1 -0
  135. package/src/connection/connectivityChecker.ts +101 -0
  136. package/src/connection/connectivityRequestHandler.ts +79 -0
  137. package/src/connection/simulator/Simulator.ts +3 -2
  138. package/src/connection/simulator/SimulatorConnection.ts +1 -1
  139. package/src/connection/webrtc/BrowserWebrtcConnection.ts +10 -10
  140. package/src/connection/webrtc/NodeWebrtcConnection.ts +1 -1
  141. package/src/connection/webrtc/WebrtcConnector.ts +1 -1
  142. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +1 -1
  143. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +2 -2
  144. package/src/connection/webrtc/iceServerAsString.ts +1 -1
  145. package/src/connection/websocket/ClientWebsocket.ts +1 -0
  146. package/src/connection/websocket/WebsocketConnector.ts +22 -12
  147. package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +2 -2
  148. package/src/dht/DhtNode.ts +102 -269
  149. package/src/dht/DhtNodeRpcLocal.ts +3 -3
  150. package/src/dht/DhtNodeRpcRemote.ts +4 -4
  151. package/src/dht/ExternalApiRpcLocal.ts +8 -13
  152. package/src/dht/ExternalApiRpcRemote.ts +5 -5
  153. package/src/dht/PeerManager.ts +256 -0
  154. package/src/dht/contact/ContactList.ts +3 -2
  155. package/src/dht/contact/{Remote.ts → RpcRemote.ts} +7 -6
  156. package/src/dht/discovery/DiscoverySession.ts +15 -40
  157. package/src/dht/discovery/PeerDiscovery.ts +18 -23
  158. package/src/dht/find/FindRpcLocal.ts +2 -2
  159. package/src/dht/find/FindSession.ts +20 -20
  160. package/src/dht/find/FindSessionRpcLocal.ts +1 -1
  161. package/src/dht/find/FindSessionRpcRemote.ts +2 -2
  162. package/src/dht/find/Finder.ts +79 -58
  163. package/src/dht/routing/FindRpcRemote.ts +7 -5
  164. package/src/dht/routing/Router.ts +22 -21
  165. package/src/dht/routing/RouterRpcLocal.ts +5 -5
  166. package/src/dht/routing/RouterRpcRemote.ts +13 -10
  167. package/src/dht/routing/RoutingSession.ts +15 -10
  168. package/src/dht/routing/getPreviousPeer.ts +1 -1
  169. package/src/dht/store/LocalDataStore.ts +18 -17
  170. package/src/dht/store/StoreRpcLocal.ts +101 -108
  171. package/src/dht/store/StoreRpcRemote.ts +7 -23
  172. package/src/exports.ts +1 -1
  173. package/src/helpers/PeerID.ts +2 -2
  174. package/src/helpers/UUID.ts +1 -1
  175. package/src/helpers/{kademliaId.ts → nodeId.ts} +1 -1
  176. package/src/helpers/peerIdFromPeerDescriptor.ts +3 -3
  177. package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -20
  178. package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -10
  179. package/src/proto/packages/dht/protos/DhtRpc.ts +103 -135
  180. package/src/transport/RoutingRpcCommunicator.ts +2 -0
  181. package/test/benchmark/Find.test.ts +4 -4
  182. package/test/benchmark/KademliaCorrectness.test.ts +2 -2
  183. package/test/benchmark/kademlia-simulation/Contact.ts +1 -1
  184. package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +1 -1
  185. package/test/end-to-end/Layer0-Layer1.test.ts +1 -1
  186. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +1 -1
  187. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +2 -2
  188. package/test/end-to-end/Layer0Webrtc.test.ts +2 -2
  189. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +1 -1
  190. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +1 -1
  191. package/test/end-to-end/WebsocketConnectionRequest.test.ts +1 -1
  192. package/test/end-to-end/memory-leak.test.ts +8 -12
  193. package/test/integration/ConnectionLocking.test.ts +2 -2
  194. package/test/integration/ConnectionManager.test.ts +14 -14
  195. package/test/integration/DhtJoinPeerDiscovery.test.ts +1 -1
  196. package/test/integration/DhtNodeExternalAPI.test.ts +10 -7
  197. package/test/integration/DhtNodeRpcRemote.test.ts +4 -4
  198. package/test/integration/DhtRpc.test.ts +6 -6
  199. package/test/integration/Find.test.ts +3 -3
  200. package/test/integration/Layer1-scale.test.ts +2 -2
  201. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -1
  202. package/test/integration/{MigrateData.test.ts → ReplicateData.test.ts} +9 -9
  203. package/test/integration/RouteMessage.test.ts +2 -2
  204. package/test/integration/RouterRpcRemote.test.ts +2 -2
  205. package/test/integration/RpcErrors.test.ts +2 -2
  206. package/test/integration/ScaleDownDht.test.ts +4 -2
  207. package/test/integration/SimultaneousConnections.test.ts +8 -8
  208. package/test/integration/Store.test.ts +33 -13
  209. package/test/integration/StoreAndDelete.test.ts +19 -17
  210. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +20 -20
  211. package/test/integration/StoreRpcRemote.test.ts +3 -3
  212. package/test/integration/WebrtcConnectionManagement.test.ts +2 -2
  213. package/test/integration/WebrtcConnectorRpc.test.ts +1 -1
  214. package/test/integration/WebsocketConnectionManagement.test.ts +2 -2
  215. package/test/integration/WebsocketConnectorRpc.test.ts +2 -2
  216. package/test/unit/ConnectivityHelpers.test.ts +4 -4
  217. package/test/unit/Finder.test.ts +69 -23
  218. package/test/unit/LocalDataStore.test.ts +60 -43
  219. package/test/unit/RandomContactList.test.ts +2 -2
  220. package/test/unit/Router.test.ts +19 -11
  221. package/test/unit/RoutingSession.test.ts +76 -0
  222. package/test/unit/SortedContactList.test.ts +2 -2
  223. package/test/unit/WebsocketConnector.test.ts +1 -1
  224. package/test/unit/connectivityRequestHandler.test.ts +71 -0
  225. package/test/utils/mock/Router.ts +1 -1
  226. package/test/utils/utils.ts +24 -22
  227. package/dist/src/connection/ConnectivityChecker.d.ts +0 -17
  228. package/dist/src/connection/ConnectivityChecker.js +0 -208
  229. package/dist/src/connection/ConnectivityChecker.js.map +0 -1
  230. package/dist/src/dht/contact/Remote.js.map +0 -1
  231. package/dist/src/helpers/kademliaId.d.ts +0 -1
  232. package/dist/src/helpers/kademliaId.js.map +0 -1
  233. package/src/connection/ConnectivityChecker.ts +0 -199
@@ -1,10 +1,10 @@
1
1
  import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
2
2
  import { DhtNode } from '../../src/dht/DhtNode'
3
3
  import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
4
- import { createMockConnectionDhtNode, waitConnectionManagersReadyForTesting } from '../utils/utils'
5
- import { PeerID } from '../../src/helpers/PeerID'
4
+ import { createMockConnectionDhtNode, createMockPeerDescriptor, waitConnectionManagersReadyForTesting } from '../utils/utils'
6
5
  import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
7
6
  import { Any } from '../../src/proto/google/protobuf/any'
7
+ import { createRandomNodeId } from '../../src/helpers/nodeId'
8
8
 
9
9
  describe('Storing data in DHT', () => {
10
10
  let entryPoint: DhtNode
@@ -46,45 +46,47 @@ describe('Storing data in DHT', () => {
46
46
 
47
47
  it('Data can be deleted', async () => {
48
48
  const storingNode = getRandomNode()
49
- const dataKey = PeerID.fromString('3232323e12r31r3')
50
- const data = Any.pack(entrypointDescriptor, PeerDescriptor)
51
- const successfulStorers = await storingNode.storeDataToDht(dataKey.value, data)
49
+ const dataKey = createRandomNodeId()
50
+ const storedData = createMockPeerDescriptor()
51
+ const data = Any.pack(storedData, PeerDescriptor)
52
+ const successfulStorers = await storingNode.storeDataToDht(dataKey, data)
52
53
  expect(successfulStorers.length).toBeGreaterThan(4)
53
- await storingNode.deleteDataFromDht(dataKey.value)
54
+ await storingNode.deleteDataFromDht(dataKey, true)
54
55
 
55
56
  const fetchingNode = getRandomNode()
56
- const results = await fetchingNode.getDataFromDht(dataKey.value)
57
+ const results = await fetchingNode.getDataFromDht(dataKey)
57
58
  results.forEach((entry) => {
58
59
  const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
59
60
  expect(entry.deleted).toBeTrue()
60
- expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
61
+ expect(areEqualPeerDescriptors(fetchedDescriptor, storedData)).toBeTrue()
61
62
  })
62
63
  }, 90000)
63
64
 
64
65
  it('Data can be deleted and re-stored', async () => {
65
66
  const storingNode = getRandomNode()
66
- const dataKey = PeerID.fromString('3232323e12r31r3')
67
- const data = Any.pack(entrypointDescriptor, PeerDescriptor)
68
- const successfulStorers1 = await storingNode.storeDataToDht(dataKey.value, data)
67
+ const dataKey = createRandomNodeId()
68
+ const storedData = createMockPeerDescriptor()
69
+ const data = Any.pack(storedData, PeerDescriptor)
70
+ const successfulStorers1 = await storingNode.storeDataToDht(dataKey, data)
69
71
  expect(successfulStorers1.length).toBeGreaterThan(4)
70
- await storingNode.deleteDataFromDht(dataKey.value)
72
+ await storingNode.deleteDataFromDht(dataKey, true)
71
73
 
72
74
  const fetchingNode = getRandomNode()
73
- const results1 = await fetchingNode.getDataFromDht(dataKey.value)
75
+ const results1 = await fetchingNode.getDataFromDht(dataKey)
74
76
  results1.forEach((entry) => {
75
77
  const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
76
78
  expect(entry.deleted).toBeTrue()
77
- expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
79
+ expect(areEqualPeerDescriptors(fetchedDescriptor, storedData)).toBeTrue()
78
80
  })
79
81
 
80
- const successfulStorers2 = await storingNode.storeDataToDht(dataKey.value, data)
82
+ const successfulStorers2 = await storingNode.storeDataToDht(dataKey, data)
81
83
  expect(successfulStorers2.length).toBeGreaterThan(4)
82
84
 
83
- const results2 = await fetchingNode.getDataFromDht(dataKey.value)
85
+ const results2 = await fetchingNode.getDataFromDht(dataKey)
84
86
  results2.forEach((entry) => {
85
87
  const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
86
88
  expect(entry.deleted).toBeFalse()
87
- expect(areEqualPeerDescriptors(fetchedDescriptor, entrypointDescriptor)).toBeTrue()
89
+ expect(areEqualPeerDescriptors(fetchedDescriptor, storedData)).toBeTrue()
88
90
  })
89
91
  }, 90000)
90
92
  })
@@ -1,11 +1,11 @@
1
- import { createMockConnectionDhtNode } from '../utils/utils'
1
+ import { createMockConnectionDhtNode, createMockPeerDescriptor } from '../utils/utils'
2
2
  import { DhtNode } from '../../src/dht/DhtNode'
3
3
  import { Simulator } from '../../src/connection/simulator/Simulator'
4
- import { PeerID } from '../../src/helpers/PeerID'
5
4
  import { Any } from '../../src/proto/google/protobuf/any'
6
5
  import { PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
7
6
  import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
8
7
  import { waitForCondition } from '@streamr/utils'
8
+ import { createRandomNodeId } from '../../src/helpers/nodeId'
9
9
 
10
10
  describe('Storing data in DHT with two peers', () => {
11
11
 
@@ -41,31 +41,31 @@ describe('Storing data in DHT with two peers', () => {
41
41
  })
42
42
 
43
43
  it('Node can store on two peer DHT', async () => {
44
- const dataKey1 = PeerID.fromString('node0-stored-data')
45
- const data1 = Any.pack(otherNode.getLocalPeerDescriptor(), PeerDescriptor)
46
- const dataKey2 = PeerID.fromString('other-node-stored-data')
47
- const data2 = Any.pack(entryPoint.getLocalPeerDescriptor(), PeerDescriptor)
44
+ const storedData1 = createMockPeerDescriptor()
45
+ const storedData2 = createMockPeerDescriptor()
46
+ const dataKey1 = createRandomNodeId()
47
+ const dataKey2 = createRandomNodeId()
48
+ const data1 = Any.pack(storedData1, PeerDescriptor)
49
+ const data2 = Any.pack(storedData2, PeerDescriptor)
48
50
 
49
- const successfulStorers1 = await otherNode.storeDataToDht(dataKey1.value, data1)
50
- const successfulStorers2 = await entryPoint.storeDataToDht(dataKey2.value, data2)
51
- expect(successfulStorers1[0].kademliaId).toStrictEqual(entryPoint.getLocalPeerDescriptor().kademliaId)
52
- expect(successfulStorers2[0].kademliaId).toStrictEqual(otherNode.getLocalPeerDescriptor().kademliaId)
51
+ await otherNode.storeDataToDht(dataKey1, data1)
52
+ await entryPoint.storeDataToDht(dataKey2, data2)
53
53
 
54
- const foundData1 = await otherNode.getDataFromDht(dataKey1.value)
55
- const foundData2 = await entryPoint.getDataFromDht(dataKey2.value)
56
- expect(areEqualPeerDescriptors(otherNode.getLocalPeerDescriptor(), Any.unpack(foundData1[0]!.data!, PeerDescriptor))).toBeTrue()
57
- expect(areEqualPeerDescriptors(entryPoint.getLocalPeerDescriptor(), Any.unpack(foundData2[0]!.data!, PeerDescriptor))).toBeTrue()
54
+ const foundData1 = await otherNode.getDataFromDht(dataKey1)
55
+ const foundData2 = await entryPoint.getDataFromDht(dataKey2)
56
+ expect(areEqualPeerDescriptors(storedData1, Any.unpack(foundData1[0]!.data!, PeerDescriptor))).toBeTrue()
57
+ expect(areEqualPeerDescriptors(storedData2, Any.unpack(foundData2[0]!.data!, PeerDescriptor))).toBeTrue()
58
58
  })
59
59
 
60
60
  it('Can store on one peer DHT', async () => {
61
61
  await otherNode.stop()
62
62
  await waitForCondition(() => entryPoint.getBucketSize() === 0)
63
- const dataKey = PeerID.fromString('data-to-store')
64
- const data = Any.pack(entryPoint.getLocalPeerDescriptor(), PeerDescriptor)
65
- const successfulStorers = await entryPoint.storeDataToDht(dataKey.value, data)
66
- expect(successfulStorers[0].kademliaId).toStrictEqual(entryPoint.getLocalPeerDescriptor().kademliaId)
63
+ const dataKey = createRandomNodeId()
64
+ const storedData = createMockPeerDescriptor()
65
+ const data = Any.pack(storedData, PeerDescriptor)
66
+ await entryPoint.storeDataToDht(dataKey, data)
67
67
 
68
- const foundData = await entryPoint.getDataFromDht(dataKey.value)
69
- expect(areEqualPeerDescriptors(entryPoint.getLocalPeerDescriptor(), Any.unpack(foundData[0]!.data!, PeerDescriptor))).toBeTrue()
68
+ const foundData = await entryPoint.getDataFromDht(dataKey)
69
+ expect(areEqualPeerDescriptors(storedData, Any.unpack(foundData[0]!.data!, PeerDescriptor))).toBeTrue()
70
70
  }, 60000)
71
71
  })
@@ -18,16 +18,16 @@ describe('StoreRpcRemote', () => {
18
18
  let serverRpcCommunicator: RpcCommunicator
19
19
  const serviceId = 'test'
20
20
  const clientPeerDescriptor: PeerDescriptor = {
21
- kademliaId: generateId('client'),
21
+ nodeId: generateId('client'),
22
22
  type: NodeType.NODEJS
23
23
  }
24
24
  const serverPeerDescriptor: PeerDescriptor = {
25
- kademliaId: generateId('server'),
25
+ nodeId: generateId('server'),
26
26
  type: NodeType.NODEJS
27
27
  }
28
28
  const data = Any.pack(clientPeerDescriptor, PeerDescriptor)
29
29
  const request: StoreDataRequest = {
30
- kademliaId: clientPeerDescriptor.kademliaId,
30
+ key: clientPeerDescriptor.nodeId,
31
31
  data,
32
32
  ttl: 10
33
33
  }
@@ -28,12 +28,12 @@ describe('WebRTC Connection Management', () => {
28
28
  let simulator: Simulator
29
29
 
30
30
  const peerDescriptor1: PeerDescriptor = {
31
- kademliaId: PeerID.fromString('peer1').value,
31
+ nodeId: PeerID.fromString('peer1').value,
32
32
  type: NodeType.NODEJS,
33
33
  }
34
34
 
35
35
  const peerDescriptor2: PeerDescriptor = {
36
- kademliaId: PeerID.fromString('peer2').value,
36
+ nodeId: PeerID.fromString('peer2').value,
37
37
  type: NodeType.NODEJS,
38
38
  }
39
39
 
@@ -25,7 +25,7 @@ describe('WebRTC rpc messages', () => {
25
25
  let iceCandidateCounter: number
26
26
 
27
27
  const targetDescriptor: PeerDescriptor = {
28
- kademliaId: generateId('peer'),
28
+ nodeId: generateId('peer'),
29
29
  type: NodeType.NODEJS
30
30
  }
31
31
 
@@ -30,7 +30,7 @@ describe('Websocket Connection Management', () => {
30
30
  const simulator = new Simulator()
31
31
 
32
32
  const wsServerConnectorPeerDescriptor: PeerDescriptor = {
33
- kademliaId: PeerID.fromString('peerWithServer').value,
33
+ nodeId: PeerID.fromString('peerWithServer').value,
34
34
  type: NodeType.NODEJS,
35
35
  websocket: {
36
36
  host: '127.0.0.1',
@@ -40,7 +40,7 @@ describe('Websocket Connection Management', () => {
40
40
  }
41
41
 
42
42
  const noWsServerConnectorPeerDescriptor: PeerDescriptor = {
43
- kademliaId: PeerID.fromString('peerWithoutServer').value,
43
+ nodeId: PeerID.fromString('peerWithoutServer').value,
44
44
  type: NodeType.NODEJS,
45
45
  }
46
46
 
@@ -17,12 +17,12 @@ describe('WebsocketConnectorRpc', () => {
17
17
  let client2: ProtoRpcClient<WebsocketConnectorRpcClient>
18
18
 
19
19
  const peerDescriptor1: PeerDescriptor = {
20
- kademliaId: generateId('peer1'),
20
+ nodeId: generateId('peer1'),
21
21
  type: NodeType.NODEJS
22
22
  }
23
23
 
24
24
  const peerDescriptor2: PeerDescriptor = {
25
- kademliaId: generateId('peer2'),
25
+ nodeId: generateId('peer2'),
26
26
  type: NodeType.NODEJS
27
27
  }
28
28
 
@@ -5,7 +5,7 @@ import { ConnectionType } from '../../src/connection/IConnection'
5
5
  describe('Connectivity helpers', () => {
6
6
 
7
7
  const tlsServerPeerDescriptor = {
8
- kademliaId: new Uint8Array(1),
8
+ nodeId: new Uint8Array(1),
9
9
  type: NodeType.NODEJS,
10
10
  websocket: {
11
11
  host: 'mock',
@@ -15,7 +15,7 @@ describe('Connectivity helpers', () => {
15
15
  }
16
16
 
17
17
  const noTlsServerPeerDescriptor = {
18
- kademliaId: new Uint8Array(1),
18
+ nodeId: new Uint8Array(1),
19
19
  type: NodeType.NODEJS,
20
20
  websocket: {
21
21
  host: 'mock',
@@ -25,12 +25,12 @@ describe('Connectivity helpers', () => {
25
25
  }
26
26
 
27
27
  const browserPeerDescriptor = {
28
- kademliaId: new Uint8Array(2),
28
+ nodeId: new Uint8Array(2),
29
29
  type: NodeType.BROWSER
30
30
  }
31
31
 
32
32
  const noServerPeerDescriptor = {
33
- kademliaId: new Uint8Array(3),
33
+ nodeId: new Uint8Array(3),
34
34
  type: NodeType.NODEJS
35
35
  }
36
36
 
@@ -1,39 +1,51 @@
1
1
  import {
2
+ FindAction,
2
3
  Message,
3
4
  MessageType,
4
5
  NodeType,
5
6
  PeerDescriptor,
6
7
  RouteMessageAck,
8
+ RouteMessageError,
7
9
  RouteMessageWrapper
8
10
  } from '../../src/proto/packages/dht/protos/DhtRpc'
9
- import { PeerID, PeerIDKey } from '../../src/helpers/PeerID'
11
+ import { PeerID } from '../../src/helpers/PeerID'
10
12
  import {
11
13
  createWrappedClosestPeersRequest,
12
14
  createFindRequest
13
15
  } from '../utils/utils'
14
16
  import { Finder } from '../../src/dht/find/Finder'
15
- import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
16
17
  import { LocalDataStore } from '../../src/dht/store/LocalDataStore'
17
18
  import { v4 } from 'uuid'
18
19
  import { MockRouter } from '../utils/mock/Router'
19
20
  import { MockTransport } from '../utils/mock/Transport'
20
21
  import { areEqualPeerDescriptors } from '../../src/helpers/peerIdFromPeerDescriptor'
21
22
  import { FakeRpcCommunicator } from '../utils/FakeRpcCommunicator'
23
+ import { IRouter } from '../../src/dht/routing/Router'
24
+ import { ITransport } from '../../src/exports'
22
25
 
26
+ const createMockRouter = (error?: RouteMessageError): Partial<IRouter> => {
27
+ return {
28
+ doRouteMessage: (routedMessage: RouteMessageWrapper) => {
29
+ return {
30
+ requestId: routedMessage.requestId,
31
+ error
32
+ }
33
+ },
34
+ isMostLikelyDuplicate: () => false,
35
+ addToDuplicateDetector: () => {}
36
+ }
37
+ }
23
38
  describe('Finder', () => {
24
39
 
25
- let finder: Finder
26
- let connections: Map<PeerIDKey, DhtNodeRpcRemote>
27
-
28
40
  const peerDescriptor1: PeerDescriptor = {
29
- kademliaId: PeerID.fromString('peerid').value,
41
+ nodeId: PeerID.fromString('peerid').value,
30
42
  type: NodeType.NODEJS
31
43
  }
32
44
  const peerDescriptor2: PeerDescriptor = {
33
- kademliaId: PeerID.fromString('destination').value,
45
+ nodeId: PeerID.fromString('destination').value,
34
46
  type: NodeType.NODEJS
35
47
  }
36
- const findRequest = createFindRequest(false)
48
+ const findRequest = createFindRequest(FindAction.NODE)
37
49
  const message: Message = {
38
50
  serviceId: 'unknown',
39
51
  messageId: v4(),
@@ -50,41 +62,41 @@ describe('Finder', () => {
50
62
  requestId: 'REQ',
51
63
  routingPath: [],
52
64
  reachableThrough: [],
53
- destinationPeer: peerDescriptor1,
54
- sourcePeer: peerDescriptor2
65
+ sourcePeer: peerDescriptor1,
66
+ destinationPeer: peerDescriptor2
55
67
  }
56
68
  const rpcCommunicator = new FakeRpcCommunicator()
57
69
 
58
- beforeEach(() => {
59
- connections = new Map()
60
- finder = new Finder({
70
+ const createFinder = (router: IRouter = new MockRouter(), transport: ITransport = new MockTransport()): Finder => {
71
+ return new Finder({
61
72
  localPeerDescriptor: peerDescriptor1,
62
- router: new MockRouter(),
63
- connections,
73
+ router,
74
+ connections: new Map(),
64
75
  serviceId: 'Finder',
65
76
  localDataStore: new LocalDataStore(),
66
- sessionTransport: new MockTransport(),
67
- addContact: (_contact, _setActive) => {},
77
+ sessionTransport: transport,
78
+ addContact: () => {},
68
79
  isPeerCloserToIdThanSelf: (_peer1, _compareToId) => true,
69
80
  rpcCommunicator: rpcCommunicator as any
70
81
  })
71
- })
72
-
73
- afterEach(() => {
74
- finder.stop()
75
- })
82
+ }
76
83
 
77
84
  it('Finder server', async () => {
85
+ const finder = createFinder()
78
86
  const res = await rpcCommunicator.callRpcMethod('routeFindRequest', routedMessage) as RouteMessageAck
79
- expect(res.error).toEqual('')
87
+ expect(res.error).toBeUndefined()
88
+ finder.stop()
80
89
  })
81
90
 
82
91
  it('startFind with mode Node returns self if no peers', async () => {
92
+ const finder = createFinder()
83
93
  const res = await finder.startFind(PeerID.fromString('find').value)
84
94
  expect(areEqualPeerDescriptors(res.closestNodes[0], peerDescriptor1)).toEqual(true)
95
+ finder.stop()
85
96
  })
86
97
 
87
98
  it('Finder server throws if payload is not FindRequest', async () => {
99
+ const finder = createFinder(new MockRouter())
88
100
  const rpcWrapper = createWrappedClosestPeersRequest(peerDescriptor1)
89
101
  const badMessage: Message = {
90
102
  serviceId: 'unknown',
@@ -105,6 +117,40 @@ describe('Finder', () => {
105
117
  destinationPeer: peerDescriptor1,
106
118
  sourcePeer: peerDescriptor2
107
119
  })).rejects.toThrow()
120
+ finder.stop()
121
+ })
122
+
123
+ it('no targets', async () => {
124
+ const router = createMockRouter(RouteMessageError.NO_TARGETS)
125
+ const send = jest.fn()
126
+ const transport = {
127
+ send,
128
+ on: () => {},
129
+ off: () => {}
130
+ }
131
+ const finder = createFinder(router as any, transport as any)
132
+ const ack = await rpcCommunicator.callRpcMethod('routeFindRequest', routedMessage)
133
+ expect(ack).toEqual({
134
+ requestId: routedMessage.requestId,
135
+ error: RouteMessageError.NO_TARGETS
136
+ })
137
+ expect(send).toHaveBeenCalledTimes(1)
138
+ finder.stop()
108
139
  })
109
140
 
141
+ it('error', async () => {
142
+ const router = createMockRouter(RouteMessageError.DUPLICATE)
143
+ const send = jest.fn()
144
+ const transport = {
145
+ send
146
+ }
147
+ const finder = createFinder(router as any, transport as any)
148
+ const ack = await rpcCommunicator.callRpcMethod('routeFindRequest', routedMessage)
149
+ expect(ack).toEqual({
150
+ requestId: routedMessage.requestId,
151
+ error: RouteMessageError.DUPLICATE
152
+ })
153
+ expect(send).not.toHaveBeenCalled()
154
+ finder.stop()
155
+ })
110
156
  })
@@ -11,16 +11,16 @@ import { Timestamp } from '../../src/proto/google/protobuf/timestamp'
11
11
 
12
12
  describe('LocalDataStore', () => {
13
13
  let localDataStore: LocalDataStore
14
- const storer1: PeerDescriptor = {
15
- kademliaId: new Uint8Array([1, 2, 3]),
14
+ const creator1: PeerDescriptor = {
15
+ nodeId: new Uint8Array([1, 2, 3]),
16
16
  type: NodeType.NODEJS
17
17
  }
18
- const storer2: PeerDescriptor = {
19
- kademliaId: new Uint8Array([3, 2, 1]),
18
+ const creator2: PeerDescriptor = {
19
+ nodeId: new Uint8Array([3, 2, 1]),
20
20
  type: NodeType.NODEJS
21
21
  }
22
- const data1 = Any.pack(storer1, PeerDescriptor)
23
- const data2 = Any.pack(storer2, PeerDescriptor)
22
+ const data1 = Any.pack(creator1, PeerDescriptor)
23
+ const data2 = Any.pack(creator2, PeerDescriptor)
24
24
 
25
25
  beforeEach(() => {
26
26
  localDataStore = new LocalDataStore()
@@ -31,59 +31,59 @@ describe('LocalDataStore', () => {
31
31
  })
32
32
 
33
33
  it('can store', () => {
34
- const dataKey = peerIdFromPeerDescriptor(storer1)
35
- localDataStore.storeEntry({ storer: storer1, kademliaId: dataKey.value, data: data1,
36
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
34
+ const dataKey = peerIdFromPeerDescriptor(creator1)
35
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
36
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
37
37
  const fetchedData = localDataStore.getEntry(dataKey)
38
38
  fetchedData.forEach((entry) => {
39
39
  const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
40
- expect(areEqualPeerDescriptors(fetchedDescriptor, storer1)).toBeTrue()
40
+ expect(areEqualPeerDescriptors(fetchedDescriptor, creator1)).toBeTrue()
41
41
  })
42
42
  })
43
43
 
44
44
  it('multiple storers behind one key', () => {
45
- const dataKey = peerIdFromPeerDescriptor(storer1)
46
- localDataStore.storeEntry({ storer: storer1, kademliaId: dataKey.value, data: data1,
47
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
48
- localDataStore.storeEntry({ storer: storer2, kademliaId: dataKey.value,
49
- data: data1, ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
45
+ const dataKey = peerIdFromPeerDescriptor(creator1)
46
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
47
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
48
+ localDataStore.storeEntry({ creator: creator2, key: dataKey.value,
49
+ data: data1, ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
50
50
  const fetchedData = localDataStore.getEntry(dataKey)
51
51
  fetchedData.forEach((entry) => {
52
52
  const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
53
- expect(areEqualPeerDescriptors(fetchedDescriptor, storer1)).toBeTrue()
53
+ expect(areEqualPeerDescriptors(fetchedDescriptor, creator1)).toBeTrue()
54
54
  })
55
55
  })
56
56
 
57
57
  it('can remove data entries', () => {
58
- const dataKey = peerIdFromPeerDescriptor(storer1)
59
- localDataStore.storeEntry({ storer: storer1, kademliaId: dataKey.value, data: data1,
60
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
61
- localDataStore.storeEntry({ storer: storer2, kademliaId: dataKey.value, data: data2,
62
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
63
- localDataStore.deleteEntry(dataKey, storer1)
58
+ const dataKey = peerIdFromPeerDescriptor(creator1)
59
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
60
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
61
+ localDataStore.storeEntry({ creator: creator2, key: dataKey.value, data: data2,
62
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
63
+ localDataStore.deleteEntry(dataKey, creator1)
64
64
  const fetchedData = localDataStore.getEntry(dataKey)
65
65
  fetchedData.forEach((entry) => {
66
66
  const fetchedDescriptor = Any.unpack(entry.data!, PeerDescriptor)
67
- expect(areEqualPeerDescriptors(fetchedDescriptor, storer2)).toBeTrue()
67
+ expect(areEqualPeerDescriptors(fetchedDescriptor, creator2)).toBeTrue()
68
68
  })
69
69
  })
70
70
 
71
71
  it('can remove all data entries', () => {
72
- const dataKey = peerIdFromPeerDescriptor(storer1)
73
- localDataStore.storeEntry({ storer: storer1, kademliaId: dataKey.value, data: data1,
74
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
75
- localDataStore.storeEntry({ storer: storer2, kademliaId: dataKey.value, data: data2,
76
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
77
- localDataStore.deleteEntry(dataKey, storer1)
78
- localDataStore.deleteEntry(dataKey, storer2)
72
+ const dataKey = peerIdFromPeerDescriptor(creator1)
73
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
74
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
75
+ localDataStore.storeEntry({ creator: creator2, key: dataKey.value, data: data2,
76
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
77
+ localDataStore.deleteEntry(dataKey, creator1)
78
+ localDataStore.deleteEntry(dataKey, creator2)
79
79
  const fetchedData = localDataStore.getEntry(dataKey)
80
80
  expect(fetchedData.size).toBe(0)
81
81
  })
82
82
 
83
83
  it('data is deleted after TTL', async () => {
84
- const dataKey = peerIdFromPeerDescriptor(storer1)
85
- localDataStore.storeEntry({ storer: storer1, kademliaId: dataKey.value, data: data1,
86
- ttl: 1000, stale: false, deleted: false, storerTime: Timestamp.now() })
84
+ const dataKey = peerIdFromPeerDescriptor(creator1)
85
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
86
+ ttl: 1000, stale: false, deleted: false, createdAt: Timestamp.now() })
87
87
  const intitialStore = localDataStore.getEntry(dataKey)
88
88
  expect(intitialStore.size).toBe(1)
89
89
  await wait(1100)
@@ -91,15 +91,32 @@ describe('LocalDataStore', () => {
91
91
  expect(fetchedData.size).toBe(0)
92
92
  })
93
93
 
94
- it('can mark data as deleted', () => {
95
- const dataKey = peerIdFromPeerDescriptor(storer1)
96
- localDataStore.storeEntry({ storer: storer1, kademliaId: dataKey.value, data: data1,
97
- ttl: 10000, stale: false, deleted: false, storerTime: Timestamp.now() })
98
- const notDeletedData = localDataStore.getEntry(dataKey)
99
- expect(notDeletedData.get(keyFromPeerDescriptor(storer1))!.deleted).toBeFalse()
100
- localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(storer1))
101
- const deletedData = localDataStore.getEntry(dataKey)
102
- expect(deletedData.get(keyFromPeerDescriptor(storer1))!.deleted).toBeTrue()
103
- })
94
+ describe('mark data as deleted', () => {
95
+
96
+ it('happy path', () => {
97
+ const dataKey = peerIdFromPeerDescriptor(creator1)
98
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
99
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
100
+ const notDeletedData = localDataStore.getEntry(dataKey)
101
+ expect(notDeletedData.get(keyFromPeerDescriptor(creator1))!.deleted).toBeFalse()
102
+ const returnValue = localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(creator1))
103
+ expect(returnValue).toBe(true)
104
+ const deletedData = localDataStore.getEntry(dataKey)
105
+ expect(deletedData.get(keyFromPeerDescriptor(creator1))!.deleted).toBeTrue()
106
+ })
104
107
 
108
+ it('data not stored', () => {
109
+ const dataKey = peerIdFromPeerDescriptor(creator1)
110
+ const returnValue = localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(creator2))
111
+ expect(returnValue).toBe(false)
112
+ })
113
+
114
+ it('data not stored by the given creator', () => {
115
+ const dataKey = peerIdFromPeerDescriptor(creator1)
116
+ localDataStore.storeEntry({ creator: creator1, key: dataKey.value, data: data1,
117
+ ttl: 10000, stale: false, deleted: false, createdAt: Timestamp.now() })
118
+ const returnValue = localDataStore.markAsDeleted(dataKey.value, peerIdFromPeerDescriptor(creator2))
119
+ expect(returnValue).toBe(false)
120
+ })
121
+ })
105
122
  })
@@ -1,8 +1,8 @@
1
1
  import { RandomContactList } from '../../src/dht/contact/RandomContactList'
2
2
  import { PeerID } from '../../src/helpers/PeerID'
3
3
 
4
- const createItem = (kademliaId: Uint8Array): { getPeerId: () => PeerID } => {
5
- return { getPeerId: () => PeerID.fromValue(kademliaId) }
4
+ const createItem = (nodeId: Uint8Array): { getPeerId: () => PeerID } => {
5
+ return { getPeerId: () => PeerID.fromValue(nodeId) }
6
6
  }
7
7
 
8
8
  describe('RandomContactList', () => {