@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
@@ -1,36 +1,46 @@
1
1
  import { expect } from 'aegir/utils/chai.js'
2
2
  import { mockConnection } from './connection.js'
3
- import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport'
3
+ import type { Upgrader, MultiaddrConnection, UpgraderEvents } from '@libp2p/interfaces/transport'
4
4
  import type { Registrar } from '@libp2p/interfaces/registrar'
5
+ import { EventEmitter } from '@libp2p/interfaces'
5
6
 
6
- export interface MockUpgraderOptions {
7
+ export interface MockUpgraderInit {
7
8
  registrar?: Registrar
8
9
  }
9
10
 
10
- export function mockUpgrader (options: MockUpgraderOptions = {}) {
11
- const ensureProps = (multiaddrConnection: MultiaddrConnection) => {
12
- ['sink', 'source', 'remoteAddr', 'timeline', 'close'].forEach(prop => {
13
- expect(multiaddrConnection).to.have.property(prop)
11
+ function ensureProps (multiaddrConnection: MultiaddrConnection) {
12
+ ['sink', 'source', 'remoteAddr', 'timeline', 'close'].forEach(prop => {
13
+ expect(multiaddrConnection).to.have.property(prop)
14
+ })
15
+ return multiaddrConnection
16
+ }
17
+
18
+ class MockUpgrader extends EventEmitter<UpgraderEvents> implements Upgrader {
19
+ private readonly registrar?: Registrar
20
+
21
+ constructor (init: MockUpgraderInit = {}) {
22
+ super()
23
+
24
+ this.registrar = init.registrar
25
+ }
26
+
27
+ async upgradeOutbound (multiaddrConnection: MultiaddrConnection) {
28
+ ensureProps(multiaddrConnection)
29
+ return mockConnection(multiaddrConnection, {
30
+ direction: 'outbound',
31
+ registrar: this.registrar
14
32
  })
15
- return multiaddrConnection
16
33
  }
17
34
 
18
- const upgrader: Upgrader = {
19
- async upgradeOutbound (multiaddrConnection) {
20
- ensureProps(multiaddrConnection)
21
- return mockConnection(multiaddrConnection, {
22
- direction: 'outbound',
23
- registrar: options.registrar
24
- })
25
- },
26
- async upgradeInbound (multiaddrConnection) {
27
- ensureProps(multiaddrConnection)
28
- return mockConnection(multiaddrConnection, {
29
- direction: 'inbound',
30
- registrar: options.registrar
31
- })
32
- }
35
+ async upgradeInbound (multiaddrConnection: MultiaddrConnection) {
36
+ ensureProps(multiaddrConnection)
37
+ return mockConnection(multiaddrConnection, {
38
+ direction: 'inbound',
39
+ registrar: this.registrar
40
+ })
33
41
  }
42
+ }
34
43
 
35
- return upgrader
44
+ export function mockUpgrader (init: MockUpgraderInit = {}) {
45
+ return new MockUpgrader(init)
36
46
  }
package/src/pubsub/api.ts CHANGED
@@ -8,15 +8,16 @@ 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 { EventMap, 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<EventMap>, PubSubArgs>) => {
20
21
  describe('pubsub api', () => {
21
22
  let pubsub: PubSub<EventMap>
22
23
  let registrar: Registrar
@@ -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 { EventMap, 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<EventMap>, PubSubArgs>) => {
18
19
  describe('pubsub connection handlers', () => {
19
- let psA: PubsubBaseProtocol<EventMap>
20
- let psB: PubsubBaseProtocol<EventMap>
20
+ let psA: PubSubBaseProtocol<EventMap>
21
+ let psB: PubSubBaseProtocol<EventMap>
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<EventMap>
108
+ let psB: PubSubBaseProtocol<EventMap>
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<EventMap>
201
+ let psB: PubSubBaseProtocol<EventMap>
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<EventMap>
305
+ let psB: PubSubBaseProtocol<EventMap>
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 { EventMap, 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<EventMap>, PubSubArgs>) => {
17
17
  describe('emit self', () => {
18
- let pubsub: PubsubBaseProtocol<EventMap>
18
+ let pubsub: PubSubBaseProtocol<EventMap>
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,8 +5,9 @@ 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 { Message, PubSubEvents, PubSubInit } from '@libp2p/interfaces/pubsub'
9
+ import type { PubSubBaseProtocol } from '@libp2p/pubsub'
10
+ import type { Components } from '@libp2p/interfaces/components'
10
11
 
11
12
  export interface EventMap extends PubSubEvents {
12
13
  'topic': CustomEvent<Message>
@@ -18,7 +19,12 @@ export interface EventMap extends PubSubEvents {
18
19
  'Zb': CustomEvent<Message>
19
20
  }
20
21
 
21
- export default (common: TestSetup<PubsubBaseProtocol<EventMap>, PubSubOptions>) => {
22
+ export interface PubSubArgs {
23
+ components: Components
24
+ init: PubSubInit
25
+ }
26
+
27
+ export default (common: TestSetup<PubSubBaseProtocol<EventMap>, PubSubArgs>) => {
22
28
  describe('interface-pubsub compliance tests', () => {
23
29
  apiTest(common)
24
30
  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 { EventMap, 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<EventMap>, PubSubArgs>) => {
21
23
  describe('messages', () => {
22
- let pubsub: PubsubBaseProtocol<EventMap>
24
+ let peerId: PeerId
25
+ let pubsub: PubSubBaseProtocol<EventMap>
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(),