@libp2p/interface-compliance-tests 1.1.14 → 1.1.17

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 (146) hide show
  1. package/dist/src/connection-encrypter/index.d.ts +5 -0
  2. package/dist/src/connection-encrypter/index.d.ts.map +1 -0
  3. package/dist/src/{crypto → connection-encrypter}/index.js +2 -2
  4. package/dist/src/connection-encrypter/index.js.map +1 -0
  5. package/dist/src/{crypto → connection-encrypter}/utils/index.d.ts +0 -0
  6. package/dist/src/connection-encrypter/utils/index.d.ts.map +1 -0
  7. package/dist/src/{crypto → connection-encrypter}/utils/index.js +0 -0
  8. package/dist/src/connection-encrypter/utils/index.js.map +1 -0
  9. package/dist/src/mocks/connection-encrypter.d.ts +3 -0
  10. package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
  11. package/dist/src/mocks/connection-encrypter.js +93 -0
  12. package/dist/src/mocks/connection-encrypter.js.map +1 -0
  13. package/dist/src/mocks/connection-manager.d.ts +6 -3
  14. package/dist/src/mocks/connection-manager.d.ts.map +1 -1
  15. package/dist/src/mocks/connection-manager.js +9 -0
  16. package/dist/src/mocks/connection-manager.js.map +1 -1
  17. package/dist/src/mocks/connection.d.ts +1 -1
  18. package/dist/src/mocks/connection.d.ts.map +1 -1
  19. package/dist/src/mocks/connection.js +68 -49
  20. package/dist/src/mocks/connection.js.map +1 -1
  21. package/dist/src/mocks/duplex.d.ts +3 -0
  22. package/dist/src/mocks/duplex.d.ts.map +1 -0
  23. package/dist/src/mocks/duplex.js +7 -0
  24. package/dist/src/mocks/duplex.js.map +1 -0
  25. package/dist/src/mocks/index.d.ts +3 -2
  26. package/dist/src/mocks/index.d.ts.map +1 -1
  27. package/dist/src/mocks/index.js +2 -1
  28. package/dist/src/mocks/index.js.map +1 -1
  29. package/dist/src/mocks/multiaddr-connection.d.ts +12 -0
  30. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
  31. package/dist/src/mocks/multiaddr-connection.js +37 -0
  32. package/dist/src/mocks/multiaddr-connection.js.map +1 -1
  33. package/dist/src/mocks/muxer.d.ts +8 -2
  34. package/dist/src/mocks/muxer.d.ts.map +1 -1
  35. package/dist/src/mocks/muxer.js +22 -13
  36. package/dist/src/mocks/muxer.js.map +1 -1
  37. package/dist/src/mocks/registrar.d.ts +6 -6
  38. package/dist/src/mocks/registrar.d.ts.map +1 -1
  39. package/dist/src/mocks/registrar.js +23 -33
  40. package/dist/src/mocks/registrar.js.map +1 -1
  41. package/dist/src/mocks/upgrader.d.ts +11 -3
  42. package/dist/src/mocks/upgrader.d.ts.map +1 -1
  43. package/dist/src/mocks/upgrader.js +28 -23
  44. package/dist/src/mocks/upgrader.js.map +1 -1
  45. package/dist/src/pubsub/api.d.ts +3 -4
  46. package/dist/src/pubsub/api.d.ts.map +1 -1
  47. package/dist/src/pubsub/api.js +8 -3
  48. package/dist/src/pubsub/api.js.map +1 -1
  49. package/dist/src/pubsub/connection-handlers.d.ts +3 -4
  50. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  51. package/dist/src/pubsub/connection-handlers.js +41 -16
  52. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  53. package/dist/src/pubsub/emit-self.d.ts +3 -4
  54. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  55. package/dist/src/pubsub/emit-self.js +15 -6
  56. package/dist/src/pubsub/emit-self.js.map +1 -1
  57. package/dist/src/pubsub/index.d.ts +8 -3
  58. package/dist/src/pubsub/index.d.ts.map +1 -1
  59. package/dist/src/pubsub/index.js.map +1 -1
  60. package/dist/src/pubsub/messages.d.ts +3 -4
  61. package/dist/src/pubsub/messages.d.ts.map +1 -1
  62. package/dist/src/pubsub/messages.js +13 -6
  63. package/dist/src/pubsub/messages.js.map +1 -1
  64. package/dist/src/pubsub/multiple-nodes.d.ts +3 -4
  65. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  66. package/dist/src/pubsub/multiple-nodes.js +57 -24
  67. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  68. package/dist/src/pubsub/two-nodes.d.ts +3 -4
  69. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  70. package/dist/src/pubsub/two-nodes.js +16 -7
  71. package/dist/src/pubsub/two-nodes.js.map +1 -1
  72. package/dist/src/pubsub/utils.d.ts +2 -2
  73. package/dist/src/pubsub/utils.js +1 -1
  74. package/dist/src/pubsub/utils.js.map +1 -1
  75. package/dist/src/stream-muxer/base-test.d.ts +2 -2
  76. package/dist/src/stream-muxer/base-test.d.ts.map +1 -1
  77. package/dist/src/stream-muxer/base-test.js +17 -8
  78. package/dist/src/stream-muxer/base-test.js.map +1 -1
  79. package/dist/src/stream-muxer/close-test.d.ts +2 -2
  80. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  81. package/dist/src/stream-muxer/close-test.js +9 -4
  82. package/dist/src/stream-muxer/close-test.js.map +1 -1
  83. package/dist/src/stream-muxer/index.d.ts +2 -2
  84. package/dist/src/stream-muxer/index.d.ts.map +1 -1
  85. package/dist/src/stream-muxer/index.js.map +1 -1
  86. package/dist/src/stream-muxer/mega-stress-test.d.ts +2 -2
  87. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -1
  88. package/dist/src/stream-muxer/mega-stress-test.js +5 -1
  89. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -1
  90. package/dist/src/stream-muxer/spawner.d.ts +2 -2
  91. package/dist/src/stream-muxer/spawner.d.ts.map +1 -1
  92. package/dist/src/stream-muxer/spawner.js.map +1 -1
  93. package/dist/src/stream-muxer/stress-test.d.ts +2 -2
  94. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -1
  95. package/dist/src/stream-muxer/stress-test.js +5 -1
  96. package/dist/src/stream-muxer/stress-test.js.map +1 -1
  97. package/dist/src/transport/dial-test.d.ts +2 -2
  98. package/dist/src/transport/dial-test.d.ts.map +1 -1
  99. package/dist/src/transport/dial-test.js +17 -9
  100. package/dist/src/transport/dial-test.js.map +1 -1
  101. package/dist/src/transport/filter-test.d.ts +2 -2
  102. package/dist/src/transport/filter-test.d.ts.map +1 -1
  103. package/dist/src/transport/filter-test.js +1 -2
  104. package/dist/src/transport/filter-test.js.map +1 -1
  105. package/dist/src/transport/index.d.ts +3 -6
  106. package/dist/src/transport/index.d.ts.map +1 -1
  107. package/dist/src/transport/index.js.map +1 -1
  108. package/dist/src/transport/listen-test.d.ts +2 -2
  109. package/dist/src/transport/listen-test.d.ts.map +1 -1
  110. package/dist/src/transport/listen-test.js +34 -17
  111. package/dist/src/transport/listen-test.js.map +1 -1
  112. package/package.json +10 -10
  113. package/src/{crypto → connection-encrypter}/index.ts +5 -5
  114. package/src/{crypto → connection-encrypter}/utils/index.ts +0 -0
  115. package/src/mocks/connection-encrypter.ts +110 -0
  116. package/src/mocks/connection-manager.ts +15 -3
  117. package/src/mocks/connection.ts +104 -57
  118. package/src/mocks/duplex.ts +8 -0
  119. package/src/mocks/index.ts +3 -2
  120. package/src/mocks/multiaddr-connection.ts +47 -0
  121. package/src/mocks/muxer.ts +32 -22
  122. package/src/mocks/registrar.ts +30 -40
  123. package/src/mocks/upgrader.ts +33 -23
  124. package/src/pubsub/api.ts +15 -10
  125. package/src/pubsub/connection-handlers.ts +64 -39
  126. package/src/pubsub/emit-self.ts +21 -13
  127. package/src/pubsub/index.ts +9 -3
  128. package/src/pubsub/messages.ts +23 -14
  129. package/src/pubsub/multiple-nodes.ts +75 -42
  130. package/src/pubsub/two-nodes.ts +29 -20
  131. package/src/pubsub/utils.ts +4 -4
  132. package/src/stream-muxer/base-test.ts +19 -10
  133. package/src/stream-muxer/close-test.ts +11 -6
  134. package/src/stream-muxer/index.ts +2 -2
  135. package/src/stream-muxer/mega-stress-test.ts +7 -3
  136. package/src/stream-muxer/spawner.ts +2 -2
  137. package/src/stream-muxer/stress-test.ts +7 -3
  138. package/src/transport/dial-test.ts +21 -13
  139. package/src/transport/filter-test.ts +4 -5
  140. package/src/transport/index.ts +3 -7
  141. package/src/transport/listen-test.ts +39 -22
  142. package/dist/src/crypto/index.d.ts +0 -5
  143. package/dist/src/crypto/index.d.ts.map +0 -1
  144. package/dist/src/crypto/index.js.map +0 -1
  145. package/dist/src/crypto/utils/index.d.ts.map +0 -1
  146. package/dist/src/crypto/utils/index.js.map +0 -1
@@ -10,22 +10,23 @@ import { connectPeers, mockRegistrar } from '../mocks/registrar.js'
10
10
  import { CustomEvent } from '@libp2p/interfaces'
11
11
  import { waitForSubscriptionUpdate } from './utils.js'
12
12
  import type { TestSetup } from '../index.js'
13
- import type { Message, PubSubOptions } from '@libp2p/interfaces/pubsub'
14
- import type { EventMap } from './index.js'
15
- import type { PeerId } from '@libp2p/interfaces/src/peer-id'
16
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
17
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
18
-
19
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
13
+ import type { Message } from '@libp2p/interfaces/pubsub'
14
+ import type { EventMap, PubSubArgs } from './index.js'
15
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
16
+ import type { Registrar } from '@libp2p/interfaces/registrar'
17
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
18
+ import { Components } from '@libp2p/interfaces/components'
19
+
20
+ export default (common: TestSetup<PubSubBaseProtocol<EventMap>, PubSubArgs>) => {
20
21
  describe('pubsub with multiple nodes', function () {
21
22
  describe('every peer subscribes to the topic', () => {
22
23
  describe('line', () => {
23
24
  // line
24
25
  // ◉────◉────◉
25
26
  // a b c
26
- let psA: PubsubBaseProtocol<EventMap>
27
- let psB: PubsubBaseProtocol<EventMap>
28
- let psC: PubsubBaseProtocol<EventMap>
27
+ let psA: PubSubBaseProtocol<EventMap>
28
+ let psB: PubSubBaseProtocol<EventMap>
29
+ let psC: PubSubBaseProtocol<EventMap>
29
30
  let peerIdA: PeerId
30
31
  let peerIdB: PeerId
31
32
  let peerIdC: PeerId
@@ -44,19 +45,31 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
44
45
  registrarC = mockRegistrar()
45
46
 
46
47
  psA = await common.setup({
47
- peerId: peerIdA,
48
- registrar: registrarA,
49
- emitSelf: true
48
+ components: new Components({
49
+ peerId: peerIdA,
50
+ registrar: registrarA
51
+ }),
52
+ init: {
53
+ emitSelf: true
54
+ }
50
55
  })
51
56
  psB = await common.setup({
52
- peerId: peerIdB,
53
- registrar: registrarB,
54
- emitSelf: true
57
+ components: new Components({
58
+ peerId: peerIdB,
59
+ registrar: registrarB
60
+ }),
61
+ init: {
62
+ emitSelf: true
63
+ }
55
64
  })
56
65
  psC = await common.setup({
57
- peerId: peerIdC,
58
- registrar: registrarC,
59
- emitSelf: true
66
+ components: new Components({
67
+ peerId: peerIdC,
68
+ registrar: registrarC
69
+ }),
70
+ init: {
71
+ emitSelf: true
72
+ }
60
73
  })
61
74
 
62
75
  // Start pubsub modes
@@ -172,7 +185,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
172
185
  waitForSubscriptionUpdate(psC, psB)
173
186
  ])
174
187
 
175
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }))
188
+ void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('hey') }))
176
189
 
177
190
  function incMsg (evt: CustomEvent<Message>) {
178
191
  const msg = evt.detail
@@ -233,7 +246,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
233
246
  waitForSubscriptionUpdate(psC, psB)
234
247
  ])
235
248
 
236
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }))
249
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('hey') }))
237
250
 
238
251
  function incMsg (evt: CustomEvent<Message>) {
239
252
  const msg = evt.detail
@@ -263,11 +276,11 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
263
276
  // │b d│
264
277
  // ◉─┘ └─◉
265
278
  // a
266
- let psA: PubsubBaseProtocol<EventMap>
267
- let psB: PubsubBaseProtocol<EventMap>
268
- let psC: PubsubBaseProtocol<EventMap>
269
- let psD: PubsubBaseProtocol<EventMap>
270
- let psE: PubsubBaseProtocol<EventMap>
279
+ let psA: PubSubBaseProtocol<EventMap>
280
+ let psB: PubSubBaseProtocol<EventMap>
281
+ let psC: PubSubBaseProtocol<EventMap>
282
+ let psD: PubSubBaseProtocol<EventMap>
283
+ let psE: PubSubBaseProtocol<EventMap>
271
284
  let peerIdA: PeerId
272
285
  let peerIdB: PeerId
273
286
  let peerIdC: PeerId
@@ -294,29 +307,49 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
294
307
  registrarE = mockRegistrar()
295
308
 
296
309
  psA = await common.setup({
297
- peerId: peerIdA,
298
- registrar: registrarA,
299
- emitSelf: true
310
+ components: new Components({
311
+ peerId: peerIdA,
312
+ registrar: registrarA
313
+ }),
314
+ init: {
315
+ emitSelf: true
316
+ }
300
317
  })
301
318
  psB = await common.setup({
302
- peerId: peerIdB,
303
- registrar: registrarB,
304
- emitSelf: true
319
+ components: new Components({
320
+ peerId: peerIdB,
321
+ registrar: registrarB
322
+ }),
323
+ init: {
324
+ emitSelf: true
325
+ }
305
326
  })
306
327
  psC = await common.setup({
307
- peerId: peerIdC,
308
- registrar: registrarC,
309
- emitSelf: true
328
+ components: new Components({
329
+ peerId: peerIdC,
330
+ registrar: registrarC
331
+ }),
332
+ init: {
333
+ emitSelf: true
334
+ }
310
335
  })
311
336
  psD = await common.setup({
312
- peerId: peerIdD,
313
- registrar: registrarD,
314
- emitSelf: true
337
+ components: new Components({
338
+ peerId: peerIdD,
339
+ registrar: registrarD
340
+ }),
341
+ init: {
342
+ emitSelf: true
343
+ }
315
344
  })
316
345
  psE = await common.setup({
317
- peerId: peerIdE,
318
- registrar: registrarE,
319
- emitSelf: true
346
+ components: new Components({
347
+ peerId: peerIdE,
348
+ registrar: registrarE
349
+ }),
350
+ init: {
351
+ emitSelf: true
352
+ }
320
353
  })
321
354
 
322
355
  // Start pubsub nodes
@@ -409,7 +442,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
409
442
  waitForSubscriptionUpdate(psE, psD)
410
443
  ])
411
444
 
412
- void psC.dispatchEvent(new CustomEvent('Z', { detail: uint8ArrayFromString('hey from c') }))
445
+ void psC.dispatchEvent(new CustomEvent<Uint8Array>('Z', { detail: uint8ArrayFromString('hey from c') }))
413
446
 
414
447
  function incMsg (evt: CustomEvent<Message>) {
415
448
  const msg = evt.detail
@@ -10,11 +10,12 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
10
10
  import { CustomEvent } from '@libp2p/interfaces'
11
11
  import { waitForSubscriptionUpdate } from './utils.js'
12
12
  import type { TestSetup } from '../index.js'
13
- import type { Message, PubSubOptions } from '@libp2p/interfaces/pubsub'
14
- import type { EventMap } from './index.js'
15
- import type { PeerId } from '@libp2p/interfaces/src/peer-id'
16
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
17
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
13
+ import type { Message } from '@libp2p/interfaces/pubsub'
14
+ import type { EventMap, PubSubArgs } from './index.js'
15
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
16
+ import type { Registrar } from '@libp2p/interfaces/registrar'
17
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
18
+ import { Components } from '@libp2p/interfaces/components'
18
19
 
19
20
  const topic = 'foo'
20
21
 
@@ -22,10 +23,10 @@ function shouldNotHappen () {
22
23
  expect.fail()
23
24
  }
24
25
 
25
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
26
+ export default (common: TestSetup<PubSubBaseProtocol<EventMap>, PubSubArgs>) => {
26
27
  describe('pubsub with two nodes', () => {
27
- let psA: PubsubBaseProtocol<EventMap>
28
- let psB: PubsubBaseProtocol<EventMap>
28
+ let psA: PubSubBaseProtocol<EventMap>
29
+ let psB: PubSubBaseProtocol<EventMap>
29
30
  let peerIdA: PeerId
30
31
  let peerIdB: PeerId
31
32
  let registrarA: Registrar
@@ -40,14 +41,22 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
40
41
  registrarB = mockRegistrar()
41
42
 
42
43
  psA = await common.setup({
43
- peerId: peerIdA,
44
- registrar: registrarA,
45
- emitSelf: true
44
+ components: new Components({
45
+ peerId: peerIdA,
46
+ registrar: registrarA
47
+ }),
48
+ init: {
49
+ emitSelf: true
50
+ }
46
51
  })
47
52
  psB = await common.setup({
48
- peerId: peerIdB,
49
- registrar: registrarB,
50
- emitSelf: false
53
+ components: new Components({
54
+ peerId: peerIdB,
55
+ registrar: registrarB
56
+ }),
57
+ init: {
58
+ emitSelf: false
59
+ }
51
60
  })
52
61
 
53
62
  // Start pubsub and connect nodes
@@ -120,7 +129,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
120
129
  waitForSubscriptionUpdate(psB, psA)
121
130
  ])
122
131
 
123
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('hey') }))
132
+ void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('hey') }))
124
133
 
125
134
  return await defer.promise
126
135
  })
@@ -154,7 +163,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
154
163
  waitForSubscriptionUpdate(psB, psA)
155
164
  ])
156
165
 
157
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }))
166
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') }))
158
167
 
159
168
  return await defer.promise
160
169
  })
@@ -172,7 +181,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
172
181
  const msg = evt.detail
173
182
  expect(uint8ArrayToString(msg.data)).to.equal('banana')
174
183
  expect(msg.from.toString()).to.equal(peerIdB.toString())
175
- expect(msg.seqno).to.be.a('BigInt')
184
+ expect(msg.sequenceNumber).to.be.a('BigInt')
176
185
  expect(msg.topic).to.be.equal(topic)
177
186
 
178
187
  if (++counter === 10) {
@@ -188,7 +197,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
188
197
  waitForSubscriptionUpdate(psB, psA)
189
198
  ])
190
199
 
191
- Array.from({ length: 10 }, (_, i) => psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') })))
200
+ Array.from({ length: 10 }, (_, i) => psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') })))
192
201
 
193
202
  return await defer.promise
194
203
  })
@@ -254,8 +263,8 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
254
263
  defer.resolve()
255
264
  }, 100)
256
265
 
257
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }))
258
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('banana') }))
266
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') }))
267
+ void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('banana') }))
259
268
 
260
269
  return await defer.promise
261
270
  })
@@ -1,12 +1,12 @@
1
1
  import { pEvent } from 'p-event'
2
2
  import pWaitFor from 'p-wait-for'
3
- import type { SubscriptionChangeData } from '@libp2p/interfaces/src/pubsub'
4
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
3
+ import type { SubscriptionChangeData } from '@libp2p/interfaces/pubsub'
4
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
5
5
 
6
- export async function waitForSubscriptionUpdate (a: PubsubBaseProtocol, b: PubsubBaseProtocol) {
6
+ export async function waitForSubscriptionUpdate (a: PubSubBaseProtocol, b: PubSubBaseProtocol) {
7
7
  await pWaitFor(async () => {
8
8
  const event = await pEvent<'pubsub:subscription-change', CustomEvent<SubscriptionChangeData>>(a, 'pubsub:subscription-change')
9
9
 
10
- return event.detail.peerId.equals(b.peerId)
10
+ return event.detail.peerId.equals(b.components.getPeerId())
11
11
  })
12
12
  }
@@ -11,22 +11,25 @@ import { isValidTick } from '../utils/is-valid-tick.js'
11
11
  import type { DeferredPromise } from 'p-defer'
12
12
  import type { TestSetup } from '../index.js'
13
13
  import type { Stream } from '@libp2p/interfaces/connection'
14
- import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
14
+ import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
15
15
  import type { Source, Duplex } from 'it-stream-types'
16
+ import { Components } from '@libp2p/interfaces/components'
16
17
 
17
18
  async function drainAndClose (stream: Duplex<Uint8Array>) {
18
19
  return await pipe([], stream, drain)
19
20
  }
20
21
 
21
- export default (common: TestSetup<Muxer, MuxerOptions>) => {
22
+ export default (common: TestSetup<StreamMuxerFactory>) => {
22
23
  describe('base', () => {
23
24
  it('Open a stream from the dialer', async () => {
24
25
  const p = duplexPair<Uint8Array>()
25
- const dialer = await common.setup()
26
+ const dialerFactory = await common.setup()
27
+ const dialer = dialerFactory.createStreamMuxer(new Components())
26
28
  const onStreamPromise: DeferredPromise<Stream> = defer()
27
29
  const onStreamEndPromise: DeferredPromise<Stream> = defer()
28
30
 
29
- const listener = await common.setup({
31
+ const listenerFactory = await common.setup()
32
+ const listener = listenerFactory.createStreamMuxer(new Components(), {
30
33
  onIncomingStream: (stream) => {
31
34
  onStreamPromise.resolve(stream)
32
35
  },
@@ -73,13 +76,15 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
73
76
  it('Open a stream from the listener', async () => {
74
77
  const p = duplexPair<Uint8Array>()
75
78
  const onStreamPromise: DeferredPromise<Stream> = defer()
76
- const dialer = await common.setup({
79
+ const dialerFactory = await common.setup()
80
+ const dialer = dialerFactory.createStreamMuxer(new Components(), {
77
81
  onIncomingStream: (stream: Stream) => {
78
82
  onStreamPromise.resolve(stream)
79
83
  }
80
84
  })
81
85
 
82
- const listener = await common.setup()
86
+ const listenerFactory = await common.setup()
87
+ const listener = listenerFactory.createStreamMuxer(new Components())
83
88
 
84
89
  void pipe(p[0], dialer, p[0])
85
90
  void pipe(p[1], listener, p[1])
@@ -102,13 +107,15 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
102
107
  const p = duplexPair<Uint8Array>()
103
108
  const onDialerStreamPromise: DeferredPromise<Stream> = defer()
104
109
  const onListenerStreamPromise: DeferredPromise<Stream> = defer()
105
- const dialer = await common.setup({
110
+ const dialerFactory = await common.setup()
111
+ const dialer = dialerFactory.createStreamMuxer(new Components(), {
106
112
  onIncomingStream: (stream) => {
107
113
  onDialerStreamPromise.resolve(stream)
108
114
  }
109
115
  })
110
116
 
111
- const listener = await common.setup({
117
+ const listenerFactory = await common.setup()
118
+ const listener = listenerFactory.createStreamMuxer(new Components(), {
112
119
  onIncomingStream: (stream) => {
113
120
  onListenerStreamPromise.resolve(stream)
114
121
  }
@@ -138,12 +145,14 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
138
145
  const p = duplexPair<Uint8Array>()
139
146
  const onDialerStreamPromise: DeferredPromise<Stream> = defer()
140
147
  const onListenerStreamPromise: DeferredPromise<Stream> = defer()
141
- const dialer = await common.setup({
148
+ const dialerFactory = await common.setup()
149
+ const dialer = dialerFactory.createStreamMuxer(new Components(), {
142
150
  onIncomingStream: (stream) => {
143
151
  onDialerStreamPromise.resolve(stream)
144
152
  }
145
153
  })
146
- const listener = await common.setup({
154
+ const listenerFactory = await common.setup()
155
+ const listener = listenerFactory.createStreamMuxer(new Components(), {
147
156
  onIncomingStream: (stream) => {
148
157
  onListenerStreamPromise.resolve(stream)
149
158
  }
@@ -7,7 +7,8 @@ import drain from 'it-drain'
7
7
  import { expect } from 'aegir/utils/chai.js'
8
8
  import delay from 'delay'
9
9
  import type { TestSetup } from '../index.js'
10
- import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
10
+ import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
11
+ import { Components } from '@libp2p/interfaces/components'
11
12
 
12
13
  function randomBuffer () {
13
14
  return uint8ArrayFromString(Math.random().toString())
@@ -22,15 +23,17 @@ const infiniteRandom = {
22
23
  }
23
24
  }
24
25
 
25
- export default (common: TestSetup<Muxer, MuxerOptions>) => {
26
+ export default (common: TestSetup<StreamMuxerFactory>) => {
26
27
  describe('close', () => {
27
28
  it('closing underlying socket closes streams', async () => {
28
29
  let openedStreams = 0
29
30
  const expectedStreams = 5
30
- const dialer = await common.setup()
31
+ const dialerFactory = await common.setup()
32
+ const dialer = dialerFactory.createStreamMuxer(new Components())
31
33
 
32
34
  // Listener is echo server :)
33
- const listener = await common.setup({
35
+ const listenerFactory = await common.setup()
36
+ const listener = listenerFactory.createStreamMuxer(new Components(), {
34
37
  onIncomingStream: (stream) => {
35
38
  openedStreams++
36
39
  void pipe(stream, stream)
@@ -65,10 +68,12 @@ export default (common: TestSetup<Muxer, MuxerOptions>) => {
65
68
 
66
69
  it('closing one of the muxed streams doesn\'t close others', async () => {
67
70
  const p = duplexPair<Uint8Array>()
68
- const dialer = await common.setup()
71
+ const dialerFactory = await common.setup()
72
+ const dialer = dialerFactory.createStreamMuxer(new Components())
69
73
 
70
74
  // Listener is echo server :)
71
- const listener = await common.setup({
75
+ const listenerFactory = await common.setup()
76
+ const listener = listenerFactory.createStreamMuxer(new Components(), {
72
77
  onIncomingStream: (stream) => {
73
78
  void pipe(stream, stream)
74
79
  }
@@ -3,9 +3,9 @@ import closeTest from './close-test.js'
3
3
  import stressTest from './stress-test.js'
4
4
  import megaStressTest from './mega-stress-test.js'
5
5
  import type { TestSetup } from '../index.js'
6
- import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
6
+ import type { StreamMuxerFactory } from '@libp2p/interfaces/stream-muxer'
7
7
 
8
- export default (common: TestSetup<Muxer, MuxerOptions>) => {
8
+ export default (common: TestSetup<StreamMuxerFactory>) => {
9
9
  describe('interface-stream-muxer', () => {
10
10
  baseTest(common)
11
11
  closeTest(common)
@@ -1,9 +1,13 @@
1
1
  import spawn from './spawner.js'
2
2
  import type { TestSetup } from '../index.js'
3
- import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
3
+ import type { StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/interfaces/stream-muxer'
4
+ import { Components } from '@libp2p/interfaces/components'
4
5
 
5
- export default (common: TestSetup<Muxer, MuxerOptions>) => {
6
- const createMuxer = async (opts?: MuxerOptions) => await common.setup(opts)
6
+ export default (common: TestSetup<StreamMuxerFactory>) => {
7
+ const createMuxer = async (init?: StreamMuxerInit): Promise<StreamMuxer> => {
8
+ const factory = await common.setup()
9
+ return factory.createStreamMuxer(new Components(), init)
10
+ }
7
11
 
8
12
  describe.skip('mega stress test', function () {
9
13
  it('10,000 streams with 10,000 msg', async () => await spawn(createMuxer, 10000, 10000, 5000))
@@ -5,9 +5,9 @@ import pLimit from 'p-limit'
5
5
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
6
6
  import drain from 'it-drain'
7
7
  import all from 'it-all'
8
- import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
8
+ import type { StreamMuxer, StreamMuxerInit } from '@libp2p/interfaces/stream-muxer'
9
9
 
10
- export default async (createMuxer: (options?: MuxerOptions) => Promise<Muxer>, nStreams: number, nMsg: number, limit?: number) => {
10
+ export default async (createMuxer: (init?: StreamMuxerInit) => Promise<StreamMuxer>, nStreams: number, nMsg: number, limit?: number) => {
11
11
  const [dialerSocket, listenerSocket] = duplexPair<Uint8Array>()
12
12
 
13
13
  const msg = uint8ArrayFromString('simple msg')
@@ -1,9 +1,13 @@
1
1
  import spawn from './spawner.js'
2
2
  import type { TestSetup } from '../index.js'
3
- import type { Muxer, MuxerOptions } from '@libp2p/interfaces/stream-muxer'
3
+ import type { StreamMuxerFactory, StreamMuxerInit, StreamMuxer } from '@libp2p/interfaces/stream-muxer'
4
+ import { Components } from '@libp2p/interfaces/components'
4
5
 
5
- export default (common: TestSetup<Muxer, MuxerOptions>) => {
6
- const createMuxer = async (opts?: MuxerOptions) => await common.setup(opts)
6
+ export default (common: TestSetup<StreamMuxerFactory>) => {
7
+ const createMuxer = async (init?: StreamMuxerInit): Promise<StreamMuxer> => {
8
+ const factory = await common.setup()
9
+ return factory.createStreamMuxer(new Components(), init)
10
+ }
7
11
 
8
12
  describe('stress test', () => {
9
13
  it('1 stream with 1 msg', async () => await spawn(createMuxer, 1, 1))
@@ -10,16 +10,16 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
10
10
  import drain from 'it-drain'
11
11
  import type { TestSetup } from '../index.js'
12
12
  import type { Transport, Listener, Upgrader } from '@libp2p/interfaces/transport'
13
- import type { TransportTestFixtures, SetupArgs, Connector } from './index.js'
13
+ import type { TransportTestFixtures, Connector } from './index.js'
14
14
  import type { Multiaddr } from '@multiformats/multiaddr'
15
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
15
+ import type { Registrar } from '@libp2p/interfaces/registrar'
16
16
 
17
- export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
17
+ export default (common: TestSetup<TransportTestFixtures>) => {
18
18
  describe('dial', () => {
19
19
  let upgrader: Upgrader
20
20
  let registrar: Registrar
21
21
  let addrs: Multiaddr[]
22
- let transport: Transport<any, any>
22
+ let transport: Transport
23
23
  let connector: Connector
24
24
  let listener: Listener
25
25
 
@@ -29,7 +29,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
29
29
  registrar
30
30
  });
31
31
 
32
- ({ addrs, transport, connector } = await common.setup({ upgrader }))
32
+ ({ addrs, transport, connector } = await common.setup())
33
33
  })
34
34
 
35
35
  after(async () => {
@@ -37,7 +37,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
37
37
  })
38
38
 
39
39
  beforeEach(async () => {
40
- listener = transport.createListener({})
40
+ listener = transport.createListener({
41
+ upgrader
42
+ })
41
43
  return await listener.listen(addrs[0])
42
44
  })
43
45
 
@@ -49,17 +51,19 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
49
51
 
50
52
  it('simple', async () => {
51
53
  const protocol = '/hello/1.0.0'
52
- void registrar.handle(protocol, (evt) => {
54
+ void registrar.handle(protocol, (data) => {
53
55
  void pipe([
54
56
  uint8ArrayFromString('hey')
55
57
  ],
56
- evt.detail.stream,
58
+ data.stream,
57
59
  drain
58
60
  )
59
61
  })
60
62
 
61
63
  const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
62
- const conn = await transport.dial(addrs[0])
64
+ const conn = await transport.dial(addrs[0], {
65
+ upgrader
66
+ })
63
67
 
64
68
  const { stream } = await conn.newStream([protocol])
65
69
  const result = await all(stream.source)
@@ -73,7 +77,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
73
77
 
74
78
  it('can close connections', async () => {
75
79
  const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
76
- const conn = await transport.dial(addrs[0])
80
+ const conn = await transport.dial(addrs[0], {
81
+ upgrader
82
+ })
77
83
 
78
84
  expect(upgradeSpy.callCount).to.equal(1)
79
85
  await expect(upgradeSpy.getCall(0).returnValue).to.eventually.equal(conn)
@@ -84,7 +90,9 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
84
90
  it('to non existent listener', async () => {
85
91
  const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
86
92
 
87
- await expect(transport.dial(addrs[1])).to.eventually.be.rejected()
93
+ await expect(transport.dial(addrs[1], {
94
+ upgrader
95
+ })).to.eventually.be.rejected()
88
96
  expect(upgradeSpy.callCount).to.equal(0)
89
97
  })
90
98
 
@@ -92,7 +100,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
92
100
  const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
93
101
  const controller = new AbortController()
94
102
  controller.abort()
95
- const conn = transport.dial(addrs[0], { signal: controller.signal })
103
+ const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader })
96
104
 
97
105
  await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code)
98
106
  expect(upgradeSpy.callCount).to.equal(0)
@@ -105,7 +113,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
105
113
  connector.delay(100)
106
114
 
107
115
  const controller = new AbortController()
108
- const conn = transport.dial(addrs[0], { signal: controller.signal })
116
+ const conn = transport.dial(addrs[0], { signal: controller.signal, upgrader })
109
117
  setTimeout(() => controller.abort(), 50)
110
118
 
111
119
  await expect(conn).to.eventually.be.rejected().with.property('code', AbortError.code)
@@ -1,17 +1,16 @@
1
1
  import { expect } from 'aegir/utils/chai.js'
2
- import { mockUpgrader } from '../mocks/upgrader.js'
3
2
  import type { TestSetup } from '../index.js'
4
3
  import type { Transport } from '@libp2p/interfaces/transport'
5
- import type { TransportTestFixtures, SetupArgs } from './index.js'
4
+ import type { TransportTestFixtures } from './index.js'
6
5
  import type { Multiaddr } from '@multiformats/multiaddr'
7
6
 
8
- export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
7
+ export default (common: TestSetup<TransportTestFixtures>) => {
9
8
  describe('filter', () => {
10
9
  let addrs: Multiaddr[]
11
- let transport: Transport<any, any>
10
+ let transport: Transport
12
11
 
13
12
  before(async () => {
14
- ({ addrs, transport } = await common.setup({ upgrader: mockUpgrader() }))
13
+ ({ addrs, transport } = await common.setup())
15
14
  })
16
15
 
17
16
  after(async () => {
@@ -2,7 +2,7 @@ import dial from './dial-test.js'
2
2
  import listen from './listen-test.js'
3
3
  import filter from './filter-test.js'
4
4
  import type { TestSetup } from '../index.js'
5
- import type { Transport, Upgrader } from '@libp2p/interfaces/transport'
5
+ import type { Transport } from '@libp2p/interfaces/transport'
6
6
  import type { Multiaddr } from '@multiformats/multiaddr'
7
7
 
8
8
  export interface Connector {
@@ -12,15 +12,11 @@ export interface Connector {
12
12
 
13
13
  export interface TransportTestFixtures {
14
14
  addrs: Multiaddr[]
15
- transport: Transport<{}, {}>
15
+ transport: Transport
16
16
  connector: Connector
17
17
  }
18
18
 
19
- export interface SetupArgs {
20
- upgrader: Upgrader
21
- }
22
-
23
- export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
19
+ export default (common: TestSetup<TransportTestFixtures>) => {
24
20
  describe('interface-transport', () => {
25
21
  dial(common)
26
22
  listen(common)