@libp2p/interface-compliance-tests 1.1.15 → 1.1.18

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 (135) hide show
  1. package/dist/src/connection-encrypter/index.d.ts +2 -2
  2. package/dist/src/connection-encrypter/index.d.ts.map +1 -1
  3. package/dist/src/connection-encrypter/index.js.map +1 -1
  4. package/dist/src/mocks/connection-encrypter.d.ts +3 -0
  5. package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
  6. package/dist/src/mocks/connection-encrypter.js +93 -0
  7. package/dist/src/mocks/connection-encrypter.js.map +1 -0
  8. package/dist/src/mocks/connection-manager.d.ts +6 -3
  9. package/dist/src/mocks/connection-manager.d.ts.map +1 -1
  10. package/dist/src/mocks/connection-manager.js +9 -0
  11. package/dist/src/mocks/connection-manager.js.map +1 -1
  12. package/dist/src/mocks/connection.d.ts +1 -1
  13. package/dist/src/mocks/connection.d.ts.map +1 -1
  14. package/dist/src/mocks/connection.js +68 -49
  15. package/dist/src/mocks/connection.js.map +1 -1
  16. package/dist/src/mocks/duplex.d.ts +3 -0
  17. package/dist/src/mocks/duplex.d.ts.map +1 -0
  18. package/dist/src/mocks/duplex.js +7 -0
  19. package/dist/src/mocks/duplex.js.map +1 -0
  20. package/dist/src/mocks/index.d.ts +2 -1
  21. package/dist/src/mocks/index.d.ts.map +1 -1
  22. package/dist/src/mocks/index.js +2 -1
  23. package/dist/src/mocks/index.js.map +1 -1
  24. package/dist/src/mocks/multiaddr-connection.d.ts +12 -0
  25. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -1
  26. package/dist/src/mocks/multiaddr-connection.js +37 -0
  27. package/dist/src/mocks/multiaddr-connection.js.map +1 -1
  28. package/dist/src/mocks/muxer.d.ts +8 -2
  29. package/dist/src/mocks/muxer.d.ts.map +1 -1
  30. package/dist/src/mocks/muxer.js +18 -9
  31. package/dist/src/mocks/muxer.js.map +1 -1
  32. package/dist/src/mocks/registrar.d.ts +6 -6
  33. package/dist/src/mocks/registrar.d.ts.map +1 -1
  34. package/dist/src/mocks/registrar.js +23 -33
  35. package/dist/src/mocks/registrar.js.map +1 -1
  36. package/dist/src/mocks/upgrader.d.ts +10 -2
  37. package/dist/src/mocks/upgrader.d.ts.map +1 -1
  38. package/dist/src/mocks/upgrader.js +28 -23
  39. package/dist/src/mocks/upgrader.js.map +1 -1
  40. package/dist/src/pubsub/api.d.ts +3 -4
  41. package/dist/src/pubsub/api.d.ts.map +1 -1
  42. package/dist/src/pubsub/api.js +8 -3
  43. package/dist/src/pubsub/api.js.map +1 -1
  44. package/dist/src/pubsub/connection-handlers.d.ts +3 -4
  45. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  46. package/dist/src/pubsub/connection-handlers.js +41 -16
  47. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  48. package/dist/src/pubsub/emit-self.d.ts +3 -4
  49. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  50. package/dist/src/pubsub/emit-self.js +15 -6
  51. package/dist/src/pubsub/emit-self.js.map +1 -1
  52. package/dist/src/pubsub/index.d.ts +7 -11
  53. package/dist/src/pubsub/index.d.ts.map +1 -1
  54. package/dist/src/pubsub/index.js.map +1 -1
  55. package/dist/src/pubsub/messages.d.ts +3 -4
  56. package/dist/src/pubsub/messages.d.ts.map +1 -1
  57. package/dist/src/pubsub/messages.js +13 -6
  58. package/dist/src/pubsub/messages.js.map +1 -1
  59. package/dist/src/pubsub/multiple-nodes.d.ts +3 -4
  60. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  61. package/dist/src/pubsub/multiple-nodes.js +57 -24
  62. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  63. package/dist/src/pubsub/two-nodes.d.ts +3 -4
  64. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  65. package/dist/src/pubsub/two-nodes.js +16 -7
  66. package/dist/src/pubsub/two-nodes.js.map +1 -1
  67. package/dist/src/pubsub/utils.d.ts +2 -2
  68. package/dist/src/pubsub/utils.js +1 -1
  69. package/dist/src/pubsub/utils.js.map +1 -1
  70. package/dist/src/stream-muxer/base-test.d.ts +2 -2
  71. package/dist/src/stream-muxer/base-test.d.ts.map +1 -1
  72. package/dist/src/stream-muxer/base-test.js +17 -8
  73. package/dist/src/stream-muxer/base-test.js.map +1 -1
  74. package/dist/src/stream-muxer/close-test.d.ts +2 -2
  75. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  76. package/dist/src/stream-muxer/close-test.js +9 -4
  77. package/dist/src/stream-muxer/close-test.js.map +1 -1
  78. package/dist/src/stream-muxer/index.d.ts +2 -2
  79. package/dist/src/stream-muxer/index.d.ts.map +1 -1
  80. package/dist/src/stream-muxer/index.js.map +1 -1
  81. package/dist/src/stream-muxer/mega-stress-test.d.ts +2 -2
  82. package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -1
  83. package/dist/src/stream-muxer/mega-stress-test.js +5 -1
  84. package/dist/src/stream-muxer/mega-stress-test.js.map +1 -1
  85. package/dist/src/stream-muxer/spawner.d.ts +2 -2
  86. package/dist/src/stream-muxer/spawner.d.ts.map +1 -1
  87. package/dist/src/stream-muxer/spawner.js.map +1 -1
  88. package/dist/src/stream-muxer/stress-test.d.ts +2 -2
  89. package/dist/src/stream-muxer/stress-test.d.ts.map +1 -1
  90. package/dist/src/stream-muxer/stress-test.js +5 -1
  91. package/dist/src/stream-muxer/stress-test.js.map +1 -1
  92. package/dist/src/transport/dial-test.d.ts +2 -2
  93. package/dist/src/transport/dial-test.d.ts.map +1 -1
  94. package/dist/src/transport/dial-test.js +17 -9
  95. package/dist/src/transport/dial-test.js.map +1 -1
  96. package/dist/src/transport/filter-test.d.ts +2 -2
  97. package/dist/src/transport/filter-test.d.ts.map +1 -1
  98. package/dist/src/transport/filter-test.js +1 -2
  99. package/dist/src/transport/filter-test.js.map +1 -1
  100. package/dist/src/transport/index.d.ts +3 -6
  101. package/dist/src/transport/index.d.ts.map +1 -1
  102. package/dist/src/transport/index.js.map +1 -1
  103. package/dist/src/transport/listen-test.d.ts +2 -2
  104. package/dist/src/transport/listen-test.d.ts.map +1 -1
  105. package/dist/src/transport/listen-test.js +34 -17
  106. package/dist/src/transport/listen-test.js.map +1 -1
  107. package/package.json +8 -8
  108. package/src/connection-encrypter/index.ts +3 -3
  109. package/src/mocks/connection-encrypter.ts +110 -0
  110. package/src/mocks/connection-manager.ts +15 -3
  111. package/src/mocks/connection.ts +104 -57
  112. package/src/mocks/duplex.ts +8 -0
  113. package/src/mocks/index.ts +2 -1
  114. package/src/mocks/multiaddr-connection.ts +47 -0
  115. package/src/mocks/muxer.ts +29 -19
  116. package/src/mocks/registrar.ts +30 -40
  117. package/src/mocks/upgrader.ts +32 -22
  118. package/src/pubsub/api.ts +16 -11
  119. package/src/pubsub/connection-handlers.ts +64 -39
  120. package/src/pubsub/emit-self.ts +21 -13
  121. package/src/pubsub/index.ts +7 -11
  122. package/src/pubsub/messages.ts +23 -14
  123. package/src/pubsub/multiple-nodes.ts +75 -42
  124. package/src/pubsub/two-nodes.ts +29 -20
  125. package/src/pubsub/utils.ts +4 -4
  126. package/src/stream-muxer/base-test.ts +19 -10
  127. package/src/stream-muxer/close-test.ts +11 -6
  128. package/src/stream-muxer/index.ts +2 -2
  129. package/src/stream-muxer/mega-stress-test.ts +7 -3
  130. package/src/stream-muxer/spawner.ts +2 -2
  131. package/src/stream-muxer/stress-test.ts +7 -3
  132. package/src/transport/dial-test.ts +21 -13
  133. package/src/transport/filter-test.ts +4 -5
  134. package/src/transport/index.ts +3 -7
  135. package/src/transport/listen-test.ts +39 -22
package/src/pubsub/api.ts CHANGED
@@ -8,17 +8,18 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
8
8
  import delay from 'delay'
9
9
  import { CustomEvent } from '@libp2p/interfaces'
10
10
  import type { TestSetup } from '../index.js'
11
- import type { PubSub, PubSubOptions } from '@libp2p/interfaces/pubsub'
12
- import type { EventMap } from './index.js'
13
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
14
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
11
+ import type { PubSub } from '@libp2p/interfaces/pubsub'
12
+ import type { PubSubArgs } from './index.js'
13
+ import type { Registrar } from '@libp2p/interfaces/registrar'
14
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
15
+ import { Components } from '@libp2p/interfaces/components'
15
16
 
16
17
  const topic = 'foo'
17
18
  const data = uint8ArrayFromString('bar')
18
19
 
19
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
20
+ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
20
21
  describe('pubsub api', () => {
21
- let pubsub: PubSub<EventMap>
22
+ let pubsub: PubSub
22
23
  let registrar: Registrar
23
24
 
24
25
  // Create pubsub router
@@ -26,9 +27,13 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
26
27
  registrar = mockRegistrar()
27
28
 
28
29
  pubsub = await common.setup({
29
- peerId: await createEd25519PeerId(),
30
- registrar,
31
- emitSelf: true
30
+ components: new Components({
31
+ peerId: await createEd25519PeerId(),
32
+ registrar
33
+ }),
34
+ init: {
35
+ emitSelf: true
36
+ }
32
37
  })
33
38
  })
34
39
 
@@ -75,7 +80,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
75
80
  await pWaitFor(() => pubsub.getTopics().length === 0)
76
81
 
77
82
  // Publish to guarantee the handler is not called
78
- pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }))
83
+ pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
79
84
 
80
85
  // handlers are called async
81
86
  await delay(100)
@@ -93,7 +98,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
93
98
  expect(msg).to.not.eql(undefined)
94
99
  defer.resolve()
95
100
  })
96
- pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }))
101
+ pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
97
102
  await defer.promise
98
103
 
99
104
  await pubsub.stop()
@@ -8,16 +8,17 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
8
8
  import { connectPeers, mockRegistrar } from '../mocks/registrar.js'
9
9
  import { CustomEvent } from '@libp2p/interfaces'
10
10
  import type { TestSetup } from '../index.js'
11
- import type { Message, PubSubOptions } from '@libp2p/interfaces/pubsub'
12
- import type { EventMap } from './index.js'
13
- import type { PeerId } from '@libp2p/interfaces/src/peer-id'
14
- import type { Registrar } from '@libp2p/interfaces/src/registrar'
15
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
16
-
17
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
11
+ import type { Message } from '@libp2p/interfaces/pubsub'
12
+ import type { PubSubArgs } from './index.js'
13
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
14
+ import type { Registrar } from '@libp2p/interfaces/registrar'
15
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
16
+ import { Components } from '@libp2p/interfaces/components'
17
+
18
+ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
18
19
  describe('pubsub connection handlers', () => {
19
- let psA: PubsubBaseProtocol<EventMap>
20
- let psB: PubsubBaseProtocol<EventMap>
20
+ let psA: PubSubBaseProtocol
21
+ let psB: PubSubBaseProtocol
21
22
  let peerA: PeerId
22
23
  let peerB: PeerId
23
24
  let registrarA: Registrar
@@ -33,12 +34,18 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
33
34
  registrarB = mockRegistrar()
34
35
 
35
36
  psA = await common.setup({
36
- peerId: peerA,
37
- registrar: registrarA
37
+ components: new Components({
38
+ peerId: peerA,
39
+ registrar: registrarA
40
+ }),
41
+ init: {}
38
42
  })
39
43
  psB = await common.setup({
40
- peerId: peerB,
41
- registrar: registrarB
44
+ components: new Components({
45
+ peerId: peerB,
46
+ registrar: registrarB
47
+ }),
48
+ init: {}
42
49
  })
43
50
 
44
51
  // Start pubsub
@@ -97,8 +104,8 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
97
104
  })
98
105
 
99
106
  describe('pubsub started before connect', () => {
100
- let psA: PubsubBaseProtocol<EventMap>
101
- let psB: PubsubBaseProtocol<EventMap>
107
+ let psA: PubSubBaseProtocol
108
+ let psB: PubSubBaseProtocol
102
109
  let peerA: PeerId
103
110
  let peerB: PeerId
104
111
  let registrarA: Registrar
@@ -113,12 +120,18 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
113
120
  registrarB = mockRegistrar()
114
121
 
115
122
  psA = await common.setup({
116
- peerId: peerA,
117
- registrar: registrarA
123
+ components: new Components({
124
+ peerId: peerA,
125
+ registrar: registrarA
126
+ }),
127
+ init: {}
118
128
  })
119
129
  psB = await common.setup({
120
- peerId: peerB,
121
- registrar: registrarB
130
+ components: new Components({
131
+ peerId: peerB,
132
+ registrar: registrarB
133
+ }),
134
+ init: {}
122
135
  })
123
136
 
124
137
  await psA.start()
@@ -177,15 +190,15 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
177
190
  const subscribedPeers = psB.getSubscribers(topic)
178
191
  return subscribedPeers.map(p => p.toString()).includes(peerA.toString())
179
192
  })
180
- void psB.dispatchEvent(new CustomEvent(topic, { detail: data }))
193
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
181
194
 
182
195
  await defer.promise
183
196
  })
184
197
  })
185
198
 
186
199
  describe('pubsub started after connect', () => {
187
- let psA: PubsubBaseProtocol<EventMap>
188
- let psB: PubsubBaseProtocol<EventMap>
200
+ let psA: PubSubBaseProtocol
201
+ let psB: PubSubBaseProtocol
189
202
  let peerA: PeerId
190
203
  let peerB: PeerId
191
204
  let registrarA: Registrar
@@ -200,12 +213,18 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
200
213
  registrarB = mockRegistrar()
201
214
 
202
215
  psA = await common.setup({
203
- peerId: peerA,
204
- registrar: registrarA
216
+ components: new Components({
217
+ peerId: peerA,
218
+ registrar: registrarA
219
+ }),
220
+ init: {}
205
221
  })
206
222
  psB = await common.setup({
207
- peerId: peerB,
208
- registrar: registrarB
223
+ components: new Components({
224
+ peerId: peerB,
225
+ registrar: registrarB
226
+ }),
227
+ init: {}
209
228
  })
210
229
  })
211
230
 
@@ -275,15 +294,15 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
275
294
  const subscribedPeers = psB.getSubscribers(topic)
276
295
  return subscribedPeers.map(p => p.toString()).includes(peerA.toString())
277
296
  })
278
- void psB.dispatchEvent(new CustomEvent(topic, { detail: data }))
297
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
279
298
 
280
299
  await defer.promise
281
300
  })
282
301
  })
283
302
 
284
303
  describe('pubsub with intermittent connections', () => {
285
- let psA: PubsubBaseProtocol<EventMap>
286
- let psB: PubsubBaseProtocol<EventMap>
304
+ let psA: PubSubBaseProtocol
305
+ let psB: PubSubBaseProtocol
287
306
  let peerA: PeerId
288
307
  let peerB: PeerId
289
308
  let registrarA: Registrar
@@ -298,12 +317,18 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
298
317
  registrarB = mockRegistrar()
299
318
 
300
319
  psA = await common.setup({
301
- peerId: peerA,
302
- registrar: registrarA
320
+ components: new Components({
321
+ peerId: peerA,
322
+ registrar: registrarA
323
+ }),
324
+ init: {}
303
325
  })
304
326
  psB = await common.setup({
305
- peerId: peerB,
306
- registrar: registrarB
327
+ components: new Components({
328
+ peerId: peerB,
329
+ registrar: registrarB
330
+ }),
331
+ init: {}
307
332
  })
308
333
 
309
334
  await psA.start()
@@ -354,7 +379,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
354
379
  const subscribedPeers = psB.getSubscribers(topic)
355
380
  return subscribedPeers.map(p => p.toString()).includes(peerA.toString())
356
381
  })
357
- void psB.dispatchEvent(new CustomEvent(topic, { detail: data }))
382
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
358
383
 
359
384
  await defer1.promise
360
385
 
@@ -387,7 +412,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
387
412
  return subscribedPeers.toString().includes(peerA.toString())
388
413
  })
389
414
 
390
- void psB.dispatchEvent(new CustomEvent(topic, { detail: data }))
415
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
391
416
 
392
417
  await defer2.promise
393
418
  })
@@ -451,8 +476,8 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
451
476
  })
452
477
 
453
478
  // Verify messages go both ways
454
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('message-from-a-1') }))
455
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('message-from-b-1') }))
479
+ void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('message-from-a-1') }))
480
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('message-from-b-1') }))
456
481
  await pWaitFor(() => {
457
482
  return aReceivedFirstMessageFromB && bReceivedFirstMessageFromA
458
483
  })
@@ -465,8 +490,8 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
465
490
  await pWaitFor(() => psAConnUpdateSpy.callCount === 1)
466
491
 
467
492
  // Verify messages go both ways after the disconnect
468
- void psA.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('message-from-a-2') }))
469
- void psB.dispatchEvent(new CustomEvent(topic, { detail: uint8ArrayFromString('message-from-b-2') }))
493
+ void psA.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('message-from-a-2') }))
494
+ void psB.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: uint8ArrayFromString('message-from-b-2') }))
470
495
  await pWaitFor(() => {
471
496
  return aReceivedSecondMessageFromB && bReceivedSecondMessageFromA
472
497
  })
@@ -5,24 +5,28 @@ import { createEd25519PeerId } from '@libp2p/peer-id-factory'
5
5
  import { mockRegistrar } from '../mocks/registrar.js'
6
6
  import { CustomEvent } from '@libp2p/interfaces'
7
7
  import type { TestSetup } from '../index.js'
8
- import type { PubSubOptions } from '@libp2p/interfaces/pubsub'
9
- import type { EventMap } from './index.js'
10
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
8
+ import type { PubSubArgs } from './index.js'
9
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
10
+ import { Components } from '@libp2p/interfaces/components'
11
11
 
12
12
  const topic = 'foo'
13
13
  const data = uint8ArrayFromString('bar')
14
14
  const shouldNotHappen = () => expect.fail()
15
15
 
16
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
16
+ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
17
17
  describe('emit self', () => {
18
- let pubsub: PubsubBaseProtocol<EventMap>
18
+ let pubsub: PubSubBaseProtocol
19
19
 
20
20
  describe('enabled', () => {
21
21
  before(async () => {
22
22
  pubsub = await common.setup({
23
- peerId: await createEd25519PeerId(),
24
- registrar: mockRegistrar(),
25
- emitSelf: true
23
+ components: new Components({
24
+ peerId: await createEd25519PeerId(),
25
+ registrar: mockRegistrar()
26
+ }),
27
+ init: {
28
+ emitSelf: true
29
+ }
26
30
  })
27
31
  })
28
32
 
@@ -42,7 +46,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
42
46
  once: true
43
47
  }))
44
48
 
45
- void pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }))
49
+ void pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
46
50
 
47
51
  return await promise
48
52
  })
@@ -51,9 +55,13 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
51
55
  describe('disabled', () => {
52
56
  before(async () => {
53
57
  pubsub = await common.setup({
54
- peerId: await createEd25519PeerId(),
55
- registrar: mockRegistrar(),
56
- emitSelf: false
58
+ components: new Components({
59
+ peerId: await createEd25519PeerId(),
60
+ registrar: mockRegistrar()
61
+ }),
62
+ init: {
63
+ emitSelf: false
64
+ }
57
65
  })
58
66
  })
59
67
 
@@ -73,7 +81,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
73
81
  once: true
74
82
  })
75
83
 
76
- void pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }))
84
+ void pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
77
85
 
78
86
  // Wait 1 second to guarantee that self is not noticed
79
87
  return await new Promise((resolve) => setTimeout(resolve, 1000))
@@ -5,20 +5,16 @@ import connectionHandlersTest from './connection-handlers.js'
5
5
  import twoNodesTest from './two-nodes.js'
6
6
  import multipleNodesTest from './multiple-nodes.js'
7
7
  import type { TestSetup } from '../index.js'
8
- import type { Message, PubSubEvents, PubSubOptions } from '@libp2p/interfaces/pubsub'
9
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
8
+ import type { PubSubInit } from '@libp2p/interfaces/pubsub'
9
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
10
+ import type { Components } from '@libp2p/interfaces/components'
10
11
 
11
- export interface EventMap extends PubSubEvents {
12
- 'topic': CustomEvent<Message>
13
- 'foo': CustomEvent<Message>
14
- 'test-topic': CustomEvent<Message>
15
- 'reconnect-channel': CustomEvent<Message>
16
- 'Z': CustomEvent<Message>
17
- 'Za': CustomEvent<Message>
18
- 'Zb': CustomEvent<Message>
12
+ export interface PubSubArgs {
13
+ components: Components
14
+ init: PubSubInit
19
15
  }
20
16
 
21
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
17
+ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
22
18
  describe('interface-pubsub compliance tests', () => {
23
19
  apiTest(common)
24
20
  emitSelfTest(common)
@@ -10,23 +10,32 @@ import delay from 'delay'
10
10
  import pWaitFor from 'p-wait-for'
11
11
  import { CustomEvent } from '@libp2p/interfaces'
12
12
  import type { TestSetup } from '../index.js'
13
- import type { PubSubOptions, RPC } from '@libp2p/interfaces/pubsub'
14
- import type { EventMap } from './index.js'
15
- import type { PubsubBaseProtocol } from '@libp2p/pubsub'
13
+ import type { PubSubRPC } from '@libp2p/interfaces/pubsub'
14
+ import type { PubSubArgs } from './index.js'
15
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
16
+ import { Components } from '@libp2p/interfaces/components'
17
+ import type { PeerId } from '@libp2p/interfaces/peer-id'
16
18
 
17
19
  const topic = 'foo'
18
20
  const data = uint8ArrayFromString('bar')
19
21
 
20
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
22
+ export default (common: TestSetup<PubSubBaseProtocol, PubSubArgs>) => {
21
23
  describe('messages', () => {
22
- let pubsub: PubsubBaseProtocol<EventMap>
24
+ let peerId: PeerId
25
+ let pubsub: PubSubBaseProtocol
23
26
 
24
27
  // Create pubsub router
25
28
  beforeEach(async () => {
29
+ peerId = await createEd25519PeerId()
30
+
26
31
  pubsub = await common.setup({
27
- peerId: await createEd25519PeerId(),
28
- registrar: mockRegistrar(),
29
- emitSelf: true
32
+ components: new Components({
33
+ peerId,
34
+ registrar: mockRegistrar()
35
+ }),
36
+ init: {
37
+ emitSelf: true
38
+ }
30
39
  })
31
40
  await pubsub.start()
32
41
  })
@@ -42,7 +51,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
42
51
 
43
52
  const spy = sinon.spy(pubsub, 'publishMessage')
44
53
 
45
- await pubsub.dispatchEvent(new CustomEvent(topic, { detail: data }))
54
+ await pubsub.dispatchEvent(new CustomEvent<Uint8Array>(topic, { detail: data }))
46
55
 
47
56
  await pWaitFor(async () => {
48
57
  return spy.callCount === 1
@@ -52,8 +61,8 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
52
61
 
53
62
  const [from, messageToEmit] = spy.getCall(0).args
54
63
 
55
- expect(from.toString()).to.equal(pubsub.peerId.toString())
56
- expect(messageToEmit.seqno).to.not.eql(undefined)
64
+ expect(from.toString()).to.equal(peerId.toString())
65
+ expect(messageToEmit.sequenceNumber).to.not.eql(undefined)
57
66
  expect(messageToEmit.key).to.not.eql(undefined)
58
67
  expect(messageToEmit.signature).to.not.eql(undefined)
59
68
  })
@@ -66,12 +75,12 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
66
75
  id: await createEd25519PeerId(),
67
76
  protocol: 'test'
68
77
  })
69
- const rpc: RPC = {
78
+ const rpc: PubSubRPC = {
70
79
  subscriptions: [],
71
80
  messages: [{
72
81
  from: peerStream.id.toBytes(),
73
82
  data,
74
- seqno: await noSignMsgId(data),
83
+ sequenceNumber: await noSignMsgId(data),
75
84
  topic: topic
76
85
  }]
77
86
  }
@@ -97,7 +106,7 @@ export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>)
97
106
  protocol: 'test'
98
107
  })
99
108
 
100
- const rpc: RPC = {
109
+ const rpc: PubSubRPC = {
101
110
  subscriptions: [],
102
111
  messages: [{
103
112
  from: peerStream.id.toBytes(),
@@ -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 { 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, 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
28
+ let psB: PubSubBaseProtocol
29
+ let psC: PubSubBaseProtocol
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
280
+ let psB: PubSubBaseProtocol
281
+ let psC: PubSubBaseProtocol
282
+ let psD: PubSubBaseProtocol
283
+ let psE: PubSubBaseProtocol
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