@streamr/trackerless-network 100.0.0 → 100.1.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 (143) hide show
  1. package/dist/package.json +6 -6
  2. package/dist/src/NetworkNode.js +11 -11
  3. package/dist/src/NetworkNode.js.map +1 -1
  4. package/dist/src/NetworkStack.d.ts +4 -4
  5. package/dist/src/NetworkStack.js +18 -16
  6. package/dist/src/NetworkStack.js.map +1 -1
  7. package/dist/src/exports.d.ts +1 -1
  8. package/dist/src/logic/{StreamrNode.d.ts → ContentDeliveryManager.d.ts} +6 -6
  9. package/dist/src/logic/{StreamrNode.js → ContentDeliveryManager.js} +7 -9
  10. package/dist/src/logic/ContentDeliveryManager.js.map +1 -0
  11. package/dist/src/logic/{DeliveryRpcLocal.d.ts → ContentDeliveryRpcLocal.d.ts} +4 -4
  12. package/dist/src/logic/{DeliveryRpcLocal.js → ContentDeliveryRpcLocal.js} +4 -4
  13. package/dist/src/logic/ContentDeliveryRpcLocal.js.map +1 -0
  14. package/dist/src/logic/{DeliveryRpcRemote.d.ts → ContentDeliveryRpcRemote.d.ts} +2 -2
  15. package/dist/src/logic/{DeliveryRpcRemote.js → ContentDeliveryRpcRemote.js} +4 -4
  16. package/dist/src/logic/ContentDeliveryRpcRemote.js.map +1 -0
  17. package/dist/src/logic/EntryPointDiscovery.js +1 -1
  18. package/dist/src/logic/EntryPointDiscovery.js.map +1 -1
  19. package/dist/src/logic/NodeList.d.ts +11 -11
  20. package/dist/src/logic/NodeList.js.map +1 -1
  21. package/dist/src/logic/RandomGraphNode.d.ts +1 -1
  22. package/dist/src/logic/RandomGraphNode.js +12 -12
  23. package/dist/src/logic/RandomGraphNode.js.map +1 -1
  24. package/dist/src/logic/createRandomGraphNode.js +1 -1
  25. package/dist/src/logic/createRandomGraphNode.js.map +1 -1
  26. package/dist/src/logic/formStreamPartDeliveryServiceId.d.ts +1 -1
  27. package/dist/src/logic/formStreamPartDeliveryServiceId.js +4 -3
  28. package/dist/src/logic/formStreamPartDeliveryServiceId.js.map +1 -1
  29. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.d.ts +2 -2
  30. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js +3 -3
  31. package/dist/src/logic/neighbor-discovery/HandshakeRpcLocal.js.map +1 -1
  32. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js +2 -2
  33. package/dist/src/logic/neighbor-discovery/HandshakeRpcRemote.js.map +1 -1
  34. package/dist/src/logic/neighbor-discovery/Handshaker.d.ts +1 -1
  35. package/dist/src/logic/neighbor-discovery/Handshaker.js +6 -6
  36. package/dist/src/logic/neighbor-discovery/Handshaker.js.map +1 -1
  37. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js +2 -2
  38. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.js.map +1 -1
  39. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js +1 -1
  40. package/dist/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.js.map +1 -1
  41. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js +6 -0
  42. package/dist/src/logic/protocol-integration/stream-message/StreamMessageTranslator.js.map +1 -1
  43. package/dist/src/logic/proxy/ProxyClient.d.ts +1 -1
  44. package/dist/src/logic/proxy/ProxyClient.js +8 -8
  45. package/dist/src/logic/proxy/ProxyClient.js.map +1 -1
  46. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.d.ts +2 -2
  47. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js +3 -3
  48. package/dist/src/logic/proxy/ProxyConnectionRpcLocal.js.map +1 -1
  49. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js +1 -1
  50. package/dist/src/logic/proxy/ProxyConnectionRpcRemote.js.map +1 -1
  51. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js +3 -3
  52. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcLocal.js.map +1 -1
  53. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js +2 -2
  54. package/dist/src/logic/temporary-connection/TemporaryConnectionRpcRemote.js.map +1 -1
  55. package/dist/src/proto/google/protobuf/any.d.ts +11 -4
  56. package/dist/src/proto/google/protobuf/any.js.map +1 -1
  57. package/dist/src/proto/google/protobuf/empty.d.ts +0 -1
  58. package/dist/src/proto/google/protobuf/empty.js.map +1 -1
  59. package/dist/src/proto/google/protobuf/timestamp.d.ts +9 -3
  60. package/dist/src/proto/google/protobuf/timestamp.js.map +1 -1
  61. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +10 -0
  62. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +9 -2
  63. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  64. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +44 -0
  65. package/dist/src/proto/packages/dht/protos/DhtRpc.js +29 -1
  66. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  67. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +6 -0
  68. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.d.ts +4 -4
  69. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js +7 -7
  70. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.client.js.map +1 -1
  71. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.d.ts +9 -5
  72. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js +8 -4
  73. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.js.map +1 -1
  74. package/dist/src/proto/packages/trackerless-network/protos/NetworkRpc.server.d.ts +2 -2
  75. package/dist/test/benchmark/first-message.js +4 -4
  76. package/dist/test/benchmark/first-message.js.map +1 -1
  77. package/dist/test/utils/utils.d.ts +2 -2
  78. package/dist/test/utils/utils.js +9 -6
  79. package/dist/test/utils/utils.js.map +1 -1
  80. package/karma.config.js +2 -0
  81. package/package.json +6 -6
  82. package/protos/NetworkRpc.proto +3 -2
  83. package/src/NetworkNode.ts +11 -11
  84. package/src/NetworkStack.ts +23 -18
  85. package/src/exports.ts +1 -1
  86. package/src/logic/{StreamrNode.ts → ContentDeliveryManager.ts} +12 -13
  87. package/src/logic/{DeliveryRpcLocal.ts → ContentDeliveryRpcLocal.ts} +5 -5
  88. package/src/logic/{DeliveryRpcRemote.ts → ContentDeliveryRpcRemote.ts} +2 -2
  89. package/src/logic/EntryPointDiscovery.ts +1 -1
  90. package/src/logic/NodeList.ts +13 -13
  91. package/src/logic/RandomGraphNode.ts +19 -21
  92. package/src/logic/createRandomGraphNode.ts +2 -2
  93. package/src/logic/formStreamPartDeliveryServiceId.ts +2 -1
  94. package/src/logic/neighbor-discovery/HandshakeRpcLocal.ts +5 -5
  95. package/src/logic/neighbor-discovery/HandshakeRpcRemote.ts +2 -2
  96. package/src/logic/neighbor-discovery/Handshaker.ts +10 -11
  97. package/src/logic/neighbor-discovery/NeighborUpdateRpcLocal.ts +4 -4
  98. package/src/logic/neighbor-discovery/NeighborUpdateRpcRemote.ts +1 -1
  99. package/src/logic/protocol-integration/stream-message/StreamMessageTranslator.ts +16 -10
  100. package/src/logic/proxy/ProxyClient.ts +11 -11
  101. package/src/logic/proxy/ProxyConnectionRpcLocal.ts +6 -6
  102. package/src/logic/proxy/ProxyConnectionRpcRemote.ts +1 -1
  103. package/src/logic/temporary-connection/TemporaryConnectionRpcLocal.ts +5 -5
  104. package/src/logic/temporary-connection/TemporaryConnectionRpcRemote.ts +2 -2
  105. package/src/proto/google/protobuf/any.ts +11 -4
  106. package/src/proto/google/protobuf/empty.ts +0 -1
  107. package/src/proto/google/protobuf/timestamp.ts +9 -3
  108. package/src/proto/packages/dht/protos/DhtRpc.client.ts +15 -2
  109. package/src/proto/packages/dht/protos/DhtRpc.server.ts +6 -0
  110. package/src/proto/packages/dht/protos/DhtRpc.ts +58 -0
  111. package/src/proto/packages/trackerless-network/protos/NetworkRpc.client.ts +8 -8
  112. package/src/proto/packages/trackerless-network/protos/NetworkRpc.server.ts +2 -2
  113. package/src/proto/packages/trackerless-network/protos/NetworkRpc.ts +10 -6
  114. package/test/benchmark/first-message.ts +4 -4
  115. package/test/end-to-end/inspect.test.ts +6 -6
  116. package/test/end-to-end/proxy-and-full-node.test.ts +19 -19
  117. package/test/end-to-end/proxy-connections.test.ts +7 -7
  118. package/test/end-to-end/proxy-key-exchange.test.ts +3 -3
  119. package/test/end-to-end/webrtc-full-node-network.test.ts +8 -8
  120. package/test/end-to-end/websocket-full-node-network.test.ts +9 -9
  121. package/test/integration/ContentDeliveryManager.test.ts +135 -0
  122. package/test/integration/{DeliveryRpcRemote.test.ts → ContentDeliveryRpcRemote.test.ts} +6 -6
  123. package/test/integration/Inspect.test.ts +2 -2
  124. package/test/integration/NetworkRpc.test.ts +3 -3
  125. package/test/integration/NetworkStack.test.ts +7 -7
  126. package/test/integration/NodeInfoRpc.test.ts +10 -10
  127. package/test/integration/joining-streams-on-offline-peers.test.ts +3 -3
  128. package/test/integration/streamEntryPointReplacing.test.ts +6 -4
  129. package/test/unit/ContentDeliveryManager.test.ts +96 -0
  130. package/test/unit/{DeliveryRpcLocal.test.ts → ContentDeliveryRpcLocal.test.ts} +4 -4
  131. package/test/unit/HandshakeRpcLocal.test.ts +19 -19
  132. package/test/unit/Handshaker.test.ts +2 -2
  133. package/test/unit/NeighborFinder.test.ts +2 -2
  134. package/test/unit/NeighborUpdateRpcLocal.test.ts +8 -8
  135. package/test/unit/NetworkNode.test.ts +6 -6
  136. package/test/unit/NodeList.test.ts +6 -6
  137. package/test/unit/RandomGraphNode.test.ts +3 -3
  138. package/test/utils/utils.ts +9 -6
  139. package/dist/src/logic/DeliveryRpcLocal.js.map +0 -1
  140. package/dist/src/logic/DeliveryRpcRemote.js.map +0 -1
  141. package/dist/src/logic/StreamrNode.js.map +0 -1
  142. package/test/integration/StreamrNode.test.ts +0 -131
  143. package/test/unit/StreamrNode.test.ts +0 -98
@@ -1,131 +0,0 @@
1
- import { DhtNode, PeerDescriptor, Simulator, SimulatorTransport } from '@streamr/dht'
2
- import { StreamrNode, Events } from '../../src/logic/StreamrNode'
3
- import { waitForEvent3, waitForCondition } from '@streamr/utils'
4
- import { createMockPeerDescriptor, createStreamMessage } from '../utils/utils'
5
- import { StreamPartIDUtils } from '@streamr/protocol'
6
- import { randomEthereumAddress } from '@streamr/test-utils'
7
- import { Layer0Node } from '../../src/logic/Layer0Node'
8
-
9
- describe('StreamrNode', () => {
10
-
11
- let layer0Node1: Layer0Node
12
- let layer0Node2: Layer0Node
13
- let transport1: SimulatorTransport
14
- let transport2: SimulatorTransport
15
- let node1: StreamrNode
16
- let node2: StreamrNode
17
-
18
- const peerDescriptor1: PeerDescriptor = createMockPeerDescriptor()
19
- const peerDescriptor2: PeerDescriptor = createMockPeerDescriptor()
20
- const STREAM_PART_ID = StreamPartIDUtils.parse('test#0')
21
-
22
- const msg = createStreamMessage(
23
- JSON.stringify({ hello: 'WORLD' }),
24
- STREAM_PART_ID,
25
- randomEthereumAddress()
26
- )
27
-
28
- afterEach(async () => {
29
- await Promise.all([
30
- node1.destroy(),
31
- node2.destroy()
32
- ])
33
- })
34
-
35
- beforeEach(async () => {
36
- const simulator = new Simulator()
37
- transport1 = new SimulatorTransport(peerDescriptor1, simulator)
38
- await transport1.start()
39
- transport2 = new SimulatorTransport(peerDescriptor2, simulator)
40
- await transport2.start()
41
- layer0Node1 = new DhtNode({
42
- transport: transport1,
43
- peerDescriptor: peerDescriptor1,
44
- entryPoints: [peerDescriptor1]
45
- })
46
- layer0Node2 = new DhtNode({
47
- transport: transport2,
48
- peerDescriptor: peerDescriptor2,
49
- entryPoints: [peerDescriptor1]
50
- })
51
- await Promise.all([
52
- layer0Node1.start(),
53
- layer0Node2.start()
54
- ])
55
- await Promise.all([
56
- layer0Node1.joinDht([peerDescriptor1]),
57
- layer0Node2.joinDht([peerDescriptor1])
58
- ])
59
-
60
- node1 = new StreamrNode({})
61
- node2 = new StreamrNode({})
62
- await node1.start(layer0Node1, transport1, transport1)
63
- node1.setStreamPartEntryPoints(STREAM_PART_ID, [peerDescriptor1])
64
- await node2.start(layer0Node2, transport2, transport2)
65
- node2.setStreamPartEntryPoints(STREAM_PART_ID, [peerDescriptor1])
66
- })
67
-
68
- it('starts', async () => {
69
- expect(node1.getPeerDescriptor()).toEqual(peerDescriptor1)
70
- expect(node2.getPeerDescriptor()).toEqual(peerDescriptor2)
71
- })
72
-
73
- it('Joining stream', async () => {
74
- node1.joinStreamPart(STREAM_PART_ID)
75
- node2.joinStreamPart(STREAM_PART_ID)
76
- await waitForCondition(() => node1.getNeighbors(STREAM_PART_ID).length === 1)
77
- await waitForCondition(() => node2.getNeighbors(STREAM_PART_ID).length === 1)
78
- expect(node1.getNeighbors(STREAM_PART_ID).length).toEqual(1)
79
- expect(node2.getNeighbors(STREAM_PART_ID).length).toEqual(1)
80
- })
81
-
82
- it('Publishing after joining and waiting for neighbors', async () => {
83
- node1.joinStreamPart(STREAM_PART_ID)
84
- node2.joinStreamPart(STREAM_PART_ID)
85
- await waitForCondition(() => node1.getNeighbors(STREAM_PART_ID).length === 1)
86
- await waitForCondition(() => node2.getNeighbors(STREAM_PART_ID).length === 1)
87
- await Promise.all([
88
- waitForEvent3<Events>(node1, 'newMessage'),
89
- node2.broadcast(msg)
90
- ])
91
- })
92
-
93
- it('multi-stream pub/sub', async () => {
94
- const streamPartId2 = StreamPartIDUtils.parse('test2#0')
95
- node1.setStreamPartEntryPoints(streamPartId2, [peerDescriptor1])
96
- node2.setStreamPartEntryPoints(streamPartId2, [peerDescriptor1])
97
- node1.joinStreamPart(STREAM_PART_ID)
98
- node1.joinStreamPart(streamPartId2)
99
- node2.joinStreamPart(STREAM_PART_ID)
100
- node2.joinStreamPart(streamPartId2)
101
- await Promise.all([
102
- waitForCondition(() => node1.getNeighbors(STREAM_PART_ID).length === 1),
103
- waitForCondition(() => node2.getNeighbors(STREAM_PART_ID).length === 1),
104
- waitForCondition(() => node1.getNeighbors(streamPartId2).length === 1),
105
- waitForCondition(() => node2.getNeighbors(streamPartId2).length === 1)
106
- ])
107
- const msg2 = createStreamMessage(
108
- JSON.stringify({ hello: 'WORLD' }),
109
- streamPartId2,
110
- randomEthereumAddress()
111
- )
112
- await Promise.all([
113
- waitForEvent3<Events>(node1, 'newMessage'),
114
- waitForEvent3<Events>(node2, 'newMessage'),
115
- node1.broadcast(msg2),
116
- node2.broadcast(msg)
117
- ])
118
- })
119
-
120
- it('leaving stream parts', async () => {
121
- node1.joinStreamPart(STREAM_PART_ID)
122
- node2.joinStreamPart(STREAM_PART_ID)
123
- await Promise.all([
124
- waitForCondition(() => node1.getNeighbors(STREAM_PART_ID).length === 1),
125
- waitForCondition(() => node2.getNeighbors(STREAM_PART_ID).length === 1)
126
- ])
127
- await node2.leaveStreamPart(STREAM_PART_ID)
128
- await waitForCondition(() => node1.getNeighbors(STREAM_PART_ID).length === 0)
129
- })
130
-
131
- })
@@ -1,98 +0,0 @@
1
- import { areEqualPeerDescriptors } from '@streamr/dht'
2
- import { StreamPartIDUtils } from '@streamr/protocol'
3
- import { randomEthereumAddress } from '@streamr/test-utils'
4
- import { waitForCondition } from '@streamr/utils'
5
- import { StreamrNode } from '../../src/logic/StreamrNode'
6
- import { MockLayer0Node } from '../utils/mock/MockLayer0Node'
7
- import { MockTransport } from '../utils/mock/Transport'
8
- import { createMockPeerDescriptor, createStreamMessage, mockConnectionLocker } from '../utils/utils'
9
- import { ProxyDirection } from '../../src/proto/packages/trackerless-network/protos/NetworkRpc'
10
-
11
- describe('StreamrNode', () => {
12
-
13
- let node: StreamrNode
14
- const peerDescriptor = createMockPeerDescriptor()
15
-
16
- beforeEach(async () => {
17
- node = new StreamrNode({})
18
- const mockLayer0 = new MockLayer0Node(peerDescriptor)
19
- await node.start(mockLayer0, new MockTransport(), mockConnectionLocker)
20
- })
21
-
22
- afterEach(async () => {
23
- await node.destroy()
24
- })
25
-
26
- it('PeerDescriptor is correct', () => {
27
- expect(areEqualPeerDescriptors(peerDescriptor, node.getPeerDescriptor()))
28
- })
29
-
30
- describe('join and leave', () => {
31
-
32
- const streamPartId = StreamPartIDUtils.parse('stream#0')
33
- const message = createStreamMessage(
34
- JSON.stringify({ hello: 'WORLD' }),
35
- streamPartId,
36
- randomEthereumAddress()
37
- )
38
-
39
- beforeEach(async () => {
40
- node.setStreamPartEntryPoints(streamPartId, [node.getPeerDescriptor()])
41
- })
42
-
43
- it('can join stream part', async () => {
44
- node.joinStreamPart(streamPartId)
45
- expect(node.hasStreamPart(streamPartId)).toEqual(true)
46
- })
47
-
48
- it('can leave stream part', async () => {
49
- node.joinStreamPart(streamPartId)
50
- expect(node.hasStreamPart(streamPartId)).toEqual(true)
51
- await node.leaveStreamPart(streamPartId)
52
- expect(node.hasStreamPart(streamPartId)).toEqual(false)
53
- })
54
-
55
- it('broadcast joins stream', async () => {
56
- node.broadcast(message)
57
- await waitForCondition(() => node.hasStreamPart(streamPartId))
58
- })
59
-
60
- })
61
-
62
- describe('proxied stream', () => {
63
- it('happy path', async () => {
64
- const streamPartId = StreamPartIDUtils.parse('stream#0')
65
- const proxy = createMockPeerDescriptor()
66
- const userId = randomEthereumAddress()
67
- await node.setProxies(streamPartId, [proxy], ProxyDirection.PUBLISH, userId)
68
- expect(node.isProxiedStreamPart(streamPartId)).toBe(true)
69
- await node.setProxies(streamPartId, [], ProxyDirection.PUBLISH, userId)
70
- expect(node.isProxiedStreamPart(streamPartId)).toBe(false)
71
- })
72
-
73
- it('empty node list', async () => {
74
- const streamPartId = StreamPartIDUtils.parse('stream#0')
75
- const proxy = createMockPeerDescriptor()
76
- const userId = randomEthereumAddress()
77
- await node.setProxies(streamPartId, [], ProxyDirection.PUBLISH, userId)
78
- expect(node.isProxiedStreamPart(streamPartId)).toBe(false)
79
- await node.setProxies(streamPartId, [proxy], ProxyDirection.PUBLISH, userId)
80
- expect(node.isProxiedStreamPart(streamPartId)).toBe(true)
81
- await node.setProxies(streamPartId, [], ProxyDirection.PUBLISH, userId)
82
- expect(node.isProxiedStreamPart(streamPartId)).toBe(false)
83
- })
84
-
85
- it('connection count to 0', async () => {
86
- const streamPartId = StreamPartIDUtils.parse('stream#0')
87
- const proxy = createMockPeerDescriptor()
88
- const userId = randomEthereumAddress()
89
- await node.setProxies(streamPartId, [proxy], ProxyDirection.PUBLISH, userId, 0)
90
- expect(node.isProxiedStreamPart(streamPartId)).toBe(false)
91
- await node.setProxies(streamPartId, [proxy], ProxyDirection.PUBLISH, userId)
92
- expect(node.isProxiedStreamPart(streamPartId)).toBe(true)
93
- await node.setProxies(streamPartId, [proxy], ProxyDirection.PUBLISH, userId, 0)
94
- expect(node.isProxiedStreamPart(streamPartId)).toBe(false)
95
- })
96
- })
97
-
98
- })