'use strict' const TCP = require('libp2p-tcp') const Multiplex = require('libp2p-mplex') const SECIO = require('libp2p-secio') const libp2p = require('../../../src') const waterfall = require('async/waterfall') const PeerInfo = require('peer-info') const PeerId = require('peer-id') const ConnManager = require('../../../src/connection-manager') class Node extends libp2p { constructor (peerInfo) { const modules = { transport: [TCP], streamMuxer: [Multiplex], connEncryption: [SECIO] } super({ peerInfo, modules, config: { peerDiscovery: { autoDial: false } } }) } } function createLibp2pNode (options, callback) { let node waterfall([ (cb) => PeerId.create({ bits: 1024 }, cb), (id, cb) => PeerInfo.create(id, cb), (peerInfo, cb) => { peerInfo.multiaddrs.add('/ip4/127.0.0.1/tcp/0') node = new Node(peerInfo) // Replace the connection manager so we use source code instead of dep code node.connectionManager = new ConnManager(node, options) node.start(cb) } ], (err) => callback(err, node)) } exports = module.exports = createLibp2pNode exports.bundle = Node