@libp2p/interface-compliance-tests 1.1.0 → 1.1.4

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 (102) hide show
  1. package/dist/src/{utils/mock-connection-gater.d.ts → mocks/connection-gater.d.ts} +1 -1
  2. package/dist/src/mocks/connection-gater.d.ts.map +1 -0
  3. package/dist/src/{utils/mock-connection-gater.js → mocks/connection-gater.js} +1 -1
  4. package/dist/src/mocks/connection-gater.js.map +1 -0
  5. package/dist/src/mocks/connection-manager.d.ts +18 -0
  6. package/dist/src/mocks/connection-manager.d.ts.map +1 -0
  7. package/dist/src/mocks/connection-manager.js +22 -0
  8. package/dist/src/mocks/connection-manager.js.map +1 -0
  9. package/dist/src/mocks/connection.d.ts +8 -0
  10. package/dist/src/mocks/connection.d.ts.map +1 -0
  11. package/dist/src/{utils/mock-connection.js → mocks/connection.js} +36 -3
  12. package/dist/src/mocks/connection.js.map +1 -0
  13. package/dist/src/mocks/index.d.ts +9 -0
  14. package/dist/src/mocks/index.d.ts.map +1 -0
  15. package/dist/src/mocks/index.js +8 -0
  16. package/dist/src/mocks/index.js.map +1 -0
  17. package/dist/src/{utils/mock-multiaddr-connection.d.ts → mocks/multiaddr-connection.d.ts} +2 -2
  18. package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -0
  19. package/dist/src/{utils/mock-multiaddr-connection.js → mocks/multiaddr-connection.js} +3 -3
  20. package/dist/src/mocks/multiaddr-connection.js.map +1 -0
  21. package/dist/src/{utils/mock-muxer.d.ts → mocks/muxer.d.ts} +1 -1
  22. package/dist/src/mocks/muxer.d.ts.map +1 -0
  23. package/dist/src/{utils/mock-muxer.js → mocks/muxer.js} +1 -1
  24. package/dist/src/mocks/muxer.js.map +1 -0
  25. package/dist/src/mocks/registrar.d.ts +14 -0
  26. package/dist/src/mocks/registrar.d.ts.map +1 -0
  27. package/dist/src/mocks/registrar.js +54 -0
  28. package/dist/src/mocks/registrar.js.map +1 -0
  29. package/dist/src/{utils/mock-upgrader.d.ts → mocks/upgrader.d.ts} +1 -1
  30. package/dist/src/mocks/upgrader.d.ts.map +1 -0
  31. package/dist/src/{utils/mock-upgrader.js → mocks/upgrader.js} +3 -3
  32. package/dist/src/mocks/upgrader.js.map +1 -0
  33. package/dist/src/peer-discovery/index.d.ts.map +1 -1
  34. package/dist/src/peer-discovery/index.js +5 -5
  35. package/dist/src/peer-discovery/index.js.map +1 -1
  36. package/dist/src/pubsub/api.d.ts +2 -2
  37. package/dist/src/pubsub/api.d.ts.map +1 -1
  38. package/dist/src/pubsub/api.js +6 -6
  39. package/dist/src/pubsub/api.js.map +1 -1
  40. package/dist/src/pubsub/connection-handlers.d.ts +2 -2
  41. package/dist/src/pubsub/connection-handlers.d.ts.map +1 -1
  42. package/dist/src/pubsub/connection-handlers.js +18 -9
  43. package/dist/src/pubsub/connection-handlers.js.map +1 -1
  44. package/dist/src/pubsub/emit-self.d.ts +2 -2
  45. package/dist/src/pubsub/emit-self.d.ts.map +1 -1
  46. package/dist/src/pubsub/emit-self.js +6 -2
  47. package/dist/src/pubsub/emit-self.js.map +1 -1
  48. package/dist/src/pubsub/index.d.ts +9 -3
  49. package/dist/src/pubsub/index.d.ts.map +1 -1
  50. package/dist/src/pubsub/index.js.map +1 -1
  51. package/dist/src/pubsub/messages.d.ts +2 -2
  52. package/dist/src/pubsub/messages.d.ts.map +1 -1
  53. package/dist/src/pubsub/messages.js.map +1 -1
  54. package/dist/src/pubsub/multiple-nodes.d.ts +2 -2
  55. package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -1
  56. package/dist/src/pubsub/multiple-nodes.js +58 -35
  57. package/dist/src/pubsub/multiple-nodes.js.map +1 -1
  58. package/dist/src/pubsub/two-nodes.d.ts +2 -2
  59. package/dist/src/pubsub/two-nodes.d.ts.map +1 -1
  60. package/dist/src/pubsub/two-nodes.js +44 -19
  61. package/dist/src/pubsub/two-nodes.js.map +1 -1
  62. package/dist/src/topology/topology.d.ts.map +1 -1
  63. package/dist/src/topology/topology.js +1 -10
  64. package/dist/src/topology/topology.js.map +1 -1
  65. package/dist/src/transport/listen-test.d.ts.map +1 -1
  66. package/dist/src/transport/listen-test.js +10 -7
  67. package/dist/src/transport/listen-test.js.map +1 -1
  68. package/package.json +7 -26
  69. package/src/{utils/mock-connection-gater.ts → mocks/connection-gater.ts} +0 -0
  70. package/src/mocks/connection-manager.ts +30 -0
  71. package/src/{utils/mock-connection.ts → mocks/connection.ts} +39 -4
  72. package/src/mocks/index.ts +9 -0
  73. package/src/{utils/mock-multiaddr-connection.ts → mocks/multiaddr-connection.ts} +3 -3
  74. package/src/{utils/mock-muxer.ts → mocks/muxer.ts} +0 -0
  75. package/src/mocks/registrar.ts +71 -0
  76. package/src/{utils/mock-upgrader.ts → mocks/upgrader.ts} +2 -2
  77. package/src/peer-discovery/index.ts +5 -7
  78. package/src/pubsub/api.ts +10 -11
  79. package/src/pubsub/connection-handlers.ts +22 -13
  80. package/src/pubsub/emit-self.ts +9 -5
  81. package/src/pubsub/index.ts +10 -3
  82. package/src/pubsub/messages.ts +3 -3
  83. package/src/pubsub/multiple-nodes.ts +68 -45
  84. package/src/pubsub/two-nodes.ts +48 -23
  85. package/src/topology/topology.ts +1 -14
  86. package/src/transport/listen-test.ts +10 -7
  87. package/dist/src/topology/multicodec-topology.d.ts +0 -5
  88. package/dist/src/topology/multicodec-topology.d.ts.map +0 -1
  89. package/dist/src/topology/multicodec-topology.js +0 -109
  90. package/dist/src/topology/multicodec-topology.js.map +0 -1
  91. package/dist/src/utils/mock-connection-gater.d.ts.map +0 -1
  92. package/dist/src/utils/mock-connection-gater.js.map +0 -1
  93. package/dist/src/utils/mock-connection.d.ts +0 -5
  94. package/dist/src/utils/mock-connection.d.ts.map +0 -1
  95. package/dist/src/utils/mock-connection.js.map +0 -1
  96. package/dist/src/utils/mock-multiaddr-connection.d.ts.map +0 -1
  97. package/dist/src/utils/mock-multiaddr-connection.js.map +0 -1
  98. package/dist/src/utils/mock-muxer.d.ts.map +0 -1
  99. package/dist/src/utils/mock-muxer.js.map +0 -1
  100. package/dist/src/utils/mock-upgrader.d.ts.map +0 -1
  101. package/dist/src/utils/mock-upgrader.js.map +0 -1
  102. package/src/topology/multicodec-topology.ts +0 -136
@@ -1,13 +1,10 @@
1
1
  import { expect } from 'aegir/utils/chai.js';
2
2
  import sinon from 'sinon';
3
- import * as PeerIdFactory from '@libp2p/peer-id-factory';
4
- import peers from '../utils/peers.js';
5
3
  export default (test) => {
6
4
  describe('topology', () => {
7
- let topology, id;
5
+ let topology;
8
6
  beforeEach(async () => {
9
7
  topology = await test.setup();
10
- id = await PeerIdFactory.createFromJSON(peers[0]);
11
8
  });
12
9
  afterEach(async () => {
13
10
  sinon.restore();
@@ -18,12 +15,6 @@ export default (test) => {
18
15
  expect(topology.max).to.exist();
19
16
  expect(topology.peers).to.exist();
20
17
  });
21
- it('should trigger "onDisconnect" on peer disconnected', () => {
22
- // @ts-expect-error protected property
23
- sinon.spy(topology, '_onDisconnect');
24
- topology.disconnect(id);
25
- expect(topology).to.have.nested.property('_onDisconnect.callCount', 1);
26
- });
27
18
  });
28
19
  };
29
20
  //# sourceMappingURL=topology.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../../src/topology/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,MAAM,mBAAmB,CAAA;AAKrC,eAAe,CAAC,IAAyB,EAAE,EAAE;IAC3C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,IAAI,QAAkB,EAAE,EAAU,CAAA;QAElC,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAE7B,EAAE,GAAG,MAAM,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,sCAAsC;YACtC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;YACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YAEvB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
1
+ {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../../src/topology/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,eAAe,CAAC,IAAyB,EAAE,EAAE;IAC3C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,IAAI,QAAkB,CAAA;QAEtB,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,KAAK,CAAC,OAAO,EAAE,CAAA;YACf,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"listen-test.d.ts","sourceRoot":"","sources":["../../../src/transport/listen-test.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;iCAI1C,UAAU,qBAAqB,EAAE,SAAS,CAAC;AAAnE,wBA6IC"}
1
+ {"version":3,"file":"listen-test.d.ts","sourceRoot":"","sources":["../../../src/transport/listen-test.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;iCAI1C,UAAU,qBAAqB,EAAE,SAAS,CAAC;AAAnE,wBA+IC"}
@@ -6,6 +6,7 @@ import { pipe } from 'it-pipe';
6
6
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string';
7
7
  import { isValidTick, mockUpgrader } from './utils/index.js';
8
8
  import defer from 'p-defer';
9
+ import { CustomEvent } from '@libp2p/interfaces';
9
10
  export default (common) => {
10
11
  describe('listen', () => {
11
12
  const upgrader = mockUpgrader();
@@ -78,8 +79,8 @@ export default (common) => {
78
79
  const listener = transport.createListener();
79
80
  const deferred = defer();
80
81
  let conn;
81
- listener.on('connection', (c) => {
82
- conn = c;
82
+ listener.addEventListener('connection', (evt) => {
83
+ conn = evt.detail;
83
84
  deferred.resolve();
84
85
  });
85
86
  void (async () => {
@@ -93,22 +94,24 @@ export default (common) => {
93
94
  });
94
95
  it('listening', (done) => {
95
96
  const listener = transport.createListener();
96
- listener.on('listening', () => {
97
+ listener.addEventListener('listening', () => {
97
98
  listener.close().then(done, done);
98
99
  });
99
100
  void listener.listen(addrs[0]);
100
101
  });
101
102
  it('error', (done) => {
102
103
  const listener = transport.createListener();
103
- listener.on('error', (err) => {
104
- expect(err).to.exist();
104
+ listener.addEventListener('error', (evt) => {
105
+ expect(evt.detail).to.be.an.instanceOf(Error);
105
106
  listener.close().then(done, done);
106
107
  });
107
- listener.emit('error', new Error('my err'));
108
+ listener.dispatchEvent(new CustomEvent('error', {
109
+ detail: new Error('my err')
110
+ }));
108
111
  });
109
112
  it('close', (done) => {
110
113
  const listener = transport.createListener();
111
- listener.on('close', done);
114
+ listener.addEventListener('close', () => done());
112
115
  void (async () => {
113
116
  await listener.listen(addrs[0]);
114
117
  await listener.close();
@@ -1 +1 @@
1
- {"version":3,"file":"listen-test.js","sourceRoot":"","sources":["../../../src/transport/listen-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"listen-test.js","sourceRoot":"","sources":["../../../src/transport/listen-test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/interface-compliance-tests",
3
- "version": "1.1.0",
3
+ "version": "1.1.4",
4
4
  "description": "Compliance tests for JS libp2p interfaces",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p-interfaces/tree/master/packages/libp2p-interface-compliance-tests#readme",
@@ -88,29 +88,9 @@
88
88
  "import": "./dist/src/transport/utils/index.js",
89
89
  "types": "./dist/src/transport/utils/index.d.ts"
90
90
  },
91
- "./utils/mock-connection": {
92
- "import": "./dist/src/utils/mock-connection.js",
93
- "types": "./dist/src/utils/mock-connection.d.ts"
94
- },
95
- "./utils/mock-connection-gater": {
96
- "import": "./dist/src/utils/mock-connection-gater.js",
97
- "types": "./dist/src/utils/mock-connection-gater.d.ts"
98
- },
99
- "./utils/mock-multiaddr-connection": {
100
- "import": "./dist/src/utils/mock-multiaddr-connection.js",
101
- "types": "./dist/src/utils/mock-multiaddr-connection.d.ts"
102
- },
103
- "./utils/mock-muxer": {
104
- "import": "./dist/src/utils/mock-muxer.js",
105
- "types": "./dist/src/utils/mock-muxer.d.ts"
106
- },
107
- "./utils/mock-peer-store": {
108
- "import": "./dist/src/utils/mock-peer-store.js",
109
- "types": "./dist/src/utils/mock-peer-store.d.ts"
110
- },
111
- "./utils/mock-upgrader": {
112
- "import": "./dist/src/utils/mock-upgrader.js",
113
- "types": "./dist/src/utils/mock-upgrader.d.ts"
91
+ "./mocks": {
92
+ "import": "./dist/src/mocks/index.js",
93
+ "types": "./dist/src/mocks/index.d.ts"
114
94
  },
115
95
  "./utils/peers": {
116
96
  "import": "./dist/src/utils/peers.js",
@@ -206,10 +186,10 @@
206
186
  },
207
187
  "scripts": {
208
188
  "lint": "aegir lint",
209
- "dep-check": "aegir dep-check dist/src/**/*.js",
189
+ "dep-check": "aegir dep-check dist/src/**/*.js dist/test/**/*.js",
210
190
  "build": "tsc",
211
191
  "pretest": "npm run build",
212
- "test": "aegir test -f ./dist/test/**/*.js",
192
+ "test": "aegir test -f ./dist/test/*.js -f ./dist/test/**/*.js",
213
193
  "test:chrome": "npm run test -- -t browser",
214
194
  "test:chrome-webworker": "npm run test -- -t webworker",
215
195
  "test:firefox": "npm run test -- -t browser -- --browser firefox",
@@ -234,6 +214,7 @@
234
214
  "it-pair": "^2.0.0",
235
215
  "it-pipe": "^2.0.2",
236
216
  "it-pushable": "^2.0.1",
217
+ "it-stream-types": "^1.0.4",
237
218
  "multiformats": "^9.4.10",
238
219
  "p-defer": "^4.0.0",
239
220
  "p-limit": "^4.0.0",
@@ -0,0 +1,30 @@
1
+ import { EventEmitter } from '@libp2p/interfaces'
2
+ import type { Connection } from '@libp2p/interfaces/src/connection'
3
+ import type { PeerId } from '@libp2p/interfaces/src/peer-id'
4
+ import type { ConnectionManager, ConnectionManagerEvents } from '@libp2p/interfaces/src/registrar'
5
+
6
+ class MockConnectionManager extends EventEmitter<ConnectionManagerEvents> implements ConnectionManager {
7
+ getConnection (peerId: PeerId): Connection | undefined {
8
+ throw new Error('Method not implemented.')
9
+ }
10
+
11
+ listenerCount (type: string): number {
12
+ throw new Error('Method not implemented.')
13
+ }
14
+
15
+ addEventListener<U extends 'peer:connect'>(type: U, callback: ((evt: ConnectionManagerEvents[U]) => void) | { handleEvent: (evt: ConnectionManagerEvents[U]) => void } | null, options?: boolean | AddEventListenerOptions): void {
16
+ throw new Error('Method not implemented.')
17
+ }
18
+
19
+ removeEventListener<U extends 'peer:connect'>(type: U, callback: (((evt: ConnectionManagerEvents[U]) => void) | { handleEvent: (evt: ConnectionManagerEvents[U]) => void } | null) | undefined, options?: boolean | EventListenerOptions): void {
20
+ throw new Error('Method not implemented.')
21
+ }
22
+
23
+ dispatchEvent (event: Event): boolean {
24
+ throw new Error('Method not implemented.')
25
+ }
26
+ }
27
+
28
+ export function mockConnectionManager () {
29
+ return new MockConnectionManager()
30
+ }
@@ -1,20 +1,21 @@
1
1
  import { PeerId } from '@libp2p/peer-id'
2
2
  import { createEd25519PeerId } from '@libp2p/peer-id-factory'
3
3
  import { pipe } from 'it-pipe'
4
+ import { duplexPair } from 'it-pair/duplex'
4
5
  import type { MultiaddrConnection } from '@libp2p/interfaces/transport'
5
6
  import type { Connection, Stream, Metadata, ProtocolStream } from '@libp2p/interfaces/connection'
6
7
  import type { Muxer } from '@libp2p/interfaces/stream-muxer'
8
+ import type { Duplex } from 'it-stream-types'
9
+ import { mockMuxer } from './muxer.js'
7
10
 
8
- export async function mockConnection (maConn: MultiaddrConnection, direction: 'inbound' | 'outbound', muxer: Muxer): Promise<Connection> {
11
+ export async function mockConnection (maConn: MultiaddrConnection, direction: 'inbound' | 'outbound' = 'inbound', muxer: Muxer = mockMuxer()): Promise<Connection> {
9
12
  const remoteAddr = maConn.remoteAddr
10
13
  const remotePeerIdStr = remoteAddr.getPeerId()
11
14
  const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await createEd25519PeerId()
12
-
15
+ const registry = new Map()
13
16
  const streams: Stream[] = []
14
17
  let streamId = 0
15
18
 
16
- const registry = new Map()
17
-
18
19
  void pipe(
19
20
  maConn, muxer, maConn
20
21
  )
@@ -64,3 +65,37 @@ export async function mockConnection (maConn: MultiaddrConnection, direction: 'i
64
65
  }
65
66
  }
66
67
  }
68
+
69
+ export function mockStream (stream: Duplex<Uint8Array>): Stream {
70
+ return {
71
+ ...stream,
72
+ close: () => {},
73
+ abort: () => {},
74
+ reset: () => {},
75
+ timeline: {
76
+ open: Date.now()
77
+ },
78
+ id: `stream-${Date.now()}`
79
+ }
80
+ }
81
+
82
+ export function connectionPair (): [ Connection, Connection ] {
83
+ const [d0, d1] = duplexPair<Uint8Array>()
84
+
85
+ return [
86
+ // @ts-expect-error not a complete implementation
87
+ {
88
+ newStream: async (multicodecs: string[]) => await Promise.resolve({
89
+ stream: mockStream(d0),
90
+ protocol: multicodecs[0]
91
+ })
92
+ },
93
+ // @ts-expect-error not a complete implementation
94
+ {
95
+ newStream: async (multicodecs: string[]) => await Promise.resolve({
96
+ stream: mockStream(d1),
97
+ protocol: multicodecs[0]
98
+ })
99
+ }
100
+ ]
101
+ }
@@ -0,0 +1,9 @@
1
+
2
+ export { mockConnectionGater } from './connection-gater.js'
3
+ export { mockConnectionManager } from './connection-manager.js'
4
+ export { mockConnection, mockStream, connectionPair } from './connection.js'
5
+ export { mockMultiaddrConnection } from './multiaddr-connection.js'
6
+ export { mockMuxer } from './muxer.js'
7
+ export { mockRegistrar } from './registrar.js'
8
+ export { mockUpgrader } from './upgrader.js'
9
+ export type { MockUpgraderOptions } from './upgrader.js'
@@ -2,16 +2,16 @@ import { Multiaddr } from '@multiformats/multiaddr'
2
2
  import type { MultiaddrConnection } from '@libp2p/interfaces/transport'
3
3
  import type { Duplex } from 'it-stream-types'
4
4
 
5
- export function mockMultiaddrConnection (source: Duplex<Uint8Array>): MultiaddrConnection {
5
+ export function mockMultiaddrConnection (source: Duplex<Uint8Array> & Partial<MultiaddrConnection>): MultiaddrConnection {
6
6
  const maConn: MultiaddrConnection = {
7
- ...source,
8
7
  async close () {
9
8
 
10
9
  },
11
10
  timeline: {
12
11
  open: Date.now()
13
12
  },
14
- remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001')
13
+ remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001'),
14
+ ...source
15
15
  }
16
16
 
17
17
  return maConn
File without changes
@@ -0,0 +1,71 @@
1
+ import type { Registrar, StreamHandler } from '@libp2p/interfaces/registrar'
2
+ import type { Topology } from '@libp2p/interfaces/topology'
3
+
4
+ export class MockRegistrar implements Registrar {
5
+ private readonly topologies: Map<string, { topology: Topology, protocols: string[] }> = new Map()
6
+ private readonly handlers: Map<string, { handler: StreamHandler, protocols: string[] }> = new Map()
7
+
8
+ async handle (protocols: string | string[], handler: StreamHandler) {
9
+ if (!Array.isArray(protocols)) {
10
+ protocols = [protocols]
11
+ }
12
+
13
+ const id = `handler-id-${Math.random()}`
14
+
15
+ this.handlers.set(id, {
16
+ handler,
17
+ protocols
18
+ })
19
+
20
+ return id
21
+ }
22
+
23
+ async unhandle (id: string) {
24
+ this.handlers.delete(id)
25
+ }
26
+
27
+ getHandlers (protocol: string) {
28
+ const output: StreamHandler[] = []
29
+
30
+ for (const { handler, protocols } of this.handlers.values()) {
31
+ if (protocols.includes(protocol)) {
32
+ output.push(handler)
33
+ }
34
+ }
35
+
36
+ return output
37
+ }
38
+
39
+ register (protocols: string | string[], topology: Topology) {
40
+ if (!Array.isArray(protocols)) {
41
+ protocols = [protocols]
42
+ }
43
+
44
+ const id = `topology-id-${Math.random()}`
45
+
46
+ this.topologies.set(id, {
47
+ topology,
48
+ protocols
49
+ })
50
+
51
+ return id
52
+ }
53
+
54
+ unregister (id: string | string[]) {
55
+ if (!Array.isArray(id)) {
56
+ id = [id]
57
+ }
58
+
59
+ id.forEach(id => this.topologies.delete(id))
60
+ }
61
+
62
+ getTopologies (protocol: string) {
63
+ const output: Topology[] = []
64
+
65
+ return output
66
+ }
67
+ }
68
+
69
+ export function mockRegistrar () {
70
+ return new MockRegistrar()
71
+ }
@@ -1,6 +1,6 @@
1
1
  import { expect } from 'aegir/utils/chai.js'
2
- import { mockMuxer } from './mock-muxer.js'
3
- import { mockConnection } from './mock-connection.js'
2
+ import { mockMuxer } from './muxer.js'
3
+ import { mockConnection } from './connection.js'
4
4
  import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport'
5
5
  import type { Muxer } from '@libp2p/interfaces/stream-muxer'
6
6
 
@@ -16,9 +16,6 @@ export default (common: TestSetup<PeerDiscovery & Startable>) => {
16
16
 
17
17
  afterEach('ensure discovery was stopped', async () => {
18
18
  await discovery.stop()
19
-
20
- discovery.removeAllListeners()
21
-
22
19
  await common.teardown()
23
20
  })
24
21
 
@@ -44,7 +41,8 @@ export default (common: TestSetup<PeerDiscovery & Startable>) => {
44
41
  const defer = pDefer()
45
42
  await discovery.start()
46
43
 
47
- discovery.on('peer', ({ id, multiaddrs }) => {
44
+ discovery.addEventListener('peer', (evt) => {
45
+ const { id, multiaddrs } = evt.detail
48
46
  expect(id).to.exist()
49
47
  expect(id).to.have.property('type').that.is.oneOf(['RSA', 'Ed25519', 'secp256k1'])
50
48
  expect(multiaddrs).to.exist()
@@ -58,7 +56,7 @@ export default (common: TestSetup<PeerDiscovery & Startable>) => {
58
56
  })
59
57
 
60
58
  it('should not receive a peer event before start', async () => {
61
- discovery.on('peer', () => {
59
+ discovery.addEventListener('peer', () => {
62
60
  throw new Error('should not receive a peer event before start')
63
61
  })
64
62
 
@@ -70,14 +68,14 @@ export default (common: TestSetup<PeerDiscovery & Startable>) => {
70
68
 
71
69
  await discovery.start()
72
70
 
73
- discovery.on('peer', () => {
71
+ discovery.addEventListener('peer', () => {
74
72
  deferStart.resolve()
75
73
  })
76
74
 
77
75
  await deferStart.promise
78
76
  await discovery.stop()
79
77
 
80
- discovery.on('peer', () => {
78
+ discovery.addEventListener('peer', () => {
81
79
  throw new Error('should not receive a peer event after stop')
82
80
  })
83
81
 
package/src/pubsub/api.ts CHANGED
@@ -4,15 +4,15 @@ import pDefer from 'p-defer'
4
4
  import pWaitFor from 'p-wait-for'
5
5
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
6
6
  import type { TestSetup } from '../index.js'
7
- import type { PubSub, Message } from '@libp2p/interfaces/pubsub'
8
- import type { Startable } from '@libp2p/interfaces'
7
+ import type { PubSub } from '@libp2p/interfaces/pubsub'
8
+ import type { EventMap } from './index.js'
9
9
 
10
10
  const topic = 'foo'
11
11
  const data = uint8ArrayFromString('bar')
12
12
 
13
- export default (common: TestSetup<PubSub & Startable>) => {
13
+ export default (common: TestSetup<PubSub<EventMap>>) => {
14
14
  describe('pubsub api', () => {
15
- let pubsub: PubSub & Startable
15
+ let pubsub: PubSub<EventMap>
16
16
 
17
17
  // Create pubsub router
18
18
  beforeEach(async () => {
@@ -51,7 +51,7 @@ export default (common: TestSetup<PubSub & Startable>) => {
51
51
 
52
52
  await pubsub.start()
53
53
  pubsub.subscribe(topic)
54
- pubsub.on('topic', handler)
54
+ pubsub.addEventListener('topic', handler)
55
55
 
56
56
  await pWaitFor(() => {
57
57
  const topics = pubsub.getTopics()
@@ -71,15 +71,14 @@ export default (common: TestSetup<PubSub & Startable>) => {
71
71
  it('can subscribe and publish correctly', async () => {
72
72
  const defer = pDefer()
73
73
 
74
- const handler = (msg: Message) => {
75
- expect(msg).to.not.eql(undefined)
76
- defer.resolve()
77
- }
78
-
79
74
  await pubsub.start()
80
75
 
81
76
  pubsub.subscribe(topic)
82
- pubsub.on(topic, handler)
77
+ pubsub.addEventListener(topic, (evt) => {
78
+ const msg = evt.detail
79
+ expect(msg).to.not.eql(undefined)
80
+ defer.resolve()
81
+ })
83
82
  await pubsub.publish(topic, data)
84
83
  await defer.promise
85
84
 
@@ -7,12 +7,12 @@ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
7
7
  import { expectSet } from './utils.js'
8
8
  import type { TestSetup } from '../index.js'
9
9
  import type { PubSub, Message } from '@libp2p/interfaces/pubsub'
10
- import type { Startable } from '@libp2p/interfaces'
10
+ import type { EventMap } from './index.js'
11
11
 
12
- export default (common: TestSetup<PubSub & Startable>) => {
12
+ export default (common: TestSetup<PubSub<EventMap>>) => {
13
13
  describe('pubsub connection handlers', () => {
14
- let psA: PubSub & Startable
15
- let psB: PubSub & Startable
14
+ let psA: PubSub<EventMap>
15
+ let psB: PubSub<EventMap>
16
16
 
17
17
  describe('nodes send state on connection', () => {
18
18
  // Create pubsub nodes and connect them
@@ -48,8 +48,12 @@ export default (common: TestSetup<PubSub & Startable>) => {
48
48
  await Promise.all([
49
49
  // @ts-expect-error protected fields
50
50
  psA._libp2p.dial(psB.peerId),
51
- new Promise((resolve) => psA.once('pubsub:subscription-change', resolve)),
52
- new Promise((resolve) => psB.once('pubsub:subscription-change', resolve))
51
+ new Promise((resolve) => psA.addEventListener('pubsub:subscription-change', resolve, {
52
+ once: true
53
+ })),
54
+ new Promise((resolve) => psB.addEventListener('pubsub:subscription-change', resolve, {
55
+ once: true
56
+ }))
53
57
  ])
54
58
 
55
59
  expect(psA.peers.size).to.equal(1)
@@ -103,7 +107,8 @@ export default (common: TestSetup<PubSub & Startable>) => {
103
107
  let subscribedTopics = psA.getTopics()
104
108
  expect(subscribedTopics).to.not.include(topic)
105
109
 
106
- psA.on(topic, (msg) => {
110
+ psA.addEventListener(topic, (evt) => {
111
+ const msg = evt.detail
107
112
  expect(msg.data).to.equalBytes(data)
108
113
  defer.resolve()
109
114
  })
@@ -174,7 +179,8 @@ export default (common: TestSetup<PubSub & Startable>) => {
174
179
  let subscribedTopics = psA.getTopics()
175
180
  expect(subscribedTopics).to.not.include(topic)
176
181
 
177
- psA.on(topic, (msg) => {
182
+ psA.addEventListener(topic, (evt) => {
183
+ const msg = evt.detail
178
184
  expect(msg.data).to.equalBytes(data)
179
185
  defer.resolve()
180
186
  })
@@ -228,7 +234,8 @@ export default (common: TestSetup<PubSub & Startable>) => {
228
234
  let subscribedTopics = psA.getTopics()
229
235
  expect(subscribedTopics).to.not.include(topic)
230
236
 
231
- psA.on(topic, (msg) => {
237
+ psA.addEventListener(topic, (evt) => {
238
+ const msg = evt.detail
232
239
  expect(msg.data).to.equalBytes(data)
233
240
  counter++
234
241
  counter === 1 ? defer1.resolve() : defer2.resolve()
@@ -285,7 +292,8 @@ export default (common: TestSetup<PubSub & Startable>) => {
285
292
  let bReceivedFirstMessageFromA = false
286
293
  let bReceivedSecondMessageFromA = false
287
294
 
288
- const handlerSpyA = (message: Message) => {
295
+ const handlerSpyA = (evt: CustomEvent<Message>) => {
296
+ const message = evt.detail
289
297
  const data = uint8ArrayToString(message.data)
290
298
 
291
299
  if (data === 'message-from-b-1') {
@@ -296,7 +304,8 @@ export default (common: TestSetup<PubSub & Startable>) => {
296
304
  aReceivedSecondMessageFromB = true
297
305
  }
298
306
  }
299
- const handlerSpyB = (message: Message) => {
307
+ const handlerSpyB = (evt: CustomEvent<Message>) => {
308
+ const message = evt.detail
300
309
  const data = uint8ArrayToString(message.data)
301
310
 
302
311
  if (data === 'message-from-a-1') {
@@ -310,8 +319,8 @@ export default (common: TestSetup<PubSub & Startable>) => {
310
319
 
311
320
  const topic = 'reconnect-channel'
312
321
 
313
- psA.on(topic, handlerSpyA)
314
- psB.on(topic, handlerSpyB)
322
+ psA.addEventListener(topic, handlerSpyA)
323
+ psB.addEventListener(topic, handlerSpyB)
315
324
  psA.subscribe(topic)
316
325
  psB.subscribe(topic)
317
326
 
@@ -3,15 +3,15 @@ import sinon from 'sinon'
3
3
  import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
4
4
  import type { TestSetup } from '../index.js'
5
5
  import type { PubSub, PubsubOptions } from '@libp2p/interfaces/pubsub'
6
- import type { Startable } from '@libp2p/interfaces'
6
+ import type { EventMap } from './index.js'
7
7
 
8
8
  const topic = 'foo'
9
9
  const data = uint8ArrayFromString('bar')
10
10
  const shouldNotHappen = () => expect.fail()
11
11
 
12
- export default (common: TestSetup<PubSub & Startable, Partial<PubsubOptions>>) => {
12
+ export default (common: TestSetup<PubSub<EventMap>, Partial<PubsubOptions>>) => {
13
13
  describe('emit self', () => {
14
- let pubsub: PubSub & Startable
14
+ let pubsub: PubSub<EventMap>
15
15
 
16
16
  describe('enabled', () => {
17
17
  before(async () => {
@@ -30,7 +30,9 @@ export default (common: TestSetup<PubSub & Startable, Partial<PubsubOptions>>) =
30
30
  })
31
31
 
32
32
  it('should emit to self on publish', async () => {
33
- const promise = new Promise((resolve) => pubsub.once(topic, resolve))
33
+ const promise = new Promise((resolve) => pubsub.addEventListener(topic, resolve, {
34
+ once: true
35
+ }))
34
36
 
35
37
  void pubsub.publish(topic, data)
36
38
 
@@ -55,7 +57,9 @@ export default (common: TestSetup<PubSub & Startable, Partial<PubsubOptions>>) =
55
57
  })
56
58
 
57
59
  it('should not emit to self on publish', async () => {
58
- pubsub.once(topic, () => shouldNotHappen)
60
+ pubsub.addEventListener(topic, () => shouldNotHappen, {
61
+ once: true
62
+ })
59
63
 
60
64
  void pubsub.publish(topic, data)
61
65
 
@@ -5,10 +5,17 @@ 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 { PubSub } from '@libp2p/interfaces/pubsub'
9
- import type { Startable } from '@libp2p/interfaces'
8
+ import type { PubSub, Message, PubsubEvents } from '@libp2p/interfaces/pubsub'
10
9
 
11
- export default (common: TestSetup<PubSub & Startable>) => {
10
+ export interface EventMap extends PubsubEvents {
11
+ 'topic': CustomEvent<Message>
12
+ 'foo': CustomEvent<Message>
13
+ 'test-topic': CustomEvent<Message>
14
+ 'reconnect-channel': CustomEvent<Message>
15
+ 'Z': CustomEvent<Message>
16
+ }
17
+
18
+ export default (common: TestSetup<PubSub<EventMap>>) => {
12
19
  describe('interface-pubsub compliance tests', () => {
13
20
  apiTest(common)
14
21
  emitSelfTest(common)