@streamr/dht 0.0.1-tatum.5 → 0.0.1-tatum.7

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 (205) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionManager.d.ts +17 -39
  4. package/dist/src/connection/ConnectionManager.js +138 -192
  5. package/dist/src/connection/ConnectionManager.js.map +1 -1
  6. package/dist/src/connection/ConnectivityChecker.js +14 -11
  7. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  8. package/dist/src/connection/ConnectorFacade.d.ts +49 -0
  9. package/dist/src/connection/ConnectorFacade.js +86 -0
  10. package/dist/src/connection/ConnectorFacade.js.map +1 -0
  11. package/dist/src/connection/ManagedConnection.d.ts +1 -4
  12. package/dist/src/connection/ManagedConnection.js +23 -31
  13. package/dist/src/connection/ManagedConnection.js.map +1 -1
  14. package/dist/src/connection/RemoteConnectionLocker.js +4 -3
  15. package/dist/src/connection/RemoteConnectionLocker.js.map +1 -1
  16. package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
  17. package/dist/src/connection/Simulator/Simulator.js +0 -5
  18. package/dist/src/connection/Simulator/Simulator.js.map +1 -1
  19. package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
  20. package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
  21. package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -2
  22. package/dist/src/connection/Simulator/SimulatorConnector.js +10 -11
  23. package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
  24. package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
  25. package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
  26. package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +2 -0
  27. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
  28. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
  29. package/dist/src/connection/WebRTC/WebRtcConnector.d.ts +9 -9
  30. package/dist/src/connection/WebRTC/WebRtcConnector.js +22 -22
  31. package/dist/src/connection/WebRTC/WebRtcConnector.js.map +1 -1
  32. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js +2 -1
  33. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +1 -1
  34. package/dist/src/connection/WebSocket/WebSocketConnector.d.ts +19 -8
  35. package/dist/src/connection/WebSocket/WebSocketConnector.js +67 -46
  36. package/dist/src/connection/WebSocket/WebSocketConnector.js.map +1 -1
  37. package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
  38. package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
  39. package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
  40. package/dist/src/dht/DhtNode.d.ts +16 -54
  41. package/dist/src/dht/DhtNode.js +116 -137
  42. package/dist/src/dht/DhtNode.js.map +1 -1
  43. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +3 -2
  44. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +22 -16
  45. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  46. package/dist/src/dht/contact/Contact.d.ts +1 -15
  47. package/dist/src/dht/contact/Contact.js +1 -9
  48. package/dist/src/dht/contact/Contact.js.map +1 -1
  49. package/dist/src/dht/contact/ContactList.d.ts +13 -3
  50. package/dist/src/dht/contact/ContactList.js +9 -4
  51. package/dist/src/dht/contact/ContactList.js.map +1 -1
  52. package/dist/src/dht/contact/RandomContactList.d.ts +3 -3
  53. package/dist/src/dht/contact/RandomContactList.js +4 -8
  54. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  55. package/dist/src/dht/contact/Remote.d.ts +1 -5
  56. package/dist/src/dht/contact/Remote.js +0 -5
  57. package/dist/src/dht/contact/Remote.js.map +1 -1
  58. package/dist/src/dht/contact/SortedContactList.d.ts +3 -5
  59. package/dist/src/dht/contact/SortedContactList.js +9 -19
  60. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  61. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  62. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  63. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  64. package/dist/src/dht/discovery/PeerDiscovery.d.ts +11 -10
  65. package/dist/src/dht/discovery/PeerDiscovery.js +32 -37
  66. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  67. package/dist/src/dht/find/RecursiveFindSession.d.ts +5 -6
  68. package/dist/src/dht/find/RecursiveFindSession.js +8 -8
  69. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  70. package/dist/src/dht/find/RecursiveFinder.d.ts +2 -4
  71. package/dist/src/dht/find/RecursiveFinder.js +11 -12
  72. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  73. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  74. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  75. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  76. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  77. package/dist/src/dht/routing/RemoteRouter.js +4 -4
  78. package/dist/src/dht/routing/RemoteRouter.js.map +1 -1
  79. package/dist/src/dht/routing/Router.d.ts +10 -13
  80. package/dist/src/dht/routing/Router.js +28 -29
  81. package/dist/src/dht/routing/Router.js.map +1 -1
  82. package/dist/src/dht/routing/RoutingSession.d.ts +3 -5
  83. package/dist/src/dht/routing/RoutingSession.js +19 -13
  84. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  85. package/dist/src/dht/store/DataStore.d.ts +2 -2
  86. package/dist/src/dht/store/DataStore.js +7 -7
  87. package/dist/src/dht/store/DataStore.js.map +1 -1
  88. package/dist/src/exports.d.ts +1 -8
  89. package/dist/src/exports.js +2 -16
  90. package/dist/src/exports.js.map +1 -1
  91. package/dist/src/helpers/PeerID.d.ts +0 -1
  92. package/dist/src/helpers/PeerID.js +0 -6
  93. package/dist/src/helpers/PeerID.js.map +1 -1
  94. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  95. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  96. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  97. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  98. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  99. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  100. package/dist/src/helpers/kademliaId.d.ts +1 -0
  101. package/dist/src/helpers/kademliaId.js +14 -0
  102. package/dist/src/helpers/kademliaId.js.map +1 -0
  103. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  104. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  105. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  106. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +0 -4
  107. package/dist/src/proto/packages/dht/protos/DhtRpc.js +1 -2
  108. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  109. package/package.json +10 -9
  110. package/protos/DhtRpc.proto +0 -1
  111. package/src/connection/ConnectionLockHandler.ts +1 -1
  112. package/src/connection/ConnectionManager.ts +156 -240
  113. package/src/connection/ConnectivityChecker.ts +14 -11
  114. package/src/connection/ConnectorFacade.ts +143 -0
  115. package/src/connection/ManagedConnection.ts +23 -34
  116. package/src/connection/RemoteConnectionLocker.ts +4 -3
  117. package/src/connection/Simulator/Simulator.ts +0 -7
  118. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  119. package/src/connection/Simulator/SimulatorConnector.ts +11 -12
  120. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  121. package/src/connection/WebRTC/NodeWebRtcConnection.ts +14 -13
  122. package/src/connection/WebRTC/WebRtcConnector.ts +31 -31
  123. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +2 -1
  124. package/src/connection/WebSocket/WebSocketConnector.ts +85 -62
  125. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  126. package/src/dht/DhtNode.ts +164 -189
  127. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +14 -7
  128. package/src/dht/contact/Contact.ts +1 -18
  129. package/src/dht/contact/ContactList.ts +16 -6
  130. package/src/dht/contact/RandomContactList.ts +6 -11
  131. package/src/dht/contact/Remote.ts +1 -10
  132. package/src/dht/contact/SortedContactList.ts +12 -25
  133. package/src/dht/discovery/DiscoverySession.ts +20 -23
  134. package/src/dht/discovery/PeerDiscovery.ts +45 -44
  135. package/src/dht/find/RecursiveFindSession.ts +12 -13
  136. package/src/dht/find/RecursiveFinder.ts +16 -19
  137. package/src/dht/registerExternalApiRpcMethods.ts +1 -1
  138. package/src/dht/routing/DuplicateDetector.ts +3 -10
  139. package/src/dht/routing/RemoteRouter.ts +5 -5
  140. package/src/dht/routing/Router.ts +35 -39
  141. package/src/dht/routing/RoutingSession.ts +37 -28
  142. package/src/dht/store/DataStore.ts +11 -11
  143. package/src/exports.ts +1 -8
  144. package/src/helpers/PeerID.ts +0 -7
  145. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  146. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  147. package/src/helpers/kademliaId.ts +8 -0
  148. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  149. package/src/proto/packages/dht/protos/DhtRpc.ts +1 -6
  150. package/test/benchmark/KademliaCorrectness.test.ts +5 -2
  151. package/test/benchmark/RecursiveFind.test.ts +6 -6
  152. package/test/end-to-end/Layer0-Layer1.test.ts +14 -14
  153. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  154. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  155. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  156. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  157. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  158. package/test/integration/ConnectionLocking.test.ts +32 -26
  159. package/test/integration/ConnectionManager.test.ts +90 -93
  160. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  161. package/test/integration/DhtRpc.test.ts +4 -6
  162. package/test/integration/Layer1-scale.test.ts +8 -8
  163. package/test/integration/MigrateData.test.ts +9 -9
  164. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  165. package/test/integration/RecursiveFind.test.ts +5 -5
  166. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  167. package/test/integration/RemoteRouter.test.ts +5 -6
  168. package/test/integration/RemoteStore.test.ts +4 -5
  169. package/test/integration/RouteMessage.test.ts +7 -9
  170. package/test/integration/RpcErrors.test.ts +25 -10
  171. package/test/integration/ScaleDownDht.test.ts +8 -8
  172. package/test/integration/SimultaneousConnections.test.ts +35 -36
  173. package/test/integration/Store.test.ts +8 -9
  174. package/test/integration/StoreAndDelete.test.ts +11 -11
  175. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  176. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  177. package/test/integration/WebRtcConnectorRpc.test.ts +6 -8
  178. package/test/integration/WebSocket.test.ts +4 -2
  179. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  180. package/test/integration/WebSocketConnectorRpc.test.ts +2 -3
  181. package/test/unit/DuplicateDetector.test.ts +3 -4
  182. package/test/unit/LocalDataStore.test.ts +6 -8
  183. package/test/unit/RandomContactList.test.ts +25 -74
  184. package/test/unit/RecursiveFinder.test.ts +8 -12
  185. package/test/unit/Router.test.ts +18 -21
  186. package/test/unit/SortedContactList.test.ts +62 -112
  187. package/test/unit/WebSocketConnector.test.ts +64 -0
  188. package/test/unit/WebSocketServer.test.ts +24 -12
  189. package/test/utils/mock/RecursiveFinder.ts +2 -2
  190. package/test/utils/mock/Router.ts +9 -11
  191. package/test/utils/mock/Transport.ts +2 -2
  192. package/test/utils/utils.ts +40 -49
  193. package/dist/src/dht/DhtPeer.js.map +0 -1
  194. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  195. package/dist/src/helpers/browser/isBrowser.js +0 -6
  196. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  197. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  198. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  199. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  200. package/src/helpers/browser/isBrowser.ts +0 -1
  201. package/src/helpers/browser/isNodeJS.ts +0 -1
  202. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  203. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  204. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
  205. /package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +0 -0
@@ -1,14 +1,10 @@
1
- import { DhtPeer } from './DhtPeer';
2
1
  import { EventEmitter } from 'eventemitter3';
3
- import { SortedContactList } from './contact/SortedContactList';
4
2
  import { RoutingRpcCommunicator } from '../transport/RoutingRpcCommunicator';
5
- import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
6
3
  import { PeerID } from '../helpers/PeerID';
7
- import { LeaveNotice, ConnectivityResponse, Message, PeerDescriptor, FindMode, DataEntry } from '../proto/packages/dht/protos/DhtRpc';
4
+ import { ConnectivityResponse, Message, PeerDescriptor, FindMode, DataEntry } from '../proto/packages/dht/protos/DhtRpc';
8
5
  import { ITransport, TransportEvents } from '../transport/ITransport';
9
6
  import { ConnectionManager, PortRange, TlsCertificate } from '../connection/ConnectionManager';
10
7
  import { MetricsContext } from '@streamr/utils';
11
- import { Empty } from '../proto/google/protobuf/empty';
12
8
  import { Any } from '../proto/google/protobuf/any';
13
9
  import { Router } from './routing/Router';
14
10
  import { RecursiveFindResult } from './find/RecursiveFinder';
@@ -31,17 +27,19 @@ export interface DhtNodeOptions {
31
27
  maxNeighborListSize?: number;
32
28
  numberOfNodesPerKBucket?: number;
33
29
  joinNoProgressLimit?: number;
30
+ getClosestContactsLimit?: number;
34
31
  dhtJoinTimeout?: number;
35
32
  metricsContext?: MetricsContext;
36
33
  storeHighestTtl?: number;
37
34
  storeMaxTtl?: number;
38
- transportLayer?: ITransport;
35
+ networkConnectivityTimeout?: number;
36
+ storeNumberOfCopies?: number;
37
+ transport?: ITransport;
39
38
  peerDescriptor?: PeerDescriptor;
40
39
  entryPoints?: PeerDescriptor[];
41
40
  websocketHost?: string;
42
41
  websocketPortRange?: PortRange;
43
42
  peerId?: string;
44
- nodeName?: string;
45
43
  rpcRequestTimeout?: number;
46
44
  iceServers?: IceServer[];
47
45
  webrtcAllowPrivateAddresses?: boolean;
@@ -49,43 +47,13 @@ export interface DhtNodeOptions {
49
47
  webrtcDatachannelBufferThresholdHigh?: number;
50
48
  webrtcNewConnectionTimeout?: number;
51
49
  webrtcPortRange?: PortRange;
50
+ maxMessageSize?: number;
52
51
  maxConnections?: number;
53
52
  tlsCertificate?: TlsCertificate;
54
53
  externalIp?: string;
55
54
  }
56
- export declare class DhtNodeConfig {
57
- serviceId: string;
58
- joinParallelism: number;
59
- maxNeighborListSize: number;
60
- numberOfNodesPerKBucket: number;
61
- joinNoProgressLimit: number;
62
- dhtJoinTimeout: number;
63
- getClosestContactsLimit: number;
64
- maxConnections: number;
65
- storeHighestTtl: number;
66
- storeMaxTtl: number;
67
- storeNumberOfCopies: number;
68
- metricsContext: MetricsContext;
69
- peerId: string;
70
- transportLayer?: ITransport;
71
- peerDescriptor?: PeerDescriptor;
72
- entryPoints?: PeerDescriptor[];
73
- websocketHost?: string;
74
- websocketPortRange?: PortRange;
75
- nodeName?: string;
76
- rpcRequestTimeout?: number;
77
- iceServers?: IceServer[];
78
- webrtcAllowPrivateAddresses?: boolean;
79
- webrtcDatachannelBufferThresholdLow?: number;
80
- webrtcDatachannelBufferThresholdHigh?: number;
81
- webrtcNewConnectionTimeout?: number;
82
- externalIp?: string;
83
- webrtcPortRange?: PortRange;
84
- tlsCertificate?: TlsCertificate;
85
- constructor(conf: Partial<DhtNodeOptions>);
86
- }
87
55
  export type Events = TransportEvents & DhtNodeEvents;
88
- export declare const createPeerDescriptor: (msg?: ConnectivityResponse, peerId?: string, nodeName?: string) => PeerDescriptor;
56
+ export declare const createPeerDescriptor: (msg?: ConnectivityResponse, peerId?: string) => PeerDescriptor;
89
57
  export declare class DhtNode extends EventEmitter<Events> implements ITransport {
90
58
  private readonly config;
91
59
  private bucket?;
@@ -94,9 +62,8 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
94
62
  private openInternetPeers?;
95
63
  private randomPeers?;
96
64
  private rpcCommunicator?;
97
- private transportLayer?;
65
+ private transport?;
98
66
  private ownPeerDescriptor?;
99
- private ownPeerId?;
100
67
  router?: Router;
101
68
  dataStore?: DataStore;
102
69
  private localDataStore;
@@ -106,16 +73,14 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
106
73
  private started;
107
74
  private stopped;
108
75
  private entryPointDisconnectTimeout?;
109
- contactAddCounter: number;
110
- contactOnAddedCounter: number;
111
- constructor(conf: Partial<DhtNodeConfig>);
76
+ constructor(conf: DhtNodeOptions);
112
77
  start(): Promise<void>;
113
78
  private initKBuckets;
114
79
  private onTransportConnected;
115
80
  private onTransportDisconnected;
116
81
  private bindDefaultServerMethods;
117
82
  private isPeerCloserToIdThanSelf;
118
- handleMessage(message: Message): void;
83
+ private handleMessage;
119
84
  private generatePeerDescriptorCallBack;
120
85
  private getClosestPeerDescriptors;
121
86
  private onKBucketPing;
@@ -123,36 +88,33 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
123
88
  private onKBucketAdded;
124
89
  private addClosestContactToBucket;
125
90
  private getClosestActiveContactNotInBucket;
126
- getNeighborList(): SortedContactList<DhtPeer>;
91
+ getClosestContacts(maxCount?: number): PeerDescriptor[];
127
92
  getNodeId(): PeerID;
128
93
  getBucketSize(): number;
129
94
  private addNewContact;
130
95
  private connectToEntryPoint;
131
96
  removeContact(contact: PeerDescriptor, removeFromOpenInternetPeers?: boolean): void;
132
- send(msg: Message, _doNotConnect?: boolean): Promise<void>;
133
- joinDht(entryPointDescriptors: PeerDescriptor[], doRandomJoin?: boolean, retry?: boolean): Promise<void>;
97
+ send(msg: Message): Promise<void>;
98
+ joinDht(entryPointDescriptors: PeerDescriptor[], doAdditionalRandomPeerDiscovery?: boolean, retry?: boolean): Promise<void>;
134
99
  startRecursiveFind(idToFind: Uint8Array, findMode?: FindMode, excludedPeer?: PeerDescriptor): Promise<RecursiveFindResult>;
135
100
  storeDataToDht(key: Uint8Array, data: Any): Promise<PeerDescriptor[]>;
136
101
  storeDataViaPeer(key: Uint8Array, data: Any, peer: PeerDescriptor): Promise<PeerDescriptor[]>;
137
- getDataFromDht(idToFind: Uint8Array): Promise<RecursiveFindResult>;
102
+ getDataFromDht(idToFind: Uint8Array): Promise<DataEntry[]>;
138
103
  deleteDataFromDht(idToDelete: Uint8Array): Promise<void>;
139
104
  findDataViaPeer(idToFind: Uint8Array, peer: PeerDescriptor): Promise<DataEntry[]>;
140
105
  getRpcCommunicator(): RoutingRpcCommunicator;
141
106
  getTransport(): ITransport;
142
107
  getPeerDescriptor(): PeerDescriptor;
143
108
  getAllConnectionPeerDescriptors(): PeerDescriptor[];
144
- getK(): number;
145
109
  getKBucketPeers(): PeerDescriptor[];
146
- getOpenInternetPeerDescriptors(): PeerDescriptor[];
147
110
  getNumberOfConnections(): number;
148
111
  getNumberOfLocalLockedConnections(): number;
149
112
  getNumberOfRemoteLockedConnections(): number;
150
113
  getNumberOfWeakLockedConnections(): number;
151
- isJoinOngoing(): boolean;
114
+ waitForNetworkConnectivity(): Promise<void>;
152
115
  hasJoined(): boolean;
153
- getKnownEntryPoints(): PeerDescriptor[];
154
116
  stop(): Promise<void>;
155
117
  private getClosestPeers;
156
118
  private ping;
157
- leaveNotice(request: LeaveNotice, context: ServerCallContext): Promise<Empty>;
119
+ private leaveNotice;
158
120
  }