docs: add createLibp2p to readme (#368)

* chore: update deps
* test(fix): account for wrtcrendezvous now being thenable
This commit is contained in:
Jacob Heun 2019-06-07 15:50:23 +02:00 committed by GitHub
parent 04faf1806c
commit 9433c6c398
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 72 additions and 71 deletions

View File

@ -22,13 +22,12 @@ const before = (done) => {
sigServer.start({
port: WRTC_RENDEZVOUS_MULTIADDR.nodeAddress().port
// cryptoChallenge: true TODO: needs https://github.com/libp2p/js-libp2p-webrtc-star/issues/128
}, (err, server) => {
if (err) {
return cb(err)
}
})
.then(server => {
wrtcRendezvous = server
cb()
})
.catch(cb)
},
(cb) => {
WebSocketStarRendezvous.start({
@ -72,14 +71,16 @@ const before = (done) => {
const after = (done) => {
setTimeout(() =>
parallel(
[node, wrtcRendezvous, wsRendezvous].map((s) => (cb) => s.stop(cb)),
done),
2000)
parallel([
(cb) => wrtcRendezvous.stop().then(cb).catch(cb),
...[node, wsRendezvous].map((s) => (cb) => s.stop(cb)),
], done),
2000
)
}
module.exports = {
bundlesize: { maxSize: '218kB' },
bundlesize: { maxSize: '220kB' },
hooks: {
pre: before,
post: after

View File

@ -7,6 +7,7 @@ stages:
node_js:
- '10'
- '12'
os:
- linux

View File

@ -111,7 +111,7 @@ The libp2p module acts as a glue for every libp2p module that you can use to cre
// crypto-channel: secio
// discovery: multicast-dns
const libp2p = require('libp2p')
const Libp2p = require('libp2p')
const TCP = require('libp2p-tcp')
const WS = require('libp2p-websockets')
const SPDY = require('libp2p-spdy')
@ -124,7 +124,7 @@ const Protector = require('libp2p-pnet')
const DelegatedPeerRouter = require('libp2p-delegated-peer-routing')
const DelegatedContentRouter = require('libp2p-delegated-content-routing')
class Node extends libp2p {
class Node extends Libp2p {
constructor (_options) {
const peerInfo = _options.peerInfo
const defaults = {
@ -204,13 +204,31 @@ class Node extends libp2p {
### API
#### Create a Node - `new libp2p.Node(options)`
#### Create a Node - `Libp2p.createLibp2p(options, callback)`
> Creates an instance of the libp2p.Node.
> Behaves exactly like `new Libp2p(options)`, but doesn't require a PeerInfo. One will be generated instead
```js
const { createLibp2p } = require('libp2p')
createLibp2p(options, (err, libp2p) => {
if (err) throw err
libp2p.start((err) => {
if (err) throw err
})
})
```
- `options`: Object of libp2p configuration options
- `callback`: Function with signature `function (Error, Libp2p) {}`
#### Create a Node alternative - `new Libp2p(options)`
> Creates an instance of Libp2p with a custom `PeerInfo` provided via `options.peerInfo`.
Required keys in the `options` object:
- `peerInfo`: instance of [PeerInfo][] that contains the [PeerId][], Keys and [multiaddrs][multiaddr] of the libp2p Node.
- `modules.transport`: An array that must include at least 1 transport, such as `libp2p-tcp`.
#### `libp2p.start(callback)`

View File

@ -42,49 +42,49 @@
"debug": "^4.1.1",
"err-code": "^1.1.2",
"fsm-event": "^2.1.0",
"libp2p-connection-manager": "~0.1.0",
"libp2p-floodsub": "~0.16.0",
"libp2p-ping": "~0.8.5",
"libp2p-switch": "~0.42.9",
"libp2p-websockets": "~0.12.2",
"libp2p-connection-manager": "^0.1.0",
"libp2p-floodsub": "^0.16.1",
"libp2p-ping": "^0.8.5",
"libp2p-switch": "^0.42.12",
"libp2p-websockets": "^0.12.2",
"mafmt": "^6.0.7",
"multiaddr": "^6.0.6",
"multiaddr": "^6.1.0",
"once": "^1.4.0",
"peer-book": "~0.9.1",
"peer-id": "~0.12.2",
"peer-info": "~0.15.1",
"superstruct": "~0.6.0"
"peer-book": "^0.9.1",
"peer-id": "^0.12.2",
"peer-info": "^0.15.1",
"superstruct": "^0.6.0"
},
"devDependencies": {
"@nodeutils/defaults-deep": "^1.1.0",
"aegir": "^18.2.1",
"aegir": "^19.0.3",
"chai": "^4.2.0",
"chai-checkmark": "^1.0.1",
"cids": "~0.5.8",
"cids": "^0.7.1",
"dirty-chai": "^2.0.1",
"electron-webrtc": "~0.3.0",
"interface-datastore": "~0.6.0",
"libp2p-bootstrap": "~0.9.7",
"libp2p-circuit": "~0.3.6",
"libp2p-delegated-content-routing": "~0.2.2",
"libp2p-delegated-peer-routing": "~0.2.2",
"libp2p-kad-dht": "~0.14.8",
"libp2p-mdns": "~0.12.2",
"libp2p-mplex": "~0.8.4",
"libp2p-secio": "~0.11.1",
"libp2p-spdy": "~0.13.2",
"libp2p-tcp": "~0.13.0",
"libp2p-webrtc-star": "~0.15.8",
"electron-webrtc": "^0.3.0",
"interface-datastore": "^0.6.0",
"libp2p-bootstrap": "^0.9.7",
"libp2p-circuit": "^0.3.7",
"libp2p-delegated-content-routing": "^0.2.2",
"libp2p-delegated-peer-routing": "^0.2.2",
"libp2p-kad-dht": "^0.15.2",
"libp2p-mdns": "^0.12.3",
"libp2p-mplex": "^0.8.4",
"libp2p-secio": "^0.11.1",
"libp2p-spdy": "^0.13.2",
"libp2p-tcp": "^0.13.0",
"libp2p-webrtc-star": "^0.16.1",
"libp2p-websocket-star": "~0.10.2",
"libp2p-websocket-star-rendezvous": "~0.3.0",
"lodash.times": "^4.3.2",
"nock": "^10.0.6",
"pull-goodbye": "0.0.2",
"pull-mplex": "~0.1.2",
"pull-serializer": "~0.3.2",
"pull-stream": "^3.6.9",
"pull-mplex": "^0.1.2",
"pull-serializer": "^0.3.2",
"pull-stream": "^3.6.12",
"sinon": "^7.2.7",
"wrtc": "~0.3.5"
"wrtc": "^0.4.1"
},
"contributors": [
"Aditya Bose <13054902+adbose@users.noreply.github.com>",

View File

@ -5,34 +5,24 @@ const chai = require('chai')
chai.use(require('dirty-chai'))
const expect = chai.expect
const sinon = require('sinon')
const signalling = require('libp2p-webrtc-star/src/sig-server')
const parallel = require('async/parallel')
const crypto = require('crypto')
const createNode = require('./utils/create-node')
const echo = require('./utils/echo')
const { WRTC_RENDEZVOUS_MULTIADDR } = require('./utils/constants')
describe('peer discovery', () => {
let nodeA
let nodeB
let nodeC
let port = 24642
let ss
function setup (options) {
before((done) => {
port++
parallel([
(cb) => {
signalling.start({ port: port }, (err, server) => {
expect(err).to.not.exist()
ss = server
cb()
})
},
(cb) => createNode([
'/ip4/0.0.0.0/tcp/0',
`/ip4/127.0.0.1/tcp/${port}/ws/p2p-webrtc-star`
`${WRTC_RENDEZVOUS_MULTIADDR.toString()}/p2p-webrtc-star`
], options, (err, node) => {
expect(err).to.not.exist()
nodeA = node
@ -41,7 +31,7 @@ describe('peer discovery', () => {
}),
(cb) => createNode([
'/ip4/0.0.0.0/tcp/0',
`/ip4/127.0.0.1/tcp/${port}/ws/p2p-webrtc-star`
`${WRTC_RENDEZVOUS_MULTIADDR.toString()}/p2p-webrtc-star`
], options, (err, node) => {
expect(err).to.not.exist()
nodeB = node
@ -50,7 +40,7 @@ describe('peer discovery', () => {
}),
(cb) => createNode([
'/ip4/0.0.0.0/tcp/0',
`/ip4/127.0.0.1/tcp/${port}/ws/p2p-webrtc-star`
`${WRTC_RENDEZVOUS_MULTIADDR.toString()}/p2p-webrtc-star`
], options, (err, node) => {
expect(err).to.not.exist()
nodeC = node
@ -64,8 +54,7 @@ describe('peer discovery', () => {
parallel([
(cb) => nodeA.stop(cb),
(cb) => nodeB.stop(cb),
(cb) => nodeC.stop(cb),
(cb) => ss.stop(cb)
(cb) => nodeC.stop(cb)
], done)
})

View File

@ -6,7 +6,6 @@ chai.use(require('dirty-chai'))
const expect = chai.expect
const parallel = require('async/parallel')
const series = require('async/series')
const signalling = require('libp2p-webrtc-star/src/sig-server')
const rendezvous = require('libp2p-websocket-star-rendezvous')
const TCP = require('libp2p-tcp')
const WS = require('libp2p-websockets')
@ -18,6 +17,8 @@ const createNode = require('./utils/create-node.js')
const tryEcho = require('./utils/try-echo')
const echo = require('./utils/echo')
const { WRTC_RENDEZVOUS_MULTIADDR } = require('./utils/constants')
describe('transports', () => {
describe('TCP only', () => {
let nodeA
@ -409,24 +410,17 @@ describe('transports', () => {
let nodeWS
let nodeWebRTCStar
let ss
before(function (done) {
this.timeout(5 * 1000)
parallel([
(cb) => signalling.start({ port: 24642 }, (err, server) => {
expect(err).to.not.exist()
ss = server
cb()
}),
(cb) => {
const wstar = new WRTCStar({ wrtc: wrtc })
createNode([
'/ip4/0.0.0.0/tcp/0',
'/ip4/127.0.0.1/tcp/25011/ws',
'/ip4/127.0.0.1/tcp/24642/ws/p2p-webrtc-star'
`${WRTC_RENDEZVOUS_MULTIADDR.toString()}/p2p-webrtc-star`
], {
modules: {
transport: [
@ -479,12 +473,11 @@ describe('transports', () => {
node.handle('/echo/1.0.0', echo)
node.start(cb)
}),
(cb) => {
const wstar = new WRTCStar({ wrtc: wrtc })
createNode([
'/ip4/127.0.0.1/tcp/24642/ws/p2p-webrtc-star'
`${WRTC_RENDEZVOUS_MULTIADDR.toString()}/p2p-webrtc-star`
], {
modules: {
transport: [wstar],
@ -515,8 +508,7 @@ describe('transports', () => {
(cb) => nodeAll.stop(cb),
(cb) => nodeTCP.stop(cb),
(cb) => nodeWS.stop(cb),
(cb) => nodeWebRTCStar.stop(cb),
(cb) => ss.stop(cb)
(cb) => nodeWebRTCStar.stop(cb)
], done)
})