@libp2p/interface-compliance-tests 3.0.7 → 4.0.0-a4a10fd4
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.
- package/README.md +12 -3
- package/dist/src/connection/index.d.ts +5 -0
- package/dist/src/connection/index.d.ts.map +1 -0
- package/dist/src/connection/index.js +150 -0
- package/dist/src/connection/index.js.map +1 -0
- package/dist/src/connection-encryption/index.d.ts +5 -0
- package/dist/src/connection-encryption/index.d.ts.map +1 -0
- package/dist/src/connection-encryption/index.js +71 -0
- package/dist/src/connection-encryption/index.js.map +1 -0
- package/dist/src/connection-encryption/utils/index.d.ts +3 -0
- package/dist/src/connection-encryption/utils/index.d.ts.map +1 -0
- package/dist/src/connection-encryption/utils/index.js +19 -0
- package/dist/src/connection-encryption/utils/index.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/is-valid-tick.d.ts.map +1 -1
- package/dist/src/is-valid-tick.js.map +1 -1
- package/dist/src/mocks/connection-encrypter.d.ts +3 -0
- package/dist/src/mocks/connection-encrypter.d.ts.map +1 -0
- package/dist/src/mocks/connection-encrypter.js +98 -0
- package/dist/src/mocks/connection-encrypter.js.map +1 -0
- package/dist/src/mocks/connection-gater.d.ts +3 -0
- package/dist/src/mocks/connection-gater.d.ts.map +1 -0
- package/dist/src/mocks/connection-gater.js +17 -0
- package/dist/src/mocks/connection-gater.js.map +1 -0
- package/dist/src/mocks/connection-manager.d.ts +29 -0
- package/dist/src/mocks/connection-manager.d.ts.map +1 -0
- package/dist/src/mocks/connection-manager.js +145 -0
- package/dist/src/mocks/connection-manager.js.map +1 -0
- package/dist/src/mocks/connection.d.ts +32 -0
- package/dist/src/mocks/connection.d.ts.map +1 -0
- package/dist/src/mocks/connection.js +167 -0
- package/dist/src/mocks/connection.js.map +1 -0
- package/dist/src/mocks/duplex.d.ts +3 -0
- package/dist/src/mocks/duplex.d.ts.map +1 -0
- package/dist/src/mocks/duplex.js +9 -0
- package/dist/src/mocks/duplex.js.map +1 -0
- package/dist/src/mocks/index.d.ts +13 -0
- package/dist/src/mocks/index.d.ts.map +1 -0
- package/dist/src/mocks/index.js +11 -0
- package/dist/src/mocks/index.js.map +1 -0
- package/dist/src/mocks/metrics.d.ts +3 -0
- package/dist/src/mocks/metrics.d.ts.map +1 -0
- package/dist/src/mocks/metrics.js +115 -0
- package/dist/src/mocks/metrics.js.map +1 -0
- package/dist/src/mocks/multiaddr-connection.d.ts +17 -0
- package/dist/src/mocks/multiaddr-connection.d.ts.map +1 -0
- package/dist/src/mocks/multiaddr-connection.js +60 -0
- package/dist/src/mocks/multiaddr-connection.js.map +1 -0
- package/dist/src/mocks/muxer.d.ts +36 -0
- package/dist/src/mocks/muxer.d.ts.map +1 -0
- package/dist/src/mocks/muxer.js +213 -0
- package/dist/src/mocks/muxer.js.map +1 -0
- package/dist/src/mocks/peer-discovery.d.ts +22 -0
- package/dist/src/mocks/peer-discovery.d.ts.map +1 -0
- package/dist/src/mocks/peer-discovery.js +47 -0
- package/dist/src/mocks/peer-discovery.js.map +1 -0
- package/dist/src/mocks/registrar.d.ts +18 -0
- package/dist/src/mocks/registrar.d.ts.map +1 -0
- package/dist/src/mocks/registrar.js +66 -0
- package/dist/src/mocks/registrar.js.map +1 -0
- package/dist/src/mocks/upgrader.d.ts +10 -0
- package/dist/src/mocks/upgrader.d.ts.map +1 -0
- package/dist/src/mocks/upgrader.js +31 -0
- package/dist/src/mocks/upgrader.js.map +1 -0
- package/dist/src/peer-discovery/index.d.ts +5 -0
- package/dist/src/peer-discovery/index.d.ts.map +1 -0
- package/dist/src/peer-discovery/index.js +66 -0
- package/dist/src/peer-discovery/index.js.map +1 -0
- package/dist/src/pubsub/api.d.ts +6 -0
- package/dist/src/pubsub/api.d.ts.map +1 -0
- package/dist/src/pubsub/api.js +87 -0
- package/dist/src/pubsub/api.js.map +1 -0
- package/dist/src/pubsub/connection-handlers.d.ts +6 -0
- package/dist/src/pubsub/connection-handlers.d.ts.map +1 -0
- package/dist/src/pubsub/connection-handlers.js +329 -0
- package/dist/src/pubsub/connection-handlers.js.map +1 -0
- package/dist/src/pubsub/emit-self.d.ts +6 -0
- package/dist/src/pubsub/emit-self.d.ts.map +1 -0
- package/dist/src/pubsub/emit-self.js +80 -0
- package/dist/src/pubsub/emit-self.js.map +1 -0
- package/dist/src/pubsub/index.d.ts +18 -0
- package/dist/src/pubsub/index.d.ts.map +1 -0
- package/dist/src/pubsub/index.js +17 -0
- package/dist/src/pubsub/index.js.map +1 -0
- package/dist/src/pubsub/messages.d.ts +6 -0
- package/dist/src/pubsub/messages.d.ts.map +1 -0
- package/dist/src/pubsub/messages.js +48 -0
- package/dist/src/pubsub/messages.js.map +1 -0
- package/dist/src/pubsub/multiple-nodes.d.ts +6 -0
- package/dist/src/pubsub/multiple-nodes.d.ts.map +1 -0
- package/dist/src/pubsub/multiple-nodes.js +350 -0
- package/dist/src/pubsub/multiple-nodes.js.map +1 -0
- package/dist/src/pubsub/two-nodes.d.ts +6 -0
- package/dist/src/pubsub/two-nodes.d.ts.map +1 -0
- package/dist/src/pubsub/two-nodes.js +217 -0
- package/dist/src/pubsub/two-nodes.js.map +1 -0
- package/dist/src/pubsub/utils.d.ts +6 -0
- package/dist/src/pubsub/utils.d.ts.map +1 -0
- package/dist/src/pubsub/utils.js +22 -0
- package/dist/src/pubsub/utils.js.map +1 -0
- package/dist/src/stream-muxer/base-test.d.ts +5 -0
- package/dist/src/stream-muxer/base-test.d.ts.map +1 -0
- package/dist/src/stream-muxer/base-test.js +153 -0
- package/dist/src/stream-muxer/base-test.js.map +1 -0
- package/dist/src/stream-muxer/close-test.d.ts +5 -0
- package/dist/src/stream-muxer/close-test.d.ts.map +1 -0
- package/dist/src/stream-muxer/close-test.js +357 -0
- package/dist/src/stream-muxer/close-test.js.map +1 -0
- package/dist/src/stream-muxer/fixtures/pb/message.d.ts +13 -0
- package/dist/src/stream-muxer/fixtures/pb/message.d.ts.map +1 -0
- package/dist/src/stream-muxer/fixtures/pb/message.js +67 -0
- package/dist/src/stream-muxer/fixtures/pb/message.js.map +1 -0
- package/dist/src/stream-muxer/index.d.ts +5 -0
- package/dist/src/stream-muxer/index.d.ts.map +1 -0
- package/dist/src/stream-muxer/index.js +13 -0
- package/dist/src/stream-muxer/index.js.map +1 -0
- package/dist/src/stream-muxer/mega-stress-test.d.ts +5 -0
- package/dist/src/stream-muxer/mega-stress-test.d.ts.map +1 -0
- package/dist/src/stream-muxer/mega-stress-test.js +11 -0
- package/dist/src/stream-muxer/mega-stress-test.js.map +1 -0
- package/dist/src/stream-muxer/spawner.d.ts +4 -0
- package/dist/src/stream-muxer/spawner.d.ts.map +1 -0
- package/dist/src/stream-muxer/spawner.js +37 -0
- package/dist/src/stream-muxer/spawner.js.map +1 -0
- package/dist/src/stream-muxer/stress-test.d.ts +5 -0
- package/dist/src/stream-muxer/stress-test.d.ts.map +1 -0
- package/dist/src/stream-muxer/stress-test.js +23 -0
- package/dist/src/stream-muxer/stress-test.js.map +1 -0
- package/dist/src/transport/dial-test.d.ts +5 -0
- package/dist/src/transport/dial-test.d.ts.map +1 -0
- package/dist/src/transport/dial-test.js +98 -0
- package/dist/src/transport/dial-test.js.map +1 -0
- package/dist/src/transport/filter-test.d.ts +5 -0
- package/dist/src/transport/filter-test.d.ts.map +1 -0
- package/dist/src/transport/filter-test.js +18 -0
- package/dist/src/transport/filter-test.js.map +1 -0
- package/dist/src/transport/index.d.ts +15 -0
- package/dist/src/transport/index.d.ts.map +1 -0
- package/dist/src/transport/index.js +11 -0
- package/dist/src/transport/index.js.map +1 -0
- package/dist/src/transport/listen-test.d.ts +5 -0
- package/dist/src/transport/listen-test.d.ts.map +1 -0
- package/dist/src/transport/listen-test.js +152 -0
- package/dist/src/transport/listen-test.js.map +1 -0
- package/package.json +74 -97
- package/src/connection/index.ts +182 -0
- package/src/connection-encryption/index.ts +97 -0
- package/src/connection-encryption/utils/index.ts +24 -0
- package/src/index.ts +0 -1
- package/src/is-valid-tick.ts +0 -1
- package/src/mocks/connection-encrypter.ts +113 -0
- package/src/mocks/connection-gater.ts +18 -0
- package/src/mocks/connection-manager.ts +211 -0
- package/src/mocks/connection.ts +226 -0
- package/src/mocks/duplex.ts +10 -0
- package/src/mocks/index.ts +12 -0
- package/src/mocks/metrics.ts +162 -0
- package/src/mocks/multiaddr-connection.ts +76 -0
- package/src/mocks/muxer.ts +303 -0
- package/src/mocks/peer-discovery.ts +60 -0
- package/src/mocks/registrar.ts +88 -0
- package/src/mocks/upgrader.ts +49 -0
- package/src/peer-discovery/index.ts +90 -0
- package/src/pubsub/api.ts +114 -0
- package/src/pubsub/connection-handlers.ts +413 -0
- package/src/pubsub/emit-self.ts +99 -0
- package/src/pubsub/index.ts +34 -0
- package/src/pubsub/messages.ts +59 -0
- package/src/pubsub/multiple-nodes.ts +440 -0
- package/src/pubsub/two-nodes.ts +273 -0
- package/src/pubsub/utils.ts +29 -0
- package/src/stream-muxer/base-test.ts +196 -0
- package/src/stream-muxer/close-test.ts +442 -0
- package/src/stream-muxer/fixtures/pb/message.proto +7 -0
- package/src/stream-muxer/fixtures/pb/message.ts +87 -0
- package/src/stream-muxer/index.ts +15 -0
- package/src/stream-muxer/mega-stress-test.ts +14 -0
- package/src/stream-muxer/spawner.ts +55 -0
- package/src/stream-muxer/stress-test.ts +27 -0
- package/src/transport/dial-test.ts +124 -0
- package/src/transport/filter-test.ts +25 -0
- package/src/transport/index.ts +25 -0
- package/src/transport/listen-test.ts +191 -0
- package/dist/typedoc-urls.json +0 -3
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
+
import { isPeerId } from '@libp2p/interface/peer-id';
|
|
3
|
+
import { PeerMap } from '@libp2p/peer-collections';
|
|
4
|
+
import { peerIdFromString } from '@libp2p/peer-id';
|
|
5
|
+
import { isMultiaddr } from '@multiformats/multiaddr';
|
|
6
|
+
import { connectionPair } from './connection.js';
|
|
7
|
+
class MockNetwork {
|
|
8
|
+
components = [];
|
|
9
|
+
addNode(components) {
|
|
10
|
+
this.components.push(components);
|
|
11
|
+
}
|
|
12
|
+
getNode(peerId) {
|
|
13
|
+
if (Array.isArray(peerId) && peerId.length > 0) {
|
|
14
|
+
peerId = peerIdFromString(peerId[0].getPeerId() ?? '');
|
|
15
|
+
}
|
|
16
|
+
else if (isPeerId(peerId)) {
|
|
17
|
+
for (const components of this.components) {
|
|
18
|
+
if (peerId.equals(components.peerId)) {
|
|
19
|
+
return components;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
throw new CodeError('Peer not found', 'ERR_PEER_NOT_FOUND');
|
|
24
|
+
}
|
|
25
|
+
reset() {
|
|
26
|
+
this.components = [];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const mockNetwork = new MockNetwork();
|
|
30
|
+
class MockConnectionManager {
|
|
31
|
+
connections = [];
|
|
32
|
+
components;
|
|
33
|
+
started = false;
|
|
34
|
+
constructor(components) {
|
|
35
|
+
this.components = components;
|
|
36
|
+
}
|
|
37
|
+
isStarted() {
|
|
38
|
+
return this.started;
|
|
39
|
+
}
|
|
40
|
+
async start() {
|
|
41
|
+
this.started = true;
|
|
42
|
+
}
|
|
43
|
+
async stop() {
|
|
44
|
+
for (const connection of this.connections) {
|
|
45
|
+
await this.closeConnections(connection.remotePeer);
|
|
46
|
+
}
|
|
47
|
+
this.started = false;
|
|
48
|
+
}
|
|
49
|
+
getConnections(peerId) {
|
|
50
|
+
if (peerId != null) {
|
|
51
|
+
return this.connections
|
|
52
|
+
.filter(c => c.remotePeer.toString() === peerId.toString());
|
|
53
|
+
}
|
|
54
|
+
return this.connections;
|
|
55
|
+
}
|
|
56
|
+
getConnectionsMap() {
|
|
57
|
+
const map = new PeerMap();
|
|
58
|
+
for (const conn of this.connections) {
|
|
59
|
+
const conns = map.get(conn.remotePeer) ?? [];
|
|
60
|
+
conns.push(conn);
|
|
61
|
+
map.set(conn.remotePeer, conns);
|
|
62
|
+
}
|
|
63
|
+
return map;
|
|
64
|
+
}
|
|
65
|
+
async openConnection(peerId) {
|
|
66
|
+
if (this.components == null) {
|
|
67
|
+
throw new CodeError('Not initialized', 'ERR_NOT_INITIALIZED');
|
|
68
|
+
}
|
|
69
|
+
if (isMultiaddr(peerId)) {
|
|
70
|
+
throw new CodeError('Dialing multiaddrs not supported', 'ERR_NOT_SUPPORTED');
|
|
71
|
+
}
|
|
72
|
+
let existingConnections = [];
|
|
73
|
+
if (Array.isArray(peerId) && peerId.length > 0) {
|
|
74
|
+
existingConnections = this.getConnections(peerIdFromString(peerId[0].getPeerId() ?? ''));
|
|
75
|
+
}
|
|
76
|
+
else if (isPeerId(peerId)) {
|
|
77
|
+
existingConnections = this.getConnections(peerId);
|
|
78
|
+
}
|
|
79
|
+
if (existingConnections.length > 0) {
|
|
80
|
+
return existingConnections[0];
|
|
81
|
+
}
|
|
82
|
+
const componentsB = mockNetwork.getNode(peerId);
|
|
83
|
+
const [aToB, bToA] = connectionPair(this.components, componentsB);
|
|
84
|
+
// track connections
|
|
85
|
+
this.connections.push(aToB);
|
|
86
|
+
componentsB.connectionManager.connections.push(bToA);
|
|
87
|
+
this.components.events.safeDispatchEvent('connection:open', {
|
|
88
|
+
detail: aToB
|
|
89
|
+
});
|
|
90
|
+
for (const protocol of this.components.registrar.getProtocols()) {
|
|
91
|
+
for (const topology of this.components.registrar.getTopologies(protocol)) {
|
|
92
|
+
topology.onConnect?.(componentsB.peerId, aToB);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.components.events.safeDispatchEvent('peer:connect', { detail: componentsB.peerId });
|
|
96
|
+
componentsB.events.safeDispatchEvent('connection:open', {
|
|
97
|
+
detail: bToA
|
|
98
|
+
});
|
|
99
|
+
for (const protocol of componentsB.registrar.getProtocols()) {
|
|
100
|
+
for (const topology of componentsB.registrar.getTopologies(protocol)) {
|
|
101
|
+
topology.onConnect?.(this.components.peerId, bToA);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
componentsB.events.safeDispatchEvent('peer:connect', { detail: this.components.peerId });
|
|
105
|
+
return aToB;
|
|
106
|
+
}
|
|
107
|
+
async closeConnections(peerId) {
|
|
108
|
+
if (this.components == null) {
|
|
109
|
+
throw new CodeError('Not initialized', 'ERR_NOT_INITIALIZED');
|
|
110
|
+
}
|
|
111
|
+
const connections = this.getConnections(peerId);
|
|
112
|
+
if (connections.length === 0) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const componentsB = mockNetwork.getNode(peerId);
|
|
116
|
+
for (const protocol of this.components.registrar.getProtocols()) {
|
|
117
|
+
this.components.registrar.getTopologies(protocol).forEach(topology => {
|
|
118
|
+
topology.onDisconnect?.(componentsB.peerId);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
for (const conn of connections) {
|
|
122
|
+
await conn.close();
|
|
123
|
+
}
|
|
124
|
+
this.connections = this.connections.filter(c => !c.remotePeer.equals(peerId));
|
|
125
|
+
if (this.connections.filter(c => !c.remotePeer.equals(peerId)).length === 0) {
|
|
126
|
+
componentsB.events.safeDispatchEvent('peer:disconnect', { detail: peerId });
|
|
127
|
+
}
|
|
128
|
+
await componentsB.connectionManager?.closeConnections(this.components.peerId);
|
|
129
|
+
if (componentsB.connectionManager?.getConnectionsMap().get(this.components.peerId) == null) {
|
|
130
|
+
componentsB.events.safeDispatchEvent('peer:disconnect', { detail: this.components.peerId });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async acceptIncomingConnection() {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
afterUpgradeInbound() {
|
|
137
|
+
}
|
|
138
|
+
getDialQueue() {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function mockConnectionManager(components) {
|
|
143
|
+
return new MockConnectionManager(components);
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=connection-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../src/mocks/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MultiaddrConnection, Connection, Stream, Direction } from '@libp2p/interface/connection';
|
|
2
|
+
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
3
|
+
import type { StreamMuxerFactory } from '@libp2p/interface/stream-muxer';
|
|
4
|
+
import type { Registrar } from '@libp2p/interface-internal/registrar';
|
|
5
|
+
import type { Duplex, Source } from 'it-stream-types';
|
|
6
|
+
import type { Uint8ArrayList } from 'uint8arraylist';
|
|
7
|
+
export interface MockConnectionOptions {
|
|
8
|
+
direction?: Direction;
|
|
9
|
+
registrar?: Registrar;
|
|
10
|
+
muxerFactory?: StreamMuxerFactory;
|
|
11
|
+
}
|
|
12
|
+
export declare function mockConnection(maConn: MultiaddrConnection, opts?: MockConnectionOptions): Connection;
|
|
13
|
+
export declare function mockStream(stream: Duplex<AsyncGenerator<Uint8ArrayList>, Source<Uint8ArrayList | Uint8Array>, Promise<void>>): Stream;
|
|
14
|
+
export interface Peer {
|
|
15
|
+
peerId: PeerId;
|
|
16
|
+
registrar: Registrar;
|
|
17
|
+
}
|
|
18
|
+
export declare function multiaddrConnectionPair(a: {
|
|
19
|
+
peerId: PeerId;
|
|
20
|
+
registrar: Registrar;
|
|
21
|
+
}, b: {
|
|
22
|
+
peerId: PeerId;
|
|
23
|
+
registrar: Registrar;
|
|
24
|
+
}): [MultiaddrConnection, MultiaddrConnection];
|
|
25
|
+
export declare function connectionPair(a: {
|
|
26
|
+
peerId: PeerId;
|
|
27
|
+
registrar: Registrar;
|
|
28
|
+
}, b: {
|
|
29
|
+
peerId: PeerId;
|
|
30
|
+
registrar: Registrar;
|
|
31
|
+
}): [Connection, Connection];
|
|
32
|
+
//# sourceMappingURL=connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../src/mocks/connection.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAwC,MAAM,8BAA8B,CAAA;AAC5I,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAe,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIpD,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAClC;AAqGD,wBAAgB,cAAc,CAAE,MAAM,EAAE,mBAAmB,EAAE,IAAI,GAAE,qBAA0B,GAAG,UAAU,CAqDzG;AAED,wBAAgB,UAAU,CAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAkBtI;AAED,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,uBAAuB,CAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG,CAAE,mBAAmB,EAAE,mBAAmB,CAAE,CAO/K;AAED,wBAAgB,cAAc,CAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,EAAE,CAAC,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,GAAG,CAAE,UAAU,EAAE,UAAU,CAAE,CAWpJ"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
+
import { logger } from '@libp2p/logger';
|
|
3
|
+
import * as mss from '@libp2p/multistream-select';
|
|
4
|
+
import { peerIdFromString } from '@libp2p/peer-id';
|
|
5
|
+
import { duplexPair } from 'it-pair/duplex';
|
|
6
|
+
import { pipe } from 'it-pipe';
|
|
7
|
+
import { mockMultiaddrConnection } from './multiaddr-connection.js';
|
|
8
|
+
import { mockMuxer } from './muxer.js';
|
|
9
|
+
import { mockRegistrar } from './registrar.js';
|
|
10
|
+
const log = logger('libp2p:mock-connection');
|
|
11
|
+
class MockConnection {
|
|
12
|
+
id;
|
|
13
|
+
remoteAddr;
|
|
14
|
+
remotePeer;
|
|
15
|
+
direction;
|
|
16
|
+
timeline;
|
|
17
|
+
multiplexer;
|
|
18
|
+
encryption;
|
|
19
|
+
status;
|
|
20
|
+
streams;
|
|
21
|
+
tags;
|
|
22
|
+
transient;
|
|
23
|
+
muxer;
|
|
24
|
+
maConn;
|
|
25
|
+
constructor(init) {
|
|
26
|
+
const { remoteAddr, remotePeer, direction, maConn, muxer } = init;
|
|
27
|
+
this.id = `mock-connection-${Math.random()}`;
|
|
28
|
+
this.remoteAddr = remoteAddr;
|
|
29
|
+
this.remotePeer = remotePeer;
|
|
30
|
+
this.direction = direction;
|
|
31
|
+
this.status = 'open';
|
|
32
|
+
this.direction = direction;
|
|
33
|
+
this.timeline = maConn.timeline;
|
|
34
|
+
this.multiplexer = 'test-multiplexer';
|
|
35
|
+
this.encryption = 'yes-yes-very-secure';
|
|
36
|
+
this.streams = [];
|
|
37
|
+
this.tags = [];
|
|
38
|
+
this.muxer = muxer;
|
|
39
|
+
this.maConn = maConn;
|
|
40
|
+
this.transient = false;
|
|
41
|
+
}
|
|
42
|
+
async newStream(protocols, options) {
|
|
43
|
+
if (!Array.isArray(protocols)) {
|
|
44
|
+
protocols = [protocols];
|
|
45
|
+
}
|
|
46
|
+
if (protocols.length === 0) {
|
|
47
|
+
throw new Error('protocols must have a length');
|
|
48
|
+
}
|
|
49
|
+
if (this.status !== 'open') {
|
|
50
|
+
throw new CodeError('connection must be open to create streams', 'ERR_CONNECTION_CLOSED');
|
|
51
|
+
}
|
|
52
|
+
const id = `${Math.random()}`;
|
|
53
|
+
const stream = await this.muxer.newStream(id);
|
|
54
|
+
const result = await mss.select(stream, protocols, options);
|
|
55
|
+
stream.protocol = result.protocol;
|
|
56
|
+
stream.direction = 'outbound';
|
|
57
|
+
stream.sink = result.stream.sink;
|
|
58
|
+
stream.source = result.stream.source;
|
|
59
|
+
this.streams.push(stream);
|
|
60
|
+
return stream;
|
|
61
|
+
}
|
|
62
|
+
addStream(stream) {
|
|
63
|
+
this.streams.push(stream);
|
|
64
|
+
}
|
|
65
|
+
removeStream(id) {
|
|
66
|
+
this.streams = this.streams.filter(stream => stream.id !== id);
|
|
67
|
+
}
|
|
68
|
+
async close(options) {
|
|
69
|
+
this.status = 'closing';
|
|
70
|
+
await Promise.all(this.streams.map(async (s) => s.close(options)));
|
|
71
|
+
await this.maConn.close();
|
|
72
|
+
this.status = 'closed';
|
|
73
|
+
this.timeline.close = Date.now();
|
|
74
|
+
}
|
|
75
|
+
abort(err) {
|
|
76
|
+
this.status = 'closing';
|
|
77
|
+
this.streams.forEach(s => {
|
|
78
|
+
s.abort(err);
|
|
79
|
+
});
|
|
80
|
+
this.maConn.abort(err);
|
|
81
|
+
this.status = 'closed';
|
|
82
|
+
this.timeline.close = Date.now();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export function mockConnection(maConn, opts = {}) {
|
|
86
|
+
const remoteAddr = maConn.remoteAddr;
|
|
87
|
+
const remotePeerIdStr = remoteAddr.getPeerId() ?? '12D3KooWCrhmFM1BCPGBkNzbPfDk4cjYmtAYSpZwUBC69Qg2kZyq';
|
|
88
|
+
if (remotePeerIdStr == null) {
|
|
89
|
+
throw new Error('Remote multiaddr must contain a peer id');
|
|
90
|
+
}
|
|
91
|
+
const remotePeer = peerIdFromString(remotePeerIdStr);
|
|
92
|
+
const direction = opts.direction ?? 'inbound';
|
|
93
|
+
const registrar = opts.registrar ?? mockRegistrar();
|
|
94
|
+
const muxerFactory = opts.muxerFactory ?? mockMuxer();
|
|
95
|
+
const muxer = muxerFactory.createStreamMuxer({
|
|
96
|
+
direction,
|
|
97
|
+
onIncomingStream: (muxedStream) => {
|
|
98
|
+
try {
|
|
99
|
+
mss.handle(muxedStream, registrar.getProtocols())
|
|
100
|
+
.then(({ stream, protocol }) => {
|
|
101
|
+
log('%s: incoming stream opened on %s', direction, protocol);
|
|
102
|
+
muxedStream.protocol = protocol;
|
|
103
|
+
muxedStream.sink = stream.sink;
|
|
104
|
+
muxedStream.source = stream.source;
|
|
105
|
+
connection.addStream(muxedStream);
|
|
106
|
+
const { handler } = registrar.getHandler(protocol);
|
|
107
|
+
handler({ connection, stream: muxedStream });
|
|
108
|
+
}).catch(err => {
|
|
109
|
+
log.error(err);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
log.error(err);
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
onStreamEnd: (muxedStream) => {
|
|
117
|
+
connection.removeStream(muxedStream.id);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
void pipe(maConn, muxer, maConn);
|
|
121
|
+
const connection = new MockConnection({
|
|
122
|
+
remoteAddr,
|
|
123
|
+
remotePeer,
|
|
124
|
+
direction,
|
|
125
|
+
maConn,
|
|
126
|
+
muxer
|
|
127
|
+
});
|
|
128
|
+
return connection;
|
|
129
|
+
}
|
|
130
|
+
export function mockStream(stream) {
|
|
131
|
+
return {
|
|
132
|
+
...stream,
|
|
133
|
+
close: async () => { },
|
|
134
|
+
closeRead: async () => { },
|
|
135
|
+
closeWrite: async () => { },
|
|
136
|
+
abort: () => { },
|
|
137
|
+
direction: 'outbound',
|
|
138
|
+
protocol: '/foo/1.0.0',
|
|
139
|
+
timeline: {
|
|
140
|
+
open: Date.now()
|
|
141
|
+
},
|
|
142
|
+
metadata: {},
|
|
143
|
+
id: `stream-${Date.now()}`,
|
|
144
|
+
status: 'open',
|
|
145
|
+
readStatus: 'ready',
|
|
146
|
+
writeStatus: 'ready'
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export function multiaddrConnectionPair(a, b) {
|
|
150
|
+
const [peerBtoPeerA, peerAtoPeerB] = duplexPair();
|
|
151
|
+
return [
|
|
152
|
+
mockMultiaddrConnection(peerAtoPeerB, b.peerId),
|
|
153
|
+
mockMultiaddrConnection(peerBtoPeerA, a.peerId)
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
export function connectionPair(a, b) {
|
|
157
|
+
const [peerBtoPeerA, peerAtoPeerB] = multiaddrConnectionPair(a, b);
|
|
158
|
+
return [
|
|
159
|
+
mockConnection(peerBtoPeerA, {
|
|
160
|
+
registrar: a.registrar
|
|
161
|
+
}),
|
|
162
|
+
mockConnection(peerAtoPeerB, {
|
|
163
|
+
registrar: b.registrar
|
|
164
|
+
})
|
|
165
|
+
];
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../../src/mocks/connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplex.d.ts","sourceRoot":"","sources":["../../../src/mocks/duplex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAErD,wBAAgB,UAAU,IAAK,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAOnG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplex.js","sourceRoot":"","sources":["../../../src/mocks/duplex.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,MAAM,EAAE,CAAC,KAAK,SAAU,CAAC;YACvB,KAAM,CAAC,CAAC,EAAE,CAAA;QACZ,CAAC,EAAE,CAAC;QACJ,IAAI,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;KACrB,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { mockConnectionEncrypter } from './connection-encrypter.js';
|
|
2
|
+
export { mockConnectionGater } from './connection-gater.js';
|
|
3
|
+
export { mockConnectionManager, mockNetwork } from './connection-manager.js';
|
|
4
|
+
export { mockConnection, mockStream, connectionPair } from './connection.js';
|
|
5
|
+
export { mockMultiaddrConnection, mockMultiaddrConnPair } from './multiaddr-connection.js';
|
|
6
|
+
export { mockMuxer } from './muxer.js';
|
|
7
|
+
export { mockRegistrar } from './registrar.js';
|
|
8
|
+
export { mockUpgrader } from './upgrader.js';
|
|
9
|
+
export { mockDuplex } from './duplex.js';
|
|
10
|
+
export { mockMetrics } from './metrics.js';
|
|
11
|
+
export type { MockUpgraderInit } from './upgrader.js';
|
|
12
|
+
export type { MockNetworkComponents } from './connection-manager.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { mockConnectionEncrypter } from './connection-encrypter.js';
|
|
2
|
+
export { mockConnectionGater } from './connection-gater.js';
|
|
3
|
+
export { mockConnectionManager, mockNetwork } from './connection-manager.js';
|
|
4
|
+
export { mockConnection, mockStream, connectionPair } from './connection.js';
|
|
5
|
+
export { mockMultiaddrConnection, mockMultiaddrConnPair } from './multiaddr-connection.js';
|
|
6
|
+
export { mockMuxer } from './muxer.js';
|
|
7
|
+
export { mockRegistrar } from './registrar.js';
|
|
8
|
+
export { mockUpgrader } from './upgrader.js';
|
|
9
|
+
export { mockDuplex } from './duplex.js';
|
|
10
|
+
export { mockMetrics } from './metrics.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mocks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/mocks/metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkC,OAAO,EAA0C,MAAM,2BAA2B,CAAA;AA8JhI,wBAAgB,WAAW,IAAK,MAAM,OAAO,CAE5C"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
class DefaultMetric {
|
|
2
|
+
value = 0;
|
|
3
|
+
update(value) {
|
|
4
|
+
this.value = value;
|
|
5
|
+
}
|
|
6
|
+
increment(value = 1) {
|
|
7
|
+
this.value += value;
|
|
8
|
+
}
|
|
9
|
+
decrement(value = 1) {
|
|
10
|
+
this.value -= value;
|
|
11
|
+
}
|
|
12
|
+
reset() {
|
|
13
|
+
this.value = 0;
|
|
14
|
+
}
|
|
15
|
+
timer() {
|
|
16
|
+
const start = Date.now();
|
|
17
|
+
return () => {
|
|
18
|
+
this.value = Date.now() - start;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
class DefaultGroupMetric {
|
|
23
|
+
values = {};
|
|
24
|
+
update(values) {
|
|
25
|
+
Object.entries(values).forEach(([key, value]) => {
|
|
26
|
+
this.values[key] = value;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
increment(values) {
|
|
30
|
+
Object.entries(values).forEach(([key, value]) => {
|
|
31
|
+
this.values[key] = this.values[key] ?? 0;
|
|
32
|
+
const inc = typeof value === 'number' ? value : 1;
|
|
33
|
+
this.values[key] += Number(inc);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
decrement(values) {
|
|
37
|
+
Object.entries(values).forEach(([key, value]) => {
|
|
38
|
+
this.values[key] = this.values[key] ?? 0;
|
|
39
|
+
const dec = typeof value === 'number' ? value : 1;
|
|
40
|
+
this.values[key] -= Number(dec);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
reset() {
|
|
44
|
+
this.values = {};
|
|
45
|
+
}
|
|
46
|
+
timer(key) {
|
|
47
|
+
const start = Date.now();
|
|
48
|
+
return () => {
|
|
49
|
+
this.values[key] = Date.now() - start;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
class MockMetrics {
|
|
54
|
+
metrics = new Map();
|
|
55
|
+
trackMultiaddrConnection(maConn) {
|
|
56
|
+
}
|
|
57
|
+
trackProtocolStream(stream, connection) {
|
|
58
|
+
}
|
|
59
|
+
registerMetric(name, opts) {
|
|
60
|
+
if (name == null ?? name.trim() === '') {
|
|
61
|
+
throw new Error('Metric name is required');
|
|
62
|
+
}
|
|
63
|
+
if (opts?.calculate != null) {
|
|
64
|
+
// calculated metric
|
|
65
|
+
this.metrics.set(name, opts.calculate);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const metric = new DefaultMetric();
|
|
69
|
+
this.metrics.set(name, metric);
|
|
70
|
+
return metric;
|
|
71
|
+
}
|
|
72
|
+
registerCounter(name, opts) {
|
|
73
|
+
if (name == null ?? name.trim() === '') {
|
|
74
|
+
throw new Error('Metric name is required');
|
|
75
|
+
}
|
|
76
|
+
if (opts?.calculate != null) {
|
|
77
|
+
// calculated metric
|
|
78
|
+
this.metrics.set(name, opts.calculate);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const metric = new DefaultMetric();
|
|
82
|
+
this.metrics.set(name, metric);
|
|
83
|
+
return metric;
|
|
84
|
+
}
|
|
85
|
+
registerMetricGroup(name, opts) {
|
|
86
|
+
if (name == null ?? name.trim() === '') {
|
|
87
|
+
throw new Error('Metric name is required');
|
|
88
|
+
}
|
|
89
|
+
if (opts?.calculate != null) {
|
|
90
|
+
// calculated metric
|
|
91
|
+
this.metrics.set(name, opts.calculate);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const metric = new DefaultGroupMetric();
|
|
95
|
+
this.metrics.set(name, metric);
|
|
96
|
+
return metric;
|
|
97
|
+
}
|
|
98
|
+
registerCounterGroup(name, opts) {
|
|
99
|
+
if (name == null ?? name.trim() === '') {
|
|
100
|
+
throw new Error('Metric name is required');
|
|
101
|
+
}
|
|
102
|
+
if (opts?.calculate != null) {
|
|
103
|
+
// calculated metric
|
|
104
|
+
this.metrics.set(name, opts.calculate);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const metric = new DefaultGroupMetric();
|
|
108
|
+
this.metrics.set(name, metric);
|
|
109
|
+
return metric;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export function mockMetrics() {
|
|
113
|
+
return () => new MockMetrics();
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/mocks/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MultiaddrConnection } from '@libp2p/interface/connection';
|
|
2
|
+
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
3
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
4
|
+
import type { Duplex } from 'it-stream-types';
|
|
5
|
+
export declare function mockMultiaddrConnection(source: Duplex<AsyncGenerator<Uint8Array>> & Partial<MultiaddrConnection>, peerId: PeerId): MultiaddrConnection;
|
|
6
|
+
export interface MockMultiaddrConnPairOptions {
|
|
7
|
+
addrs: Multiaddr[];
|
|
8
|
+
remotePeer: PeerId;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Returns both sides of a mocked MultiaddrConnection
|
|
12
|
+
*/
|
|
13
|
+
export declare function mockMultiaddrConnPair(opts: MockMultiaddrConnPairOptions): {
|
|
14
|
+
inbound: MultiaddrConnection;
|
|
15
|
+
outbound: MultiaddrConnection;
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=multiaddr-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiaddr-connection.d.ts","sourceRoot":"","sources":["../../../src/mocks/multiaddr-connection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,wBAAgB,uBAAuB,CAAE,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAcvJ;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAE,IAAI,EAAE,4BAA4B,GAAG;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,mBAAmB,CAAA;CAAE,CA2C1I"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
2
|
+
import { abortableSource } from 'abortable-iterator';
|
|
3
|
+
import { duplexPair } from 'it-pair/duplex';
|
|
4
|
+
export function mockMultiaddrConnection(source, peerId) {
|
|
5
|
+
const maConn = {
|
|
6
|
+
async close() {
|
|
7
|
+
},
|
|
8
|
+
abort: () => { },
|
|
9
|
+
timeline: {
|
|
10
|
+
open: Date.now()
|
|
11
|
+
},
|
|
12
|
+
remoteAddr: multiaddr(`/ip4/127.0.0.1/tcp/4001/p2p/${peerId.toString()}`),
|
|
13
|
+
...source
|
|
14
|
+
};
|
|
15
|
+
return maConn;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns both sides of a mocked MultiaddrConnection
|
|
19
|
+
*/
|
|
20
|
+
export function mockMultiaddrConnPair(opts) {
|
|
21
|
+
const { addrs, remotePeer } = opts;
|
|
22
|
+
const controller = new AbortController();
|
|
23
|
+
const [localAddr, remoteAddr] = addrs;
|
|
24
|
+
const [inboundStream, outboundStream] = duplexPair();
|
|
25
|
+
const outbound = {
|
|
26
|
+
...outboundStream,
|
|
27
|
+
remoteAddr: remoteAddr.toString().includes(`/p2p/${remotePeer.toString()}`) ? remoteAddr : remoteAddr.encapsulate(`/p2p/${remotePeer.toString()}`),
|
|
28
|
+
timeline: {
|
|
29
|
+
open: Date.now()
|
|
30
|
+
},
|
|
31
|
+
close: async () => {
|
|
32
|
+
outbound.timeline.close = Date.now();
|
|
33
|
+
controller.abort();
|
|
34
|
+
},
|
|
35
|
+
abort: (err) => {
|
|
36
|
+
outbound.timeline.close = Date.now();
|
|
37
|
+
controller.abort(err);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const inbound = {
|
|
41
|
+
...inboundStream,
|
|
42
|
+
remoteAddr: localAddr,
|
|
43
|
+
timeline: {
|
|
44
|
+
open: Date.now()
|
|
45
|
+
},
|
|
46
|
+
close: async () => {
|
|
47
|
+
inbound.timeline.close = Date.now();
|
|
48
|
+
controller.abort();
|
|
49
|
+
},
|
|
50
|
+
abort: (err) => {
|
|
51
|
+
outbound.timeline.close = Date.now();
|
|
52
|
+
controller.abort(err);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
// Make the sources abortable so we can close them easily
|
|
56
|
+
inbound.source = abortableSource(inbound.source, controller.signal);
|
|
57
|
+
outbound.source = abortableSource(outbound.source, controller.signal);
|
|
58
|
+
return { inbound, outbound };
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=multiaddr-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiaddr-connection.js","sourceRoot":"","sources":["../../../src/mocks/multiaddr-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAM3C,MAAM,UAAU,uBAAuB,CAAE,MAAyE,EAAE,MAAc;IAChI,MAAM,MAAM,GAAwB;QAClC,KAAK,CAAC,KAAK;QAEX,CAAC;QACD,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,UAAU,EAAE,SAAS,CAAC,+BAA+B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACzE,GAAG,MAAM;KACV,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAOD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAE,IAAkC;IACvE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAA;IACrC,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,UAAU,EAAc,CAAA;IAEhE,MAAM,QAAQ,GAAwB;QACpC,GAAG,cAAc;QACjB,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;QAClJ,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE;YACpB,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KACF,CAAA;IAED,MAAM,OAAO,GAAwB;QACnC,GAAG,aAAa;QAChB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;SACjB;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACnC,UAAU,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;QACD,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE;YACpB,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACpC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;KACF,CAAA;IAED,yDAAyD;IACzD,OAAO,CAAC,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IACnE,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;IAErE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC"}
|