mirror of
https://github.com/fluencelabs/js-libp2p
synced 2025-04-25 10:32:14 +00:00
docs: add createLibp2p to readme (#368)
* chore: update deps * test(fix): account for wrtcrendezvous now being thenable
This commit is contained in:
parent
04faf1806c
commit
9433c6c398
19
.aegir.js
19
.aegir.js
@ -22,13 +22,12 @@ const before = (done) => {
|
|||||||
sigServer.start({
|
sigServer.start({
|
||||||
port: WRTC_RENDEZVOUS_MULTIADDR.nodeAddress().port
|
port: WRTC_RENDEZVOUS_MULTIADDR.nodeAddress().port
|
||||||
// cryptoChallenge: true TODO: needs https://github.com/libp2p/js-libp2p-webrtc-star/issues/128
|
// cryptoChallenge: true TODO: needs https://github.com/libp2p/js-libp2p-webrtc-star/issues/128
|
||||||
}, (err, server) => {
|
})
|
||||||
if (err) {
|
.then(server => {
|
||||||
return cb(err)
|
|
||||||
}
|
|
||||||
wrtcRendezvous = server
|
wrtcRendezvous = server
|
||||||
cb()
|
cb()
|
||||||
})
|
})
|
||||||
|
.catch(cb)
|
||||||
},
|
},
|
||||||
(cb) => {
|
(cb) => {
|
||||||
WebSocketStarRendezvous.start({
|
WebSocketStarRendezvous.start({
|
||||||
@ -72,14 +71,16 @@ const before = (done) => {
|
|||||||
|
|
||||||
const after = (done) => {
|
const after = (done) => {
|
||||||
setTimeout(() =>
|
setTimeout(() =>
|
||||||
parallel(
|
parallel([
|
||||||
[node, wrtcRendezvous, wsRendezvous].map((s) => (cb) => s.stop(cb)),
|
(cb) => wrtcRendezvous.stop().then(cb).catch(cb),
|
||||||
done),
|
...[node, wsRendezvous].map((s) => (cb) => s.stop(cb)),
|
||||||
2000)
|
], done),
|
||||||
|
2000
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
bundlesize: { maxSize: '218kB' },
|
bundlesize: { maxSize: '220kB' },
|
||||||
hooks: {
|
hooks: {
|
||||||
pre: before,
|
pre: before,
|
||||||
post: after
|
post: after
|
||||||
|
@ -7,6 +7,7 @@ stages:
|
|||||||
|
|
||||||
node_js:
|
node_js:
|
||||||
- '10'
|
- '10'
|
||||||
|
- '12'
|
||||||
|
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
|
26
README.md
26
README.md
@ -111,7 +111,7 @@ The libp2p module acts as a glue for every libp2p module that you can use to cre
|
|||||||
// crypto-channel: secio
|
// crypto-channel: secio
|
||||||
// discovery: multicast-dns
|
// discovery: multicast-dns
|
||||||
|
|
||||||
const libp2p = require('libp2p')
|
const Libp2p = require('libp2p')
|
||||||
const TCP = require('libp2p-tcp')
|
const TCP = require('libp2p-tcp')
|
||||||
const WS = require('libp2p-websockets')
|
const WS = require('libp2p-websockets')
|
||||||
const SPDY = require('libp2p-spdy')
|
const SPDY = require('libp2p-spdy')
|
||||||
@ -124,7 +124,7 @@ const Protector = require('libp2p-pnet')
|
|||||||
const DelegatedPeerRouter = require('libp2p-delegated-peer-routing')
|
const DelegatedPeerRouter = require('libp2p-delegated-peer-routing')
|
||||||
const DelegatedContentRouter = require('libp2p-delegated-content-routing')
|
const DelegatedContentRouter = require('libp2p-delegated-content-routing')
|
||||||
|
|
||||||
class Node extends libp2p {
|
class Node extends Libp2p {
|
||||||
constructor (_options) {
|
constructor (_options) {
|
||||||
const peerInfo = _options.peerInfo
|
const peerInfo = _options.peerInfo
|
||||||
const defaults = {
|
const defaults = {
|
||||||
@ -204,13 +204,31 @@ class Node extends libp2p {
|
|||||||
|
|
||||||
### API
|
### 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:
|
Required keys in the `options` object:
|
||||||
|
|
||||||
- `peerInfo`: instance of [PeerInfo][] that contains the [PeerId][], Keys and [multiaddrs][multiaddr] of the libp2p Node.
|
- `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)`
|
#### `libp2p.start(callback)`
|
||||||
|
|
||||||
|
58
package.json
58
package.json
@ -42,49 +42,49 @@
|
|||||||
"debug": "^4.1.1",
|
"debug": "^4.1.1",
|
||||||
"err-code": "^1.1.2",
|
"err-code": "^1.1.2",
|
||||||
"fsm-event": "^2.1.0",
|
"fsm-event": "^2.1.0",
|
||||||
"libp2p-connection-manager": "~0.1.0",
|
"libp2p-connection-manager": "^0.1.0",
|
||||||
"libp2p-floodsub": "~0.16.0",
|
"libp2p-floodsub": "^0.16.1",
|
||||||
"libp2p-ping": "~0.8.5",
|
"libp2p-ping": "^0.8.5",
|
||||||
"libp2p-switch": "~0.42.9",
|
"libp2p-switch": "^0.42.12",
|
||||||
"libp2p-websockets": "~0.12.2",
|
"libp2p-websockets": "^0.12.2",
|
||||||
"mafmt": "^6.0.7",
|
"mafmt": "^6.0.7",
|
||||||
"multiaddr": "^6.0.6",
|
"multiaddr": "^6.1.0",
|
||||||
"once": "^1.4.0",
|
"once": "^1.4.0",
|
||||||
"peer-book": "~0.9.1",
|
"peer-book": "^0.9.1",
|
||||||
"peer-id": "~0.12.2",
|
"peer-id": "^0.12.2",
|
||||||
"peer-info": "~0.15.1",
|
"peer-info": "^0.15.1",
|
||||||
"superstruct": "~0.6.0"
|
"superstruct": "^0.6.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@nodeutils/defaults-deep": "^1.1.0",
|
"@nodeutils/defaults-deep": "^1.1.0",
|
||||||
"aegir": "^18.2.1",
|
"aegir": "^19.0.3",
|
||||||
"chai": "^4.2.0",
|
"chai": "^4.2.0",
|
||||||
"chai-checkmark": "^1.0.1",
|
"chai-checkmark": "^1.0.1",
|
||||||
"cids": "~0.5.8",
|
"cids": "^0.7.1",
|
||||||
"dirty-chai": "^2.0.1",
|
"dirty-chai": "^2.0.1",
|
||||||
"electron-webrtc": "~0.3.0",
|
"electron-webrtc": "^0.3.0",
|
||||||
"interface-datastore": "~0.6.0",
|
"interface-datastore": "^0.6.0",
|
||||||
"libp2p-bootstrap": "~0.9.7",
|
"libp2p-bootstrap": "^0.9.7",
|
||||||
"libp2p-circuit": "~0.3.6",
|
"libp2p-circuit": "^0.3.7",
|
||||||
"libp2p-delegated-content-routing": "~0.2.2",
|
"libp2p-delegated-content-routing": "^0.2.2",
|
||||||
"libp2p-delegated-peer-routing": "~0.2.2",
|
"libp2p-delegated-peer-routing": "^0.2.2",
|
||||||
"libp2p-kad-dht": "~0.14.8",
|
"libp2p-kad-dht": "^0.15.2",
|
||||||
"libp2p-mdns": "~0.12.2",
|
"libp2p-mdns": "^0.12.3",
|
||||||
"libp2p-mplex": "~0.8.4",
|
"libp2p-mplex": "^0.8.4",
|
||||||
"libp2p-secio": "~0.11.1",
|
"libp2p-secio": "^0.11.1",
|
||||||
"libp2p-spdy": "~0.13.2",
|
"libp2p-spdy": "^0.13.2",
|
||||||
"libp2p-tcp": "~0.13.0",
|
"libp2p-tcp": "^0.13.0",
|
||||||
"libp2p-webrtc-star": "~0.15.8",
|
"libp2p-webrtc-star": "^0.16.1",
|
||||||
"libp2p-websocket-star": "~0.10.2",
|
"libp2p-websocket-star": "~0.10.2",
|
||||||
"libp2p-websocket-star-rendezvous": "~0.3.0",
|
"libp2p-websocket-star-rendezvous": "~0.3.0",
|
||||||
"lodash.times": "^4.3.2",
|
"lodash.times": "^4.3.2",
|
||||||
"nock": "^10.0.6",
|
"nock": "^10.0.6",
|
||||||
"pull-goodbye": "0.0.2",
|
"pull-goodbye": "0.0.2",
|
||||||
"pull-mplex": "~0.1.2",
|
"pull-mplex": "^0.1.2",
|
||||||
"pull-serializer": "~0.3.2",
|
"pull-serializer": "^0.3.2",
|
||||||
"pull-stream": "^3.6.9",
|
"pull-stream": "^3.6.12",
|
||||||
"sinon": "^7.2.7",
|
"sinon": "^7.2.7",
|
||||||
"wrtc": "~0.3.5"
|
"wrtc": "^0.4.1"
|
||||||
},
|
},
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"Aditya Bose <13054902+adbose@users.noreply.github.com>",
|
"Aditya Bose <13054902+adbose@users.noreply.github.com>",
|
||||||
|
@ -5,34 +5,24 @@ const chai = require('chai')
|
|||||||
chai.use(require('dirty-chai'))
|
chai.use(require('dirty-chai'))
|
||||||
const expect = chai.expect
|
const expect = chai.expect
|
||||||
const sinon = require('sinon')
|
const sinon = require('sinon')
|
||||||
const signalling = require('libp2p-webrtc-star/src/sig-server')
|
|
||||||
const parallel = require('async/parallel')
|
const parallel = require('async/parallel')
|
||||||
const crypto = require('crypto')
|
const crypto = require('crypto')
|
||||||
|
|
||||||
const createNode = require('./utils/create-node')
|
const createNode = require('./utils/create-node')
|
||||||
const echo = require('./utils/echo')
|
const echo = require('./utils/echo')
|
||||||
|
const { WRTC_RENDEZVOUS_MULTIADDR } = require('./utils/constants')
|
||||||
|
|
||||||
describe('peer discovery', () => {
|
describe('peer discovery', () => {
|
||||||
let nodeA
|
let nodeA
|
||||||
let nodeB
|
let nodeB
|
||||||
let nodeC
|
let nodeC
|
||||||
let port = 24642
|
|
||||||
let ss
|
|
||||||
|
|
||||||
function setup (options) {
|
function setup (options) {
|
||||||
before((done) => {
|
before((done) => {
|
||||||
port++
|
|
||||||
parallel([
|
parallel([
|
||||||
(cb) => {
|
|
||||||
signalling.start({ port: port }, (err, server) => {
|
|
||||||
expect(err).to.not.exist()
|
|
||||||
ss = server
|
|
||||||
cb()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
(cb) => createNode([
|
(cb) => createNode([
|
||||||
'/ip4/0.0.0.0/tcp/0',
|
'/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) => {
|
], options, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
nodeA = node
|
nodeA = node
|
||||||
@ -41,7 +31,7 @@ describe('peer discovery', () => {
|
|||||||
}),
|
}),
|
||||||
(cb) => createNode([
|
(cb) => createNode([
|
||||||
'/ip4/0.0.0.0/tcp/0',
|
'/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) => {
|
], options, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
nodeB = node
|
nodeB = node
|
||||||
@ -50,7 +40,7 @@ describe('peer discovery', () => {
|
|||||||
}),
|
}),
|
||||||
(cb) => createNode([
|
(cb) => createNode([
|
||||||
'/ip4/0.0.0.0/tcp/0',
|
'/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) => {
|
], options, (err, node) => {
|
||||||
expect(err).to.not.exist()
|
expect(err).to.not.exist()
|
||||||
nodeC = node
|
nodeC = node
|
||||||
@ -64,8 +54,7 @@ describe('peer discovery', () => {
|
|||||||
parallel([
|
parallel([
|
||||||
(cb) => nodeA.stop(cb),
|
(cb) => nodeA.stop(cb),
|
||||||
(cb) => nodeB.stop(cb),
|
(cb) => nodeB.stop(cb),
|
||||||
(cb) => nodeC.stop(cb),
|
(cb) => nodeC.stop(cb)
|
||||||
(cb) => ss.stop(cb)
|
|
||||||
], done)
|
], done)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ chai.use(require('dirty-chai'))
|
|||||||
const expect = chai.expect
|
const expect = chai.expect
|
||||||
const parallel = require('async/parallel')
|
const parallel = require('async/parallel')
|
||||||
const series = require('async/series')
|
const series = require('async/series')
|
||||||
const signalling = require('libp2p-webrtc-star/src/sig-server')
|
|
||||||
const rendezvous = require('libp2p-websocket-star-rendezvous')
|
const rendezvous = require('libp2p-websocket-star-rendezvous')
|
||||||
const TCP = require('libp2p-tcp')
|
const TCP = require('libp2p-tcp')
|
||||||
const WS = require('libp2p-websockets')
|
const WS = require('libp2p-websockets')
|
||||||
@ -18,6 +17,8 @@ const createNode = require('./utils/create-node.js')
|
|||||||
const tryEcho = require('./utils/try-echo')
|
const tryEcho = require('./utils/try-echo')
|
||||||
const echo = require('./utils/echo')
|
const echo = require('./utils/echo')
|
||||||
|
|
||||||
|
const { WRTC_RENDEZVOUS_MULTIADDR } = require('./utils/constants')
|
||||||
|
|
||||||
describe('transports', () => {
|
describe('transports', () => {
|
||||||
describe('TCP only', () => {
|
describe('TCP only', () => {
|
||||||
let nodeA
|
let nodeA
|
||||||
@ -409,24 +410,17 @@ describe('transports', () => {
|
|||||||
let nodeWS
|
let nodeWS
|
||||||
let nodeWebRTCStar
|
let nodeWebRTCStar
|
||||||
|
|
||||||
let ss
|
|
||||||
|
|
||||||
before(function (done) {
|
before(function (done) {
|
||||||
this.timeout(5 * 1000)
|
this.timeout(5 * 1000)
|
||||||
|
|
||||||
parallel([
|
parallel([
|
||||||
(cb) => signalling.start({ port: 24642 }, (err, server) => {
|
|
||||||
expect(err).to.not.exist()
|
|
||||||
ss = server
|
|
||||||
cb()
|
|
||||||
}),
|
|
||||||
(cb) => {
|
(cb) => {
|
||||||
const wstar = new WRTCStar({ wrtc: wrtc })
|
const wstar = new WRTCStar({ wrtc: wrtc })
|
||||||
|
|
||||||
createNode([
|
createNode([
|
||||||
'/ip4/0.0.0.0/tcp/0',
|
'/ip4/0.0.0.0/tcp/0',
|
||||||
'/ip4/127.0.0.1/tcp/25011/ws',
|
'/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: {
|
modules: {
|
||||||
transport: [
|
transport: [
|
||||||
@ -479,12 +473,11 @@ describe('transports', () => {
|
|||||||
node.handle('/echo/1.0.0', echo)
|
node.handle('/echo/1.0.0', echo)
|
||||||
node.start(cb)
|
node.start(cb)
|
||||||
}),
|
}),
|
||||||
|
|
||||||
(cb) => {
|
(cb) => {
|
||||||
const wstar = new WRTCStar({ wrtc: wrtc })
|
const wstar = new WRTCStar({ wrtc: wrtc })
|
||||||
|
|
||||||
createNode([
|
createNode([
|
||||||
'/ip4/127.0.0.1/tcp/24642/ws/p2p-webrtc-star'
|
`${WRTC_RENDEZVOUS_MULTIADDR.toString()}/p2p-webrtc-star`
|
||||||
], {
|
], {
|
||||||
modules: {
|
modules: {
|
||||||
transport: [wstar],
|
transport: [wstar],
|
||||||
@ -515,8 +508,7 @@ describe('transports', () => {
|
|||||||
(cb) => nodeAll.stop(cb),
|
(cb) => nodeAll.stop(cb),
|
||||||
(cb) => nodeTCP.stop(cb),
|
(cb) => nodeTCP.stop(cb),
|
||||||
(cb) => nodeWS.stop(cb),
|
(cb) => nodeWS.stop(cb),
|
||||||
(cb) => nodeWebRTCStar.stop(cb),
|
(cb) => nodeWebRTCStar.stop(cb)
|
||||||
(cb) => ss.stop(cb)
|
|
||||||
], done)
|
], done)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user