@streamr/dht 100.0.0-pretestnet.6 → 100.0.0-testnet-one.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 (260) 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 +3 -27
  5. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -1
  6. package/dist/src/connection/ConnectionManager.d.ts +0 -1
  7. package/dist/src/connection/ConnectionManager.js +11 -7
  8. package/dist/src/connection/ConnectionManager.js.map +1 -1
  9. package/dist/src/connection/ConnectorFacade.d.ts +2 -2
  10. package/dist/src/connection/ConnectorFacade.js +1 -2
  11. package/dist/src/connection/ConnectorFacade.js.map +1 -1
  12. package/dist/src/connection/ManagedConnection.js +1 -0
  13. package/dist/src/connection/ManagedConnection.js.map +1 -1
  14. package/dist/src/connection/connectivityChecker.d.ts +9 -0
  15. package/dist/src/connection/connectivityChecker.js +122 -0
  16. package/dist/src/connection/connectivityChecker.js.map +1 -0
  17. package/dist/src/connection/connectivityRequestHandler.d.ts +2 -0
  18. package/dist/src/connection/connectivityRequestHandler.js +79 -0
  19. package/dist/src/connection/connectivityRequestHandler.js.map +1 -0
  20. package/dist/src/connection/simulator/Simulator.js +3 -2
  21. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  22. package/dist/src/connection/simulator/SimulatorConnection.js +1 -1
  23. package/dist/src/connection/simulator/SimulatorConnection.js.map +1 -1
  24. package/dist/src/connection/webrtc/NodeWebrtcConnection.js +1 -1
  25. package/dist/src/connection/webrtc/NodeWebrtcConnection.js.map +1 -1
  26. package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
  27. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  28. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +1 -1
  29. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  30. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.d.ts +2 -2
  31. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js +2 -2
  32. package/dist/src/connection/webrtc/WebrtcConnectorRpcRemote.js.map +1 -1
  33. package/dist/src/connection/webrtc/iceServerAsString.js +1 -1
  34. package/dist/src/connection/webrtc/iceServerAsString.js.map +1 -1
  35. package/dist/src/connection/websocket/ClientWebsocket.d.ts +1 -0
  36. package/dist/src/connection/websocket/ClientWebsocket.js +7 -3
  37. package/dist/src/connection/websocket/ClientWebsocket.js.map +1 -1
  38. package/dist/src/connection/websocket/ServerWebsocket.d.ts +4 -0
  39. package/dist/src/connection/websocket/ServerWebsocket.js +32 -21
  40. package/dist/src/connection/websocket/ServerWebsocket.js.map +1 -1
  41. package/dist/src/connection/websocket/WebsocketConnector.d.ts +0 -2
  42. package/dist/src/connection/websocket/WebsocketConnector.js +61 -16
  43. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  44. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.d.ts +1 -1
  45. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js +8 -11
  46. package/dist/src/connection/websocket/WebsocketConnectorRpcLocal.js.map +1 -1
  47. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.d.ts +4 -4
  48. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js +5 -39
  49. package/dist/src/connection/websocket/WebsocketConnectorRpcRemote.js.map +1 -1
  50. package/dist/src/connection/websocket/WebsocketServer.js +21 -4
  51. package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
  52. package/dist/src/dht/DhtNode.d.ts +13 -23
  53. package/dist/src/dht/DhtNode.js +97 -226
  54. package/dist/src/dht/DhtNode.js.map +1 -1
  55. package/dist/src/dht/DhtNodeRpcLocal.d.ts +1 -4
  56. package/dist/src/dht/DhtNodeRpcLocal.js +1 -5
  57. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  58. package/dist/src/dht/DhtNodeRpcRemote.d.ts +3 -3
  59. package/dist/src/dht/DhtNodeRpcRemote.js +4 -4
  60. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  61. package/dist/src/dht/ExternalApiRpcLocal.d.ts +4 -4
  62. package/dist/src/dht/ExternalApiRpcLocal.js +5 -12
  63. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  64. package/dist/src/dht/ExternalApiRpcRemote.d.ts +3 -3
  65. package/dist/src/dht/ExternalApiRpcRemote.js +5 -5
  66. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  67. package/dist/src/dht/PeerManager.d.ts +52 -0
  68. package/dist/src/dht/PeerManager.js +273 -0
  69. package/dist/src/dht/PeerManager.js.map +1 -0
  70. package/dist/src/dht/contact/ContactList.d.ts +1 -1
  71. package/dist/src/dht/contact/ContactList.js +1 -0
  72. package/dist/src/dht/contact/ContactList.js.map +1 -1
  73. package/dist/src/dht/contact/{Remote.d.ts → RpcRemote.d.ts} +3 -3
  74. package/dist/src/dht/contact/{Remote.js → RpcRemote.js} +8 -8
  75. package/dist/src/dht/contact/RpcRemote.js.map +1 -0
  76. package/dist/src/dht/contact/SortedContactList.d.ts +20 -6
  77. package/dist/src/dht/contact/SortedContactList.js +55 -24
  78. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  79. package/dist/src/dht/discovery/DiscoverySession.d.ts +4 -14
  80. package/dist/src/dht/discovery/DiscoverySession.js +15 -26
  81. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  82. package/dist/src/dht/discovery/PeerDiscovery.d.ts +2 -9
  83. package/dist/src/dht/discovery/PeerDiscovery.js +11 -19
  84. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  85. package/dist/src/dht/find/FindRpcLocal.js +2 -1
  86. package/dist/src/dht/find/FindRpcLocal.js.map +1 -1
  87. package/dist/src/dht/find/FindSession.d.ts +6 -6
  88. package/dist/src/dht/find/FindSession.js +18 -13
  89. package/dist/src/dht/find/FindSession.js.map +1 -1
  90. package/dist/src/dht/find/FindSessionRpcLocal.d.ts +1 -1
  91. package/dist/src/dht/find/FindSessionRpcRemote.d.ts +2 -2
  92. package/dist/src/dht/find/FindSessionRpcRemote.js +2 -2
  93. package/dist/src/dht/find/FindSessionRpcRemote.js.map +1 -1
  94. package/dist/src/dht/find/Finder.d.ts +4 -4
  95. package/dist/src/dht/find/Finder.js +55 -42
  96. package/dist/src/dht/find/Finder.js.map +1 -1
  97. package/dist/src/dht/routing/FindRpcRemote.d.ts +2 -2
  98. package/dist/src/dht/routing/FindRpcRemote.js +7 -5
  99. package/dist/src/dht/routing/FindRpcRemote.js.map +1 -1
  100. package/dist/src/dht/routing/Router.d.ts +3 -7
  101. package/dist/src/dht/routing/Router.js +29 -22
  102. package/dist/src/dht/routing/Router.js.map +1 -1
  103. package/dist/src/dht/routing/RouterRpcLocal.d.ts +2 -2
  104. package/dist/src/dht/routing/RouterRpcLocal.js +4 -3
  105. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  106. package/dist/src/dht/routing/RouterRpcRemote.d.ts +2 -2
  107. package/dist/src/dht/routing/RouterRpcRemote.js +13 -8
  108. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -1
  109. package/dist/src/dht/routing/RoutingSession.d.ts +1 -1
  110. package/dist/src/dht/routing/RoutingSession.js +23 -11
  111. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  112. package/dist/src/dht/routing/getPreviousPeer.js.map +1 -1
  113. package/dist/src/dht/store/LocalDataStore.d.ts +3 -3
  114. package/dist/src/dht/store/LocalDataStore.js +18 -17
  115. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  116. package/dist/src/dht/store/StoreRpcLocal.d.ts +10 -9
  117. package/dist/src/dht/store/StoreRpcLocal.js +108 -102
  118. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  119. package/dist/src/dht/store/StoreRpcRemote.d.ts +4 -5
  120. package/dist/src/dht/store/StoreRpcRemote.js +6 -15
  121. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -1
  122. package/dist/src/exports.d.ts +1 -1
  123. package/dist/src/exports.js +4 -4
  124. package/dist/src/exports.js.map +1 -1
  125. package/dist/src/helpers/PeerID.d.ts +1 -0
  126. package/dist/src/helpers/PeerID.js +9 -4
  127. package/dist/src/helpers/PeerID.js.map +1 -1
  128. package/dist/src/helpers/UUID.js +1 -1
  129. package/dist/src/helpers/UUID.js.map +1 -1
  130. package/dist/src/helpers/nodeId.d.ts +1 -0
  131. package/dist/src/helpers/{kademliaId.js → nodeId.js} +4 -4
  132. package/dist/src/helpers/nodeId.js.map +1 -0
  133. package/dist/src/helpers/peerIdFromPeerDescriptor.js +4 -4
  134. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  135. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +5 -16
  136. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +2 -9
  137. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  138. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +80 -95
  139. package/dist/src/proto/packages/dht/protos/DhtRpc.js +67 -66
  140. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  141. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +3 -10
  142. package/dist/src/transport/RoutingRpcCommunicator.js +2 -0
  143. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  144. package/karma.config.js +2 -2
  145. package/package.json +5 -5
  146. package/protos/DhtRpc.proto +36 -36
  147. package/src/connection/ConnectionLockHandler.ts +2 -2
  148. package/src/connection/ConnectionLockRpcRemote.ts +3 -4
  149. package/src/connection/ConnectionManager.ts +19 -17
  150. package/src/connection/ConnectorFacade.ts +5 -7
  151. package/src/connection/ManagedConnection.ts +1 -0
  152. package/src/connection/connectivityChecker.ts +102 -0
  153. package/src/connection/connectivityRequestHandler.ts +79 -0
  154. package/src/connection/simulator/Simulator.ts +3 -2
  155. package/src/connection/simulator/SimulatorConnection.ts +1 -1
  156. package/src/connection/webrtc/BrowserWebrtcConnection.ts +10 -10
  157. package/src/connection/webrtc/NodeWebrtcConnection.ts +1 -1
  158. package/src/connection/webrtc/WebrtcConnector.ts +1 -1
  159. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +1 -1
  160. package/src/connection/webrtc/WebrtcConnectorRpcRemote.ts +2 -2
  161. package/src/connection/webrtc/iceServerAsString.ts +1 -1
  162. package/src/connection/websocket/ClientWebsocket.ts +6 -2
  163. package/src/connection/websocket/ServerWebsocket.ts +40 -25
  164. package/src/connection/websocket/WebsocketConnector.ts +43 -22
  165. package/src/connection/websocket/WebsocketConnectorRpcLocal.ts +9 -11
  166. package/src/connection/websocket/WebsocketConnectorRpcRemote.ts +7 -16
  167. package/src/connection/websocket/WebsocketServer.ts +20 -5
  168. package/src/dht/DhtNode.ts +123 -280
  169. package/src/dht/DhtNodeRpcLocal.ts +2 -9
  170. package/src/dht/DhtNodeRpcRemote.ts +4 -4
  171. package/src/dht/ExternalApiRpcLocal.ts +8 -13
  172. package/src/dht/ExternalApiRpcRemote.ts +5 -5
  173. package/src/dht/PeerManager.ts +330 -0
  174. package/src/dht/contact/ContactList.ts +3 -2
  175. package/src/dht/contact/{Remote.ts → RpcRemote.ts} +7 -6
  176. package/src/dht/contact/SortedContactList.ts +87 -44
  177. package/src/dht/discovery/DiscoverySession.ts +19 -44
  178. package/src/dht/discovery/PeerDiscovery.ts +16 -28
  179. package/src/dht/find/FindRpcLocal.ts +2 -2
  180. package/src/dht/find/FindSession.ts +25 -20
  181. package/src/dht/find/FindSessionRpcLocal.ts +1 -1
  182. package/src/dht/find/FindSessionRpcRemote.ts +2 -2
  183. package/src/dht/find/Finder.ts +84 -64
  184. package/src/dht/routing/FindRpcRemote.ts +7 -5
  185. package/src/dht/routing/Router.ts +30 -25
  186. package/src/dht/routing/RouterRpcLocal.ts +5 -5
  187. package/src/dht/routing/RouterRpcRemote.ts +13 -10
  188. package/src/dht/routing/RoutingSession.ts +22 -17
  189. package/src/dht/routing/getPreviousPeer.ts +1 -1
  190. package/src/dht/store/LocalDataStore.ts +18 -17
  191. package/src/dht/store/StoreRpcLocal.ts +118 -113
  192. package/src/dht/store/StoreRpcRemote.ts +7 -23
  193. package/src/exports.ts +1 -1
  194. package/src/helpers/PeerID.ts +8 -4
  195. package/src/helpers/UUID.ts +1 -1
  196. package/src/helpers/{kademliaId.ts → nodeId.ts} +1 -1
  197. package/src/helpers/peerIdFromPeerDescriptor.ts +6 -6
  198. package/src/proto/packages/dht/protos/DhtRpc.client.ts +6 -20
  199. package/src/proto/packages/dht/protos/DhtRpc.server.ts +3 -10
  200. package/src/proto/packages/dht/protos/DhtRpc.ts +103 -135
  201. package/src/transport/RoutingRpcCommunicator.ts +2 -0
  202. package/test/benchmark/Find.test.ts +5 -5
  203. package/test/benchmark/KademliaCorrectness.test.ts +3 -3
  204. package/test/benchmark/SortedContactListBenchmark.test.ts +150 -0
  205. package/test/benchmark/WebsocketServerMemoryLeak.test.ts +41 -0
  206. package/test/benchmark/kademlia-simulation/Contact.ts +1 -1
  207. package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +1 -1
  208. package/test/benchmark/kademlia-simulation/SimulationNode.ts +6 -1
  209. package/test/end-to-end/Layer0-Layer1.test.ts +1 -1
  210. package/test/end-to-end/Layer0.test.ts +4 -4
  211. package/test/end-to-end/Layer0MixedConnectionTypes.test.ts +11 -11
  212. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +6 -6
  213. package/test/end-to-end/Layer0Webrtc.test.ts +2 -2
  214. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +3 -3
  215. package/test/end-to-end/Layer1-Scale-Webrtc.test.ts +3 -3
  216. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +1 -1
  217. package/test/end-to-end/WebsocketConnectionRequest.test.ts +1 -1
  218. package/test/end-to-end/memory-leak.test.ts +9 -12
  219. package/test/integration/ConnectionLocking.test.ts +2 -2
  220. package/test/integration/ConnectionManager.test.ts +14 -14
  221. package/test/integration/DhtJoinPeerDiscovery.test.ts +3 -3
  222. package/test/integration/DhtNodeExternalAPI.test.ts +10 -7
  223. package/test/integration/DhtNodeRpcRemote.test.ts +4 -4
  224. package/test/integration/DhtRpc.test.ts +6 -6
  225. package/test/integration/Find.test.ts +3 -3
  226. package/test/integration/Layer1-scale.test.ts +3 -3
  227. package/test/integration/Mock-Layer1-Layer0.test.ts +16 -16
  228. package/test/integration/MultipleEntryPointJoining.test.ts +7 -7
  229. package/test/integration/{MigrateData.test.ts → ReplicateData.test.ts} +15 -10
  230. package/test/integration/RouteMessage.test.ts +2 -2
  231. package/test/integration/RouterRpcRemote.test.ts +2 -2
  232. package/test/integration/RpcErrors.test.ts +2 -2
  233. package/test/integration/ScaleDownDht.test.ts +4 -2
  234. package/test/integration/SimultaneousConnections.test.ts +89 -57
  235. package/test/integration/Store.test.ts +33 -13
  236. package/test/integration/StoreAndDelete.test.ts +19 -17
  237. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +21 -21
  238. package/test/integration/StoreRpcRemote.test.ts +3 -3
  239. package/test/integration/WebrtcConnectionManagement.test.ts +2 -2
  240. package/test/integration/WebrtcConnectorRpc.test.ts +1 -1
  241. package/test/integration/WebsocketConnectionManagement.test.ts +41 -3
  242. package/test/integration/WebsocketConnectorRpc.test.ts +5 -7
  243. package/test/unit/ConnectivityHelpers.test.ts +4 -4
  244. package/test/unit/Finder.test.ts +69 -23
  245. package/test/unit/LocalDataStore.test.ts +60 -43
  246. package/test/unit/RandomContactList.test.ts +2 -2
  247. package/test/unit/Router.test.ts +19 -11
  248. package/test/unit/RoutingSession.test.ts +76 -0
  249. package/test/unit/SortedContactList.test.ts +17 -12
  250. package/test/unit/WebsocketConnector.test.ts +1 -1
  251. package/test/unit/connectivityRequestHandler.test.ts +71 -0
  252. package/test/utils/mock/Router.ts +1 -1
  253. package/test/utils/utils.ts +24 -22
  254. package/dist/src/connection/ConnectivityChecker.d.ts +0 -17
  255. package/dist/src/connection/ConnectivityChecker.js +0 -208
  256. package/dist/src/connection/ConnectivityChecker.js.map +0 -1
  257. package/dist/src/dht/contact/Remote.js.map +0 -1
  258. package/dist/src/helpers/kademliaId.d.ts +0 -1
  259. package/dist/src/helpers/kademliaId.js.map +0 -1
  260. package/src/connection/ConnectivityChecker.ts +0 -199
@@ -1,8 +1,8 @@
1
1
  import { SortedContactList } from '../../src/dht/contact/SortedContactList'
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('SortedContactList', () => {
@@ -13,7 +13,7 @@ describe('SortedContactList', () => {
13
13
  const item4 = createItem(new Uint8Array([0, 0, 0, 4]))
14
14
 
15
15
  it('compares Ids correctly', async () => {
16
- const list = new SortedContactList(item0.getPeerId(), 10)
16
+ const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 10, allowToContainReferenceId: true, emitEvents: false })
17
17
  expect(list.compareIds(item0.getPeerId(), item0.getPeerId())).toBe(0)
18
18
  expect(list.compareIds(item1.getPeerId(), item1.getPeerId())).toBe(0)
19
19
  expect(list.compareIds(item0.getPeerId(), item1.getPeerId())).toBe(-1)
@@ -23,9 +23,9 @@ describe('SortedContactList', () => {
23
23
  expect(list.compareIds(item2.getPeerId(), item3.getPeerId())).toBe(-1)
24
24
  expect(list.compareIds(item1.getPeerId(), item4.getPeerId())).toBe(-3)
25
25
  })
26
-
26
+
27
27
  it('orders itself correctly', async () => {
28
- const list = new SortedContactList(item0.getPeerId(), 10)
28
+ const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 10, allowToContainReferenceId: true, emitEvents: false })
29
29
  list.addContact(item3)
30
30
  list.addContact(item2)
31
31
  list.addContact(item1)
@@ -35,9 +35,9 @@ describe('SortedContactList', () => {
35
35
  expect(contacts[1]).toEqual(item2)
36
36
  expect(contacts[2]).toEqual(item3)
37
37
  })
38
-
38
+
39
39
  it('handles contacted nodes correctly', async () => {
40
- const list = new SortedContactList(item0.getPeerId(), 10)
40
+ const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 10, allowToContainReferenceId: false, emitEvents: false })
41
41
  list.addContact(item3)
42
42
  list.addContact(item2)
43
43
  list.addContact(item1)
@@ -49,7 +49,7 @@ describe('SortedContactList', () => {
49
49
  })
50
50
 
51
51
  it('cannot exceed maxSize', async () => {
52
- const list = new SortedContactList(item0.getPeerId(), 3)
52
+ const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 3, allowToContainReferenceId: false, emitEvents: true })
53
53
  const onContactRemoved = jest.fn()
54
54
  list.on('contactRemoved', onContactRemoved)
55
55
  list.addContact(item1)
@@ -62,7 +62,7 @@ describe('SortedContactList', () => {
62
62
  })
63
63
 
64
64
  it('removing contacts', async () => {
65
- const list = new SortedContactList(item0.getPeerId(), 8)
65
+ const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 8, allowToContainReferenceId: false, emitEvents: true })
66
66
  const onContactRemoved = jest.fn()
67
67
  list.on('contactRemoved', onContactRemoved)
68
68
  list.addContact(item4)
@@ -79,8 +79,13 @@ describe('SortedContactList', () => {
79
79
  expect(ret).toEqual(false)
80
80
  })
81
81
 
82
- it('get closes contacts', () => {
83
- const list = new SortedContactList(item0.getPeerId(), 8)
82
+ it('get closest contacts', () => {
83
+ const list = new SortedContactList({
84
+ referenceId: item0.getPeerId(),
85
+ maxSize: 8,
86
+ allowToContainReferenceId: false,
87
+ emitEvents: false
88
+ })
84
89
  list.addContact(item1)
85
90
  list.addContact(item3)
86
91
  list.addContact(item4)
@@ -90,7 +95,7 @@ describe('SortedContactList', () => {
90
95
  })
91
96
 
92
97
  it('get active contacts', () => {
93
- const list = new SortedContactList(item0.getPeerId(), 8)
98
+ const list = new SortedContactList({ referenceId: item0.getPeerId(), maxSize: 8, allowToContainReferenceId: false, emitEvents: false })
94
99
  list.addContact(item1)
95
100
  list.addContact(item3)
96
101
  list.addContact(item4)
@@ -6,7 +6,7 @@ import { MockTransport } from '../utils/mock/Transport'
6
6
 
7
7
  const createMockPeerDescriptor = (nodeType: NodeType, websocket?: ConnectivityMethod): PeerDescriptor => {
8
8
  return {
9
- kademliaId: crypto.randomBytes(10),
9
+ nodeId: crypto.randomBytes(10),
10
10
  type: nodeType,
11
11
  websocket
12
12
  }
@@ -0,0 +1,71 @@
1
+ import { waitForCondition } from '@streamr/utils'
2
+ import { EventEmitter } from 'eventemitter3'
3
+ import { once } from 'events'
4
+ import { Server as HttpServer, createServer as createHttpServer } from 'http'
5
+ import { server as WsServer } from 'websocket'
6
+ import { CONNECTIVITY_CHECKER_SERVICE_ID } from '../../src/connection/connectivityChecker'
7
+ import { attachConnectivityRequestHandler } from '../../src/connection/connectivityRequestHandler'
8
+ import { Message, MessageType } from '../../src/proto/packages/dht/protos/DhtRpc'
9
+
10
+ const HOST = '127.0.0.1'
11
+ const PORT = 15001
12
+
13
+ describe('connectivityRequestHandler', () => {
14
+
15
+ let httpServer: HttpServer
16
+ let wsServer: WsServer
17
+
18
+ beforeAll(async () => {
19
+ httpServer = createHttpServer()
20
+ wsServer = new WsServer({
21
+ httpServer,
22
+ autoAcceptConnections: true
23
+ })
24
+ httpServer.listen(PORT)
25
+ await once(httpServer, 'listening')
26
+ })
27
+
28
+ afterAll(async () => {
29
+ wsServer.shutDown()
30
+ httpServer.close()
31
+ await once(httpServer, 'close')
32
+ })
33
+
34
+ it('happy path', async () => {
35
+ const connection: any = new EventEmitter()
36
+ connection.send = jest.fn()
37
+
38
+ attachConnectivityRequestHandler(connection as any)
39
+ const request: Message = {
40
+ serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
41
+ messageType: MessageType.CONNECTIVITY_REQUEST,
42
+ messageId: 'mock-message-id',
43
+ body: {
44
+ oneofKind: 'connectivityRequest',
45
+ connectivityRequest: { port: PORT, host: HOST, tls: false, selfSigned: false }
46
+ }
47
+ }
48
+ connection.emit('data', Message.toBinary(request))
49
+
50
+ await waitForCondition(() => connection.send.mock.calls.length > 0)
51
+
52
+ const receivedMessage = Message.fromBinary(connection.send.mock.calls[0][0])
53
+ expect(receivedMessage).toEqual({
54
+ body: {
55
+ connectivityResponse: {
56
+ host: HOST,
57
+ natType: 'open_internet',
58
+ websocket: {
59
+ host: HOST,
60
+ port: PORT,
61
+ tls: false
62
+ },
63
+ },
64
+ oneofKind: 'connectivityResponse'
65
+ },
66
+ messageId: expect.any(String),
67
+ messageType: MessageType.CONNECTIVITY_RESPONSE,
68
+ serviceId: 'system/connectivity-checker'
69
+ })
70
+ })
71
+ })
@@ -30,7 +30,7 @@ export class MockRouter implements IRouter {
30
30
 
31
31
  // eslint-disable-next-line class-methods-use-this
32
32
  send(): Promise<void> {
33
- throw Error('Not implemented')
33
+ throw new Error('Not implemented')
34
34
  }
35
35
 
36
36
  // eslint-disable-next-line class-methods-use-this
@@ -2,7 +2,6 @@ import { DhtNode } from '../../src/dht/DhtNode'
2
2
  import {
3
3
  ClosestPeersRequest,
4
4
  ClosestPeersResponse,
5
- MigrateDataResponse,
6
5
  NodeType,
7
6
  PeerDescriptor,
8
7
  PingRequest,
@@ -13,7 +12,7 @@ import {
13
12
  StoreDataResponse,
14
13
  WebsocketConnectionResponse,
15
14
  FindRequest,
16
- DeleteDataResponse
15
+ FindAction
17
16
  } from '../../src/proto/packages/dht/protos/DhtRpc'
18
17
  import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
19
18
  import { PeerID } from '../../src/helpers/PeerID'
@@ -31,11 +30,19 @@ import { Empty } from '../../src/proto/google/protobuf/empty'
31
30
  import { Any } from '../../src/proto/google/protobuf/any'
32
31
  import { wait, waitForCondition } from '@streamr/utils'
33
32
  import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
33
+ import { createRandomNodeId } from '../../src/helpers/nodeId'
34
34
 
35
35
  export const generateId = (stringId: string): Uint8Array => {
36
36
  return PeerID.fromString(stringId).value
37
37
  }
38
38
 
39
+ export const createMockPeerDescriptor = (): PeerDescriptor => {
40
+ return {
41
+ nodeId: createRandomNodeId(),
42
+ type: NodeType.NODEJS,
43
+ }
44
+ }
45
+
39
46
  export const createMockConnectionDhtNode = async (
40
47
  stringId: string,
41
48
  simulator: Simulator,
@@ -51,7 +58,7 @@ export const createMockConnectionDhtNode = async (
51
58
  id = PeerID.fromString(stringId)
52
59
  }
53
60
  const peerDescriptor: PeerDescriptor = {
54
- kademliaId: id.value,
61
+ nodeId: id.value,
55
62
  type: NodeType.NODEJS,
56
63
  region: getRandomRegion()
57
64
  }
@@ -83,7 +90,7 @@ export const createMockConnectionLayer1Node = async (
83
90
  ): Promise<DhtNode> => {
84
91
  const id = PeerID.fromString(stringId)
85
92
  const descriptor: PeerDescriptor = {
86
- kademliaId: id.value,
93
+ nodeId: id.value,
87
94
  type: NodeType.NODEJS,
88
95
  }
89
96
  const node = new DhtNode({
@@ -100,7 +107,7 @@ export const createWrappedClosestPeersRequest = (
100
107
  ): RpcMessage => {
101
108
 
102
109
  const routedMessage: ClosestPeersRequest = {
103
- kademliaId: sourceDescriptor.kademliaId,
110
+ nodeId: sourceDescriptor.nodeId,
104
111
  requestId: v4()
105
112
  }
106
113
  const rpcWrapper: RpcMessage = {
@@ -115,10 +122,10 @@ export const createWrappedClosestPeersRequest = (
115
122
  }
116
123
 
117
124
  export const createFindRequest = (
118
- fetchData: boolean
125
+ action: FindAction
119
126
  ): FindRequest => {
120
127
  const request: FindRequest = {
121
- fetchData,
128
+ action,
122
129
  sessionId: v4()
123
130
  }
124
131
  return request
@@ -170,15 +177,13 @@ interface IRouterRpcWithError extends IRouterRpc {
170
177
  export const mockRouterRpc: IRouterRpcWithError = {
171
178
  async routeMessage(routed: RouteMessageWrapper): Promise<RouteMessageAck> {
172
179
  const response: RouteMessageAck = {
173
- requestId: routed.requestId,
174
- error: ''
180
+ requestId: routed.requestId
175
181
  }
176
182
  return response
177
183
  },
178
184
  async forwardMessage(routed: RouteMessageWrapper): Promise<RouteMessageAck> {
179
185
  const response: RouteMessageAck = {
180
- requestId: routed.requestId,
181
- error: ''
186
+ requestId: routed.requestId
182
187
  }
183
188
  return response
184
189
  },
@@ -206,11 +211,8 @@ export const mockStoreRpc: IStoreRpcWithError = {
206
211
  error: 'Mock'
207
212
  }
208
213
  },
209
- async migrateData(): Promise<MigrateDataResponse> {
210
- return MigrateDataResponse.create()
211
- },
212
- async deleteData(): Promise<DeleteDataResponse> {
213
- return DeleteDataResponse.create()
214
+ async replicateData(): Promise<Empty> {
215
+ return {}
214
216
  }
215
217
  }
216
218
 
@@ -225,19 +227,19 @@ export const mockWebsocketConnectorRpc: IWebsocketConnectorRpc = {
225
227
 
226
228
  export const getMockPeers = (): PeerDescriptor[] => {
227
229
  const n1: PeerDescriptor = {
228
- kademliaId: generateId('Neighbor1'),
230
+ nodeId: generateId('Neighbor1'),
229
231
  type: NodeType.NODEJS,
230
232
  }
231
233
  const n2: PeerDescriptor = {
232
- kademliaId: generateId('Neighbor2'),
234
+ nodeId: generateId('Neighbor2'),
233
235
  type: NodeType.NODEJS,
234
236
  }
235
237
  const n3: PeerDescriptor = {
236
- kademliaId: generateId('Neighbor3'),
238
+ nodeId: generateId('Neighbor3'),
237
239
  type: NodeType.NODEJS,
238
240
  }
239
241
  const n4: PeerDescriptor = {
240
- kademliaId: generateId('Neighbor4'),
242
+ nodeId: generateId('Neighbor4'),
241
243
  type: NodeType.NODEJS,
242
244
  }
243
245
  return [
@@ -278,9 +280,9 @@ async function waitReadyForTesting(connectionManager: ConnectionManager, limit:
278
280
  } catch (err) {
279
281
  if (connectionManager.getNumberOfLocalLockedConnections() > 0
280
282
  && connectionManager.getNumberOfRemoteLockedConnections() > 0) {
281
- throw Error('Connections are still locked')
283
+ throw new Error('Connections are still locked')
282
284
  } else if (connectionManager.getAllConnectionPeerDescriptors().length > limit) {
283
- throw Error(`ConnectionManager has more than ${limit}`)
285
+ throw new Error(`ConnectionManager has more than ${limit}`)
284
286
  }
285
287
  }
286
288
  }
@@ -1,17 +0,0 @@
1
- import { ConnectivityResponse, PeerDescriptor } from '../proto/packages/dht/protos/DhtRpc';
2
- import { ServerWebsocket } from './websocket/ServerWebsocket';
3
- export declare class ConnectivityChecker {
4
- private static readonly CONNECTIVITY_CHECKER_SERVICE_ID;
5
- private static readonly CONNECTIVITY_CHECKER_TIMEOUT;
6
- private destroyed;
7
- private readonly websocketPort;
8
- private readonly tls;
9
- private host?;
10
- constructor(websocketPort: number, tls: boolean, host?: string);
11
- sendConnectivityRequest(entryPoint: PeerDescriptor, selfSigned: boolean): Promise<ConnectivityResponse>;
12
- setHost(hostName: string): void;
13
- listenToIncomingConnectivityRequests(connectionToListenTo: ServerWebsocket): void;
14
- private handleIncomingConnectivityRequest;
15
- private connectAsync;
16
- destroy(): void;
17
- }
@@ -1,208 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.ConnectivityChecker = void 0;
27
- const DhtRpc_1 = require("../proto/packages/dht/protos/DhtRpc");
28
- const utils_1 = require("@streamr/utils");
29
- const Err = __importStar(require("../helpers/errors"));
30
- const ClientWebsocket_1 = require("./websocket/ClientWebsocket");
31
- const uuid_1 = require("uuid");
32
- const ConnectionManager_1 = require("./ConnectionManager");
33
- const WebsocketConnector_1 = require("./websocket/WebsocketConnector");
34
- const logger = new utils_1.Logger(module);
35
- // Class for handling both client and server side of the connectivity
36
- // checks. This is attached to all ServerWebsockets to listen to
37
- // ConnectivityRequest messages.
38
- class ConnectivityChecker {
39
- constructor(websocketPort, tls, host) {
40
- this.destroyed = false;
41
- this.websocketPort = websocketPort;
42
- this.tls = tls;
43
- this.host = host;
44
- }
45
- async sendConnectivityRequest(entryPoint, selfSigned) {
46
- if (this.destroyed) {
47
- throw new Err.ConnectionFailed('ConnectivityChecker is destroyed');
48
- }
49
- let outgoingConnection;
50
- const wsServerInfo = {
51
- host: entryPoint.websocket.host,
52
- port: entryPoint.websocket.port,
53
- tls: entryPoint.websocket.tls,
54
- };
55
- const url = (0, WebsocketConnector_1.connectivityMethodToWebsocketUrl)(wsServerInfo, 'connectivityRequest');
56
- try {
57
- outgoingConnection = await this.connectAsync({
58
- url,
59
- selfSigned
60
- });
61
- }
62
- catch (e) {
63
- throw new Err.ConnectionFailed(`Failed to connect to the entrypoint ${url}`, e);
64
- }
65
- // send connectivity request
66
- const connectivityRequestMessage = { port: this.websocketPort, host: this.host, tls: this.tls, selfSigned };
67
- const msg = {
68
- serviceId: ConnectivityChecker.CONNECTIVITY_CHECKER_SERVICE_ID,
69
- messageType: DhtRpc_1.MessageType.CONNECTIVITY_REQUEST, messageId: (0, uuid_1.v4)(),
70
- body: {
71
- oneofKind: 'connectivityRequest',
72
- connectivityRequest: connectivityRequestMessage
73
- }
74
- };
75
- const responseAwaiter = () => {
76
- return new Promise((resolve, reject) => {
77
- const timeoutId = setTimeout(() => {
78
- outgoingConnection.close(false);
79
- reject(new Err.ConnectivityResponseTimeout('timeout'));
80
- }, ConnectivityChecker.CONNECTIVITY_CHECKER_TIMEOUT);
81
- const listener = (bytes) => {
82
- outgoingConnection.close(false);
83
- try {
84
- const message = DhtRpc_1.Message.fromBinary(bytes);
85
- if (message.body.oneofKind === 'connectivityResponse') {
86
- logger.trace('ConnectivityResponse received: ' + JSON.stringify(DhtRpc_1.Message.toJson(message)));
87
- const connectivityResponseMessage = message.body.connectivityResponse;
88
- outgoingConnection.off('data', listener);
89
- clearTimeout(timeoutId);
90
- resolve(connectivityResponseMessage);
91
- }
92
- else {
93
- return;
94
- }
95
- }
96
- catch (err) {
97
- logger.trace(`Could not parse message: ${err}`);
98
- }
99
- };
100
- outgoingConnection.on('data', listener);
101
- });
102
- };
103
- try {
104
- const retPromise = responseAwaiter();
105
- outgoingConnection.send(DhtRpc_1.Message.toBinary(msg));
106
- logger.trace('ConnectivityRequest sent: ' + JSON.stringify(DhtRpc_1.Message.toJson(msg)));
107
- return await retPromise;
108
- }
109
- catch (e) {
110
- logger.error('error getting connectivityresponse');
111
- throw e;
112
- }
113
- }
114
- setHost(hostName) {
115
- this.host = hostName;
116
- }
117
- listenToIncomingConnectivityRequests(connectionToListenTo) {
118
- connectionToListenTo.on('data', (data) => {
119
- logger.trace('server received data');
120
- try {
121
- const message = DhtRpc_1.Message.fromBinary(data);
122
- if (message.body.oneofKind === 'connectivityRequest') {
123
- logger.trace('ConnectivityRequest received: ' + JSON.stringify(DhtRpc_1.Message.toJson(message)));
124
- this.handleIncomingConnectivityRequest(connectionToListenTo, message.body.connectivityRequest).then(() => {
125
- logger.trace('handleIncomingConnectivityRequest ok');
126
- return;
127
- }).catch((e) => {
128
- logger.error('handleIncomingConnectivityRequest' + e);
129
- });
130
- }
131
- }
132
- catch (err) {
133
- logger.trace(`Could not parse message: ${err}`);
134
- }
135
- });
136
- }
137
- async handleIncomingConnectivityRequest(connection, connectivityRequest) {
138
- if (this.destroyed) {
139
- return;
140
- }
141
- let outgoingConnection;
142
- let connectivityResponseMessage;
143
- const host = connectivityRequest.host ?? connection.getRemoteAddress();
144
- try {
145
- const wsServerInfo = {
146
- host,
147
- port: connectivityRequest.port,
148
- tls: connectivityRequest.tls
149
- };
150
- const url = (0, WebsocketConnector_1.connectivityMethodToWebsocketUrl)(wsServerInfo, 'connectivityProbe');
151
- logger.trace(`Attempting Connectivity Check to ${url}`);
152
- outgoingConnection = await this.connectAsync({
153
- url,
154
- selfSigned: connectivityRequest.selfSigned
155
- });
156
- }
157
- catch (err) {
158
- logger.debug('error', { err });
159
- connectivityResponseMessage = {
160
- host,
161
- natType: ConnectionManager_1.NatType.UNKNOWN
162
- };
163
- }
164
- if (outgoingConnection) {
165
- outgoingConnection.close(false);
166
- logger.trace('Connectivity test produced positive result, communicating reply to the requester ' + host + ':' + connectivityRequest.port);
167
- connectivityResponseMessage = {
168
- host,
169
- natType: ConnectionManager_1.NatType.OPEN_INTERNET,
170
- websocket: { host, port: connectivityRequest.port, tls: connectivityRequest.tls }
171
- };
172
- }
173
- const msg = {
174
- serviceId: ConnectivityChecker.CONNECTIVITY_CHECKER_SERVICE_ID,
175
- messageType: DhtRpc_1.MessageType.CONNECTIVITY_RESPONSE, messageId: (0, uuid_1.v4)(),
176
- body: {
177
- oneofKind: 'connectivityResponse',
178
- connectivityResponse: connectivityResponseMessage
179
- }
180
- };
181
- connection.send(DhtRpc_1.Message.toBinary(msg));
182
- logger.trace('ConnectivityResponse sent: ' + JSON.stringify(DhtRpc_1.Message.toJson(msg)));
183
- }
184
- // eslint-disable-next-line class-methods-use-this
185
- async connectAsync({ url, selfSigned, timeoutMs = 1000, }) {
186
- const socket = new ClientWebsocket_1.ClientWebsocket();
187
- let result;
188
- try {
189
- result = await (0, utils_1.runAndRaceEvents3)([
190
- () => { socket.connect(url, selfSigned); }
191
- ], socket, ['connected', 'error'], timeoutMs);
192
- }
193
- catch (e) {
194
- throw (new Err.ConnectionFailed('WebSocket connection timed out'));
195
- }
196
- if (result.winnerName === 'error') {
197
- throw (new Err.ConnectionFailed('Could not open WebSocket connection'));
198
- }
199
- return socket;
200
- }
201
- destroy() {
202
- this.destroyed = true;
203
- }
204
- }
205
- exports.ConnectivityChecker = ConnectivityChecker;
206
- ConnectivityChecker.CONNECTIVITY_CHECKER_SERVICE_ID = 'system/connectivity-checker';
207
- ConnectivityChecker.CONNECTIVITY_CHECKER_TIMEOUT = 5000;
208
- //# sourceMappingURL=ConnectivityChecker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectivityChecker.js","sourceRoot":"","sources":["../../../src/connection/ConnectivityChecker.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Remote.js","sourceRoot":"","sources":["../../../../src/dht/contact/Remote.ts"],"names":[],"mappings":";;;AAIA,8DAA6D;AAC7D,6DAAmE;AAEnE,4DAA4D;AAC5D,MAAM,wBAAwB,GAAG,IAAI,CAAA;AACrC,uGAAuG;AACvG,kDAAkD;AAClD,MAAM,wBAAwB,GAAG,IAAI,CAAA;AACrC,sFAAsF;AACtF,MAAM,cAAc,GAAG,KAAK,CAAA;AAC5B,2CAA2C;AAC9B,QAAA,2BAA2B,GAAG,IAAI,CAAA;AAE/C,MAAM,aAAa,GAAG,CAAC,mBAAmC,EAAE,oBAAoC,EAAU,EAAE;IACxG,MAAM,cAAc,GAAG,IAAA,qCAAsB,EAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAA;IACxF,IAAI,cAAc,KAAK,4BAAc,CAAC,gBAAgB,EAAE;QACpD,OAAO,wBAAwB,CAAA;KAClC;SAAM,IAAI,cAAc,KAAK,4BAAc,CAAC,gBAAgB,EAAE;QAC3D,OAAO,wBAAwB,CAAA;KAClC;SAAM,IAAI,cAAc,KAAK,4BAAc,CAAC,MAAM,EAAE;QACjD,OAAO,cAAc,CAAA;KACxB;IACD,OAAO,cAAc,CAAA;AACzB,CAAC,CAAA;AAED,MAAsB,MAAM;IAOxB,YACI,mBAAmC,EACnC,oBAAoC,EACpC,SAAoB,EACpB,MAAyB,EACzB,UAAmB;QAEnB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;QAC9C,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAChC,CAAC;IAED,iBAAiB;QACb,OAAO,IAAI,CAAC,oBAAoB,CAAA;IACpC,CAAC;IAED,sBAAsB;QAClB,OAAO,IAAI,CAAC,mBAAmB,CAAA;IACnC,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,iBAAiB,CAAC,IAAmE;QACjF,OAAO;YACH,gBAAgB,EAAE,IAAI,CAAC,mBAAmB;YAC1C,gBAAgB,EAAE,IAAI,CAAC,oBAAoB;YAC3C,OAAO,EAAE,IAAI,CAAC,UAAU,IAAI,aAAa,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC;YAC9F,GAAG,IAAI;SACV,CAAA;IACL,CAAC;CACJ;AA7CD,wBA6CC"}
@@ -1 +0,0 @@
1
- export declare const createRandomKademliaId: () => Uint8Array;
@@ -1 +0,0 @@
1
- {"version":3,"file":"kademliaId.js","sourceRoot":"","sources":["../../../src/helpers/kademliaId.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,wDAAwD;AACxD,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAE/B,MAAM,sBAAsB,GAAG,GAAe,EAAE;IACnD,OAAO,gBAAM,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;AAC1D,CAAC,CAAA;AAFY,QAAA,sBAAsB,0BAElC"}