@streamr/dht 100.0.0-testnet-two.1 → 100.0.0-testnet-two.2

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 (170) hide show
  1. package/dist/package.json +5 -5
  2. package/dist/src/connection/ConnectionLockHandler.d.ts +11 -11
  3. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  4. package/dist/src/connection/ConnectionLockRpcLocal.d.ts +3 -3
  5. package/dist/src/connection/ConnectionManager.js +3 -3
  6. package/dist/src/connection/ConnectionManager.js.map +1 -1
  7. package/dist/src/connection/ManagedConnection.d.ts +2 -2
  8. package/dist/src/connection/simulator/Simulator.js.map +1 -1
  9. package/dist/src/connection/simulator/SimulatorConnector.js.map +1 -1
  10. package/dist/src/connection/webrtc/WebrtcConnector.js +1 -1
  11. package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
  12. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +2 -2
  13. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +1 -1
  14. package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
  15. package/dist/src/connection/websocket/WebsocketConnector.js +2 -2
  16. package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
  17. package/dist/src/dht/DhtNode.d.ts +9 -8
  18. package/dist/src/dht/DhtNode.js +21 -16
  19. package/dist/src/dht/DhtNode.js.map +1 -1
  20. package/dist/src/dht/DhtNodeRpcLocal.d.ts +2 -1
  21. package/dist/src/dht/DhtNodeRpcLocal.js +2 -1
  22. package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
  23. package/dist/src/dht/DhtNodeRpcRemote.d.ts +6 -5
  24. package/dist/src/dht/DhtNodeRpcRemote.js +9 -7
  25. package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
  26. package/dist/src/dht/ExternalApiRpcLocal.d.ts +3 -3
  27. package/dist/src/dht/ExternalApiRpcLocal.js +3 -2
  28. package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
  29. package/dist/src/dht/ExternalApiRpcRemote.d.ts +3 -2
  30. package/dist/src/dht/ExternalApiRpcRemote.js +3 -2
  31. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
  32. package/dist/src/dht/PeerManager.d.ts +9 -9
  33. package/dist/src/dht/PeerManager.js +12 -12
  34. package/dist/src/dht/PeerManager.js.map +1 -1
  35. package/dist/src/dht/contact/Contact.d.ts +2 -2
  36. package/dist/src/dht/contact/ContactList.d.ts +7 -7
  37. package/dist/src/dht/contact/ContactList.js.map +1 -1
  38. package/dist/src/dht/contact/RandomContactList.d.ts +4 -4
  39. package/dist/src/dht/contact/RandomContactList.js +2 -3
  40. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  41. package/dist/src/dht/contact/RpcRemote.d.ts +1 -4
  42. package/dist/src/dht/contact/RpcRemote.js +1 -5
  43. package/dist/src/dht/contact/RpcRemote.js.map +1 -1
  44. package/dist/src/dht/contact/SortedContactList.d.ts +13 -13
  45. package/dist/src/dht/contact/SortedContactList.js +5 -5
  46. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  47. package/dist/src/dht/discovery/DiscoverySession.d.ts +3 -2
  48. package/dist/src/dht/discovery/DiscoverySession.js +9 -9
  49. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  50. package/dist/src/dht/discovery/PeerDiscovery.d.ts +3 -1
  51. package/dist/src/dht/discovery/PeerDiscovery.js +16 -9
  52. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  53. package/dist/src/dht/recursive-operation/RecursiveOperationManager.d.ts +3 -3
  54. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js +12 -11
  55. package/dist/src/dht/recursive-operation/RecursiveOperationManager.js.map +1 -1
  56. package/dist/src/dht/recursive-operation/RecursiveOperationSession.d.ts +2 -1
  57. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +6 -6
  58. package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -1
  59. package/dist/src/dht/routing/Router.d.ts +2 -2
  60. package/dist/src/dht/routing/Router.js +2 -2
  61. package/dist/src/dht/routing/Router.js.map +1 -1
  62. package/dist/src/dht/routing/RouterRpcLocal.js +3 -3
  63. package/dist/src/dht/routing/RouterRpcLocal.js.map +1 -1
  64. package/dist/src/dht/routing/RoutingSession.d.ts +3 -3
  65. package/dist/src/dht/routing/RoutingSession.js +4 -4
  66. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  67. package/dist/src/dht/store/LocalDataStore.d.ts +6 -8
  68. package/dist/src/dht/store/LocalDataStore.js +18 -24
  69. package/dist/src/dht/store/LocalDataStore.js.map +1 -1
  70. package/dist/src/dht/store/StoreManager.d.ts +3 -3
  71. package/dist/src/dht/store/StoreManager.js +20 -21
  72. package/dist/src/dht/store/StoreManager.js.map +1 -1
  73. package/dist/src/dht/store/StoreRpcLocal.d.ts +2 -1
  74. package/dist/src/dht/store/StoreRpcLocal.js +10 -8
  75. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -1
  76. package/dist/src/exports.d.ts +2 -0
  77. package/dist/src/exports.js +6 -1
  78. package/dist/src/exports.js.map +1 -1
  79. package/dist/src/helpers/AddressTools.js +2 -0
  80. package/dist/src/helpers/AddressTools.js.map +1 -1
  81. package/dist/src/helpers/PeerID.d.ts +2 -2
  82. package/dist/src/helpers/PeerID.js +3 -3
  83. package/dist/src/helpers/PeerID.js.map +1 -1
  84. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +2 -2
  85. package/dist/src/helpers/peerIdFromPeerDescriptor.js +2 -1
  86. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  87. package/dist/src/identifiers.d.ts +6 -0
  88. package/dist/src/identifiers.js +23 -0
  89. package/dist/src/identifiers.js.map +1 -0
  90. package/package.json +5 -5
  91. package/src/connection/ConnectionLockHandler.ts +15 -15
  92. package/src/connection/ConnectionLockRpcLocal.ts +3 -3
  93. package/src/connection/ConnectionManager.ts +4 -7
  94. package/src/connection/ManagedConnection.ts +2 -2
  95. package/src/connection/simulator/Simulator.ts +2 -2
  96. package/src/connection/simulator/SimulatorConnector.ts +2 -2
  97. package/src/connection/webrtc/BrowserWebrtcConnection.ts +0 -4
  98. package/src/connection/webrtc/WebrtcConnector.ts +2 -3
  99. package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +2 -3
  100. package/src/connection/websocket/WebsocketConnector.ts +5 -6
  101. package/src/dht/DhtNode.ts +31 -29
  102. package/src/dht/DhtNodeRpcLocal.ts +3 -2
  103. package/src/dht/DhtNodeRpcRemote.ts +14 -12
  104. package/src/dht/ExternalApiRpcLocal.ts +15 -6
  105. package/src/dht/ExternalApiRpcRemote.ts +5 -4
  106. package/src/dht/PeerManager.ts +20 -20
  107. package/src/dht/contact/Contact.ts +2 -2
  108. package/src/dht/contact/ContactList.ts +7 -7
  109. package/src/dht/contact/RandomContactList.ts +6 -6
  110. package/src/dht/contact/RpcRemote.ts +0 -8
  111. package/src/dht/contact/SortedContactList.ts +22 -22
  112. package/src/dht/discovery/DiscoverySession.ts +16 -14
  113. package/src/dht/discovery/PeerDiscovery.ts +32 -11
  114. package/src/dht/recursive-operation/RecursiveOperationManager.ts +14 -14
  115. package/src/dht/recursive-operation/RecursiveOperationSession.ts +11 -11
  116. package/src/dht/routing/Router.ts +5 -5
  117. package/src/dht/routing/RouterRpcLocal.ts +3 -3
  118. package/src/dht/routing/RoutingSession.ts +6 -8
  119. package/src/dht/store/LocalDataStore.ts +25 -33
  120. package/src/dht/store/StoreManager.ts +25 -29
  121. package/src/dht/store/StoreRpcLocal.ts +11 -9
  122. package/src/exports.ts +2 -0
  123. package/src/helpers/AddressTools.ts +2 -0
  124. package/src/helpers/PeerID.ts +4 -4
  125. package/src/helpers/peerIdFromPeerDescriptor.ts +4 -4
  126. package/src/identifiers.ts +20 -0
  127. package/test/RandomGraphSimulation.ts +3 -2
  128. package/test/benchmark/Find.test.ts +4 -3
  129. package/test/benchmark/KademliaCorrectness.test.ts +4 -4
  130. package/test/benchmark/SortedContactListBenchmark.test.ts +15 -14
  131. package/test/benchmark/kademlia-simulation/Contact.ts +7 -8
  132. package/test/benchmark/kademlia-simulation/KademliaSimulation.ts +2 -2
  133. package/test/benchmark/kademlia-simulation/SimulationNode.ts +10 -11
  134. package/test/data/generateGroundTruthData.ts +5 -4
  135. package/test/end-to-end/Layer0Webrtc-Layer1.test.ts +2 -2
  136. package/test/end-to-end/RecoveryFromFailedAutoCertification.test.ts +1 -1
  137. package/test/end-to-end/memory-leak.test.ts +3 -2
  138. package/test/integration/ConnectionManager.test.ts +3 -3
  139. package/test/integration/DhtJoinPeerDiscovery.test.ts +2 -1
  140. package/test/integration/DhtNodeExternalAPI.test.ts +7 -7
  141. package/test/integration/DhtNodeRpcRemote.test.ts +3 -2
  142. package/test/integration/Find.test.ts +3 -3
  143. package/test/integration/Layer1-scale.test.ts +3 -3
  144. package/test/integration/Mock-Layer1-Layer0.test.ts +6 -5
  145. package/test/integration/ReplicateData.test.ts +25 -23
  146. package/test/integration/RouteMessage.test.ts +9 -10
  147. package/test/integration/RouterRpcRemote.test.ts +1 -1
  148. package/test/integration/ScaleDownDht.test.ts +4 -4
  149. package/test/integration/SimultaneousConnections.test.ts +7 -14
  150. package/test/integration/Store.test.ts +17 -7
  151. package/test/integration/StoreAndDelete.test.ts +11 -10
  152. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -6
  153. package/test/integration/StoreRpcRemote.test.ts +3 -5
  154. package/test/unit/AddressTools.test.ts +4 -0
  155. package/test/unit/LocalDataStore.test.ts +37 -29
  156. package/test/unit/PeerManager.test.ts +7 -8
  157. package/test/unit/RandomContactList.test.ts +3 -3
  158. package/test/unit/RecursiveOperationManager.test.ts +2 -1
  159. package/test/unit/RecursiveOperationSession.test.ts +2 -3
  160. package/test/unit/Router.test.ts +2 -2
  161. package/test/unit/RoutingSession.test.ts +2 -2
  162. package/test/unit/SortedContactList.test.ts +6 -6
  163. package/test/unit/StoreManager.test.ts +26 -23
  164. package/test/utils/customMatchers.ts +3 -2
  165. package/test/utils/mock/mockDataEntry.ts +8 -6
  166. package/test/utils/utils.ts +4 -4
  167. package/dist/src/helpers/nodeId.d.ts +0 -6
  168. package/dist/src/helpers/nodeId.js +0 -31
  169. package/dist/src/helpers/nodeId.js.map +0 -1
  170. package/src/helpers/nodeId.ts +0 -28
@@ -1,19 +1,22 @@
1
1
  import { wait, waitForCondition } from '@streamr/utils'
2
- import crypto from 'crypto'
3
2
  import { range, sortBy } from 'lodash'
4
- import { Key } from 'readline'
5
3
  import { getDistance } from '../../src/dht/PeerManager'
6
4
  import { StoreManager } from '../../src/dht/store/StoreManager'
7
- import { NodeID, createRandomNodeId, getNodeIdFromBinary } from '../../src/helpers/nodeId'
5
+ import {
6
+ DhtAddress,
7
+ createRandomDhtAddress,
8
+ getDhtAddressFromRaw,
9
+ getRawFromDhtAddress,
10
+ } from '../../src/identifiers'
8
11
  import { NodeType, ReplicateDataRequest } from '../../src/proto/packages/dht/protos/DhtRpc'
9
12
 
10
13
  const DATA_ENTRY = {
11
- key: createRandomNodeId(),
12
- creator: crypto.randomBytes(20)
14
+ key: getRawFromDhtAddress(createRandomDhtAddress()),
15
+ creator: getRawFromDhtAddress(createRandomDhtAddress())
13
16
  }
14
17
  const NODES_CLOSEST_TO_DATA = sortBy(
15
- range(5).map(() => createRandomNodeId()),
16
- (id: Uint8Array) => getDistance(getNodeIdFromBinary(id), getNodeIdFromBinary(DATA_ENTRY.key))
18
+ range(5).map(() => createRandomDhtAddress()),
19
+ (id: DhtAddress) => getDistance(getRawFromDhtAddress(id), DATA_ENTRY.key)
17
20
  )
18
21
 
19
22
  describe('StoreManager', () => {
@@ -21,13 +24,13 @@ describe('StoreManager', () => {
21
24
  describe('new contact', () => {
22
25
 
23
26
  const createStoreManager = (
24
- localNodeId: Uint8Array,
25
- closestNeighbors: Uint8Array[],
27
+ localNodeId: DhtAddress,
28
+ closestNeighbors: DhtAddress[],
26
29
  replicateData: (request: ReplicateDataRequest) => unknown,
27
- setStale: (key: Key, creator: NodeID, stale: boolean) => unknown
30
+ setStale: (key: DhtAddress, creator: DhtAddress, stale: boolean) => unknown
28
31
  ): StoreManager => {
29
32
  const getClosestNeighborsTo = () => {
30
- return closestNeighbors.map((nodeId) => ({ nodeId, type: NodeType.NODEJS }))
33
+ return closestNeighbors.map((nodeId) => ({ nodeId: getRawFromDhtAddress(nodeId), type: NodeType.NODEJS }))
31
34
  }
32
35
  return new StoreManager({
33
36
  rpcCommunicator: {
@@ -35,7 +38,7 @@ describe('StoreManager', () => {
35
38
  registerRpcNotification: () => {}
36
39
  } as any,
37
40
  recursiveOperationManager: undefined as any,
38
- localPeerDescriptor: { nodeId: localNodeId, type: NodeType.NODEJS },
41
+ localPeerDescriptor: { nodeId: getRawFromDhtAddress(localNodeId), type: NodeType.NODEJS },
39
42
  localDataStore: { values: () => [DATA_ENTRY], setStale } as any,
40
43
  serviceId: undefined as any,
41
44
  highestTtl: undefined as any,
@@ -49,14 +52,14 @@ describe('StoreManager', () => {
49
52
 
50
53
  it('new node is within redundancy factor', async () => {
51
54
  const replicateData = jest.fn<undefined, [ReplicateDataRequest]>()
52
- const setStale = jest.fn<undefined, [Key, NodeID]>()
55
+ const setStale = jest.fn<undefined, [DhtAddress, DhtAddress]>()
53
56
  const manager = createStoreManager(
54
57
  NODES_CLOSEST_TO_DATA[0],
55
58
  [NODES_CLOSEST_TO_DATA[1], NODES_CLOSEST_TO_DATA[3], NODES_CLOSEST_TO_DATA[4]],
56
59
  replicateData,
57
60
  setStale
58
61
  )
59
- manager.onNewContact({ nodeId: NODES_CLOSEST_TO_DATA[2], type: NodeType.NODEJS })
62
+ manager.onNewContact({ nodeId: getRawFromDhtAddress(NODES_CLOSEST_TO_DATA[2]), type: NodeType.NODEJS })
60
63
  await waitForCondition(() => replicateData.mock.calls.length === 1)
61
64
  expect(replicateData).toHaveBeenCalledWith({
62
65
  entry: DATA_ENTRY
@@ -66,14 +69,14 @@ describe('StoreManager', () => {
66
69
 
67
70
  it('new node is not within redundancy factor', async () => {
68
71
  const replicateData = jest.fn<undefined, [ReplicateDataRequest]>()
69
- const setStale = jest.fn<undefined, [Key, NodeID]>()
72
+ const setStale = jest.fn<undefined, [DhtAddress, DhtAddress]>()
70
73
  const manager = createStoreManager(
71
74
  NODES_CLOSEST_TO_DATA[0],
72
75
  [NODES_CLOSEST_TO_DATA[1], NODES_CLOSEST_TO_DATA[2], NODES_CLOSEST_TO_DATA[3]],
73
76
  replicateData,
74
77
  setStale
75
78
  )
76
- manager.onNewContact({ nodeId: NODES_CLOSEST_TO_DATA[4], type: NodeType.NODEJS })
79
+ manager.onNewContact({ nodeId: getRawFromDhtAddress(NODES_CLOSEST_TO_DATA[4]), type: NodeType.NODEJS })
77
80
  await wait(50)
78
81
  expect(replicateData).not.toHaveBeenCalled()
79
82
  expect(setStale).not.toHaveBeenCalled()
@@ -84,14 +87,14 @@ describe('StoreManager', () => {
84
87
 
85
88
  it('this node is within redundancy factor', async () => {
86
89
  const replicateData = jest.fn<undefined, [ReplicateDataRequest]>()
87
- const setStale = jest.fn<undefined, [Key, NodeID]>()
90
+ const setStale = jest.fn<undefined, [DhtAddress, DhtAddress]>()
88
91
  const manager = createStoreManager(
89
92
  NODES_CLOSEST_TO_DATA[1],
90
93
  [NODES_CLOSEST_TO_DATA[0], NODES_CLOSEST_TO_DATA[2], NODES_CLOSEST_TO_DATA[3]],
91
94
  replicateData,
92
95
  setStale
93
96
  )
94
- manager.onNewContact({ nodeId: NODES_CLOSEST_TO_DATA[4], type: NodeType.NODEJS })
97
+ manager.onNewContact({ nodeId: getRawFromDhtAddress(NODES_CLOSEST_TO_DATA[4]), type: NodeType.NODEJS })
95
98
  await wait(50)
96
99
  expect(replicateData).not.toHaveBeenCalled()
97
100
  expect(setStale).not.toHaveBeenCalled()
@@ -99,30 +102,30 @@ describe('StoreManager', () => {
99
102
 
100
103
  it('this node is not within redundancy factor', async () => {
101
104
  const replicateData = jest.fn<undefined, [ReplicateDataRequest]>()
102
- const setStale = jest.fn<undefined, [Key, NodeID]>()
105
+ const setStale = jest.fn<undefined, [DhtAddress, DhtAddress]>()
103
106
  const manager = createStoreManager(
104
107
  NODES_CLOSEST_TO_DATA[3],
105
108
  [NODES_CLOSEST_TO_DATA[0], NODES_CLOSEST_TO_DATA[1], NODES_CLOSEST_TO_DATA[2]],
106
109
  replicateData,
107
110
  setStale
108
111
  )
109
- manager.onNewContact({ nodeId: NODES_CLOSEST_TO_DATA[4], type: NodeType.NODEJS })
112
+ manager.onNewContact({ nodeId: getRawFromDhtAddress(NODES_CLOSEST_TO_DATA[4]), type: NodeType.NODEJS })
110
113
  await wait(50)
111
114
  expect(replicateData).not.toHaveBeenCalled()
112
115
  expect(setStale).toHaveBeenCalledTimes(1)
113
- expect(setStale).toHaveBeenCalledWith(DATA_ENTRY.key, getNodeIdFromBinary(DATA_ENTRY.creator), true)
116
+ expect(setStale).toHaveBeenCalledWith(getDhtAddressFromRaw(DATA_ENTRY.key), getDhtAddressFromRaw(DATA_ENTRY.creator), true)
114
117
  })
115
118
 
116
119
  it('this node has less than redundancyFactor neighbors', async () => {
117
120
  const replicateData = jest.fn<undefined, [ReplicateDataRequest]>()
118
- const setStale = jest.fn<undefined, [Key, NodeID]>()
121
+ const setStale = jest.fn<undefined, [DhtAddress, DhtAddress]>()
119
122
  const manager = createStoreManager(
120
123
  NODES_CLOSEST_TO_DATA[3],
121
124
  [NODES_CLOSEST_TO_DATA[0], NODES_CLOSEST_TO_DATA[1]],
122
125
  replicateData,
123
126
  setStale
124
127
  )
125
- manager.onNewContact({ nodeId: NODES_CLOSEST_TO_DATA[4], type: NodeType.NODEJS })
128
+ manager.onNewContact({ nodeId: getRawFromDhtAddress(NODES_CLOSEST_TO_DATA[4]), type: NodeType.NODEJS })
126
129
  await wait(50)
127
130
  expect(replicateData).not.toHaveBeenCalled()
128
131
  expect(setStale).toHaveBeenCalledTimes(0)
@@ -1,7 +1,8 @@
1
- import { areEqualBinaries, binaryToHex } from '@streamr/utils'
1
+ import { areEqualBinaries } from '@streamr/utils'
2
2
  import { printExpected, printReceived } from 'jest-matcher-utils'
3
3
  import { isEqual } from 'lodash'
4
4
  import { ConnectivityMethod, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
5
+ import { getDhtAddressFromRaw } from '../../src/identifiers'
5
6
 
6
7
  // we could ES2015 module syntax (https://jestjs.io/docs/expect#expectextendmatchers),
7
8
  // but the IDE doesn't find custom matchers if we do that
@@ -24,7 +25,7 @@ const toEqualPeerDescriptor = (
24
25
  ): jest.CustomMatcherResult => {
25
26
  const messages: string[] = []
26
27
  if (!areEqualBinaries(expected.nodeId, actual.nodeId)) {
27
- messages.push(formErrorMessage('nodeId', binaryToHex(expected.nodeId), binaryToHex(actual.nodeId)))
28
+ messages.push(formErrorMessage('nodeId', getDhtAddressFromRaw(expected.nodeId), getDhtAddressFromRaw(actual.nodeId)))
28
29
  }
29
30
  if (!isEqual(expected.type, actual.type)) {
30
31
  const typeNames = { [NodeType.NODEJS]: 'NODEJS', [NodeType.BROWSER]: 'BROWSER' }
@@ -1,10 +1,10 @@
1
1
  import { MessageType as MessageType$, ScalarType } from '@protobuf-ts/runtime'
2
2
  import { randomString } from '@streamr/utils'
3
- import crypto from 'crypto'
4
3
  import { Timestamp } from '../../../src/proto/google/protobuf/timestamp'
5
4
  import { Any } from '../../../src/proto/google/protobuf/any'
6
5
  import { DataEntry } from '../../../src/proto/packages/dht/protos/DhtRpc'
7
- import { createRandomNodeId } from '../../../src/helpers/nodeId'
6
+ import { DhtAddress, createRandomDhtAddress, getRawFromDhtAddress } from '../../../src/identifiers'
7
+ import { omit } from 'lodash'
8
8
 
9
9
  const MockData = new class extends MessageType$<{ foo: string }> {
10
10
  constructor() {
@@ -14,16 +14,18 @@ const MockData = new class extends MessageType$<{ foo: string }> {
14
14
  }
15
15
  }
16
16
 
17
- export const createMockDataEntry = (entry: Partial<DataEntry> = {}): DataEntry => {
17
+ export const createMockDataEntry = (
18
+ entry: Partial<Omit<DataEntry, 'key' | 'creator'> & { key: DhtAddress, creator: DhtAddress }> = {}
19
+ ): DataEntry => {
18
20
  return {
19
- key: crypto.randomBytes(10),
21
+ key: getRawFromDhtAddress(entry.key ?? createRandomDhtAddress()),
20
22
  data: Any.pack({ foo: randomString(5) }, MockData),
21
- creator: entry.creator ?? createRandomNodeId(),
23
+ creator: getRawFromDhtAddress(entry.creator ?? createRandomDhtAddress()),
22
24
  ttl: 10000,
23
25
  stale: false,
24
26
  deleted: false,
25
27
  createdAt: Timestamp.now(),
26
- ...entry
28
+ ...omit(entry, 'key', 'creator')
27
29
  }
28
30
  }
29
31
 
@@ -28,11 +28,11 @@ import { Empty } from '../../src/proto/google/protobuf/empty'
28
28
  import { Any } from '../../src/proto/google/protobuf/any'
29
29
  import { wait, waitForCondition } from '@streamr/utils'
30
30
  import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
31
- import { createRandomNodeId } from '../../src/helpers/nodeId'
31
+ import { DhtAddress, createRandomDhtAddress, getRawFromDhtAddress } from '../../src/identifiers'
32
32
 
33
33
  export const createMockPeerDescriptor = (opts?: Partial<Omit<PeerDescriptor, 'nodeId'>>): PeerDescriptor => {
34
34
  return {
35
- nodeId: createRandomNodeId(),
35
+ nodeId: getRawFromDhtAddress(createRandomDhtAddress()),
36
36
  type: NodeType.NODEJS,
37
37
  ...opts
38
38
  }
@@ -40,13 +40,13 @@ export const createMockPeerDescriptor = (opts?: Partial<Omit<PeerDescriptor, 'no
40
40
 
41
41
  export const createMockConnectionDhtNode = async (
42
42
  simulator: Simulator,
43
- nodeId?: Uint8Array,
43
+ nodeId?: DhtAddress,
44
44
  numberOfNodesPerKBucket?: number,
45
45
  maxConnections = 80,
46
46
  dhtJoinTimeout = 45000
47
47
  ): Promise<DhtNode> => {
48
48
  const peerDescriptor: PeerDescriptor = {
49
- nodeId: nodeId ?? createRandomNodeId(),
49
+ nodeId: getRawFromDhtAddress(nodeId ?? createRandomDhtAddress()),
50
50
  type: NodeType.NODEJS,
51
51
  region: getRandomRegion()
52
52
  }
@@ -1,6 +0,0 @@
1
- import { BrandedString } from '@streamr/utils';
2
- export declare const createRandomNodeId: () => Uint8Array;
3
- export type NodeID = BrandedString<'NodeID'>;
4
- export declare const areEqualNodeIds: (nodeId1: NodeID, nodeId2: NodeID) => boolean;
5
- export declare const getNodeIdFromDataKey: (key: Uint8Array) => NodeID;
6
- export declare const getNodeIdFromBinary: (id: Uint8Array) => NodeID;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getNodeIdFromBinary = exports.getNodeIdFromDataKey = exports.areEqualNodeIds = exports.createRandomNodeId = void 0;
7
- const utils_1 = require("@streamr/utils");
8
- const crypto_1 = __importDefault(require("crypto"));
9
- // https://www.scs.stanford.edu/~dm/home/papers/kpos.pdf
10
- const KADEMLIA_ID_LENGTH_IN_BYTES = 20;
11
- // TODO this should return NodeID
12
- const createRandomNodeId = () => {
13
- return crypto_1.default.randomBytes(KADEMLIA_ID_LENGTH_IN_BYTES);
14
- };
15
- exports.createRandomNodeId = createRandomNodeId;
16
- // TODO remove this or add support for UInt8Array parameters
17
- const areEqualNodeIds = (nodeId1, nodeId2) => {
18
- return nodeId1 === nodeId2;
19
- };
20
- exports.areEqualNodeIds = areEqualNodeIds;
21
- // TODO maybe this is not needed and we can use just getNodeIdFromBinary?
22
- const getNodeIdFromDataKey = (key) => {
23
- return (0, exports.getNodeIdFromBinary)(key);
24
- };
25
- exports.getNodeIdFromDataKey = getNodeIdFromDataKey;
26
- // TODO should we have similar method to convert nodeId to bucketId (which is just hexToBinary)
27
- const getNodeIdFromBinary = (id) => {
28
- return (0, utils_1.binaryToHex)(id);
29
- };
30
- exports.getNodeIdFromBinary = getNodeIdFromBinary;
31
- //# sourceMappingURL=nodeId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nodeId.js","sourceRoot":"","sources":["../../../src/helpers/nodeId.ts"],"names":[],"mappings":";;;;;;AAAA,0CAA2D;AAC3D,oDAA2B;AAE3B,wDAAwD;AACxD,MAAM,2BAA2B,GAAG,EAAE,CAAA;AAEtC,iCAAiC;AAC1B,MAAM,kBAAkB,GAAG,GAAe,EAAE;IAC/C,OAAO,gBAAM,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAA;AAC1D,CAAC,CAAA;AAFY,QAAA,kBAAkB,sBAE9B;AAKD,4DAA4D;AACrD,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,OAAe,EAAW,EAAE;IACzE,OAAO,OAAO,KAAK,OAAO,CAAA;AAC9B,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAED,yEAAyE;AAClE,MAAM,oBAAoB,GAAG,CAAC,GAAe,EAAU,EAAE;IAC5D,OAAO,IAAA,2BAAmB,EAAC,GAAG,CAAC,CAAA;AACnC,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC;AAED,+FAA+F;AACxF,MAAM,mBAAmB,GAAG,CAAC,EAAc,EAAU,EAAE;IAC1D,OAAO,IAAA,mBAAW,EAAC,EAAE,CAAsB,CAAA;AAC/C,CAAC,CAAA;AAFY,QAAA,mBAAmB,uBAE/B"}
@@ -1,28 +0,0 @@
1
- import { BrandedString, binaryToHex } from '@streamr/utils'
2
- import crypto from 'crypto'
3
-
4
- // https://www.scs.stanford.edu/~dm/home/papers/kpos.pdf
5
- const KADEMLIA_ID_LENGTH_IN_BYTES = 20
6
-
7
- // TODO this should return NodeID
8
- export const createRandomNodeId = (): Uint8Array => {
9
- return crypto.randomBytes(KADEMLIA_ID_LENGTH_IN_BYTES)
10
- }
11
-
12
- // TODO rename the file to be "NodeID.ts" instead of "nodeId.ts"
13
- export type NodeID = BrandedString<'NodeID'>
14
-
15
- // TODO remove this or add support for UInt8Array parameters
16
- export const areEqualNodeIds = (nodeId1: NodeID, nodeId2: NodeID): boolean => {
17
- return nodeId1 === nodeId2
18
- }
19
-
20
- // TODO maybe this is not needed and we can use just getNodeIdFromBinary?
21
- export const getNodeIdFromDataKey = (key: Uint8Array): NodeID => {
22
- return getNodeIdFromBinary(key)
23
- }
24
-
25
- // TODO should we have similar method to convert nodeId to bucketId (which is just hexToBinary)
26
- export const getNodeIdFromBinary = (id: Uint8Array): NodeID => {
27
- return binaryToHex(id) as unknown as NodeID
28
- }