From e690d28e0dc6a2e2b253254b36da717f419e4add Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Thu, 26 Sep 2019 11:27:39 +0200 Subject: [PATCH] refactor: async --- .gitignore | 40 +++-------------------- .travis.yml | 10 ++++++ README.md | 33 ++++++++++--------- package.json | 35 ++++++++++++-------- src/index.js | 32 ++++++++++++++++++ test/{index.js => peer-discovery.spec.js} | 0 6 files changed, 87 insertions(+), 63 deletions(-) create mode 100644 .travis.yml create mode 100644 src/index.js rename test/{index.js => peer-discovery.spec.js} (100%) diff --git a/.gitignore b/.gitignore index 1be92c3..fd34c26 100644 --- a/.gitignore +++ b/.gitignore @@ -1,38 +1,8 @@ -dist -# Logs -logs -*.log -npm-debug.log* - -# Runtime data -pids -*.pid -*.seed - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov +**/node_modules/ +**/*.log +package-lock.json # Coverage directory used by tools like istanbul coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules -jspm_packages - -# Optional npm cache directory -.npm - -# Optional REPL history -.node_repl_history +docs +dist diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..68ade7c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: node_js +cache: npm +stages: + - check + +node_js: + - '10' + +script: + - npm run lint diff --git a/README.md b/README.md index 91995a2..7e29b93 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ The API is presented with both Node.js and Go primitives, however, there is not ## Modules that implement the interface - [JavaScript libp2p-mdns](https://github.com/libp2p/js-libp2p-mdns) -- [JavaScript libp2p-railing](https://github.com/libp2p/js-libp2p-railing) +- [JavaScript libp2p-bootstrap](https://github.com/libp2p/js-libp2p-bootstrap) - [JavaScript libp2p-kad-dht](https://github.com/libp2p/js-libp2p-kad-dht) - [JavaScript libp2p-webrtc-star](https://github.com/libp2p/js-libp2p-webrtc-star) - [JavaScript libp2p-websocket-star](https://github.com/libp2p/js-libp2p-websocket-star) @@ -44,11 +44,11 @@ Install `interface-peer-discovery` as one of the dependencies of your project an const test = require('interface-peer-discovery') const common = { - setup (cb) { - cb(null, yourMuxer) + setup () { + return YourDiscovery }, - teardown (cb) { - cb() + teardown () { + // Clean up any resources created by setup() } } @@ -56,25 +56,28 @@ const common = { test(common) ``` -### Go - -> WIP - go-libp2p does not have a test suite available for Peer Discovery yet. - ## API A valid (read: that follows this abstraction) Peer Discovery module must implement the following API: ### `start` the service -- `JavaScript` discovery.start(callback) -- `Go` NA +- `await discovery.start()` + +Start the discovery service. + +It returns a `Promise` ### `stop` the service -- `JavaScript` discovery.stop(callback) -- `Go` NA +- `await discovery.stop()` + +Stop the discovery service. + +It returns a `Promise` ### discoverying peers -- `JavaScript` discovery.on('peer', function (peerInfo) {}) -- `Go` NA +- `discovery.on('peer', (peerInfo) => {})` + +Everytime a peer is discovered by a discovery service, it emmits a `peer` event with the discover peer's [PeerInfo](https://github.com/libp2p/js-peer-info). diff --git a/package.json b/package.json index 3482b9a..70f51a7 100644 --- a/package.json +++ b/package.json @@ -5,22 +5,29 @@ "leadMaintainer": "Vasco Santos ", "main": "src/index.js", "scripts": { - "lint": "aegir-lint", - "build": "aegir-build", - "test": "exit 0", - "release": "aegir-release", - "release-minor": "aegir-release --type minor", - "release-major": "aegir-release --type major" + "lint": "aegir lint", + "test": "aegir test", + "build": "aegir build", + "release": "aegir release --no-test", + "release-minor": "aegir release --type minor --no-test", + "release-major": "aegir release --type major --no-test", + "coverage": "exit(0)", + "coverage-publish": "exit(0)" }, - "pre-commit": [ - "lint", - "test" + "pre-push": [ + "lint" ], "repository": { "type": "git", "url": "https://github.com/libp2p/interface-peer-discovery.git" }, "keywords": [ + "libp2p", + "network", + "p2p", + "peer", + "discovery", + "peer-to-peer", "IPFS" ], "author": "David Dias ", @@ -31,13 +38,15 @@ "homepage": "https://github.com/libp2p/interface-peer-discovery", "dependencies": {}, "devDependencies": { - "aegir": "^18.2.2" + "aegir": "^20.3.1", + "chai": "^4.2.0", + "dirty-chai": "^2.0.1" }, "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" + "node": ">=10.0.0", + "npm": ">=6.0.0" }, "contributors": [ "David Dias " ] -} \ No newline at end of file +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..5b00fbd --- /dev/null +++ b/src/index.js @@ -0,0 +1,32 @@ +/* eslint-env mocha */ +'use strict' + +module.exports = (common) => { + describe('interface-peer-discovery', () => { + let discovery + + before(() => { + discovery = common.setup() + }) + + after(() => common.teardown && common.teardown()) + + it('can start the service', async () => { + await discovery.start() + }) + + it('can start and stop the service', async () => { + await discovery.start() + await discovery.stop() + }) + + it('should not fail to stop the service if it was not started', async () => { + await discovery.stop() + }) + + it('should not fail to start the service if it is already started', async () => { + await discovery.start() + await discovery.start() + }) + }) +} diff --git a/test/index.js b/test/peer-discovery.spec.js similarity index 100% rename from test/index.js rename to test/peer-discovery.spec.js