@streamr/dht 100.0.0-testnet-three.6 → 100.0.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.
- package/README.md +1 -1
- package/dist/package.json +12 -8
- package/dist/src/connection/ConnectionLockHandler.d.ts +2 -2
- package/dist/src/connection/ConnectionLockHandler.js +13 -5
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionManager.d.ts +4 -4
- package/dist/src/connection/ConnectionManager.js +8 -7
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.js.map +1 -1
- package/dist/src/connection/Handshaker.js +6 -13
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/connectivityChecker.d.ts +1 -1
- package/dist/src/connection/connectivityChecker.js +5 -5
- package/dist/src/connection/connectivityChecker.js.map +1 -1
- package/dist/src/connection/connectivityRequestHandler.d.ts +2 -2
- package/dist/src/connection/connectivityRequestHandler.js +6 -7
- package/dist/src/connection/connectivityRequestHandler.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnector.d.ts +1 -0
- package/dist/src/connection/webrtc/WebrtcConnector.js +13 -8
- package/dist/src/connection/webrtc/WebrtcConnector.js.map +1 -1
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.d.ts +2 -0
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js +4 -6
- package/dist/src/connection/webrtc/WebrtcConnectorRpcLocal.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketConnector.js +24 -21
- package/dist/src/connection/websocket/WebsocketConnector.js.map +1 -1
- package/dist/src/connection/websocket/WebsocketServer.js +25 -35
- package/dist/src/connection/websocket/WebsocketServer.js.map +1 -1
- package/dist/src/connection/websocket/{ServerWebsocket.d.ts → WebsocketServerConnection.d.ts} +4 -5
- package/dist/src/connection/websocket/{ServerWebsocket.js → WebsocketServerConnection.js} +15 -48
- package/dist/src/connection/websocket/WebsocketServerConnection.js.map +1 -0
- package/dist/src/dht/DhtNode.d.ts +13 -6
- package/dist/src/dht/DhtNode.js +50 -15
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcLocal.d.ts +5 -1
- package/dist/src/dht/DhtNodeRpcLocal.js +10 -0
- package/dist/src/dht/DhtNodeRpcLocal.js.map +1 -1
- package/dist/src/dht/DhtNodeRpcRemote.d.ts +3 -0
- package/dist/src/dht/DhtNodeRpcRemote.js +15 -0
- package/dist/src/dht/DhtNodeRpcRemote.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcLocal.d.ts +2 -2
- package/dist/src/dht/ExternalApiRpcLocal.js +3 -3
- package/dist/src/dht/ExternalApiRpcLocal.js.map +1 -1
- package/dist/src/dht/ExternalApiRpcRemote.d.ts +1 -1
- package/dist/src/dht/ExternalApiRpcRemote.js +2 -2
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -1
- package/dist/src/dht/PeerManager.d.ts +12 -0
- package/dist/src/dht/PeerManager.js +30 -5
- package/dist/src/dht/PeerManager.js.map +1 -1
- package/dist/src/dht/contact/RingContactList.d.ts +31 -0
- package/dist/src/dht/contact/RingContactList.js +133 -0
- package/dist/src/dht/contact/RingContactList.js.map +1 -0
- package/dist/src/dht/contact/ringIdentifiers.d.ts +16 -0
- package/dist/src/dht/contact/ringIdentifiers.js +54 -0
- package/dist/src/dht/contact/ringIdentifiers.js.map +1 -0
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +4 -0
- package/dist/src/dht/discovery/PeerDiscovery.js +35 -0
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/discovery/RingDiscoverySession.d.ts +29 -0
- package/dist/src/dht/discovery/RingDiscoverySession.js +123 -0
- package/dist/src/dht/discovery/RingDiscoverySession.js.map +1 -0
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js +0 -1
- package/dist/src/dht/recursive-operation/RecursiveOperationSession.js.map +1 -1
- package/dist/src/dht/store/StoreManager.js +1 -1
- package/dist/src/dht/store/StoreManager.js.map +1 -1
- package/dist/src/exports.d.ts +1 -0
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/createPeerDescriptor.d.ts +1 -1
- package/dist/src/helpers/createPeerDescriptor.js +2 -1
- package/dist/src/helpers/createPeerDescriptor.js.map +1 -1
- package/dist/src/helpers/version.d.ts +6 -0
- package/dist/src/helpers/version.js +38 -0
- package/dist/src/helpers/version.js.map +1 -0
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +16 -6
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +11 -4
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +98 -87
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +45 -49
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +10 -4
- package/dist/src/transport/RoutingRpcCommunicator.js +0 -2
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/package.json +12 -8
- package/protos/DhtRpc.proto +21 -21
- package/src/connection/ConnectionLockHandler.ts +13 -5
- package/src/connection/ConnectionManager.ts +10 -10
- package/src/connection/ConnectorFacade.ts +0 -1
- package/src/connection/Handshaker.ts +7 -15
- package/src/connection/connectivityChecker.ts +6 -7
- package/src/connection/connectivityRequestHandler.ts +12 -12
- package/src/connection/webrtc/NodeWebrtcConnection.ts +1 -1
- package/src/connection/webrtc/WebrtcConnector.ts +14 -8
- package/src/connection/webrtc/WebrtcConnectorRpcLocal.ts +5 -5
- package/src/connection/websocket/WebsocketConnector.ts +25 -26
- package/src/connection/websocket/WebsocketServer.ts +27 -42
- package/src/connection/websocket/{ServerWebsocket.ts → WebsocketServerConnection.ts} +14 -55
- package/src/dht/DhtNode.ts +72 -34
- package/src/dht/DhtNodeRpcLocal.ts +16 -0
- package/src/dht/DhtNodeRpcRemote.ts +18 -0
- package/src/dht/ExternalApiRpcLocal.ts +5 -5
- package/src/dht/ExternalApiRpcRemote.ts +4 -4
- package/src/dht/PeerManager.ts +48 -12
- package/src/dht/contact/RingContactList.ts +151 -0
- package/src/dht/contact/ringIdentifiers.ts +62 -0
- package/src/dht/discovery/PeerDiscovery.ts +37 -0
- package/src/dht/discovery/RingDiscoverySession.ts +160 -0
- package/src/dht/recursive-operation/RecursiveOperationSession.ts +1 -3
- package/src/dht/store/StoreManager.ts +1 -1
- package/src/exports.ts +1 -0
- package/src/helpers/createPeerDescriptor.ts +2 -1
- package/src/helpers/version.ts +32 -0
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +22 -9
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +10 -4
- package/src/proto/packages/dht/protos/DhtRpc.ts +122 -100
- package/src/transport/RoutingRpcCommunicator.ts +1 -2
- package/test/benchmark/Find.test.ts +3 -4
- package/test/benchmark/KademliaCorrectness.test.ts +14 -8
- package/test/benchmark/RingCorrectness.test.ts +157 -0
- package/test/benchmark/hybrid-network-simulation/RingContactList.test.ts +72 -0
- package/test/data/generateGroundTruthData.ts +2 -2
- package/test/end-to-end/memory-leak.test.ts +1 -2
- package/test/integration/ConnectionManager.test.ts +28 -10
- package/test/integration/ConnectivityChecking.test.ts +3 -15
- package/test/integration/DhtNodeExternalAPI.test.ts +6 -6
- package/test/integration/Find.test.ts +4 -4
- package/test/integration/Layer1-scale.test.ts +0 -1
- package/test/integration/ReplicateData.test.ts +1 -1
- package/test/integration/RouteMessage.test.ts +1 -6
- package/test/integration/RouterRpcRemote.test.ts +1 -3
- package/test/integration/SimultaneousConnections.test.ts +9 -10
- package/test/integration/Store.test.ts +2 -2
- package/test/integration/StoreAndDelete.test.ts +3 -3
- package/test/integration/StoreOnDhtWithThreeNodes.test.ts +5 -5
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +3 -3
- package/test/integration/WebrtcConnectionManagement.test.ts +3 -9
- package/test/integration/WebsocketConnectionManagement.test.ts +1 -6
- package/test/integration/rpc-connections-over-webrpc.test.ts +1 -2
- package/test/unit/PeerManager.test.ts +5 -2
- package/test/unit/RecursiveOperationManager.test.ts +14 -8
- package/test/unit/RecursiveOperationSession.test.ts +1 -1
- package/test/unit/Router.test.ts +0 -2
- package/test/unit/RoutingSession.test.ts +1 -2
- package/test/unit/connectivityRequestHandler.test.ts +5 -9
- package/test/unit/createPeerDescriptor.test.ts +12 -6
- package/test/unit/version.test.ts +18 -0
- package/test/utils/utils.ts +43 -10
- package/tsconfig.jest.json +2 -1
- package/tsconfig.node.json +2 -1
- package/dist/src/connection/websocket/ServerWebsocket.js.map +0 -1
- package/dist/src/helpers/versionCompatibility.d.ts +0 -2
- package/dist/src/helpers/versionCompatibility.js +0 -18
- package/dist/src/helpers/versionCompatibility.js.map +0 -1
- package/src/helpers/versionCompatibility.ts +0 -13
- package/test/unit/versionCompatibility.test.ts +0 -16
|
@@ -46,7 +46,7 @@ describe('Storing data in DHT', () => {
|
|
|
46
46
|
// Wait for the delete operation to propagate
|
|
47
47
|
await wait(500)
|
|
48
48
|
const fetchingNode = getRandomNode()
|
|
49
|
-
const results = await fetchingNode.
|
|
49
|
+
const results = await fetchingNode.fetchDataFromDht(getDhtAddressFromRaw(entry.key))
|
|
50
50
|
results.forEach((result) => {
|
|
51
51
|
expect(result.deleted).toBeTrue()
|
|
52
52
|
expectEqualData(result, entry)
|
|
@@ -62,14 +62,14 @@ describe('Storing data in DHT', () => {
|
|
|
62
62
|
// Wait for the delete operation to propagate
|
|
63
63
|
await wait(500)
|
|
64
64
|
const fetchingNode = getRandomNode()
|
|
65
|
-
const results1 = await fetchingNode.
|
|
65
|
+
const results1 = await fetchingNode.fetchDataFromDht(getDhtAddressFromRaw(entry.key))
|
|
66
66
|
results1.forEach((result) => {
|
|
67
67
|
expect(result.deleted).toBeTrue()
|
|
68
68
|
expectEqualData(result, entry)
|
|
69
69
|
})
|
|
70
70
|
const successfulStorers2 = await storingNode.storeDataToDht(getDhtAddressFromRaw(entry.key), entry.data!)
|
|
71
71
|
expect(successfulStorers2.length).toBeGreaterThan(4)
|
|
72
|
-
const results2 = await fetchingNode.
|
|
72
|
+
const results2 = await fetchingNode.fetchDataFromDht(getDhtAddressFromRaw(entry.key))
|
|
73
73
|
results2.forEach((result) => {
|
|
74
74
|
expect(result.deleted).toBeFalse()
|
|
75
75
|
expectEqualData(result, entry)
|
|
@@ -41,15 +41,15 @@ describe('Storing data in DHT with two peers', () => {
|
|
|
41
41
|
const storedData1 = createMockDataEntry()
|
|
42
42
|
const storedData2 = createMockDataEntry()
|
|
43
43
|
// Here we effectively test that fetching "null" data doesn't take too long. A test timeout here indicates an issue.
|
|
44
|
-
await node1.
|
|
45
|
-
await node2.
|
|
44
|
+
await node1.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
|
|
45
|
+
await node2.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
|
|
46
46
|
|
|
47
47
|
await node1.storeDataToDht(getDhtAddressFromRaw(storedData1.key), storedData1.data!)
|
|
48
48
|
await node2.storeDataToDht(getDhtAddressFromRaw(storedData1.key), storedData1.data!)
|
|
49
49
|
await entryPoint.storeDataToDht(getDhtAddressFromRaw(storedData2.key), storedData2.data!)
|
|
50
|
-
const foundData1 = await node1.
|
|
51
|
-
const foundData2 = await node2.
|
|
52
|
-
const foundData3 = await entryPoint.
|
|
50
|
+
const foundData1 = await node1.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
|
|
51
|
+
const foundData2 = await node2.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
|
|
52
|
+
const foundData3 = await entryPoint.fetchDataFromDht(getDhtAddressFromRaw(storedData2.key))
|
|
53
53
|
expectEqualData(foundData1[0], storedData1)
|
|
54
54
|
expectEqualData(foundData1[1], storedData1)
|
|
55
55
|
expectEqualData(foundData2[0], storedData1)
|
|
@@ -34,8 +34,8 @@ describe('Storing data in DHT with two peers', () => {
|
|
|
34
34
|
const storedData2 = createMockDataEntry()
|
|
35
35
|
await otherNode.storeDataToDht(getDhtAddressFromRaw(storedData1.key), storedData1.data!)
|
|
36
36
|
await entryPoint.storeDataToDht(getDhtAddressFromRaw(storedData2.key), storedData2.data!)
|
|
37
|
-
const foundData1 = await otherNode.
|
|
38
|
-
const foundData2 = await entryPoint.
|
|
37
|
+
const foundData1 = await otherNode.fetchDataFromDht(getDhtAddressFromRaw(storedData1.key))
|
|
38
|
+
const foundData2 = await entryPoint.fetchDataFromDht(getDhtAddressFromRaw(storedData2.key))
|
|
39
39
|
expectEqualData(foundData1[0], storedData1)
|
|
40
40
|
expectEqualData(foundData2[0], storedData2)
|
|
41
41
|
})
|
|
@@ -45,7 +45,7 @@ describe('Storing data in DHT with two peers', () => {
|
|
|
45
45
|
await waitForCondition(() => entryPoint.getNeighborCount() === 0)
|
|
46
46
|
const storedData = createMockDataEntry()
|
|
47
47
|
await entryPoint.storeDataToDht(getDhtAddressFromRaw(storedData.key), storedData.data!)
|
|
48
|
-
const foundData = await entryPoint.
|
|
48
|
+
const foundData = await entryPoint.fetchDataFromDht(getDhtAddressFromRaw(storedData.key))
|
|
49
49
|
expectEqualData(foundData[0], storedData)
|
|
50
50
|
}, 60000)
|
|
51
51
|
})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ConnectionManager } from '../../src/connection/ConnectionManager'
|
|
2
2
|
import { LatencyType, Simulator } from '../../src/connection/simulator/Simulator'
|
|
3
|
-
import { Message,
|
|
3
|
+
import { Message, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
5
5
|
import { ConnectionType } from '../../src/connection/IConnection'
|
|
6
6
|
import { ITransport } from '../../src/transport/ITransport'
|
|
@@ -63,7 +63,6 @@ describe('WebRTC Connection Management', () => {
|
|
|
63
63
|
oneofKind: 'rpcMessage',
|
|
64
64
|
rpcMessage: RpcMessage.create()
|
|
65
65
|
},
|
|
66
|
-
messageType: MessageType.RPC,
|
|
67
66
|
messageId: 'mockerer'
|
|
68
67
|
}
|
|
69
68
|
|
|
@@ -87,7 +86,6 @@ describe('WebRTC Connection Management', () => {
|
|
|
87
86
|
oneofKind: 'rpcMessage',
|
|
88
87
|
rpcMessage: RpcMessage.create()
|
|
89
88
|
},
|
|
90
|
-
messageType: MessageType.RPC,
|
|
91
89
|
messageId: 'mockerer'
|
|
92
90
|
}
|
|
93
91
|
manager1.on('message', (message: Message) => {
|
|
@@ -108,7 +106,6 @@ describe('WebRTC Connection Management', () => {
|
|
|
108
106
|
oneofKind: 'rpcMessage',
|
|
109
107
|
rpcMessage: RpcMessage.create()
|
|
110
108
|
},
|
|
111
|
-
messageType: MessageType.RPC,
|
|
112
109
|
messageId: 'mockerer'
|
|
113
110
|
}
|
|
114
111
|
dummyMessage.targetDescriptor = peerDescriptor1
|
|
@@ -120,7 +117,6 @@ describe('WebRTC Connection Management', () => {
|
|
|
120
117
|
it('Connects and disconnects webrtc connections', async () => {
|
|
121
118
|
const msg: Message = {
|
|
122
119
|
serviceId,
|
|
123
|
-
messageType: MessageType.RPC,
|
|
124
120
|
messageId: '1',
|
|
125
121
|
body: {
|
|
126
122
|
oneofKind: 'rpcMessage',
|
|
@@ -130,14 +126,14 @@ describe('WebRTC Connection Management', () => {
|
|
|
130
126
|
|
|
131
127
|
const dataPromise = new Promise<void>((resolve, _reject) => {
|
|
132
128
|
manager2.on('message', async (message: Message) => {
|
|
133
|
-
expect(message.
|
|
129
|
+
expect(message.body.oneofKind).toBe('rpcMessage')
|
|
134
130
|
resolve()
|
|
135
131
|
})
|
|
136
132
|
})
|
|
137
133
|
|
|
138
134
|
const connectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
139
135
|
manager1.on('connected', () => {
|
|
140
|
-
//expect(message.
|
|
136
|
+
//expect(message.body.oneofKind).toBe('rpcMessage')
|
|
141
137
|
resolve()
|
|
142
138
|
})
|
|
143
139
|
})
|
|
@@ -175,7 +171,6 @@ describe('WebRTC Connection Management', () => {
|
|
|
175
171
|
it('Disconnects webrtcconnection while being connected', async () => {
|
|
176
172
|
const msg: Message = {
|
|
177
173
|
serviceId,
|
|
178
|
-
messageType: MessageType.RPC,
|
|
179
174
|
messageId: '1',
|
|
180
175
|
body: {
|
|
181
176
|
oneofKind: 'rpcMessage',
|
|
@@ -204,7 +199,6 @@ describe('WebRTC Connection Management', () => {
|
|
|
204
199
|
it('failed connections are cleaned up', async () => {
|
|
205
200
|
const msg: Message = {
|
|
206
201
|
serviceId,
|
|
207
|
-
messageType: MessageType.RPC,
|
|
208
202
|
messageId: '1',
|
|
209
203
|
body: {
|
|
210
204
|
oneofKind: 'rpcMessage',
|
|
@@ -7,7 +7,7 @@ import { ConnectionType } from '../../src/connection/IConnection'
|
|
|
7
7
|
import { Simulator } from '../../src/connection/simulator/Simulator'
|
|
8
8
|
import { SimulatorTransport } from '../../src/connection/simulator/SimulatorTransport'
|
|
9
9
|
import * as Err from '../../src/helpers/errors'
|
|
10
|
-
import { Message,
|
|
10
|
+
import { Message, NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
11
11
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
12
12
|
import { TransportEvents } from '../../src/transport/ITransport'
|
|
13
13
|
import { getNodeIdFromPeerDescriptor } from '../../src/identifiers'
|
|
@@ -98,7 +98,6 @@ describe('Websocket Connection Management', () => {
|
|
|
98
98
|
oneofKind: 'rpcMessage',
|
|
99
99
|
rpcMessage: RpcMessage.create()
|
|
100
100
|
},
|
|
101
|
-
messageType: MessageType.RPC,
|
|
102
101
|
messageId: 'mockerer',
|
|
103
102
|
targetDescriptor: noWsServerConnectorPeerDescriptor
|
|
104
103
|
}
|
|
@@ -124,7 +123,6 @@ describe('Websocket Connection Management', () => {
|
|
|
124
123
|
oneofKind: 'rpcMessage',
|
|
125
124
|
rpcMessage: RpcMessage.create()
|
|
126
125
|
},
|
|
127
|
-
messageType: MessageType.RPC,
|
|
128
126
|
messageId: 'mockerer',
|
|
129
127
|
targetDescriptor: biggerNoWsServerConnectorPeerDescriptor
|
|
130
128
|
}
|
|
@@ -150,7 +148,6 @@ describe('Websocket Connection Management', () => {
|
|
|
150
148
|
oneofKind: 'rpcMessage',
|
|
151
149
|
rpcMessage: RpcMessage.create()
|
|
152
150
|
},
|
|
153
|
-
messageType: MessageType.RPC,
|
|
154
151
|
messageId: 'mockerer',
|
|
155
152
|
targetDescriptor: {
|
|
156
153
|
nodeId: new Uint8Array([1, 2, 4]),
|
|
@@ -172,7 +169,6 @@ describe('Websocket Connection Management', () => {
|
|
|
172
169
|
oneofKind: 'rpcMessage',
|
|
173
170
|
rpcMessage: RpcMessage.create()
|
|
174
171
|
},
|
|
175
|
-
messageType: MessageType.RPC,
|
|
176
172
|
messageId: 'mockerer',
|
|
177
173
|
targetDescriptor: wsServerConnectorPeerDescriptor
|
|
178
174
|
}
|
|
@@ -199,7 +195,6 @@ describe('Websocket Connection Management', () => {
|
|
|
199
195
|
oneofKind: 'rpcMessage',
|
|
200
196
|
rpcMessage: RpcMessage.create()
|
|
201
197
|
},
|
|
202
|
-
messageType: MessageType.RPC,
|
|
203
198
|
messageId: 'mockerer',
|
|
204
199
|
targetDescriptor: noWsServerConnectorPeerDescriptor
|
|
205
200
|
}
|
|
@@ -133,14 +133,13 @@ describe('RPC connections over WebRTC', () => {
|
|
|
133
133
|
|
|
134
134
|
const msg: Message = {
|
|
135
135
|
serviceId,
|
|
136
|
-
messageType: MessageType.RPC,
|
|
137
136
|
messageId: '1',
|
|
138
137
|
body: RpcMessage.toBinary(rpcMessage)
|
|
139
138
|
}
|
|
140
139
|
|
|
141
140
|
const disconnectedPromise1 = new Promise<void>((resolve, _reject) => {
|
|
142
141
|
manager1.on('disconnected', () => {
|
|
143
|
-
//expect(message.
|
|
142
|
+
//expect(message.body.oneofKind).toBe('rpcMessage')
|
|
144
143
|
resolve()
|
|
145
144
|
})
|
|
146
145
|
})
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { PeerManager, getDistance } from '../../src/dht/PeerManager'
|
|
2
|
-
import { DhtAddress, createRandomDhtAddress, getRawFromDhtAddress } from '../../src/identifiers'
|
|
2
|
+
import { DhtAddress, createRandomDhtAddress, getNodeIdFromPeerDescriptor, getRawFromDhtAddress } from '../../src/identifiers'
|
|
3
3
|
import { NodeType, PeerDescriptor } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { range, sampleSize, sortBy, without } from 'lodash'
|
|
5
5
|
import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
|
|
6
6
|
import { MockRpcCommunicator } from '../utils/mock/MockRpcCommunicator'
|
|
7
|
+
import { createMockPeerDescriptor } from '../utils/utils'
|
|
7
8
|
|
|
8
9
|
describe('PeerManager', () => {
|
|
9
10
|
|
|
10
11
|
it('getClosestContactsTo', () => {
|
|
11
12
|
const nodeIds = range(10).map(() => createRandomDhtAddress())
|
|
13
|
+
const peerDescriptor = createMockPeerDescriptor()
|
|
12
14
|
const manager = new PeerManager({
|
|
13
|
-
localNodeId:
|
|
15
|
+
localNodeId: getNodeIdFromPeerDescriptor(peerDescriptor),
|
|
16
|
+
localPeerDescriptor: peerDescriptor,
|
|
14
17
|
createDhtNodeRpcRemote: (peerDescriptor: PeerDescriptor) => {
|
|
15
18
|
return new DhtNodeRpcRemote(undefined as any, peerDescriptor, undefined as any, new MockRpcCommunicator())
|
|
16
19
|
}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RecursiveOperation,
|
|
3
3
|
Message,
|
|
4
|
-
MessageType,
|
|
5
4
|
RouteMessageAck,
|
|
6
5
|
RouteMessageError,
|
|
7
|
-
RouteMessageWrapper
|
|
6
|
+
RouteMessageWrapper,
|
|
7
|
+
RecursiveOperationRequest
|
|
8
8
|
} from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
9
9
|
import {
|
|
10
10
|
createWrappedClosestPeersRequest,
|
|
11
|
-
createFindRequest,
|
|
12
11
|
createMockPeerDescriptor
|
|
13
12
|
} from '../utils/utils'
|
|
14
13
|
import { RecursiveOperationManager } from '../../src/dht/recursive-operation/RecursiveOperationManager'
|
|
@@ -33,15 +32,23 @@ const createMockRouter = (error?: RouteMessageError): Partial<Router> => {
|
|
|
33
32
|
addToDuplicateDetector: () => {}
|
|
34
33
|
}
|
|
35
34
|
}
|
|
35
|
+
|
|
36
|
+
const createRequest = (): RecursiveOperationRequest => {
|
|
37
|
+
const request: RecursiveOperationRequest = {
|
|
38
|
+
operation: RecursiveOperation.FIND_CLOSEST_NODES,
|
|
39
|
+
sessionId: v4()
|
|
40
|
+
}
|
|
41
|
+
return request
|
|
42
|
+
}
|
|
43
|
+
|
|
36
44
|
describe('RecursiveOperationManager', () => {
|
|
37
45
|
|
|
38
46
|
const peerDescriptor1 = createMockPeerDescriptor()
|
|
39
47
|
const peerDescriptor2 = createMockPeerDescriptor()
|
|
40
|
-
const recursiveOperationRequest =
|
|
48
|
+
const recursiveOperationRequest = createRequest()
|
|
41
49
|
const message: Message = {
|
|
42
50
|
serviceId: 'unknown',
|
|
43
51
|
messageId: v4(),
|
|
44
|
-
messageType: MessageType.RPC,
|
|
45
52
|
body: {
|
|
46
53
|
oneofKind: 'recursiveOperationRequest',
|
|
47
54
|
recursiveOperationRequest
|
|
@@ -83,9 +90,9 @@ describe('RecursiveOperationManager', () => {
|
|
|
83
90
|
recursiveOperationManager.stop()
|
|
84
91
|
})
|
|
85
92
|
|
|
86
|
-
it('
|
|
93
|
+
it('find closest nodes returns self if no peers', async () => {
|
|
87
94
|
const recursiveOperationManager = createRecursiveOperationManager()
|
|
88
|
-
const res = await recursiveOperationManager.execute(createRandomDhtAddress(), RecursiveOperation.
|
|
95
|
+
const res = await recursiveOperationManager.execute(createRandomDhtAddress(), RecursiveOperation.FIND_CLOSEST_NODES)
|
|
89
96
|
expect(areEqualPeerDescriptors(res.closestNodes[0], peerDescriptor1)).toEqual(true)
|
|
90
97
|
recursiveOperationManager.stop()
|
|
91
98
|
})
|
|
@@ -96,7 +103,6 @@ describe('RecursiveOperationManager', () => {
|
|
|
96
103
|
const badMessage: Message = {
|
|
97
104
|
serviceId: 'unknown',
|
|
98
105
|
messageId: v4(),
|
|
99
|
-
messageType: MessageType.RPC,
|
|
100
106
|
body: {
|
|
101
107
|
oneofKind: 'rpcMessage',
|
|
102
108
|
rpcMessage: rpcWrapper
|
|
@@ -39,7 +39,7 @@ describe('RecursiveOperationSession', () => {
|
|
|
39
39
|
targetId: createRandomDhtAddress(),
|
|
40
40
|
localPeerDescriptor,
|
|
41
41
|
waitedRoutingPathCompletions: 3,
|
|
42
|
-
operation: RecursiveOperation.
|
|
42
|
+
operation: RecursiveOperation.FIND_CLOSEST_NODES,
|
|
43
43
|
doRouteRequest
|
|
44
44
|
})
|
|
45
45
|
const onCompleted = jest.fn()
|
package/test/unit/Router.test.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
|
|
|
3
3
|
import { Router } from '../../src/dht/routing/Router'
|
|
4
4
|
import {
|
|
5
5
|
Message,
|
|
6
|
-
MessageType,
|
|
7
6
|
PeerDescriptor,
|
|
8
7
|
RouteMessageAck,
|
|
9
8
|
RouteMessageError,
|
|
@@ -23,7 +22,6 @@ describe('Router', () => {
|
|
|
23
22
|
const message: Message = {
|
|
24
23
|
serviceId: 'unknown',
|
|
25
24
|
messageId: v4(),
|
|
26
|
-
messageType: MessageType.RPC,
|
|
27
25
|
body: {
|
|
28
26
|
oneofKind: 'rpcMessage',
|
|
29
27
|
rpcMessage: rpcWrapper
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { v4 } from 'uuid'
|
|
2
2
|
import { RoutingMode, RoutingSession } from '../../src/dht/routing/RoutingSession'
|
|
3
|
-
import { Message,
|
|
3
|
+
import { Message, PeerDescriptor, RouteMessageWrapper } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
4
4
|
import { createMockPeerDescriptor, createWrappedClosestPeersRequest } from '../utils/utils'
|
|
5
5
|
import { DhtNodeRpcRemote } from '../../src/dht/DhtNodeRpcRemote'
|
|
6
6
|
import { RoutingRpcCommunicator } from '../../src/transport/RoutingRpcCommunicator'
|
|
@@ -20,7 +20,6 @@ describe('RoutingSession', () => {
|
|
|
20
20
|
const message: Message = {
|
|
21
21
|
serviceId: 'unknown',
|
|
22
22
|
messageId: v4(),
|
|
23
|
-
messageType: MessageType.RPC,
|
|
24
23
|
body: {
|
|
25
24
|
oneofKind: 'rpcMessage',
|
|
26
25
|
rpcMessage: rpcWrapper
|
|
@@ -5,8 +5,8 @@ import { Server as HttpServer, createServer as createHttpServer } from 'http'
|
|
|
5
5
|
import { server as WsServer } from 'websocket'
|
|
6
6
|
import { CONNECTIVITY_CHECKER_SERVICE_ID } from '../../src/connection/connectivityChecker'
|
|
7
7
|
import { attachConnectivityRequestHandler } from '../../src/connection/connectivityRequestHandler'
|
|
8
|
-
import { Message
|
|
9
|
-
import {
|
|
8
|
+
import { Message } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
9
|
+
import { LOCAL_PROTOCOL_VERSION } from '../../src/helpers/version'
|
|
10
10
|
|
|
11
11
|
const HOST = '127.0.0.1'
|
|
12
12
|
const PORT = 15001
|
|
@@ -27,7 +27,7 @@ describe('connectivityRequestHandler', () => {
|
|
|
27
27
|
await once(httpServer, 'listening')
|
|
28
28
|
connection = new EventEmitter()
|
|
29
29
|
connection.send = jest.fn()
|
|
30
|
-
connection.
|
|
30
|
+
connection.remoteIpAddress = HOST
|
|
31
31
|
})
|
|
32
32
|
|
|
33
33
|
afterEach(async () => {
|
|
@@ -40,7 +40,6 @@ describe('connectivityRequestHandler', () => {
|
|
|
40
40
|
attachConnectivityRequestHandler(connection)
|
|
41
41
|
const request: Message = {
|
|
42
42
|
serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
|
|
43
|
-
messageType: MessageType.CONNECTIVITY_REQUEST,
|
|
44
43
|
messageId: 'mock-message-id',
|
|
45
44
|
body: {
|
|
46
45
|
oneofKind: 'connectivityRequest',
|
|
@@ -63,12 +62,11 @@ describe('connectivityRequestHandler', () => {
|
|
|
63
62
|
tls: false
|
|
64
63
|
},
|
|
65
64
|
ipAddress: ipv4ToNumber(HOST),
|
|
66
|
-
version
|
|
65
|
+
version: LOCAL_PROTOCOL_VERSION
|
|
67
66
|
},
|
|
68
67
|
oneofKind: 'connectivityResponse'
|
|
69
68
|
},
|
|
70
69
|
messageId: expect.any(String),
|
|
71
|
-
messageType: MessageType.CONNECTIVITY_RESPONSE,
|
|
72
70
|
serviceId: 'system/connectivity-checker'
|
|
73
71
|
})
|
|
74
72
|
})
|
|
@@ -77,7 +75,6 @@ describe('connectivityRequestHandler', () => {
|
|
|
77
75
|
attachConnectivityRequestHandler(connection)
|
|
78
76
|
const request: Message = {
|
|
79
77
|
serviceId: CONNECTIVITY_CHECKER_SERVICE_ID,
|
|
80
|
-
messageType: MessageType.CONNECTIVITY_REQUEST,
|
|
81
78
|
messageId: 'mock-message-id',
|
|
82
79
|
body: {
|
|
83
80
|
oneofKind: 'connectivityRequest',
|
|
@@ -95,12 +92,11 @@ describe('connectivityRequestHandler', () => {
|
|
|
95
92
|
host: HOST,
|
|
96
93
|
natType: 'unknown',
|
|
97
94
|
ipAddress: ipv4ToNumber(HOST),
|
|
98
|
-
version
|
|
95
|
+
version: LOCAL_PROTOCOL_VERSION
|
|
99
96
|
},
|
|
100
97
|
oneofKind: 'connectivityResponse'
|
|
101
98
|
},
|
|
102
99
|
messageId: expect.any(String),
|
|
103
|
-
messageType: MessageType.CONNECTIVITY_RESPONSE,
|
|
104
100
|
serviceId: 'system/connectivity-checker'
|
|
105
101
|
})
|
|
106
102
|
})
|
|
@@ -3,22 +3,26 @@ import { createPeerDescriptor } from '../../src/helpers/createPeerDescriptor'
|
|
|
3
3
|
import { isBrowserEnvironment } from '../../src/helpers/browser/isBrowserEnvironment'
|
|
4
4
|
import { NodeType } from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
5
5
|
import { createRandomDhtAddress, getRawFromDhtAddress } from '../../src/identifiers'
|
|
6
|
+
import { getRandomRegion } from '../../dist/src/connection/simulator/pings'
|
|
6
7
|
|
|
7
8
|
const IP_ADDRESS = '1.2.3.4'
|
|
8
9
|
|
|
9
10
|
describe('createPeerDescriptor', () => {
|
|
10
11
|
|
|
12
|
+
const region = getRandomRegion()
|
|
13
|
+
|
|
11
14
|
it('without websocket', () => {
|
|
12
15
|
const connectivityResponse = {
|
|
13
16
|
ipAddress: ipv4ToNumber(IP_ADDRESS)
|
|
14
17
|
} as any
|
|
15
|
-
const peerDescriptor = createPeerDescriptor(connectivityResponse)
|
|
18
|
+
const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
|
|
16
19
|
expect(peerDescriptor).toEqual({
|
|
17
20
|
nodeId: expect.any(Uint8Array),
|
|
18
21
|
type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
|
|
19
22
|
ipAddress: ipv4ToNumber(IP_ADDRESS),
|
|
20
23
|
publicKey: expect.any(Uint8Array),
|
|
21
|
-
signature: expect.any(Uint8Array)
|
|
24
|
+
signature: expect.any(Uint8Array),
|
|
25
|
+
region
|
|
22
26
|
})
|
|
23
27
|
})
|
|
24
28
|
|
|
@@ -31,7 +35,7 @@ describe('createPeerDescriptor', () => {
|
|
|
31
35
|
tls: true
|
|
32
36
|
}
|
|
33
37
|
} as any
|
|
34
|
-
const peerDescriptor = createPeerDescriptor(connectivityResponse)
|
|
38
|
+
const peerDescriptor = createPeerDescriptor(connectivityResponse, region)
|
|
35
39
|
expect(peerDescriptor).toEqual({
|
|
36
40
|
nodeId: expect.any(Uint8Array),
|
|
37
41
|
type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
|
|
@@ -42,7 +46,8 @@ describe('createPeerDescriptor', () => {
|
|
|
42
46
|
host: 'bar.com',
|
|
43
47
|
port: 123,
|
|
44
48
|
tls: true
|
|
45
|
-
}
|
|
49
|
+
},
|
|
50
|
+
region
|
|
46
51
|
})
|
|
47
52
|
})
|
|
48
53
|
|
|
@@ -51,13 +56,14 @@ describe('createPeerDescriptor', () => {
|
|
|
51
56
|
const connectivityResponse = {
|
|
52
57
|
ipAddress: ipv4ToNumber(IP_ADDRESS)
|
|
53
58
|
} as any
|
|
54
|
-
const peerDescriptor = createPeerDescriptor(connectivityResponse, nodeId)
|
|
59
|
+
const peerDescriptor = createPeerDescriptor(connectivityResponse, region, nodeId)
|
|
55
60
|
expect(peerDescriptor).toEqual({
|
|
56
61
|
nodeId: getRawFromDhtAddress(nodeId),
|
|
57
62
|
type: isBrowserEnvironment() ? NodeType.BROWSER : NodeType.NODEJS,
|
|
58
63
|
ipAddress: ipv4ToNumber(IP_ADDRESS),
|
|
59
64
|
publicKey: expect.any(Uint8Array),
|
|
60
|
-
signature: expect.any(Uint8Array)
|
|
65
|
+
signature: expect.any(Uint8Array),
|
|
66
|
+
region
|
|
61
67
|
})
|
|
62
68
|
})
|
|
63
69
|
})
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { isMaybeSupportedVersion } from '../../src/helpers/version'
|
|
2
|
+
|
|
3
|
+
describe('version', () => {
|
|
4
|
+
|
|
5
|
+
it('supported', () => {
|
|
6
|
+
expect(isMaybeSupportedVersion('1.0')).toBe(true)
|
|
7
|
+
expect(isMaybeSupportedVersion('1.1')).toBe(true)
|
|
8
|
+
expect(isMaybeSupportedVersion('2.0')).toBe(true)
|
|
9
|
+
expect(isMaybeSupportedVersion('3.5')).toBe(true)
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('not supported', () => {
|
|
13
|
+
expect(isMaybeSupportedVersion('')).toBe(false)
|
|
14
|
+
expect(isMaybeSupportedVersion('100.0.0-testnet-three.3')).toBe(false)
|
|
15
|
+
expect(isMaybeSupportedVersion('0.0')).toBe(false)
|
|
16
|
+
expect(isMaybeSupportedVersion('0.1')).toBe(false)
|
|
17
|
+
})
|
|
18
|
+
})
|
package/test/utils/utils.ts
CHANGED
|
@@ -10,8 +10,7 @@ import {
|
|
|
10
10
|
RouteMessageWrapper,
|
|
11
11
|
StoreDataRequest,
|
|
12
12
|
StoreDataResponse,
|
|
13
|
-
|
|
14
|
-
RecursiveOperation
|
|
13
|
+
ClosestRingPeersResponse
|
|
15
14
|
} from '../../src/proto/packages/dht/protos/DhtRpc'
|
|
16
15
|
import { RpcMessage } from '../../src/proto/packages/proto-rpc/protos/ProtoRpc'
|
|
17
16
|
import {
|
|
@@ -38,6 +37,40 @@ export const createMockPeerDescriptor = (opts?: Partial<Omit<PeerDescriptor, 'no
|
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
export const createMockRingNode = async (
|
|
41
|
+
simulator: Simulator,
|
|
42
|
+
nodeId: DhtAddress,
|
|
43
|
+
region: number
|
|
44
|
+
): Promise<DhtNode> => {
|
|
45
|
+
const maxConnections = 80
|
|
46
|
+
const dhtJoinTimeout = 45000
|
|
47
|
+
|
|
48
|
+
const peerDescriptor: PeerDescriptor = {
|
|
49
|
+
nodeId: getRawFromDhtAddress(nodeId ?? createRandomDhtAddress()),
|
|
50
|
+
type: NodeType.NODEJS,
|
|
51
|
+
region
|
|
52
|
+
//ipAddress: ipv4ToNumber(ipAddress)
|
|
53
|
+
}
|
|
54
|
+
const mockConnectionManager = new SimulatorTransport(peerDescriptor, simulator)
|
|
55
|
+
await mockConnectionManager.start()
|
|
56
|
+
const opts = {
|
|
57
|
+
peerDescriptor: peerDescriptor,
|
|
58
|
+
transport: mockConnectionManager,
|
|
59
|
+
numberOfNodesPerKBucket: 8,
|
|
60
|
+
maxConnections: maxConnections,
|
|
61
|
+
dhtJoinTimeout,
|
|
62
|
+
rpcRequestTimeout: 5000
|
|
63
|
+
}
|
|
64
|
+
const node = new class extends DhtNode {
|
|
65
|
+
async stop(): Promise<void> {
|
|
66
|
+
await super.stop()
|
|
67
|
+
await mockConnectionManager.stop()
|
|
68
|
+
}
|
|
69
|
+
}(opts)
|
|
70
|
+
await node.start()
|
|
71
|
+
return node
|
|
72
|
+
}
|
|
73
|
+
|
|
41
74
|
export const createMockConnectionDhtNode = async (
|
|
42
75
|
simulator: Simulator,
|
|
43
76
|
nodeId?: DhtAddress,
|
|
@@ -107,14 +140,6 @@ export const createWrappedClosestPeersRequest = (
|
|
|
107
140
|
return rpcWrapper
|
|
108
141
|
}
|
|
109
142
|
|
|
110
|
-
export const createFindRequest = (): RecursiveOperationRequest => {
|
|
111
|
-
const request: RecursiveOperationRequest = {
|
|
112
|
-
operation: RecursiveOperation.FIND_NODE,
|
|
113
|
-
sessionId: v4()
|
|
114
|
-
}
|
|
115
|
-
return request
|
|
116
|
-
}
|
|
117
|
-
|
|
118
143
|
interface IDhtRpcWithError extends IDhtNodeRpc {
|
|
119
144
|
throwPingError: (request: PingRequest) => Promise<PingResponse>
|
|
120
145
|
respondPingWithTimeout: (request: PingRequest) => Promise<PingResponse>
|
|
@@ -130,6 +155,14 @@ export const createMockDhtRpc = (neighbors: PeerDescriptor[]): IDhtRpcWithError
|
|
|
130
155
|
}
|
|
131
156
|
return response
|
|
132
157
|
},
|
|
158
|
+
async getClosestRingPeers(): Promise<ClosestRingPeersResponse> {
|
|
159
|
+
const response: ClosestRingPeersResponse = {
|
|
160
|
+
leftPeers: neighbors,
|
|
161
|
+
rightPeers: neighbors,
|
|
162
|
+
requestId: 'why am i still here'
|
|
163
|
+
}
|
|
164
|
+
return response
|
|
165
|
+
},
|
|
133
166
|
async ping(request: PingRequest): Promise<PingResponse> {
|
|
134
167
|
const response: PingResponse = {
|
|
135
168
|
requestId: request.requestId
|
package/tsconfig.jest.json
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
{ "path": "../utils/tsconfig.node.json" },
|
|
17
17
|
{ "path": "../test-utils/tsconfig.node.json" },
|
|
18
18
|
{ "path": "../proto-rpc/tsconfig.node.json" },
|
|
19
|
-
{ "path": "../autocertifier-client/tsconfig.node.json" }
|
|
19
|
+
{ "path": "../autocertifier-client/tsconfig.node.json" },
|
|
20
|
+
{ "path": "../cdn-location/tsconfig.node.json" }
|
|
20
21
|
]
|
|
21
22
|
}
|
package/tsconfig.node.json
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
{ "path": "../utils/tsconfig.node.json" },
|
|
16
16
|
{ "path": "../test-utils/tsconfig.node.json" },
|
|
17
17
|
{ "path": "../proto-rpc/tsconfig.node.json" },
|
|
18
|
-
{ "path": "../autocertifier-client/tsconfig.node.json" }
|
|
18
|
+
{ "path": "../autocertifier-client/tsconfig.node.json" },
|
|
19
|
+
{ "path": "../cdn-location/tsconfig.node.json" }
|
|
19
20
|
]
|
|
20
21
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServerWebsocket.js","sourceRoot":"","sources":["../../../../src/connection/websocket/ServerWebsocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.excludePatchVersion = exports.isCompatibleVersion = void 0;
|
|
4
|
-
// Is able to compare versions such as 1.2.3 and 1.2.4
|
|
5
|
-
// can also compare versions such as 100.0.0-pretestnet.0 and 100.0.0-pretestnet.40
|
|
6
|
-
const isCompatibleVersion = (version1, version2) => {
|
|
7
|
-
const minorVersion1 = (0, exports.excludePatchVersion)(version1);
|
|
8
|
-
const minorVersion2 = (0, exports.excludePatchVersion)(version2);
|
|
9
|
-
return minorVersion1 === minorVersion2;
|
|
10
|
-
};
|
|
11
|
-
exports.isCompatibleVersion = isCompatibleVersion;
|
|
12
|
-
const excludePatchVersion = (version) => {
|
|
13
|
-
const versionParts = version.split('.');
|
|
14
|
-
versionParts.pop();
|
|
15
|
-
return versionParts.join('.');
|
|
16
|
-
};
|
|
17
|
-
exports.excludePatchVersion = excludePatchVersion;
|
|
18
|
-
//# sourceMappingURL=versionCompatibility.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"versionCompatibility.js","sourceRoot":"","sources":["../../../src/helpers/versionCompatibility.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,mFAAmF;AAC5E,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAW,EAAE;IAC/E,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IACnD,MAAM,aAAa,GAAG,IAAA,2BAAmB,EAAC,QAAQ,CAAC,CAAA;IACnD,OAAO,aAAa,KAAK,aAAa,CAAA;AAC1C,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B;AAEM,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAU,EAAE;IAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvC,YAAY,CAAC,GAAG,EAAE,CAAA;IAClB,OAAO,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACjC,CAAC,CAAA;AAJY,QAAA,mBAAmB,uBAI/B"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// Is able to compare versions such as 1.2.3 and 1.2.4
|
|
2
|
-
// can also compare versions such as 100.0.0-pretestnet.0 and 100.0.0-pretestnet.40
|
|
3
|
-
export const isCompatibleVersion = (version1: string, version2: string): boolean => {
|
|
4
|
-
const minorVersion1 = excludePatchVersion(version1)
|
|
5
|
-
const minorVersion2 = excludePatchVersion(version2)
|
|
6
|
-
return minorVersion1 === minorVersion2
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const excludePatchVersion = (version: string): string => {
|
|
10
|
-
const versionParts = version.split('.')
|
|
11
|
-
versionParts.pop()
|
|
12
|
-
return versionParts.join('.')
|
|
13
|
-
}
|