@libp2p/interface-compliance-tests 1.0.0 → 1.0.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 (66) hide show
  1. package/dist/src/crypto/index.d.ts.map +1 -1
  2. package/dist/src/crypto/index.js +7 -8
  3. package/dist/src/crypto/index.js.map +1 -1
  4. package/dist/src/crypto/utils/index.d.ts +3 -0
  5. package/dist/src/crypto/utils/index.d.ts.map +1 -0
  6. package/dist/src/crypto/utils/index.js +19 -0
  7. package/dist/src/crypto/utils/index.js.map +1 -0
  8. package/dist/src/stream-muxer/base-test.d.ts.map +1 -1
  9. package/dist/src/stream-muxer/base-test.js +26 -23
  10. package/dist/src/stream-muxer/base-test.js.map +1 -1
  11. package/dist/src/stream-muxer/close-test.d.ts.map +1 -1
  12. package/dist/src/stream-muxer/close-test.js +16 -17
  13. package/dist/src/stream-muxer/close-test.js.map +1 -1
  14. package/dist/src/stream-muxer/spawner.d.ts.map +1 -1
  15. package/dist/src/stream-muxer/spawner.js +13 -12
  16. package/dist/src/stream-muxer/spawner.js.map +1 -1
  17. package/dist/src/transport/dial-test.js +4 -4
  18. package/dist/src/transport/dial-test.js.map +1 -1
  19. package/dist/src/transport/listen-test.d.ts.map +1 -1
  20. package/dist/src/transport/listen-test.js +13 -9
  21. package/dist/src/transport/listen-test.js.map +1 -1
  22. package/dist/src/transport/utils/index.d.ts.map +1 -1
  23. package/dist/src/transport/utils/index.js +2 -4
  24. package/dist/src/transport/utils/index.js.map +1 -1
  25. package/package.json +162 -65
  26. package/src/crypto/index.ts +9 -9
  27. package/src/crypto/utils/index.ts +24 -0
  28. package/src/stream-muxer/base-test.ts +36 -31
  29. package/src/stream-muxer/close-test.ts +16 -17
  30. package/src/stream-muxer/spawner.ts +14 -13
  31. package/src/transport/dial-test.ts +4 -4
  32. package/src/transport/listen-test.ts +14 -10
  33. package/src/transport/utils/index.ts +4 -6
  34. package/dist/test/connection/index.spec.d.ts +0 -2
  35. package/dist/test/connection/index.spec.d.ts.map +0 -1
  36. package/dist/test/connection/index.spec.js +0 -71
  37. package/dist/test/connection/index.spec.js.map +0 -1
  38. package/dist/test/crypto/index.spec.d.ts +0 -2
  39. package/dist/test/crypto/index.spec.d.ts.map +0 -1
  40. package/dist/test/crypto/index.spec.js +0 -11
  41. package/dist/test/crypto/index.spec.js.map +0 -1
  42. package/dist/test/crypto/mock-crypto.d.ts +0 -4
  43. package/dist/test/crypto/mock-crypto.d.ts.map +0 -1
  44. package/dist/test/crypto/mock-crypto.js +0 -93
  45. package/dist/test/crypto/mock-crypto.js.map +0 -1
  46. package/dist/test/peer-discovery/index.spec.d.ts +0 -2
  47. package/dist/test/peer-discovery/index.spec.d.ts.map +0 -1
  48. package/dist/test/peer-discovery/index.spec.js +0 -18
  49. package/dist/test/peer-discovery/index.spec.js.map +0 -1
  50. package/dist/test/peer-discovery/mock-discovery.d.ts +0 -20
  51. package/dist/test/peer-discovery/mock-discovery.d.ts.map +0 -1
  52. package/dist/test/peer-discovery/mock-discovery.js +0 -39
  53. package/dist/test/peer-discovery/mock-discovery.js.map +0 -1
  54. package/dist/test/topology/mock-peer-store.d.ts +0 -12
  55. package/dist/test/topology/mock-peer-store.d.ts.map +0 -1
  56. package/dist/test/topology/mock-peer-store.js +0 -18
  57. package/dist/test/topology/mock-peer-store.js.map +0 -1
  58. package/dist/test/topology/multicodec-topology.spec.d.ts +0 -2
  59. package/dist/test/topology/multicodec-topology.spec.d.ts.map +0 -1
  60. package/dist/test/topology/multicodec-topology.spec.js +0 -45
  61. package/dist/test/topology/multicodec-topology.spec.js.map +0 -1
  62. package/dist/test/topology/topology.spec.d.ts +0 -2
  63. package/dist/test/topology/topology.spec.d.ts.map +0 -1
  64. package/dist/test/topology/topology.spec.js +0 -21
  65. package/dist/test/topology/topology.spec.js.map +0 -1
  66. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1,12 +1,12 @@
1
1
  import { expect } from 'aegir/utils/chai.js'
2
2
  import { isValidTick, mockUpgrader } from './utils/index.js'
3
- // @ts-expect-error no types
4
- import goodbye from 'it-goodbye'
5
- import { collect } from 'streaming-iterables'
3
+ import { goodbye } from 'it-goodbye'
4
+ import all from 'it-all'
6
5
  import { pipe } from 'it-pipe'
7
6
  import AbortController from 'abort-controller'
8
7
  import { AbortError } from '@libp2p/interfaces/errors'
9
8
  import sinon from 'sinon'
9
+ import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
10
10
  import type { TestSetup } from '../index.js'
11
11
  import type { Transport, Listener } from '@libp2p/interfaces/transport'
12
12
  import type { TransportTestFixtures, SetupArgs, Connector } from './index.js'
@@ -43,7 +43,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
43
43
  const upgradeSpy = sinon.spy(upgrader, 'upgradeOutbound')
44
44
  const conn = await transport.dial(addrs[0])
45
45
  const { stream } = await conn.newStream(['/hello'])
46
- const s = goodbye({ source: ['hey'], sink: collect })
46
+ const s = goodbye({ source: [uint8ArrayFromString('hey')], sink: async (source) => await all(source) })
47
47
 
48
48
  const result = await pipe(s, stream, s)
49
49
 
@@ -16,7 +16,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
16
16
  describe('listen', () => {
17
17
  const upgrader = mockUpgrader()
18
18
  let addrs: Multiaddr[]
19
- let transport: Transport<any, any>
19
+ let transport: Transport
20
20
 
21
21
  before(async () => {
22
22
  ({ transport, addrs } = await common.setup({ upgrader }))
@@ -31,7 +31,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
31
31
  })
32
32
 
33
33
  it('simple', async () => {
34
- const listener = transport.createListener({}, (conn) => {})
34
+ const listener = transport.createListener()
35
35
  await listener.listen(addrs[0])
36
36
  await listener.close()
37
37
  })
@@ -40,8 +40,10 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
40
40
  const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
41
41
  const listenerConns: Connection[] = []
42
42
 
43
- const listener = transport.createListener({}, (conn) => {
44
- listenerConns.push(conn)
43
+ const listener = transport.createListener({
44
+ handler: (conn) => {
45
+ listenerConns.push(conn)
46
+ }
45
47
  })
46
48
 
47
49
  // Listen
@@ -83,8 +85,10 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
83
85
  it('should not handle connection if upgradeInbound throws', async () => {
84
86
  sinon.stub(upgrader, 'upgradeInbound').throws()
85
87
 
86
- const listener = transport.createListener(() => {
87
- throw new Error('should not handle the connection if upgradeInbound throws')
88
+ const listener = transport.createListener({
89
+ handler: () => {
90
+ throw new Error('should not handle the connection if upgradeInbound throws')
91
+ }
88
92
  })
89
93
 
90
94
  // Listen
@@ -100,7 +104,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
100
104
  describe('events', () => {
101
105
  it('connection', async () => {
102
106
  const upgradeSpy = sinon.spy(upgrader, 'upgradeInbound')
103
- const listener = transport.createListener({})
107
+ const listener = transport.createListener()
104
108
  const deferred = defer()
105
109
  let conn
106
110
 
@@ -122,7 +126,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
122
126
  })
123
127
 
124
128
  it('listening', (done) => {
125
- const listener = transport.createListener({})
129
+ const listener = transport.createListener()
126
130
  listener.on('listening', () => {
127
131
  listener.close().then(done, done)
128
132
  })
@@ -130,7 +134,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
130
134
  })
131
135
 
132
136
  it('error', (done) => {
133
- const listener = transport.createListener({})
137
+ const listener = transport.createListener()
134
138
  listener.on('error', (err) => {
135
139
  expect(err).to.exist()
136
140
  listener.close().then(done, done)
@@ -139,7 +143,7 @@ export default (common: TestSetup<TransportTestFixtures, SetupArgs>) => {
139
143
  })
140
144
 
141
145
  it('close', (done) => {
142
- const listener = transport.createListener({})
146
+ const listener = transport.createListener()
143
147
  listener.on('close', done)
144
148
 
145
149
  void (async () => {
@@ -2,8 +2,7 @@ import { expect } from 'aegir/utils/chai.js'
2
2
  import type { Upgrader, MultiaddrConnection } from '@libp2p/interfaces/transport'
3
3
  import type { Connection, StreamData } from '@libp2p/interfaces/connection'
4
4
  import type { MuxedStream } from '@libp2p/interfaces/stream-muxer'
5
- // @ts-expect-error no types
6
- import pair from 'it-pair'
5
+ import { pair } from 'it-pair'
7
6
  import { PeerId } from '@libp2p/peer-id'
8
7
  import * as PeerIdFactory from '@libp2p/peer-id-factory'
9
8
  /**
@@ -59,7 +58,7 @@ async function createConnection (maConn: MultiaddrConnection, direction: 'inboun
59
58
  const localPeer = localPeerIdStr != null ? PeerId.fromString(localPeerIdStr) : await PeerIdFactory.createEd25519PeerId()
60
59
  const remotePeer = remotePeerIdStr != null ? PeerId.fromString(remotePeerIdStr) : await PeerIdFactory.createEd25519PeerId()
61
60
 
62
- const streams: Array<MuxedStream<Uint8Array>> = []
61
+ const streams: MuxedStream[] = []
63
62
  let streamId = 0
64
63
 
65
64
  const registry = new Map()
@@ -85,7 +84,7 @@ async function createConnection (maConn: MultiaddrConnection, direction: 'inboun
85
84
  throw new Error('protocols must have a length')
86
85
  }
87
86
 
88
- const echo = pair()
87
+ const echo = pair<Uint8Array>()
89
88
 
90
89
  const id = `${streamId++}`
91
90
  const stream: MuxedStream = {
@@ -97,8 +96,7 @@ async function createConnection (maConn: MultiaddrConnection, direction: 'inboun
97
96
  reset: () => {},
98
97
  timeline: {
99
98
  open: 0
100
- },
101
- [Symbol.asyncIterator]: echo.source
99
+ }
102
100
  }
103
101
 
104
102
  const streamData = {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../test/connection/index.spec.ts"],"names":[],"mappings":""}
@@ -1,71 +0,0 @@
1
- import tests from '../../src/connection/index.js';
2
- import { Connection } from '@libp2p/connection';
3
- import peers from '../../src/utils/peers.js';
4
- import * as PeerIdFactory from '@libp2p/peer-id-factory';
5
- import { Multiaddr } from '@multiformats/multiaddr';
6
- // @ts-expect-error no types
7
- import pair from 'it-pair';
8
- describe('compliance tests', () => {
9
- tests({
10
- /**
11
- * Test setup. `properties` allows the compliance test to override
12
- * certain values for testing.
13
- */
14
- async setup(properties) {
15
- const localAddr = new Multiaddr('/ip4/127.0.0.1/tcp/8080');
16
- const remoteAddr = new Multiaddr('/ip4/127.0.0.1/tcp/8081');
17
- const [localPeer, remotePeer] = await Promise.all([
18
- PeerIdFactory.createFromJSON(peers[0]),
19
- PeerIdFactory.createFromJSON(peers[1])
20
- ]);
21
- const openStreams = [];
22
- let streamId = 0;
23
- const connection = new Connection({
24
- localPeer,
25
- remotePeer,
26
- localAddr,
27
- remoteAddr,
28
- stat: {
29
- timeline: {
30
- open: Date.now() - 10,
31
- upgraded: Date.now()
32
- },
33
- direction: 'outbound',
34
- encryption: '/secio/1.0.0',
35
- multiplexer: '/mplex/6.7.0',
36
- status: 'OPEN'
37
- },
38
- newStream: async (protocols) => {
39
- const id = `${streamId++}`;
40
- const stream = {
41
- ...pair(),
42
- close: async () => {
43
- await stream.sink(async function* () { }());
44
- connection.removeStream(stream.id);
45
- },
46
- id,
47
- abort: () => { },
48
- reset: () => { },
49
- timeline: {
50
- open: 0
51
- },
52
- [Symbol.asyncIterator]: () => stream.source
53
- };
54
- openStreams.push(stream);
55
- return {
56
- stream,
57
- protocol: protocols[0]
58
- };
59
- },
60
- close: async () => { },
61
- getStreams: () => openStreams,
62
- ...properties
63
- });
64
- return connection;
65
- },
66
- async teardown() {
67
- // cleanup resources created by setup()
68
- }
69
- });
70
- });
71
- //# sourceMappingURL=index.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../test/connection/index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,+BAA+B,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,KAAK,MAAM,0BAA0B,CAAA;AAC5C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,4BAA4B;AAC5B,OAAO,IAAI,MAAM,SAAS,CAAA;AAG1B,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,KAAK,CAAC;QACJ;;;WAGG;QACH,KAAK,CAAC,KAAK,CAAE,UAAU;YACrB,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAA;YAC1D,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAA;YAC3D,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChD,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtC,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACvC,CAAC,CAAA;YACF,MAAM,WAAW,GAAkB,EAAE,CAAA;YACrC,IAAI,QAAQ,GAAG,CAAC,CAAA;YAEhB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;gBAChC,SAAS;gBACT,UAAU;gBACV,SAAS;gBACT,UAAU;gBACV,IAAI,EAAE;oBACJ,QAAQ,EAAE;wBACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE;wBACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB;oBACD,SAAS,EAAE,UAAU;oBACrB,UAAU,EAAE,cAAc;oBAC1B,WAAW,EAAE,cAAc;oBAC3B,MAAM,EAAE,MAAM;iBACf;gBACD,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;oBAC7B,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,CAAA;oBAC1B,MAAM,MAAM,GAAgB;wBAC1B,GAAG,IAAI,EAAE;wBACT,KAAK,EAAE,KAAK,IAAI,EAAE;4BAChB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,SAAU,CAAC,MAAK,CAAC,EAAE,CAAC,CAAA;4BAC3C,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;wBACpC,CAAC;wBACD,EAAE;wBACF,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;wBACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;wBACf,QAAQ,EAAE;4BACR,IAAI,EAAE,CAAC;yBACR;wBACD,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM;qBAC5C,CAAA;oBAED,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAExB,OAAO;wBACL,MAAM;wBACN,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;qBACvB,CAAA;gBACH,CAAC;gBACD,KAAK,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;gBACrB,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW;gBAC7B,GAAG,UAAU;aACd,CAAC,CAAA;YACF,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,uCAAuC;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../test/crypto/index.spec.ts"],"names":[],"mappings":""}
@@ -1,11 +0,0 @@
1
- import tests from '../../src/crypto/index.js';
2
- import mockCrypto from './mock-crypto.js';
3
- describe('compliance tests', () => {
4
- tests({
5
- async setup() {
6
- return mockCrypto;
7
- },
8
- async teardown() { }
9
- });
10
- });
11
- //# sourceMappingURL=index.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../test/crypto/index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAC7C,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,KAAK,CAAC;QACJ,KAAK,CAAC,KAAK;YACT,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,KAAK,CAAC,QAAQ,KAAK,CAAC;KACrB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import type { Crypto } from '@libp2p/interfaces/crypto';
2
- declare const crypto: Crypto;
3
- export default crypto;
4
- //# sourceMappingURL=mock-crypto.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-crypto.d.ts","sourceRoot":"","sources":["../../../test/crypto/mock-crypto.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAYvD,QAAA,MAAM,MAAM,EAAE,MAuFb,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -1,93 +0,0 @@
1
- import { PeerId } from '@libp2p/peer-id';
2
- // @ts-expect-error no types
3
- import handshake from 'it-handshake';
4
- // @ts-expect-error no types
5
- import duplexPair from 'it-pair/duplex.js';
6
- import pipe from 'it-pipe';
7
- import { UnexpectedPeerError } from '@libp2p/interfaces/crypto/errors';
8
- import { Multiaddr } from '@multiformats/multiaddr';
9
- // A basic transform that does nothing to the data
10
- const transform = () => {
11
- return (source) => (async function* () {
12
- for await (const chunk of source) {
13
- yield chunk;
14
- }
15
- })();
16
- };
17
- const crypto = {
18
- protocol: 'insecure',
19
- secureInbound: async (localPeer, duplex, expectedPeer) => {
20
- // 1. Perform a basic handshake.
21
- const shake = handshake(duplex);
22
- shake.write(localPeer.toBytes());
23
- const remoteId = await shake.read();
24
- if (remoteId == null) {
25
- throw new Error('Could not read remote ID');
26
- }
27
- const remotePeer = PeerId.fromBytes(remoteId.slice());
28
- shake.rest();
29
- if (expectedPeer != null && !expectedPeer.equals(remotePeer)) {
30
- throw new UnexpectedPeerError();
31
- }
32
- // 2. Create your encryption box/unbox wrapper
33
- const wrapper = duplexPair();
34
- const encrypt = transform(); // Use transform iterables to modify data
35
- const decrypt = transform();
36
- pipe(wrapper[0], // We write to wrapper
37
- encrypt, // The data is encrypted
38
- shake.stream, // It goes to the remote peer
39
- decrypt, // Decrypt the incoming data
40
- wrapper[0] // Pipe to the wrapper
41
- );
42
- return {
43
- conn: {
44
- ...wrapper[1],
45
- close: async () => { },
46
- localAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001'),
47
- remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4002'),
48
- timeline: {
49
- open: Date.now()
50
- },
51
- conn: true
52
- },
53
- remotePeer,
54
- remoteEarlyData: new Uint8Array(0)
55
- };
56
- },
57
- secureOutbound: async (localPeer, duplex, remotePeer) => {
58
- // 1. Perform a basic handshake.
59
- const shake = handshake(duplex);
60
- shake.write(localPeer.toBytes());
61
- const remoteId = await shake.read();
62
- if (remoteId == null) {
63
- throw new Error('Could not read remote ID');
64
- }
65
- shake.rest();
66
- // 2. Create your encryption box/unbox wrapper
67
- const wrapper = duplexPair();
68
- const encrypt = transform();
69
- const decrypt = transform();
70
- pipe(wrapper[0], // We write to wrapper
71
- encrypt, // The data is encrypted
72
- shake.stream, // It goes to the remote peer
73
- decrypt, // Decrypt the incoming data
74
- wrapper[0] // Pipe to the wrapper
75
- );
76
- return {
77
- conn: {
78
- ...wrapper[1],
79
- close: async () => { },
80
- localAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4001'),
81
- remoteAddr: new Multiaddr('/ip4/127.0.0.1/tcp/4002'),
82
- timeline: {
83
- open: Date.now()
84
- },
85
- conn: true
86
- },
87
- remotePeer: PeerId.fromBytes(remoteId.slice()),
88
- remoteEarlyData: new Uint8Array(0)
89
- };
90
- }
91
- };
92
- export default crypto;
93
- //# sourceMappingURL=mock-crypto.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-crypto.js","sourceRoot":"","sources":["../../../test/crypto/mock-crypto.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.d.ts","sourceRoot":"","sources":["../../../test/peer-discovery/index.spec.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import tests from '../../src/peer-discovery/index.js';
2
- import { MockDiscovery } from './mock-discovery.js';
3
- describe('compliance tests', () => {
4
- let intervalId;
5
- tests({
6
- async setup() {
7
- const mockDiscovery = new MockDiscovery({
8
- discoveryDelay: 1
9
- });
10
- intervalId = setInterval(mockDiscovery._discoverPeer, 1000);
11
- return mockDiscovery;
12
- },
13
- async teardown() {
14
- clearInterval(intervalId);
15
- }
16
- });
17
- });
18
- //# sourceMappingURL=index.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../test/peer-discovery/index.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,mCAAmC,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,UAAe,CAAA;IAEnB,KAAK,CAAC;QACJ,KAAK,CAAC,KAAK;YACT,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;gBACtC,cAAc,EAAE,CAAC;aAClB,CAAC,CAAA;YAEF,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;YAE3D,OAAO,aAAa,CAAA;QACtB,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,aAAa,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,20 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- interface MockDiscoveryOptions {
4
- discoveryDelay?: number;
5
- }
6
- /**
7
- * Emits 'peer' events on discovery.
8
- */
9
- export declare class MockDiscovery extends EventEmitter {
10
- readonly options: MockDiscoveryOptions;
11
- private _isRunning;
12
- private _timer;
13
- constructor(options?: {});
14
- start(): void;
15
- stop(): void;
16
- isStarted(): boolean;
17
- _discoverPeer(): void;
18
- }
19
- export {};
20
- //# sourceMappingURL=mock-discovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-discovery.d.ts","sourceRoot":"","sources":["../../../test/peer-discovery/mock-discovery.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAIrC,UAAU,oBAAoB;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,SAAgB,OAAO,EAAE,oBAAoB,CAAA;IAC7C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAK;gBAEN,OAAO,KAAK;IAOzB,KAAK;IAKL,IAAI;IAKJ,SAAS;IAIT,aAAa;CAcd"}
@@ -1,39 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import { Multiaddr } from '@multiformats/multiaddr';
3
- import * as PeerIdFactory from '@libp2p/peer-id-factory';
4
- /**
5
- * Emits 'peer' events on discovery.
6
- */
7
- export class MockDiscovery extends EventEmitter {
8
- constructor(options = {}) {
9
- super();
10
- this.options = options;
11
- this._isRunning = false;
12
- }
13
- start() {
14
- this._isRunning = true;
15
- this._discoverPeer();
16
- }
17
- stop() {
18
- clearTimeout(this._timer);
19
- this._isRunning = false;
20
- }
21
- isStarted() {
22
- return this._isRunning;
23
- }
24
- _discoverPeer() {
25
- if (!this._isRunning)
26
- return;
27
- PeerIdFactory.createEd25519PeerId()
28
- .then(peerId => {
29
- this._timer = setTimeout(() => {
30
- this.emit('peer', {
31
- id: peerId,
32
- multiaddrs: [new Multiaddr('/ip4/127.0.0.1/tcp/8000')]
33
- });
34
- }, this.options.discoveryDelay ?? 1000);
35
- })
36
- .catch(() => { });
37
- }
38
- }
39
- //# sourceMappingURL=mock-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-discovery.js","sourceRoot":"","sources":["../../../test/peer-discovery/mock-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAA;AAMxD;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;IAK7C,YAAa,OAAO,GAAG,EAAE;QACvB,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACtB,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED,IAAI;QACF,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAM;QAE5B,aAAa,CAAC,mBAAmB,EAAE;aAChC,IAAI,CAAC,MAAM,CAAC,EAAE;YACb,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBAChB,EAAE,EAAE,MAAM;oBACV,UAAU,EAAE,CAAC,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;iBACvD,CAAC,CAAA;YACJ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,CAAA;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACpB,CAAC;CACF"}
@@ -1,12 +0,0 @@
1
- /// <reference types="node" />
2
- import { EventEmitter } from 'events';
3
- import type { PeerId } from '@libp2p/interfaces/peer-id';
4
- import type { PeerData } from '@libp2p/interfaces/peer-data';
5
- import type { ProtoBook, PeerStore } from '@libp2p/interfaces/registrar';
6
- export declare class MockPeerStore extends EventEmitter implements PeerStore {
7
- readonly peers: Map<string, PeerData>;
8
- protoBook: ProtoBook;
9
- constructor(peers: Map<string, PeerData>);
10
- get(peerId: PeerId): PeerData;
11
- }
12
- //# sourceMappingURL=mock-peer-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-peer-store.d.ts","sourceRoot":"","sources":["../../../test/topology/mock-peer-store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAExE,qBAAa,aAAc,SAAQ,YAAa,YAAW,SAAS;IAClE,SAAgB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACrC,SAAS,EAAE,SAAS,CAAA;gBAEd,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAQzC,GAAG,CAAE,MAAM,EAAE,MAAM;CASpB"}
@@ -1,18 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- export class MockPeerStore extends EventEmitter {
3
- constructor(peers) {
4
- super();
5
- this.protoBook = {
6
- get: () => ([])
7
- };
8
- this.peers = peers;
9
- }
10
- get(peerId) {
11
- const peerData = this.peers.get(peerId.toString());
12
- if (peerData == null) {
13
- throw new Error('PeerData not found');
14
- }
15
- return peerData;
16
- }
17
- }
18
- //# sourceMappingURL=mock-peer-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mock-peer-store.js","sourceRoot":"","sources":["../../../test/topology/mock-peer-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAKrC,MAAM,OAAO,aAAc,SAAQ,YAAY;IAI7C,YAAa,KAA4B;QACvC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,SAAS,GAAG;YACf,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;SAChB,CAAA;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAE,MAAc;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QAElD,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;SACtC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=multicodec-topology.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multicodec-topology.spec.d.ts","sourceRoot":"","sources":["../../../test/topology/multicodec-topology.spec.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { EventEmitter } from 'events';
2
- import tests from '../../src/topology/multicodec-topology.js';
3
- import { MulticodecTopology } from '@libp2p/topology/multicodec-topology';
4
- import { MockPeerStore } from './mock-peer-store.js';
5
- describe('multicodec topology compliance tests', () => {
6
- tests({
7
- async setup(properties) {
8
- const multicodecs = ['/echo/1.0.0'];
9
- const handlers = {
10
- onConnect: () => { },
11
- onDisconnect: () => { }
12
- };
13
- const topology = new MulticodecTopology({
14
- multicodecs,
15
- handlers,
16
- ...properties
17
- });
18
- const peers = new Map();
19
- const peerStore = new MockPeerStore(peers);
20
- const connectionManager = new EventEmitter();
21
- const registrar = {
22
- peerStore,
23
- connectionManager,
24
- getConnection: () => {
25
- return undefined;
26
- },
27
- handle: () => {
28
- throw new Error('Not implemented');
29
- },
30
- register: () => {
31
- throw new Error('Not implemented');
32
- },
33
- unregister: () => {
34
- throw new Error('Not implemented');
35
- }
36
- };
37
- topology.registrar = registrar;
38
- return topology;
39
- },
40
- async teardown() {
41
- // cleanup resources created by setup()
42
- }
43
- });
44
- });
45
- //# sourceMappingURL=multicodec-topology.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multicodec-topology.spec.js","sourceRoot":"","sources":["../../../test/topology/multicodec-topology.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,MAAM,2CAA2C,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,KAAK,CAAC;QACJ,KAAK,CAAC,KAAK,CAAE,UAAU;YACrB,MAAM,WAAW,GAAG,CAAC,aAAa,CAAC,CAAA;YACnC,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;gBACpB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;aACxB,CAAA;YAED,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CAAC;gBACtC,WAAW;gBACX,QAAQ;gBACR,GAAG,UAAU;aACd,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;YACvB,MAAM,SAAS,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAA;YAC1C,MAAM,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAA;YAE5C,MAAM,SAAS,GAAG;gBAChB,SAAS;gBACT,iBAAiB;gBACjB,aAAa,EAAE,GAAG,EAAE;oBAClB,OAAO,SAAS,CAAA;gBAClB,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE;oBACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE;oBACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,CAAC;gBACD,UAAU,EAAE,GAAG,EAAE;oBACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBACpC,CAAC;aACF,CAAA;YAED,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA;YAE9B,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,uCAAuC;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=topology.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topology.spec.d.ts","sourceRoot":"","sources":["../../../test/topology/topology.spec.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- import tests from '../../src/topology/topology.js';
2
- import { Topology } from '@libp2p/topology';
3
- describe('topology compliance tests', () => {
4
- tests({
5
- async setup(properties) {
6
- const handlers = {
7
- onConnect: () => { },
8
- onDisconnect: () => { }
9
- };
10
- const topology = new Topology({
11
- handlers,
12
- ...properties
13
- });
14
- return topology;
15
- },
16
- async teardown() {
17
- // cleanup resources created by setup()
18
- }
19
- });
20
- });
21
- //# sourceMappingURL=topology.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"topology.spec.js","sourceRoot":"","sources":["../../../test/topology/topology.spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,gCAAgC,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,KAAK,CAAC;QACJ,KAAK,CAAC,KAAK,CAAE,UAAU;YACrB,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC;gBACpB,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;aACxB,CAAA;YAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;gBAC5B,QAAQ;gBACR,GAAG,UAAU;aACd,CAAC,CAAA;YAEF,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,uCAAuC;QACzC,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}