UNPKG

@libp2p/interface-mocks

Version:
51 lines 1.7 kB
import { multiaddr } from '@multiformats/multiaddr'; import { abortableSource } from 'abortable-iterator'; import { duplexPair } from 'it-pair/duplex'; export function mockMultiaddrConnection(source, peerId) { const maConn = { async close() { }, timeline: { open: Date.now() }, remoteAddr: multiaddr(`/ip4/127.0.0.1/tcp/4001/p2p/${peerId.toString()}`), ...source }; return maConn; } /** * Returns both sides of a mocked MultiaddrConnection */ export function mockMultiaddrConnPair(opts) { const { addrs, remotePeer } = opts; const controller = new AbortController(); const [localAddr, remoteAddr] = addrs; const [inboundStream, outboundStream] = duplexPair(); const outbound = { ...outboundStream, remoteAddr: remoteAddr.toString().includes(`/p2p/${remotePeer.toString()}`) ? remoteAddr : remoteAddr.encapsulate(`/p2p/${remotePeer.toString()}`), timeline: { open: Date.now() }, close: async () => { outbound.timeline.close = Date.now(); controller.abort(); } }; const inbound = { ...inboundStream, remoteAddr: localAddr, timeline: { open: Date.now() }, close: async () => { inbound.timeline.close = Date.now(); controller.abort(); } }; // Make the sources abortable so we can close them easily inbound.source = abortableSource(inbound.source, controller.signal); outbound.source = abortableSource(outbound.source, controller.signal); return { inbound, outbound }; } //# sourceMappingURL=multiaddr-connection.js.map