From 2981d6a2e02fecce5df24086dec9d6f46d27706f Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Mon, 17 Sep 2018 17:17:17 +0100 Subject: [PATCH 1/5] chore: add dht interop tests --- package.json | 2 + test/kad-dht.js | 520 ++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 465 insertions(+), 57 deletions(-) diff --git a/package.json b/package.json index 6b0c1d89..aae86b16 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,9 @@ "base64url": "^3.0.0", "bl": "^3.0.0", "bs58": "^4.0.1", + "buffer-loader": "~0.1.0", "chai": "^4.2.0", + "chai-bytes": "^0.1.1", "cids": "~0.7.1", "cross-env": "^5.2.0", "detect-node": "^2.0.4", diff --git a/test/kad-dht.js b/test/kad-dht.js index fa65bf53..ff48125c 100644 --- a/test/kad-dht.js +++ b/test/kad-dht.js @@ -3,110 +3,516 @@ const chai = require('chai') const dirtyChai = require('dirty-chai') +const chaiBytes = require('chai-bytes') const expect = chai.expect chai.use(dirtyChai) +chai.use(chaiBytes) const series = require('async/series') const crypto = require('crypto') const parallel = require('async/parallel') const waterfall = require('async/waterfall') -const bl = require('bl') const DaemonFactory = require('ipfsd-ctl') const goDf = DaemonFactory.create() const jsDf = DaemonFactory.create({ type: 'js' }) -describe.skip('kad-dht', () => { - describe('a JS node in the land of Go', () => { - let jsD - let goD1 - let goD2 - let goD3 +const getConfig = (bootstrap) => ({ + Bootstrap: bootstrap, + Discovery: { + MDNS: { + Enabled: false + }, + webRTCStar: { + Enabled: false + } + } +}) + +const spawnGoDaemon = (bootstrap = [], callback) => { + goDf.spawn({ + initOptions: { bits: 1024 }, + config: getConfig(bootstrap) + }, callback) +} + +const spawnJsDaemon = (bootstrap = [], callback) => { + jsDf.spawn({ + initOptions: { bits: 512 }, + config: getConfig(bootstrap), + args: ['--enable-dht-experiment'] + }, callback) +} + +const getNodeId = (node, callback) => { + node.api.id((err, res) => { + expect(err).to.not.exist() + expect(res.id).to.exist() + + callback(null, res.addresses[0]) + }) +} + +describe.only('kad-dht', () => { + describe.only('a JS network', () => { + let bootstrapAddr + let node0 + let node1 + let node2 + let node3 + let data + + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnJsDaemon([], (err, node) => { + expect(err).to.not.exist() + node0 = node + + getNodeId(node0, (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] - before((done) => { parallel([ - (cb) => goDf.spawn({ initOptions: { bits: 1024 } }, cb), - (cb) => goDf.spawn({ initOptions: { bits: 1024 } }, cb), - (cb) => goDf.spawn({ initOptions: { bits: 1024 } }, cb), - (cb) => jsDf.spawn({ initOptions: { bits: 512 } }, cb) + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) ], (err, nodes) => { expect(err).to.not.exist() - goD1 = nodes[0] - goD2 = nodes[1] - goD3 = nodes[2] - jsD = nodes[3] + node1 = nodes[0] + node2 = nodes[1] + node3 = nodes[2] done() }) }) - after((done) => { + // create data + before(function (done) { + data = crypto.randomBytes(9001) + done() + }) + + after(function (done) { + this.timeout(100 * 1000) series([ - (cb) => goD1.stop(cb), - (cb) => goD2.stop(cb), - (cb) => goD3.stop(cb), - (cb) => jsD.stop(cb) + (cb) => node1.stop(cb), + (cb) => node2.stop(cb), + (cb) => node3.stop(cb), + (cb) => node0.stop(cb) ], done) }) - it('make connections', (done) => { + it('should get from the network after being added', function (done) { + this.timeout(100 * 1000) + + node1.api.add(data, (err, res) => { + expect(err).to.not.exist() + + parallel([ + (cb) => node2.api.cat(res[0].hash, cb), + (cb) => node3.api.cat(res[0].hash, cb) + ], (err, res) => { + expect(err).to.not.exist() + expect(res[0]).to.equalBytes(data) + expect(res[1]).to.equalBytes(data) + done() + }) + }) + }) + }) + + describe('a GO network', () => { + let bootstrapAddr + let node0 + let node1 + let node2 + let node3 + let data + + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnGoDaemon([], (err, node) => { + expect(err).to.not.exist() + node0 = node + + getNodeId(node0, (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] + parallel([ - (cb) => jsD.api.id(cb), - (cb) => goD1.api.id(cb), - (cb) => goD2.api.id(cb), - (cb) => goD3.api.id(cb) - ], (err, ids) => { + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb) + ], (err, nodes) => { + expect(err).to.not.exist() + node1 = nodes[0] + node2 = nodes[1] + node3 = nodes[2] + done() + }) + }) + + // create data + before(function (done) { + data = crypto.randomBytes(9001) + done() + }) + + after(function (done) { + this.timeout(100 * 1000) + series([ + (cb) => node1.stop(cb), + (cb) => node2.stop(cb), + (cb) => node3.stop(cb), + (cb) => node0.stop(cb) + ], done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + + node1.api.add(data, (err, res) => { expect(err).to.not.exist() + parallel([ - (cb) => jsD.api.swarm.connect(ids[1].addresses[0], cb), - (cb) => goD1.api.swarm.connect(ids[2].addresses[0], cb), - (cb) => goD2.api.swarm.connect(ids[3].addresses[0], cb) - ], done) + (cb) => node2.api.cat(res[0].hash, cb), + (cb) => node3.api.cat(res[0].hash, cb) + ], (err, res) => { + expect(err).to.not.exist() + expect(res[0]).to.equalBytes(data) + expect(res[1]).to.equalBytes(data) + done() + }) + }) + }) + }) + + describe('a JS bootstrap node in the land of Go', () => { + let bootstrapAddr + let node0 + let node1 + let node2 + let node3 + let data + + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnJsDaemon([], (err, node) => { + expect(err).to.not.exist() + node0 = node + + getNodeId(node0, (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) }) }) - it('one hop', (done) => { - const data = crypto.randomBytes(9001) + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] - waterfall([ - (cb) => goD1.api.add(data, cb), - (res, cb) => jsD.api.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) - ], (err, file) => { + parallel([ + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb) + ], (err, nodes) => { expect(err).to.not.exist() - expect(file).to.be.eql(data) + node1 = nodes[0] + node2 = nodes[1] + node3 = nodes[2] done() }) }) - it('two hops', (done) => { - const data = crypto.randomBytes(9001) + // create data + before(function (done) { + data = crypto.randomBytes(9001) + done() + }) + + after(function (done) { + this.timeout(70 * 1000) + series([ + (cb) => node1.stop(cb), + (cb) => node2.stop(cb), + (cb) => node3.stop(cb), + (cb) => node0.stop(cb) + ], done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + + node1.api.add(data, (err, res) => { + expect(err).to.not.exist() + + parallel([ + (cb) => node2.api.cat(res[0].hash, cb), + (cb) => node3.api.cat(res[0].hash, cb) + ], (err, res) => { + expect(err).to.not.exist() + expect(res[0]).to.equalBytes(data) + expect(res[1]).to.equalBytes(data) + done() + }) + }) + }) + }) + + describe('a Go bootstrap node in the land of JS', () => { + let bootstrapAddr + let node0 + let node1 + let node2 + let node3 + let data - waterfall([ - (cb) => goD2.api.add(data, cb), - (res, cb) => jsD.api.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) - ], (err, file) => { + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnGoDaemon([], (err, node) => { expect(err).to.not.exist() - expect(file).to.be.eql(data) + node0 = node + + getNodeId(node0, (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] + + parallel([ + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) + ], (err, nodes) => { + expect(err).to.not.exist() + node1 = nodes[0] + node2 = nodes[1] + node3 = nodes[2] done() }) }) - it('three hops', (done) => { - const data = crypto.randomBytes(9001) + // create data + before(function (done) { + data = crypto.randomBytes(9001) + done() + }) + + after(function (done) { + this.timeout(70 * 1000) + series([ + (cb) => node1.stop(cb), + (cb) => node2.stop(cb), + (cb) => node3.stop(cb), + (cb) => node0.stop(cb) + ], done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(100 * 1000) + + node1.api.add(data, (err, res) => { + expect(err).to.not.exist() + + parallel([ + (cb) => node2.api.cat(res[0].hash, cb), + (cb) => node3.api.cat(res[0].hash, cb) + ], (err, res) => { + expect(err).to.not.exist() + expect(res[0]).to.equalBytes(data) + expect(res[1]).to.equalBytes(data) + done() + }) + }) + }) + }) + + describe('a JS bootstrap node in an hybrid land', () => { + let bootstrapAddr + let node0 + let node1 + let node2 + let node3 + let data + + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnJsDaemon([], (err, node) => { + expect(err).to.not.exist() + node0 = node + + getNodeId(node0, (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] - waterfall([ - (cb) => goD3.api.add(data, cb), - (res, cb) => jsD.api.cat(res[0].hash, cb), - (stream, cb) => stream.pipe(bl(cb)) - ], (err, file) => { + parallel([ + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb) + ], (err, nodes) => { expect(err).to.not.exist() - expect(file).to.be.eql(data) + node1 = nodes[0] + node2 = nodes[1] + node3 = nodes[2] done() }) }) + + // create data + before(function (done) { + data = crypto.randomBytes(9001) + done() + }) + + after(function (done) { + this.timeout(70 * 1000) + series([ + (cb) => node1.stop(cb), + (cb) => node2.stop(cb), + (cb) => node3.stop(cb), + (cb) => node0.stop(cb) + ], done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + + node1.api.add(data, (err, res) => { + expect(err).to.not.exist() + + parallel([ + (cb) => node2.api.cat(res[0].hash, cb), + (cb) => node3.api.cat(res[0].hash, cb) + ], (err, res) => { + expect(err).to.not.exist() + expect(res[0]).to.equalBytes(data) + expect(res[1]).to.equalBytes(data) + done() + }) + }) + }) }) - describe('a Go node in the land of JS', () => {}) - describe('hybrid', () => {}) + describe('a Go bootstrap node in an hybrid land', () => { + let bootstrapAddr + let node0 + let node1 + let node2 + let node3 + let data + + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnGoDaemon([], (err, node) => { + expect(err).to.not.exist() + node0 = node + + getNodeId(node0, (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] + + parallel([ + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) + ], (err, nodes) => { + expect(err).to.not.exist() + node1 = nodes[0] + node2 = nodes[1] + node3 = nodes[2] + done() + }) + }) + + // create data + before(function (done) { + data = crypto.randomBytes(9001) + done() + }) + + after(function (done) { + this.timeout(70 * 1000) + series([ + (cb) => node1.stop(cb), + (cb) => node2.stop(cb), + (cb) => node3.stop(cb), + (cb) => node0.stop(cb) + ], done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + + node1.api.add(data, (err, res) => { + expect(err).to.not.exist() + + parallel([ + (cb) => node2.api.cat(res[0].hash, cb), + (cb) => node3.api.cat(res[0].hash, cb) + ], (err, res) => { + expect(err).to.not.exist() + expect(res[0]).to.equalBytes(data) + expect(res[1]).to.equalBytes(data) + done() + }) + }) + }) + }) }) From f3d5db1a8fddeb7b9b7dfae9e7f0b2e0303180cc Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Wed, 3 Oct 2018 16:35:43 +0100 Subject: [PATCH 2/5] chore: refactored interop tests --- package.json | 2 +- test/browser.js | 2 +- test/kad-dht.js | 733 +++++++++++++++++++++++++----------------------- 3 files changed, 382 insertions(+), 355 deletions(-) diff --git a/package.json b/package.json index aae86b16..85cfb7a9 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "bs58": "^4.0.1", "buffer-loader": "~0.1.0", "chai": "^4.2.0", - "chai-bytes": "^0.1.1", + "chai-bytes": "~0.1.1", "cids": "~0.7.1", "cross-env": "^5.2.0", "detect-node": "^2.0.4", diff --git a/test/browser.js b/test/browser.js index 3cb6ce16..ae48adfe 100644 --- a/test/browser.js +++ b/test/browser.js @@ -3,7 +3,7 @@ // require('./exchange-files') // require('./pubsub') -require('./kad-dht') +// require('./kad-dht') require('./circuit') // require('./repo') require('./files') diff --git a/test/kad-dht.js b/test/kad-dht.js index ff48125c..1470b949 100644 --- a/test/kad-dht.js +++ b/test/kad-dht.js @@ -1,3 +1,4 @@ +/* eslint max-nested-callbacks: ["error", 6] */ /* eslint-env mocha */ 'use strict' @@ -8,14 +9,14 @@ const expect = chai.expect chai.use(dirtyChai) chai.use(chaiBytes) -const series = require('async/series') const crypto = require('crypto') const parallel = require('async/parallel') -const waterfall = require('async/waterfall') const DaemonFactory = require('ipfsd-ctl') +const IPFS = require('ipfs') const goDf = DaemonFactory.create() -const jsDf = DaemonFactory.create({ type: 'js' }) +const jsDf = DaemonFactory.create({ type: 'proc', exec: IPFS }) +// const jsDf = DaemonFactory.create({ type: 'js' }) CHANGE TO HERE once UPDATED const getConfig = (bootstrap) => ({ Bootstrap: bootstrap, @@ -44,7 +45,7 @@ const spawnJsDaemon = (bootstrap = [], callback) => { }, callback) } -const getNodeId = (node, callback) => { +const getBootstrapAddr = (node, callback) => { node.api.id((err, res) => { expect(err).to.not.exist() expect(res.id).to.exist() @@ -53,466 +54,492 @@ const getNodeId = (node, callback) => { }) } -describe.only('kad-dht', () => { - describe.only('a JS network', () => { - let bootstrapAddr - let node0 - let node1 - let node2 - let node3 - let data +const addFileAndCat = (addDaemon, catDaemons, data, callback) => { + addDaemon.api.files.add(data, (err, res) => { + expect(err).to.not.exist() + + parallel(catDaemons.map((daemon) => (cb) => daemon.api.files.cat(res[0].hash, cb)), (err, res) => { + expect(err).to.not.exist() + res.forEach((resData) => { + expect(resData).to.equalBytes(data) + }) + callback() + }) + }) +} - // spawn bootstrap daemon and get address - before(function (done) { - this.timeout(60 * 1000) +describe('kad-dht', () => { + describe('kad-dht with a single bootstrap node', () => { + describe('a JS network', () => { + let bootstrapAddr + let nodes = [] + let data = crypto.randomBytes(9001) - spawnJsDaemon([], (err, node) => { - expect(err).to.not.exist() - node0 = node + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) - getNodeId(node0, (err, res) => { + spawnJsDaemon([], (err, node) => { expect(err).to.not.exist() - bootstrapAddr = res - done() + nodes.push(node) + + getBootstrapAddr(nodes[0], (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) }) }) - }) - // spawn daemons - before(function (done) { - this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] - - parallel([ - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb) - ], (err, nodes) => { - expect(err).to.not.exist() - node1 = nodes[0] - node2 = nodes[1] - node3 = nodes[2] - done() + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] + + parallel([ + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) + ], (err, spawnedNodes) => { + expect(err).to.not.exist() + spawnedNodes.forEach((node) => nodes.push(node)) + setTimeout(done, 25000) // Wait for peers to have each other on the DHT + }) }) - }) - // create data - before(function (done) { - data = crypto.randomBytes(9001) - done() - }) + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + }) - after(function (done) { - this.timeout(100 * 1000) - series([ - (cb) => node1.stop(cb), - (cb) => node2.stop(cb), - (cb) => node3.stop(cb), - (cb) => node0.stop(cb) - ], done) + it('should get from the network after being added', function (done) { + this.timeout(100 * 1000) + addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) + }) }) - it('should get from the network after being added', function (done) { - this.timeout(100 * 1000) + describe('a GO network', () => { + let bootstrapAddr + let nodes = [] + let data = crypto.randomBytes(9001) - node1.api.add(data, (err, res) => { - expect(err).to.not.exist() + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) - parallel([ - (cb) => node2.api.cat(res[0].hash, cb), - (cb) => node3.api.cat(res[0].hash, cb) - ], (err, res) => { + spawnGoDaemon([], (err, node) => { expect(err).to.not.exist() - expect(res[0]).to.equalBytes(data) - expect(res[1]).to.equalBytes(data) - done() + nodes.push(node) + + getBootstrapAddr(nodes[0], (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) }) }) - }) - }) - - describe('a GO network', () => { - let bootstrapAddr - let node0 - let node1 - let node2 - let node3 - let data - - // spawn bootstrap daemon and get address - before(function (done) { - this.timeout(60 * 1000) - spawnGoDaemon([], (err, node) => { - expect(err).to.not.exist() - node0 = node + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] - getNodeId(node0, (err, res) => { + parallel([ + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - bootstrapAddr = res - done() + spawnedNodes.forEach((node) => nodes.push(node)) + setTimeout(done, 25000) // Wait for peers to have each other on the DHT }) }) - }) - // spawn daemons - before(function (done) { - this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] - - parallel([ - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb) - ], (err, nodes) => { - expect(err).to.not.exist() - node1 = nodes[0] - node2 = nodes[1] - node3 = nodes[2] - done() + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) }) - }) - // create data - before(function (done) { - data = crypto.randomBytes(9001) - done() + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) + }) }) - after(function (done) { - this.timeout(100 * 1000) - series([ - (cb) => node1.stop(cb), - (cb) => node2.stop(cb), - (cb) => node3.stop(cb), - (cb) => node0.stop(cb) - ], done) - }) + describe('a JS bootstrap node in the land of Go', () => { + let bootstrapAddr + let nodes = [] + let data = crypto.randomBytes(9001) - it('should get from the network after being added', function (done) { - this.timeout(60 * 1000) + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) - node1.api.add(data, (err, res) => { - expect(err).to.not.exist() + spawnJsDaemon([], (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + + getBootstrapAddr(nodes[0], (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] parallel([ - (cb) => node2.api.cat(res[0].hash, cb), - (cb) => node3.api.cat(res[0].hash, cb) - ], (err, res) => { + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - expect(res[0]).to.equalBytes(data) - expect(res[1]).to.equalBytes(data) - done() + spawnedNodes.forEach((node) => nodes.push(node)) + setTimeout(done, 25000) // Wait for peers to have each other on the DHT }) }) + + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) + }) }) - }) - describe('a JS bootstrap node in the land of Go', () => { - let bootstrapAddr - let node0 - let node1 - let node2 - let node3 - let data + describe('a Go bootstrap node in the land of JS', () => { + let bootstrapAddr + let nodes = [] + let data = crypto.randomBytes(9001) - // spawn bootstrap daemon and get address - before(function (done) { - this.timeout(60 * 1000) + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) + + spawnGoDaemon([], (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + + getBootstrapAddr(nodes[0], (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) - spawnJsDaemon([], (err, node) => { - expect(err).to.not.exist() - node0 = node + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] - getNodeId(node0, (err, res) => { + parallel([ + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - bootstrapAddr = res - done() + spawnedNodes.forEach((node) => nodes.push(node)) + setTimeout(done, 25000) // Wait for peers to have each other on the DHT }) }) - }) - // spawn daemons - before(function (done) { - this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] - - parallel([ - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb) - ], (err, nodes) => { - expect(err).to.not.exist() - node1 = nodes[0] - node2 = nodes[1] - node3 = nodes[2] - done() + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) }) - }) - // create data - before(function (done) { - data = crypto.randomBytes(9001) - done() + it('should get from the network after being added', function (done) { + this.timeout(100 * 1000) + addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) + }) }) - after(function (done) { - this.timeout(70 * 1000) - series([ - (cb) => node1.stop(cb), - (cb) => node2.stop(cb), - (cb) => node3.stop(cb), - (cb) => node0.stop(cb) - ], done) - }) + describe('a JS bootstrap node in an hybrid land', () => { + let bootstrapAddr + let nodes = [] + let data = crypto.randomBytes(9001) - it('should get from the network after being added', function (done) { - this.timeout(60 * 1000) + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) - node1.api.add(data, (err, res) => { - expect(err).to.not.exist() + spawnJsDaemon([], (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + + getBootstrapAddr(nodes[0], (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) + + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] parallel([ - (cb) => node2.api.cat(res[0].hash, cb), - (cb) => node3.api.cat(res[0].hash, cb) - ], (err, res) => { + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - expect(res[0]).to.equalBytes(data) - expect(res[1]).to.equalBytes(data) - done() + spawnedNodes.forEach((node) => nodes.push(node)) + setTimeout(done, 25000) // Wait for peers to have each other on the DHT }) }) + + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + }) + + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) + + addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) + }) }) - }) - describe('a Go bootstrap node in the land of JS', () => { - let bootstrapAddr - let node0 - let node1 - let node2 - let node3 - let data + describe('a Go bootstrap node in an hybrid land', () => { + let bootstrapAddr + let nodes = [] + let data = crypto.randomBytes(9001) + + // spawn bootstrap daemon and get address + before(function (done) { + this.timeout(60 * 1000) - // spawn bootstrap daemon and get address - before(function (done) { - this.timeout(60 * 1000) + spawnGoDaemon([], (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + + getBootstrapAddr(nodes[0], (err, res) => { + expect(err).to.not.exist() + bootstrapAddr = res + done() + }) + }) + }) - spawnGoDaemon([], (err, node) => { - expect(err).to.not.exist() - node0 = node + // spawn daemons + before(function (done) { + this.timeout(70 * 1000) + const bootstrap = [bootstrapAddr] - getNodeId(node0, (err, res) => { + parallel([ + (cb) => spawnJsDaemon(bootstrap, cb), + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - bootstrapAddr = res - done() + spawnedNodes.forEach((node) => nodes.push(node)) + setTimeout(done, 25000) // Wait for peers to have each other on the DHT }) }) - }) - // spawn daemons - before(function (done) { - this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] - - parallel([ - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb) - ], (err, nodes) => { - expect(err).to.not.exist() - node1 = nodes[0] - node2 = nodes[1] - node3 = nodes[2] - done() + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) }) - }) - // create data - before(function (done) { - data = crypto.randomBytes(9001) - done() - }) + it('should get from the network after being added', function (done) { + this.timeout(60 * 1000) - after(function (done) { - this.timeout(70 * 1000) - series([ - (cb) => node1.stop(cb), - (cb) => node2.stop(cb), - (cb) => node3.stop(cb), - (cb) => node0.stop(cb) - ], done) + addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) + }) }) + }) - it('should get from the network after being added', function (done) { - this.timeout(100 * 1000) + describe('kad-dht with connections per peer', () => { + describe('a JS node in the land of Go', () => { + let nodes = [] - node1.api.add(data, (err, res) => { - expect(err).to.not.exist() + // Spawn daemons + before(function (done) { + this.timeout(60 * 1000) parallel([ - (cb) => node2.api.cat(res[0].hash, cb), - (cb) => node3.api.cat(res[0].hash, cb) - ], (err, res) => { + (cb) => spawnGoDaemon([], cb), + (cb) => spawnGoDaemon([], cb), + (cb) => spawnGoDaemon([], cb), + (cb) => spawnJsDaemon([], cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - expect(res[0]).to.equalBytes(data) - expect(res[1]).to.equalBytes(data) + nodes = spawnedNodes done() }) }) - }) - }) - - describe('a JS bootstrap node in an hybrid land', () => { - let bootstrapAddr - let node0 - let node1 - let node2 - let node3 - let data - // spawn bootstrap daemon and get address - before(function (done) { - this.timeout(60 * 1000) + // make connections + before(function (done) { + this.timeout(60 * 1000) - spawnJsDaemon([], (err, node) => { - expect(err).to.not.exist() - node0 = node - - getNodeId(node0, (err, res) => { + parallel(nodes.map((node) => (cb) => node.api.id(cb)), (err, ids) => { expect(err).to.not.exist() - bootstrapAddr = res - done() + parallel([ + (cb) => nodes[3].api.swarm.connect(ids[0].addresses[0], cb), + (cb) => nodes[0].api.swarm.connect(ids[1].addresses[0], cb), + (cb) => nodes[1].api.swarm.connect(ids[2].addresses[0], cb) + ], done) }) }) - }) - // spawn daemons - before(function (done) { - this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] - - parallel([ - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb) - ], (err, nodes) => { - expect(err).to.not.exist() - node1 = nodes[0] - node2 = nodes[1] - node3 = nodes[2] - done() + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) }) - }) - // create data - before(function (done) { - data = crypto.randomBytes(9001) - done() - }) + it('one hop', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) - after(function (done) { - this.timeout(70 * 1000) - series([ - (cb) => node1.stop(cb), - (cb) => node2.stop(cb), - (cb) => node3.stop(cb), - (cb) => node0.stop(cb) - ], done) + addFileAndCat(nodes[0], [nodes[3]], data, done) + }) + + it('two hops', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[1], [nodes[3]], data, done) + }) + + it('three hops', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[2], [nodes[3]], data, done) + }) }) - it('should get from the network after being added', function (done) { - this.timeout(60 * 1000) + describe('a Go node in the land of JS', () => { + let nodes = [] - node1.api.add(data, (err, res) => { - expect(err).to.not.exist() + // Spawn daemons + before(function (done) { + this.timeout(60 * 1000) parallel([ - (cb) => node2.api.cat(res[0].hash, cb), - (cb) => node3.api.cat(res[0].hash, cb) - ], (err, res) => { + (cb) => spawnJsDaemon([], cb), + (cb) => spawnJsDaemon([], cb), + (cb) => spawnJsDaemon([], cb), + (cb) => spawnGoDaemon([], cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - expect(res[0]).to.equalBytes(data) - expect(res[1]).to.equalBytes(data) + nodes = spawnedNodes done() }) }) - }) - }) - - describe('a Go bootstrap node in an hybrid land', () => { - let bootstrapAddr - let node0 - let node1 - let node2 - let node3 - let data - // spawn bootstrap daemon and get address - before(function (done) { - this.timeout(60 * 1000) + // make connections + before(function (done) { + this.timeout(60 * 1000) - spawnGoDaemon([], (err, node) => { - expect(err).to.not.exist() - node0 = node - - getNodeId(node0, (err, res) => { + parallel(nodes.map((node) => (cb) => node.api.id(cb)), (err, ids) => { expect(err).to.not.exist() - bootstrapAddr = res - done() + parallel([ + (cb) => nodes[3].api.swarm.connect(ids[0].addresses[0], cb), + (cb) => nodes[0].api.swarm.connect(ids[1].addresses[0], cb), + (cb) => nodes[1].api.swarm.connect(ids[2].addresses[0], cb) + ], done) }) }) - }) - // spawn daemons - before(function (done) { - this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] - - parallel([ - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb) - ], (err, nodes) => { - expect(err).to.not.exist() - node1 = nodes[0] - node2 = nodes[1] - node3 = nodes[2] - done() + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) }) - }) - // create data - before(function (done) { - data = crypto.randomBytes(9001) - done() - }) + it('one hop', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) - after(function (done) { - this.timeout(70 * 1000) - series([ - (cb) => node1.stop(cb), - (cb) => node2.stop(cb), - (cb) => node3.stop(cb), - (cb) => node0.stop(cb) - ], done) + addFileAndCat(nodes[0], [nodes[3]], data, done) + }) + + it('two hops', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[1], [nodes[3]], data, done) + }) + + it('three hops', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[2], [nodes[3]], data, done) + }) }) - it('should get from the network after being added', function (done) { - this.timeout(60 * 1000) + describe('hybrid', () => { + let nodes = [] - node1.api.add(data, (err, res) => { - expect(err).to.not.exist() + // Spawn daemons + before(function (done) { + this.timeout(60 * 1000) parallel([ - (cb) => node2.api.cat(res[0].hash, cb), - (cb) => node3.api.cat(res[0].hash, cb) - ], (err, res) => { + (cb) => spawnJsDaemon([], cb), + (cb) => spawnGoDaemon([], cb), + (cb) => spawnJsDaemon([], cb), + (cb) => spawnGoDaemon([], cb) + ], (err, spawnedNodes) => { expect(err).to.not.exist() - expect(res[0]).to.equalBytes(data) - expect(res[1]).to.equalBytes(data) + nodes = spawnedNodes done() }) }) + + // make connections + before(function (done) { + this.timeout(60 * 1000) + + parallel(nodes.map((node) => (cb) => node.api.id(cb)), (err, ids) => { + expect(err).to.not.exist() + parallel([ + (cb) => nodes[3].api.swarm.connect(ids[0].addresses[0], cb), + (cb) => nodes[0].api.swarm.connect(ids[1].addresses[0], cb), + (cb) => nodes[1].api.swarm.connect(ids[2].addresses[0], cb) + ], done) + }) + }) + + after(function (done) { + this.timeout(80 * 1000) + parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + }) + + it('one hop', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[0], [nodes[3]], data, done) + }) + + it('two hops', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[1], [nodes[3]], data, done) + }) + + it('three hops', function (done) { + this.timeout(85 * 1000) + const data = crypto.randomBytes(9001) + + addFileAndCat(nodes[2], [nodes[3]], data, done) + }) }) }) }) From 6c6ad276d667f853dc169e94270fa444c082695a Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Wed, 2 Jan 2019 16:10:36 +0000 Subject: [PATCH 3/5] fix: code review --- test/kad-dht.js | 264 +++++++++++++++++++++++++++++--------- test/utils/wait-for-fn.js | 37 ++++++ 2 files changed, 239 insertions(+), 62 deletions(-) create mode 100644 test/utils/wait-for-fn.js diff --git a/test/kad-dht.js b/test/kad-dht.js index 1470b949..7901b299 100644 --- a/test/kad-dht.js +++ b/test/kad-dht.js @@ -10,13 +10,16 @@ chai.use(dirtyChai) chai.use(chaiBytes) const crypto = require('crypto') +const each = require('async/each') const parallel = require('async/parallel') +const times = require('async/times') + +const waitFor = require('./utils/wait-for-fn') const DaemonFactory = require('ipfsd-ctl') const IPFS = require('ipfs') const goDf = DaemonFactory.create() const jsDf = DaemonFactory.create({ type: 'proc', exec: IPFS }) -// const jsDf = DaemonFactory.create({ type: 'js' }) CHANGE TO HERE once UPDATED const getConfig = (bootstrap) => ({ Bootstrap: bootstrap, @@ -40,8 +43,7 @@ const spawnGoDaemon = (bootstrap = [], callback) => { const spawnJsDaemon = (bootstrap = [], callback) => { jsDf.spawn({ initOptions: { bits: 512 }, - config: getConfig(bootstrap), - args: ['--enable-dht-experiment'] + config: getConfig(bootstrap) }, callback) } @@ -55,16 +57,16 @@ const getBootstrapAddr = (node, callback) => { } const addFileAndCat = (addDaemon, catDaemons, data, callback) => { - addDaemon.api.files.add(data, (err, res) => { + addDaemon.api.add(data, (err, res) => { expect(err).to.not.exist() - parallel(catDaemons.map((daemon) => (cb) => daemon.api.files.cat(res[0].hash, cb)), (err, res) => { - expect(err).to.not.exist() - res.forEach((resData) => { - expect(resData).to.equalBytes(data) + each(catDaemons, (daemon, cb) => { + daemon.api.cat(res[0].hash, (err, res) => { + expect(err).to.not.exist() + expect(res).to.equalBytes(data) + cb() }) - callback() - }) + }, callback) }) } @@ -94,22 +96,41 @@ describe('kad-dht', () => { // spawn daemons before(function (done) { this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] + const peersToSpawn = 3 + const bootstrap = bootstrapAddr ? [bootstrapAddr] : [] - parallel([ - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb) - ], (err, spawnedNodes) => { + times(peersToSpawn, (_, next) => { + spawnJsDaemon(bootstrap, (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + next(err, node) + }) + }, (err) => { expect(err).to.not.exist() - spawnedNodes.forEach((node) => nodes.push(node)) - setTimeout(done, 25000) // Wait for peers to have each other on the DHT + + const testDhtReady = (cb) => { + nodes[0].api.swarm.peers((err, peers) => { + if (err) { + return cb(err) + } + cb(null, peers.length === peersToSpawn) + }) + } + + // Wait for peers to have each other on the DHT + waitFor(testDhtReady, { + name: 'dht peers ready', + timeout: 30 * 1000, + interval: 5 * 1000 + }, done) }) }) after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('should get from the network after being added', function (done) { @@ -119,6 +140,7 @@ describe('kad-dht', () => { }) describe('a GO network', () => { + const peersToSpawn = 3 let bootstrapAddr let nodes = [] let data = crypto.randomBytes(9001) @@ -142,22 +164,40 @@ describe('kad-dht', () => { // spawn daemons before(function (done) { this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] + const bootstrap = bootstrapAddr ? [bootstrapAddr] : [] - parallel([ - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb) - ], (err, spawnedNodes) => { + times(peersToSpawn, (_, next) => { + spawnGoDaemon(bootstrap, (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + next(err, node) + }) + }, (err) => { expect(err).to.not.exist() - spawnedNodes.forEach((node) => nodes.push(node)) - setTimeout(done, 25000) // Wait for peers to have each other on the DHT + + const testDhtReady = (cb) => { + nodes[0].api.swarm.peers((err, peers) => { + if (err) { + return cb(err) + } + cb(null, peers.length === peersToSpawn) + }) + } + + // Wait for peers to have each other on the DHT + waitFor(testDhtReady, { + name: 'dht peers ready', + timeout: 30 * 1000, + interval: 5 * 1000 + }, done) }) }) after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('should get from the network after being added', function (done) { @@ -167,6 +207,7 @@ describe('kad-dht', () => { }) describe('a JS bootstrap node in the land of Go', () => { + const peersToSpawn = 3 let bootstrapAddr let nodes = [] let data = crypto.randomBytes(9001) @@ -190,22 +231,40 @@ describe('kad-dht', () => { // spawn daemons before(function (done) { this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] + const bootstrap = bootstrapAddr ? [bootstrapAddr] : [] - parallel([ - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb) - ], (err, spawnedNodes) => { + times(peersToSpawn, (_, next) => { + spawnGoDaemon(bootstrap, (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + next(err, node) + }) + }, (err) => { expect(err).to.not.exist() - spawnedNodes.forEach((node) => nodes.push(node)) - setTimeout(done, 25000) // Wait for peers to have each other on the DHT + + const testDhtReady = (cb) => { + nodes[0].api.swarm.peers((err, peers) => { + if (err) { + return cb(err) + } + cb(null, peers.length === peersToSpawn) + }) + } + + // Wait for peers to have each other on the DHT + waitFor(testDhtReady, { + name: 'dht peers ready', + timeout: 30 * 1000, + interval: 5 * 1000 + }, done) }) }) after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('should get from the network after being added', function (done) { @@ -215,13 +274,14 @@ describe('kad-dht', () => { }) describe('a Go bootstrap node in the land of JS', () => { + const peersToSpawn = 3 let bootstrapAddr let nodes = [] let data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { - this.timeout(60 * 1000) + this.timeout(80 * 1000) spawnGoDaemon([], (err, node) => { expect(err).to.not.exist() @@ -238,26 +298,44 @@ describe('kad-dht', () => { // spawn daemons before(function (done) { this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] + const bootstrap = bootstrapAddr ? [bootstrapAddr] : [] - parallel([ - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnJsDaemon(bootstrap, cb) - ], (err, spawnedNodes) => { + times(peersToSpawn, (_, next) => { + spawnJsDaemon(bootstrap, (err, node) => { + expect(err).to.not.exist() + nodes.push(node) + next(err, node) + }) + }, (err) => { expect(err).to.not.exist() - spawnedNodes.forEach((node) => nodes.push(node)) - setTimeout(done, 25000) // Wait for peers to have each other on the DHT + + const testDhtReady = (cb) => { + nodes[0].api.swarm.peers((err, peers) => { + if (err) { + return cb(err) + } + cb(null, peers.length === peersToSpawn) + }) + } + + // Wait for peers to have each other on the DHT + waitFor(testDhtReady, { + name: 'dht peers ready', + timeout: 30 * 1000, + interval: 5 * 1000 + }, done) }) }) after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('should get from the network after being added', function (done) { - this.timeout(100 * 1000) + this.timeout(120 * 1000) addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) }) }) @@ -286,26 +364,43 @@ describe('kad-dht', () => { // spawn daemons before(function (done) { this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] + const bootstrap = bootstrapAddr ? [bootstrapAddr] : [] parallel([ - (cb) => spawnGoDaemon(bootstrap, cb), (cb) => spawnJsDaemon(bootstrap, cb), - (cb) => spawnGoDaemon(bootstrap, cb) + (cb) => spawnGoDaemon(bootstrap, cb), + (cb) => spawnJsDaemon(bootstrap, cb) ], (err, spawnedNodes) => { expect(err).to.not.exist() spawnedNodes.forEach((node) => nodes.push(node)) - setTimeout(done, 25000) // Wait for peers to have each other on the DHT + + const testDhtReady = (cb) => { + nodes[0].api.swarm.peers((err, peers) => { + if (err) { + return cb(err) + } + cb(null, peers.length === 3) + }) + } + + // Wait for peers to have each other on the DHT + waitFor(testDhtReady, { + name: 'dht peers ready', + timeout: 30 * 1000, + interval: 5 * 1000 + }, done) }) }) after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('should get from the network after being added', function (done) { - this.timeout(60 * 1000) + this.timeout(140 * 1000) addFileAndCat(nodes[1], [nodes[2], nodes[3]], data, done) }) @@ -335,7 +430,7 @@ describe('kad-dht', () => { // spawn daemons before(function (done) { this.timeout(70 * 1000) - const bootstrap = [bootstrapAddr] + const bootstrap = bootstrapAddr ? [bootstrapAddr] : [] parallel([ (cb) => spawnJsDaemon(bootstrap, cb), @@ -344,13 +439,30 @@ describe('kad-dht', () => { ], (err, spawnedNodes) => { expect(err).to.not.exist() spawnedNodes.forEach((node) => nodes.push(node)) - setTimeout(done, 25000) // Wait for peers to have each other on the DHT + + const testDhtReady = (cb) => { + nodes[0].api.swarm.peers((err, peers) => { + if (err) { + return cb(err) + } + cb(null, peers.length === 3) + }) + } + + // Wait for peers to have each other on the DHT + waitFor(testDhtReady, { + name: 'dht peers ready', + timeout: 30 * 1000, + interval: 5 * 1000 + }, done) }) }) after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('should get from the network after being added', function (done) { @@ -381,7 +493,18 @@ describe('kad-dht', () => { }) }) - // make connections + /** + * Make connections between nodes + * +-+ +-+ + * |0+-----> |1| + * +++ +++ + * ^ | + * | | + * | v + * +++ +++ + * |3| |2| + * +-+ +-+ + */ before(function (done) { this.timeout(60 * 1000) @@ -397,7 +520,9 @@ describe('kad-dht', () => { after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('one hop', function (done) { @@ -441,7 +566,18 @@ describe('kad-dht', () => { }) }) - // make connections + /** + * Make connections between nodes + * +-+ +-+ + * |0+-----> |1| + * +++ +++ + * ^ | + * | | + * | v + * +++ +++ + * |3| |2| + * +-+ +-+ + */ before(function (done) { this.timeout(60 * 1000) @@ -457,7 +593,9 @@ describe('kad-dht', () => { after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('one hop', function (done) { @@ -517,7 +655,9 @@ describe('kad-dht', () => { after(function (done) { this.timeout(80 * 1000) - parallel(nodes.map((node) => (cb) => node.stop(cb)), done) + each(nodes, (node, cb) => { + node.stop(cb) + }, done) }) it('one hop', function (done) { diff --git a/test/utils/wait-for-fn.js b/test/utils/wait-for-fn.js new file mode 100644 index 00000000..a3abb5fd --- /dev/null +++ b/test/utils/wait-for-fn.js @@ -0,0 +1,37 @@ +'use strict' + +// Wait for async function `test` to callback(null, true) or timeout after +// options.timeout milliseconds. +module.exports = function waitForFn (test, options, callback) { + if (typeof options === 'function') { + callback = options + options = {} + } + + options = options || {} + options.timeout = options.timeout || 5000 + options.interval = options.interval || 0 + options.name = options.name || 'event' + + const start = Date.now() + + const check = () => { + test((err, arrived) => { + if (err) { + return callback(err) + } + + if (arrived) { + return callback() + } + + if (Date.now() > start + options.timeout) { + return callback(new Error(`Timed out waiting for ${options.name}`)) + } + + setTimeout(check, options.interval) + }) + } + + check() +} From a6d7b31c7a08b5dbae63654b7d1c2bb2ee6c1492 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Wed, 3 Jul 2019 14:45:47 +0200 Subject: [PATCH 4/5] chore: use libp2p options on ctl --- package-lock.json | 2478 +++++++++++++++++++++++++++------------------ test/kad-dht.js | 33 +- 2 files changed, 1489 insertions(+), 1022 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9e72633..fc4ded8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,9 +69,9 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -1020,9 +1020,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -1144,9 +1144,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -1288,6 +1288,12 @@ "escape-string-regexp": "^1.0.5", "supports-color": "^5.2.0" } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true } } }, @@ -1304,6 +1310,14 @@ "dev": true, "requires": { "lodash": "4.17.14" + }, + "dependencies": { + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true + } } }, "@commitlint/execute-rule": { @@ -1350,6 +1364,14 @@ "@commitlint/rules": "^8.1.0", "babel-runtime": "^6.23.0", "lodash": "4.17.14" + }, + "dependencies": { + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true + } } }, "@commitlint/load": { @@ -1365,6 +1387,14 @@ "cosmiconfig": "^5.2.0", "lodash": "4.17.14", "resolve-from": "^5.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true + } } }, "@commitlint/message": { @@ -1407,6 +1437,14 @@ "lodash": "4.17.14", "resolve-from": "^5.0.0", "resolve-global": "^1.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "dev": true + } } }, "@commitlint/rules": { @@ -1574,13 +1612,13 @@ } }, "@hapi/accept": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-3.2.2.tgz", - "integrity": "sha512-UtXlTT59srtMr7ZRBzK2CvyWqFwlf78hPt9jEXqkwfbwiwRH1PRv/qkS8lgr5ZyoG6kfpU3xTgt2X91Yfe/6Yg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-3.2.3.tgz", + "integrity": "sha512-qEzsOJkCAJZxwj3iF83bSG9Lxy8Bpbrt8mRLNdvSALT6vlU2cYh6ZEHKEZPy4h/Mo31Su3j0rJgFF91+W1RWDQ==", "dev": true, "requires": { "@hapi/boom": "7.x.x", - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/address": { @@ -1590,30 +1628,30 @@ "dev": true }, "@hapi/ammo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-3.1.0.tgz", - "integrity": "sha512-iFQBEfm3WwWy8JdPQ8l6qXVLPtzmjITVfaxwl6dfoP8kKv6i2Uk43Ax+ShkNfOVyfEnNggqL2IyZTY3DaaRGNg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-3.1.1.tgz", + "integrity": "sha512-NYFK27VSPGyQ/KmOQedpQH4PSjE7awLntepX68vrYtRvuJO21W1kX0bK2p3C+6ltUwtCQSvmNT8a4uMVAysC6Q==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/b64": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.0.tgz", - "integrity": "sha512-hmfPC1aF7cP21489A/IWPC3s1GE+1eAteVwFcOWLwj0Pky8eHgvrXPSSko2IeCpxqOdZhYw71IFN8xKPdv3CtQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.1.tgz", + "integrity": "sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/boom": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.2.tgz", - "integrity": "sha512-T2CYcTI0AqSvC6YC7keu/fh9LVSMzfoMLharBnPbOwmc+Cexj9joIc5yNDKunaxYq9LPuOwMS0f2B3S1tFQUNw==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.3.tgz", + "integrity": "sha512-3di+R+BcGS7HKy67Zi6mIga8orf67GdR0ubDEVBG1oqz3y9B70LewsuCMCSvWWLKlI6V1+266zqhYzjMrPGvZw==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/bounce": { @@ -1624,14 +1662,6 @@ "requires": { "@hapi/boom": "7.x.x", "@hapi/hoek": "8.x.x" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.1.0.tgz", - "integrity": "sha512-b1J4jxYnW+n6lC91V6Pqg9imP9BZq0HNCeM+3sbXg05rQsE9cGYrKFpZjyztVesGmNRE6R+QaEoWGATeIiUVjA==", - "dev": true - } } }, "@hapi/bourne": { @@ -1641,35 +1671,35 @@ "dev": true }, "@hapi/call": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-5.1.0.tgz", - "integrity": "sha512-CiVEXjD/jiIHBqufBW3pdedshEMjRmHtff7m1puot8j4MUmuKRbLlh0DB8fv6QqH/7/55pH1qgFj300r0WpyMw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-5.1.1.tgz", + "integrity": "sha512-M6fC+9+K/ZB4hIdVQ8i0kc/6J5PWlW3PEWYKAAZpw0sk+28LiRTSF8BjOWwmiIjZWWs42AnEIiFJA0YrvcDnlw==", "dev": true, "requires": { "@hapi/boom": "7.x.x", - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/catbox": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-10.2.1.tgz", - "integrity": "sha512-u13BXlnmmrNUZssjTriRVTLuk6I/yUy5C1/Pia1+E2cpfd7o2/jmEvYdFgeS0Ft9QTz7WWhpXKlrguARUuohhQ==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-10.2.2.tgz", + "integrity": "sha512-a4KejaKqDOMdwo/PIYoAaObVMmkfkG3RS85kPqNTTURjWnIV1+rrZ938f6RCz5EbrroKbuNC0bcvAt7lAD5LNg==", "dev": true, "requires": { "@hapi/boom": "7.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x", "@hapi/podium": "3.x.x" } }, "@hapi/catbox-memory": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-4.1.0.tgz", - "integrity": "sha512-libCGyufOZaJu6uE9nVXw/u8tqOt4ifNIrOSAsDjzS+af3vPJyid8faOICqKCAh3E338UAsUe5AeYdezdsmtpg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-4.1.1.tgz", + "integrity": "sha512-T6Hdy8DExzG0jY7C8yYWZB4XHfc0v+p1EGkwxl2HoaPYAmW7I3E59M/IvmSVpis8RPcIoBp41ZpO2aZPBpM2Ww==", "dev": true, "requires": { "@hapi/boom": "7.x.x", - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/content": { @@ -1697,9 +1727,9 @@ "dev": true }, "@hapi/hapi": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-18.3.1.tgz", - "integrity": "sha512-gBiU9isWWezrg0ucX95Ph6AY6fUKZub3FxKapaleoFBJDOUcxTYiQR6Lha2zvHalIFoTl3K04O3Yr/5pD17QkQ==", + "version": "18.3.2", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-18.3.2.tgz", + "integrity": "sha512-UJogSyMPe4VFfzjQW5v2ixLvTLZLSfPs1XV/DRnAl2znzsGCaNJI+tgNxjM9lszOjEEkMfxLgoXZadk9exnIxw==", "dev": true, "requires": { "@hapi/accept": "3.x.x", @@ -1710,7 +1740,7 @@ "@hapi/catbox": "10.x.x", "@hapi/catbox-memory": "4.x.x", "@hapi/heavy": "6.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x", "@hapi/mimos": "4.x.x", "@hapi/podium": "3.x.x", @@ -1723,20 +1753,20 @@ } }, "@hapi/heavy": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-6.2.0.tgz", - "integrity": "sha512-tzGU9cElY0IxRBudGB7tLFkdpBD8XQPfd6G7DSOnvHRK+q96UHGHn4t59Yd7kDpVucNkErWWYarsGx2KmKPkXA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-6.2.1.tgz", + "integrity": "sha512-uaEyC4AtGCGKt/LLBbdDQxJP1bFAbxiot6n/fwa4kyo6w8ULpXXCh8FxLlJ5mC06lqbAxQv45JyozIB6P4Dsig==", "dev": true, "requires": { "@hapi/boom": "7.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x" } }, "@hapi/hoek": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", - "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.2.2.tgz", + "integrity": "sha512-18P3VwngjNEcmvPj1mmiHLPyUPjhPAxIyJKDj4PRIY0F5ac3P0Vd0hkASPyWXHK0rfY3P9N2FoxV8ZuYaRBZ1g==", "dev": true }, "@hapi/inert": { @@ -1751,120 +1781,106 @@ "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x", "lru-cache": "4.1.x" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.1.0.tgz", - "integrity": "sha512-b1J4jxYnW+n6lC91V6Pqg9imP9BZq0HNCeM+3sbXg05rQsE9cGYrKFpZjyztVesGmNRE6R+QaEoWGATeIiUVjA==", - "dev": true - } } }, "@hapi/iron": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.0.tgz", - "integrity": "sha512-+MK3tBPkEKd50SrDTRXa2DVvE0UTPFKxGbodlbQpNP9SVlxi+ZwA640VJtMNj84FZh81UUxda8AOLPRKFffnEA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.1.tgz", + "integrity": "sha512-QYfm6nofZ19pIxm8LR0lsANBabrdxqe0vUYKKI+0w9VdCetoove+dxfbLfduVDM72kh/RNOQG6E5/xyI826PcA==", "dev": true, "requires": { "@hapi/b64": "4.x.x", "@hapi/boom": "7.x.x", "@hapi/cryptiles": "4.x.x", - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/joi": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.0.tgz", - "integrity": "sha512-n6kaRQO8S+kepUTbXL9O/UOL788Odqs38/VOfoCrATDtTvyfiO3fgjlSRaNkHabpTLgM7qru9ifqXlXbXk8SeQ==", + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", "dev": true, "requires": { "@hapi/address": "2.x.x", - "@hapi/hoek": "6.x.x", - "@hapi/marker": "1.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", "@hapi/topo": "3.x.x" } }, - "@hapi/marker": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@hapi/marker/-/marker-1.0.0.tgz", - "integrity": "sha512-JOfdekTXnJexfE8PyhZFyHvHjt81rBFSAbTIRAhF2vv/2Y1JzoKsGqxH/GpZJoF7aEfYok8JVcAHmSz1gkBieA==", - "dev": true - }, "@hapi/mimos": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-4.1.0.tgz", - "integrity": "sha512-CkxOB15TFZDMl5tQ5qezKZvvBnkRYVc8YksNfA5TnqQMMsU7vGPyvuuNFqj+15bfEwHyM6qasxyQNdkX9B/cQw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-4.1.1.tgz", + "integrity": "sha512-CXoi/zfcTWfKYX756eEea8rXJRIb9sR4d7VwyAH9d3BkDyNgAesZxvqIdm55npQc6S9mU3FExinMAQVlIkz0eA==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "mime-db": "1.x.x" } }, "@hapi/nigel": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-3.1.0.tgz", - "integrity": "sha512-IJyau32pz5Bf7pzUU/8AIn/SvPvhLMQcOel6kM7ECpKyPc895AwttSusRKfgTwfxZOEG6W8DnNv25gLtqrVFSg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-3.1.1.tgz", + "integrity": "sha512-R9YWx4S8yu0gcCBrMUDCiEFm1SQT895dMlYoeNBp8I6YhF1BFF1iYPueKA2Kkp9BvyHdjmvrxCOns7GMmpl+Fw==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/vise": "3.x.x" } }, "@hapi/pez": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-4.1.0.tgz", - "integrity": "sha512-c+AxL8/cCj+7FB+tzJ5FhWKYP8zF7/7mA3Ft3a5y7h6YT26qzhj5d2JY27jur30KaZbrZAd4ofXXkqvE/IpJlA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-4.1.1.tgz", + "integrity": "sha512-TUa2C7Xk6J69HWrm+Ad+O6dFvdVAG0BiFUYaRsmkdWjFIfwHBCaOI1dWT/juNukSb39Lj6/mDVyjN+H4nKB3xg==", "dev": true, "requires": { "@hapi/b64": "4.x.x", "@hapi/boom": "7.x.x", "@hapi/content": "4.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/nigel": "3.x.x" } }, "@hapi/podium": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-3.4.0.tgz", - "integrity": "sha512-IwyewAPGlCoq+g5536PKSDqSTfgpwbj+q4cBJpEUNqzwc5C5SM2stuFsULU7x1jKeWevfgWDoYWC75ML4IOYug==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-3.4.1.tgz", + "integrity": "sha512-WbwYr5nK+GIrCdgEbN8R7Mh7z+j9AgntOLQ/YQdeLtBp+uScVmW9FoycKdNS5uweO74xwICr28Ob0DU74a2zmg==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x" } }, "@hapi/shot": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-4.1.0.tgz", - "integrity": "sha512-rpUU5cF08fqAZLLnue6Sy0osj1QMPbrYskehxtLFPdk7CwlPcu9N/wRtgu7vDHTQCKTkag6M8sjc8V8p8lSxpg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-4.1.1.tgz", + "integrity": "sha512-TrsqCyaq24XcdvD0bSi26hjwyQQy5q/nzpasbPNgPLoGnxW3sCWE7ws3ba6dd6Atb8TEh9QBD7mBQDCrMMz2Ig==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/joi": "15.x.x" } }, "@hapi/somever": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-2.1.0.tgz", - "integrity": "sha512-kMPewbpgLd0MSlNg0bjvq57Levozbg7c3O0idpWRxRgXfXBALNATLf8GRVbnMehYXAh7YRD2mR/91kginDtJ2Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-2.1.1.tgz", + "integrity": "sha512-cic5Sto4KGd9B0oQSdKTokju+rYhCbdpzbMb0EBnrH5Oc1z048hY8PaZ1lx2vBD7I/XIfTQVQetBH57fU51XRA==", "dev": true, "requires": { "@hapi/bounce": "1.x.x", - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/statehood": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-6.1.0.tgz", - "integrity": "sha512-qc8Qq3kg0b3XK7siXf6DK0wp+rcOrXv336kIP6YrtD9TbQ45TsBobwKkUXB+4R3GCCQ8a6tOj8FR/9bdtjKJCA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-6.1.1.tgz", + "integrity": "sha512-tMfS6B8QdrqTaKRUhHv6Ur7oPK6kcEZcnnvBK4IuaPZA9ma5UsyprTXkzbiB0V+0E56dMg3RabO1SABeZkzy6g==", "dev": true, "requires": { "@hapi/boom": "7.x.x", "@hapi/bounce": "1.x.x", "@hapi/bourne": "1.x.x", "@hapi/cryptiles": "4.x.x", - "@hapi/hoek": "6.x.x", + "@hapi/hoek": "8.x.x", "@hapi/iron": "5.x.x", "@hapi/joi": "15.x.x" } @@ -1882,14 +1898,6 @@ "@hapi/hoek": "8.x.x", "@hapi/pez": "4.x.x", "@hapi/wreck": "15.x.x" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.1.0.tgz", - "integrity": "sha512-b1J4jxYnW+n6lC91V6Pqg9imP9BZq0HNCeM+3sbXg05rQsE9cGYrKFpZjyztVesGmNRE6R+QaEoWGATeIiUVjA==", - "dev": true - } } }, "@hapi/teamwork": { @@ -1899,40 +1907,32 @@ "dev": true }, "@hapi/topo": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.2.tgz", - "integrity": "sha512-r+aumOqJ5QbD6aLPJWqVjMAPsx5pZKz+F5yPqXZ/WWG9JTtHbQqlzrJoknJ0iJxLj9vlXtmpSdjlkszseeG8OA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.3.tgz", + "integrity": "sha512-JmS9/vQK6dcUYn7wc2YZTqzIKubAQcJKu2KCKAru6es482U5RT5fP1EXCPtlXpiK7PR0On/kpQKI4fRKkzpZBQ==", "dev": true, "requires": { "@hapi/hoek": "8.x.x" - }, - "dependencies": { - "@hapi/hoek": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.0.2.tgz", - "integrity": "sha512-O6o6mrV4P65vVccxymuruucb+GhP2zl9NLCG8OdoFRS8BEGw3vwpPp20wpAtpbQQxz1CEUtmxJGgWhjq1XA3qw==", - "dev": true - } } }, "@hapi/vise": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-3.1.0.tgz", - "integrity": "sha512-DUDzV0D4iVO5atghsjGZtzaF0HVtRLcxcnH6rAONyH0stnoLiFloGEuP5nkbIPU0B9cgWTzTUsQPuNHBzxy9Yw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-3.1.1.tgz", + "integrity": "sha512-OXarbiCSadvtg+bSdVPqu31Z1JoBL+FwNYz3cYoBKQ5xq1/Cr4A3IkGpAZbAuxU5y4NL5pZFZG3d2a3ZGm/dOQ==", "dev": true, "requires": { - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@hapi/wreck": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-15.0.1.tgz", - "integrity": "sha512-ByXQna/W1FZk7dg8NEhL79u4QkhzszRz76VpgyGstSH8bLM01a0C8RsxmUBgi6Tjkag5jA9kaEIhF9dLpMrtBw==", + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-15.0.2.tgz", + "integrity": "sha512-D/7sGmx3XxxkaMWHZDKTMai8rIEfIgE+DnoZeKfmxhKGgvIpMu1f8BBmLADbdniccGer79w74IWWdXleNrT1Rw==", "dev": true, "requires": { "@hapi/boom": "7.x.x", "@hapi/bourne": "1.x.x", - "@hapi/hoek": "6.x.x" + "@hapi/hoek": "8.x.x" } }, "@marionebl/sander": { @@ -1957,28 +1957,28 @@ } }, "@nodelib/fs.scandir": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz", - "integrity": "sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.2.tgz", + "integrity": "sha512-wrIBsjA5pl13f0RN4Zx4FNWmU71lv03meGKnqRUoCyan17s4V3WL92f3w3AIuWbNnpcrQyFBU5qMavJoB8d27w==", "dev": true, "requires": { - "@nodelib/fs.stat": "2.0.1", + "@nodelib/fs.stat": "2.0.2", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz", - "integrity": "sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.2.tgz", + "integrity": "sha512-z8+wGWV2dgUhLqrtRYa03yDx4HWMvXKi1z8g3m2JyxAx8F7xk74asqPk5LAETjqDSGLFML/6CDl0+yFunSYicw==", "dev": true }, "@nodelib/fs.walk": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz", - "integrity": "sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.3.tgz", + "integrity": "sha512-l6t8xEhfK9Sa4YO5mIRdau7XSOADfmh3jCr0evNHdY+HNkW6xuQhgMH7D73VV6WpZOagrW0UludvMTiifiwTfA==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.1", + "@nodelib/fs.scandir": "2.1.2", "fastq": "^1.6.0" } }, @@ -2036,9 +2036,9 @@ "dev": true }, "@types/node": { - "version": "12.6.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", - "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==", + "version": "12.7.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.3.tgz", + "integrity": "sha512-3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJQ==", "dev": true }, "@types/normalize-package-data": { @@ -2267,9 +2267,9 @@ } }, "abstract-leveldown": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", - "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.1.1.tgz", + "integrity": "sha512-7fK/KySVqzKIomdhkSWzX4YBQhzkzEMbWSiaB6mSN9e+ZdV3KEeKxia/8xQzCkATA5xnnukdP88cFR0D2FsFXw==", "dev": true, "requires": { "level-concat-iterator": "~2.0.0", @@ -2320,39 +2320,32 @@ } }, "acorn": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", - "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==", - "dev": true - }, - "acorn-dynamic-import": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", - "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz", + "integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==", "dev": true }, "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", + "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", "dev": true }, "acorn-node": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.7.0.tgz", - "integrity": "sha512-XhahLSsCB6X6CJbe+uNu3Mn9sJBNFxtBN9NLgAOQovfS6Kh0lDUtmlclhjn9CvEK7A7YyRU13PXlNcpSiLI9Yw==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", "dev": true, "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-walk": "^6.1.1", - "xtend": "^4.0.1" + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" } }, "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz", + "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==", "dev": true }, "aegir": { @@ -2534,9 +2527,9 @@ } }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", + "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -2664,6 +2657,16 @@ } } }, + "aggregate-error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.0.tgz", + "integrity": "sha512-yKD9kEoJIR+2IFqhMwayIBgheLYbB3PS2OBhWae1L/ODTd/JF/30cW0bc9TqzRL3k4U41Dieu3BF4I29p8xesA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^3.2.0" + } + }, "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", @@ -3149,9 +3152,9 @@ } }, "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", "dev": true }, "asynckit": { @@ -3387,9 +3390,9 @@ "dev": true }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "dev": true }, "base64id": { @@ -3496,9 +3499,9 @@ "dev": true }, "bip174": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.0.tgz", - "integrity": "sha512-AaoWrkYtv6A2y8H+qzs6NvRWypzNbADT8PQGpM9rnP+jLzeol+uzhe3Myeuq/dwrHYtmsW8V71HmX2oXhQGagw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bip174/-/bip174-1.0.1.tgz", + "integrity": "sha512-Mq2aFs1TdMfxBpYPg7uzjhsiXbAtoVq44TNjEWtvuZBiBgc3m7+n55orYMtTAxdg7jWbL4DtH0MKocJER4xERQ==", "dev": true }, "bip32": { @@ -3540,14 +3543,14 @@ "dev": true }, "bitcoinjs-lib": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.2.tgz", - "integrity": "sha512-Qa1TY8xaFRaLPD2YunfQX1vhHAh0387SJ/Zu7lNSRyzpg8lDru8gv+w6pqxOkcdj4dm4Fn1JmWb0m8Oy+8TfiA==", + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-5.1.5.tgz", + "integrity": "sha512-VAcdXH7cNocWwEF2dAVTozOZtDHB+FVZH9tc9OLbUKzRLiYxb3C5lvAzBmd1QJR3CtPRJELgw049MvM5fs2dow==", "dev": true, "requires": { "@types/node": "10.12.18", "bech32": "^1.1.2", - "bip174": "^1.0.0", + "bip174": "^1.0.1", "bip32": "^2.0.4", "bip66": "^1.1.0", "bitcoin-ops": "^1.4.0", @@ -3647,6 +3650,12 @@ "type-is": "~1.6.17" }, "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, "raw-body": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", @@ -3907,14 +3916,14 @@ } }, "browserslist": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", - "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", + "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" + "caniuse-lite": "^1.0.30000989", + "electron-to-chromium": "^1.3.247", + "node-releases": "^1.1.29" } }, "bs58": { @@ -3988,6 +3997,12 @@ "integrity": "sha1-7Q82t64WamanzRdMBGeuje3wCPU=", "dev": true }, + "buffer-loader": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/buffer-loader/-/buffer-loader-0.1.0.tgz", + "integrity": "sha512-ucbiQL7IicJm1EHuXC4Oheu2oGjz6qKRmyqAXYTtWe4iC49743AU2DHlWpF51qKF+g/t62Jk8Yn+3FaCz5jJEA==", + "dev": true + }, "buffer-peek-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-peek-stream/-/buffer-peek-stream-1.0.1.tgz", @@ -4055,9 +4070,9 @@ "dev": true }, "cacache": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", - "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", + "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -4065,6 +4080,7 @@ "figgy-pudding": "^3.5.1", "glob": "^7.1.4", "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", "lru-cache": "^5.1.1", "mississippi": "^3.0.0", "mkdirp": "^0.5.1", @@ -4246,9 +4262,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000984", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000984.tgz", - "integrity": "sha512-n5tKOjMaZ1fksIpQbjERuqCyfgec/m9pferkFQbLmWtqLUdmt12hNhjSwsmPdqeiG2NkITOQhr1VYIwWSAceiA==", + "version": "1.0.30000989", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz", + "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==", "dev": true }, "caseless": { @@ -4334,6 +4350,12 @@ "type-detect": "^4.0.5" } }, + "chai-bytes": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/chai-bytes/-/chai-bytes-0.1.2.tgz", + "integrity": "sha512-0ol6oJS0y1ozj6AZK8n1pyv1/G+l44nqUJygAkK1UrYl+IOGie5vcrEdrAlwmLYGIA9NVvtHWosPYwWWIXf/XA==", + "dev": true + }, "chai-checkmark": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/chai-checkmark/-/chai-checkmark-1.0.1.tgz", @@ -4403,9 +4425,9 @@ "dev": true }, "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, "requires": { "anymatch": "^2.0.0", @@ -4438,9 +4460,9 @@ } }, "ci-env": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.9.0.tgz", - "integrity": "sha512-GKMUVeOunoGplUXmIr3ss2OpYvp7JUwTTZ2wiVV8JtUy6U8r7MaDWuV1vjJdf7yxqs9AbELHXQGW4b/L60COdA==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/ci-env/-/ci-env-1.10.0.tgz", + "integrity": "sha512-kXGriGO7hW/uxDviPtUUehSG301RudEHUXNhAHeM5JM7iOSb6+tpXh+YqhcfxdCECvtfMNq0J7laOxAV3NsDng==", "dev": true }, "ci-info": { @@ -4513,6 +4535,12 @@ } } }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, "cli-boxes": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", @@ -4902,22 +4930,22 @@ "dev": true }, "conventional-changelog": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.8.tgz", - "integrity": "sha512-fb3/DOLLrQdNqN0yYn/lT6HcNsAa9A+VTDBqlZBMQcEPPIeJIMI+DBs3yu+eiYOLi22w9oShq3nn/zN6qm1Hmw==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.10.tgz", + "integrity": "sha512-6RDj31hL39HUkpqvPjRlOxAwJRwur8O2qu9m6R0FBNDGwCJyy4SYH9NfyshozxYSeklrauKRf3oSbyoEZVzu9Q==", "dev": true, "requires": { "conventional-changelog-angular": "^5.0.3", "conventional-changelog-atom": "^2.0.1", "conventional-changelog-codemirror": "^2.0.1", - "conventional-changelog-conventionalcommits": "^3.0.2", - "conventional-changelog-core": "^3.2.2", + "conventional-changelog-conventionalcommits": "^4.1.0", + "conventional-changelog-core": "^4.0.0", "conventional-changelog-ember": "^2.0.2", "conventional-changelog-eslint": "^3.0.2", "conventional-changelog-express": "^2.0.1", "conventional-changelog-jquery": "^3.0.4", "conventional-changelog-jshint": "^2.0.1", - "conventional-changelog-preset-loader": "^2.1.1" + "conventional-changelog-preset-loader": "^2.2.0" }, "dependencies": { "conventional-changelog-angular": { @@ -4961,9 +4989,9 @@ } }, "conventional-changelog-conventionalcommits": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-3.0.2.tgz", - "integrity": "sha512-w1+fQSDnm/7+sPKIYC5nfRVYDszt+6HdWizrigSqWFVIiiBVzkHGeqDLMSHc+Qq9qssHVAxAak5206epZyK87A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.1.0.tgz", + "integrity": "sha512-J3xolGrH8PTxpCqueHOuZtv3Cp73SQOWiBQzlsaugZAZ+hZgcJBonmC+1bQbfGs2neC2S18p2L1Gx+nTEglJTQ==", "dev": true, "requires": { "compare-func": "^1.3.1", @@ -4971,18 +4999,18 @@ } }, "conventional-changelog-core": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.2.tgz", - "integrity": "sha512-cssjAKajxaOX5LNAJLB+UOcoWjAIBvXtDMedv/58G+YEmAXMNfC16mmPl0JDOuVJVfIqM0nqQiZ8UCm8IXbE0g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.0.0.tgz", + "integrity": "sha512-+bZMeBUdjKxfyX2w6EST9U7zb85wxrGS3IV4H7SqPya44osNQbm3P+vyqfLs6s57FkoEamC93ioDEiguVLWmSQ==", "dev": true, "requires": { - "conventional-changelog-writer": "^4.0.5", - "conventional-commits-parser": "^3.0.2", + "conventional-changelog-writer": "^4.0.7", + "conventional-commits-parser": "^3.0.3", "dateformat": "^3.0.0", "get-pkg-repo": "^1.0.0", "git-raw-commits": "2.0.0", "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^2.0.2", + "git-semver-tags": "^3.0.0", "lodash": "^4.2.1", "normalize-package-data": "^2.3.5", "q": "^1.5.1", @@ -5189,21 +5217,21 @@ } }, "conventional-changelog-preset-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.1.1.tgz", - "integrity": "sha512-K4avzGMLm5Xw0Ek/6eE3vdOXkqnpf9ydb68XYmCc16cJ99XMMbc2oaNMuPwAsxVK6CC1yA4/I90EhmWNj0Q6HA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.2.0.tgz", + "integrity": "sha512-zXB+5vF7D5Y3Cb/rJfSyCCvFphCVmF8mFqOdncX3BmjZwAtGAPfYrBcT225udilCKvBbHgyzgxqz2GWDB5xShQ==", "dev": true }, "conventional-changelog-writer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.6.tgz", - "integrity": "sha512-ou/sbrplJMM6KQpR5rKFYNVQYesFjN7WpNGdudQSWNi6X+RgyFUcSv871YBYkrUYV9EX8ijMohYVzn9RUb+4ag==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.7.tgz", + "integrity": "sha512-p/wzs9eYaxhFbrmX/mCJNwJuvvHR+j4Fd0SQa2xyAhYed6KBiZ780LvoqUUvsayP4R1DtC27czalGUhKV2oabw==", "dev": true, "requires": { "compare-func": "^1.3.1", "conventional-commits-filter": "^2.0.2", "dateformat": "^3.0.0", - "handlebars": "^4.1.0", + "handlebars": "^4.1.2", "json-stringify-safe": "^5.0.1", "lodash": "^4.2.1", "meow": "^4.0.0", @@ -5441,6 +5469,38 @@ "conventional-changelog-preset-loader": "^2.0.1" } }, + "conventional-changelog-core": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz", + "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==", + "dev": true, + "requires": { + "conventional-changelog-writer": "^4.0.6", + "conventional-commits-parser": "^3.0.3", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "2.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^2.0.3", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, "conventional-changelog-jquery": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz", @@ -5450,6 +5510,49 @@ "q": "^1.4.1" } }, + "conventional-commits-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.3.tgz", + "integrity": "sha512-KaA/2EeUkO4bKjinNfGUyqPTX/6w9JGshuQRik4r/wJz7rUw3+D3fDG6sZSEqJvKILzKXFQuFkpPLclcsAuZcg==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^2.0.0", + "lodash": "^4.2.1", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", @@ -5459,90 +5562,224 @@ "ms": "^2.1.1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "copy-descriptor": { + "git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + } + } + }, + "git-semver-tags": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz", + "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==", + "dev": true, + "requires": { + "meow": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "requires": { + "text-extensions": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "text-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.0.0.tgz", + "integrity": "sha512-F91ZqLgvi1E0PdvmxMgp+gcf6q8fMH7mhdwWfzXnl1k+GbpQDmi8l7DzLC5JTASKbwpY3TfxajAUzAXcv2NmsQ==", + "dev": true + } + } + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "core-js": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.1.4.tgz", - "integrity": "sha512-YNZN8lt82XIMLnLirj9MhKDFZHalwzzrL9YLt6eb0T5D0EDl4IQ90IGkua8mHbnxNrkj1d8hbdizMc0Qmg1WnQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz", + "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw==", "dev": true }, "core-js-compat": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.1.4.tgz", - "integrity": "sha512-Z5zbO9f1d0YrJdoaQhphVAnKPimX92D6z8lCGphH89MNRxlL1prI9ExJPqVwP0/kgkQCv8c4GJGT8X16yUncOg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", + "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", "dev": true, "requires": { - "browserslist": "^4.6.2", - "core-js-pure": "3.1.4", - "semver": "^6.1.1" + "browserslist": "^4.6.6", + "semver": "^6.3.0" } }, - "core-js-pure": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.1.4.tgz", - "integrity": "sha512-uJ4Z7iPNwiu1foygbcZYJsJs1jiXrTTCvxfLDXNhI/I+NHbSIEyr548y4fcsCEyWY0XgfAG/qqaunJ1SThHenA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -5630,13 +5867,12 @@ } }, "cross-env": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.0.tgz", - "integrity": "sha512-jtdNFfFW1hB7sMhr/H6rW1Z45LFqyI431m3qU6bFXcQ3Eh7LtBuG3h74o7ohHZ3crrRkkqHlo4jYHFPcjroANg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", "dev": true, "requires": { - "cross-spawn": "^6.0.5", - "is-windows": "^1.0.0" + "cross-spawn": "^6.0.5" }, "dependencies": { "cross-spawn": { @@ -5653,9 +5889,9 @@ } }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -5810,7 +6046,7 @@ "datastore-core": "~0.6.0", "encoding-down": "^6.0.2", "interface-datastore": "~0.6.0", - "level-js": "github:timkuijsten/level.js#idbunwrapper", + "level-js": "github:timkuijsten/level.js#18e03adab34c49523be7d3d58fafb0c632f61303", "leveldown": "^5.0.0", "levelup": "^4.0.1", "pull-stream": "^3.6.9" @@ -5838,6 +6074,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -5968,6 +6210,18 @@ "requires": { "abstract-leveldown": "~6.0.0", "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", + "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", + "dev": true, + "requires": { + "level-concat-iterator": "~2.0.0", + "xtend": "~4.0.0" + } + } } }, "define-properties": { @@ -6027,16 +6281,45 @@ "dev": true }, "del": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.0.0.tgz", - "integrity": "sha512-TfU3nUY0WDIhN18eq+pgpbLY9AfL5RfiE9czKaTSolc6aK7qASXfDErvYgjV1UqCR4sNXDoxO0/idPmhDUt2Sg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", + "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", "dev": true, "requires": { - "globby": "^10.0.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "rimraf": "^2.6.3" + "globby": "^10.0.1", + "graceful-fs": "^4.2.2", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.1", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0" + }, + "dependencies": { + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "rimraf": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.0.tgz", + "integrity": "sha512-NDGVxTsjqfunkds7CqsOiEnxln4Bo7Nddl3XhS4pXg5OzwkLqJ971ZVAAnB+DDLnF76N+VnDEiBHaVV8I06SUg==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } } }, "delayed-stream": { @@ -6278,9 +6561,9 @@ }, "dependencies": { "@types/node": { - "version": "10.14.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.13.tgz", - "integrity": "sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==", + "version": "10.14.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.17.tgz", + "integrity": "sha512-p/sGgiPaathCfOtqu2fx5Mu1bcjuP8ALFg4xpGgNkcin7LwRyzUKniEHBKdcE1RPsenq5JVPIpMTJSygLboygQ==", "dev": true }, "bluebird": { @@ -6373,9 +6656,9 @@ } }, "documentation": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/documentation/-/documentation-12.0.2.tgz", - "integrity": "sha512-Sjh3Mj+BmKwAYt3Y4xrFW59BwrOHqj12lKRh3TOSjU8GedpR1WL1i7v1r1BUxN9Ig997knUabJ9oP+H6I4sDAg==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/documentation/-/documentation-12.1.1.tgz", + "integrity": "sha512-OmvNJ6gddKy9K8lx+eA9w+dTxs//vetBnzhaGrTnXbKkE1qgAP0DXaEE8pva2ptSDw3Wa6oDm3C7fKgXdobjPQ==", "dev": true, "requires": { "@babel/core": "^7.1.2", @@ -6416,6 +6699,7 @@ "glob": "^7.1.2", "globals-docs": "^2.4.0", "highlight.js": "^9.15.5", + "ini": "^1.3.5", "js-yaml": "^3.10.0", "lodash": "^4.17.10", "mdast-util-inject": "^1.1.0", @@ -6429,7 +6713,6 @@ "remark-html": "^8.0.0", "remark-reference-links": "^4.0.1", "remark-toc": "^5.0.0", - "remote-origin-url": "0.4.0", "resolve": "^1.8.1", "stream-array": "^1.1.2", "strip-json-comments": "^2.0.1", @@ -6630,9 +6913,9 @@ "dev": true }, "electron": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/electron/-/electron-5.0.7.tgz", - "integrity": "sha512-OMMz8DhatxLuBFbnW7KYcAUjflGYFn0IQEtKR0iZhMAm89FgNOd9SVbxXWAGNxvRR6C0gORXwhTh6BCqqqcR6Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/electron/-/electron-5.0.10.tgz", + "integrity": "sha512-OSyxTlJ+7Yf0B+6pTdHdxY9RvI4U+mVKAbn+CkAOWxlCPMg3K+jt5UHKSPRRLnXQhQ0Tulg4vupbC0k27aukVw==", "dev": true, "requires": { "@types/node": "^10.12.18", @@ -6641,9 +6924,9 @@ }, "dependencies": { "@types/node": { - "version": "10.14.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.13.tgz", - "integrity": "sha512-yN/FNNW1UYsRR1wwAoyOwqvDuLDtVXnaJTZ898XIw/Q5cCaeVAlVwvsmXLX5PuiScBYwZsZU4JYSHB3TvfdwvQ==", + "version": "10.14.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.17.tgz", + "integrity": "sha512-p/sGgiPaathCfOtqu2fx5Mu1bcjuP8ALFg4xpGgNkcin7LwRyzUKniEHBKdcE1RPsenq5JVPIpMTJSygLboygQ==", "dev": true } } @@ -6698,26 +6981,26 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } }, "electron-mocha": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/electron-mocha/-/electron-mocha-8.0.3.tgz", - "integrity": "sha512-0dIzFwUXyRotOkzOKTfPUip0SH9PjS5lhf475+rY1Z2IXj+wHt+nZtGbAZDpuHAj1TlkcyF6VPOUnZSQ/co2wg==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/electron-mocha/-/electron-mocha-8.1.1.tgz", + "integrity": "sha512-/tba/uMivpDdECIFPDIb5Qa5V/9LhY8HbtDo3hOsOXw3zeRyCnLdhSHSPXWBm+C7GxaJheEyoHEMkiMnCbVbvg==", "dev": true, "requires": { - "ansi-colors": "^4.0.1", + "ansi-colors": "^4.1.1", "electron-window": "^0.8.0", - "fs-extra": "^8.0.1", + "fs-extra": "^8.1.0", "log-symbols": "^3.0.0", - "mocha": "^6.1.4", + "mocha": "~6.2.0", "which": "^1.3.1", - "yargs": "^13.2.4" + "yargs": "^13.3.0" }, "dependencies": { "ansi-regex": { @@ -6780,9 +7063,9 @@ "dev": true }, "mocha": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.1.4.tgz", - "integrity": "sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz", + "integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==", "dev": true, "requires": { "ansi-colors": "3.2.3", @@ -6900,9 +7183,9 @@ } }, "electron-to-chromium": { - "version": "1.3.194", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.194.tgz", - "integrity": "sha512-w0LHR2YD9Ex1o+Sz4IN2hYzCB8vaFtMNW+yJcBf6SZlVqgFahkne/4rGVJdk4fPF98Gch9snY7PiabOh+vqHNg==", + "version": "1.3.250", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.250.tgz", + "integrity": "sha512-2OAU91iUw83QvzuWJPfT+FMj+O+DC1EyTx1QBFcc9WZzOQSfZEAWINpdLWElxkgfiqTvQRDOKg0DkMZd9QoNug==", "dev": true }, "electron-window": { @@ -7098,9 +7381,9 @@ } }, "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.0.tgz", + "integrity": "sha512-MsMOijQ4v0xlmrz1fc7lyPEy7jFhoNF7EVaRSP7mPzs20LaFOwG6qNjGRy3Ie85n9DARlcUnB1zbsBv5sJrIvw==", "dev": true }, "errno": { @@ -7169,9 +7452,9 @@ "dev": true }, "es6-promisify": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.1.tgz", - "integrity": "sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.2.tgz", + "integrity": "sha512-eO6vFm0JvqGzjWIQA6QVKjxpmELfhWbDUWHm1rPfIbn55mhKPiAa5xpLmQWJrNa629ZIeQ8ZvMAi13kvrjK6Mg==", "dev": true }, "escape-html": { @@ -7187,9 +7470,9 @@ "dev": true }, "eslint": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.0.1.tgz", - "integrity": "sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.3.0.tgz", + "integrity": "sha512-ZvZTKaqDue+N8Y9g0kp6UPZtS4FSY3qARxBs7p4f0H0iof381XHduqVerFWtK8DPtKmemqbqCFENWSQgPR/Gow==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -7198,42 +7481,43 @@ "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^6.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.2", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.1", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob-parent": "^3.1.0", + "glob-parent": "^5.0.0", "globals": "^11.7.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", + "inquirer": "^6.4.1", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", "table": "^5.2.3", - "text-table": "^0.2.0" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "cross-spawn": { @@ -7247,6 +7531,14 @@ "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } } }, "debug": { @@ -7258,6 +7550,15 @@ "ms": "^2.1.1" } }, + "glob-parent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", + "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -7270,20 +7571,20 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true } } }, @@ -7304,9 +7605,9 @@ } }, "eslint-module-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz", - "integrity": "sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz", + "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==", "dev": true, "requires": { "debug": "^2.6.8", @@ -7368,19 +7669,19 @@ } }, "eslint-plugin-es": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz", - "integrity": "sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", "dev": true, "requires": { - "eslint-utils": "^1.3.0", + "eslint-utils": "^1.4.2", "regexpp": "^2.0.1" } }, "eslint-plugin-import": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz", - "integrity": "sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig==", + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz", + "integrity": "sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -7390,8 +7691,8 @@ "eslint-import-resolver-node": "^0.3.2", "eslint-module-utils": "^2.4.0", "has": "^1.0.3", - "lodash": "^4.17.11", "minimatch": "^3.0.4", + "object.values": "^1.1.0", "read-pkg-up": "^2.0.0", "resolve": "^1.11.0" }, @@ -7515,13 +7816,13 @@ "dev": true }, "eslint-plugin-node": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz", - "integrity": "sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-9.2.0.tgz", + "integrity": "sha512-2abNmzAH/JpxI4gEOwd6K8wZIodK3BmHbTxz4s79OIYwwIt2gkpEXlAouJXu4H1c9ySTnRso0tsuthSOZbUMlA==", "dev": true, "requires": { - "eslint-plugin-es": "^1.4.0", - "eslint-utils": "^1.3.1", + "eslint-plugin-es": "^1.4.1", + "eslint-utils": "^1.4.2", "ignore": "^5.1.1", "minimatch": "^3.0.4", "resolve": "^1.10.1", @@ -7535,9 +7836,9 @@ "dev": true }, "eslint-plugin-react": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.2.tgz", - "integrity": "sha512-jZdnKe3ip7FQOdjxks9XPN0pjUKZYq48OggNMd16Sk+8VXx6JOvXmlElxROCgp7tiUsTsze3jd78s/9AFJP2mA==", + "version": "7.14.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz", + "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -7563,15 +7864,15 @@ } }, "eslint-plugin-standard": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz", - "integrity": "sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz", + "integrity": "sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==", "dev": true }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", "dev": true, "requires": { "esrecurse": "^4.1.0", @@ -7579,29 +7880,29 @@ } }, "eslint-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.0.tgz", - "integrity": "sha512-7ehnzPaP5IIEh1r1tkjuIrxqhNkzUJa9z3R92tLJdZIVdWaczEhr3EbhGtsMrVxi1KeR8qA7Off6SWc5WNQqyQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", + "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", "dev": true, "requires": { "eslint-visitor-keys": "^1.0.0" } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", "dev": true }, "espree": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.0.0.tgz", - "integrity": "sha512-lJvCS6YbCn3ImT3yKkPe0+tJ+mH6ljhGNjHQH9mRtiO6gjhVAOhVXW1yjnwqGwTkK3bGbye+hb00nFNmu0l/1Q==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.1.tgz", + "integrity": "sha512-EYbr8XZUhWbYCqQRW0duU5LxzL5bETN6AjKBGy1302qqzPaCH10QbRg3Wvco79Z8x9WbiE8HYB4e75xl6qUYvQ==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.0.0", + "acorn-jsx": "^5.0.2", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -7629,15 +7930,15 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "etag": { @@ -7795,9 +8096,9 @@ } }, "ethereumjs-common": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.3.0.tgz", - "integrity": "sha512-/jdFHyHOIS3FiAnunwRZ+oNulFtNNSHyWii3PaNHReOUmBAxij7KMyZLKh0tE16JEsJtXOVz1ceYuq++ILzv+g==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.3.1.tgz", + "integrity": "sha512-kexqNgM2q29RKoZPPjehPREeqbr/vhYfT9Ho8FVeH3f7USjBuYp1iZ1qjqklk8FSMvEKPpMJFYSOunikw30Prw==", "dev": true }, "ethereumjs-tx": { @@ -7911,9 +8212,9 @@ } }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -8023,6 +8324,12 @@ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true } } }, @@ -8309,9 +8616,9 @@ } }, "file-type": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.1.0.tgz", - "integrity": "sha512-aZkf42yWGiH+vSOpbVgvbnoRuX4JiitMX9pHYqTHemNQ3lrx64iHi33YGAP7TSJSno56kxQY1lHmw8S6ujlFUg==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.2.0.tgz", + "integrity": "sha512-bkDBeH5doAqP69axEO69OviLlWbrZ10Ne2OPHaxBgG+fyT0w/2zfMzJz21SPwq5Iq0aN70q7RN3KRcdUY427Mg==", "dev": true }, "file-uri-to-path": { @@ -8455,6 +8762,17 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatmap": { @@ -8492,12 +8810,12 @@ "dev": true }, "follow-redirects": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", - "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.8.1.tgz", + "integrity": "sha512-micCIbldHioIegeKs41DoH0KS3AXfFzgS30qVkM6z/XOE/GJgvmsoc839NUqa1B9udYe9dQxgv7KFwng6+p/dw==", "dev": true, "requires": { - "debug": "^3.2.6" + "debug": "^3.0.0" }, "dependencies": { "debug": { @@ -8561,9 +8879,9 @@ "dev": true }, "form-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.0.tgz", - "integrity": "sha512-WXieX3G/8side6VIqx44ablyULoGruSde5PNTxoUyo5CeyAMX6nVWUd0rgist/EuX655cjhUhTo1Fo3tRYqbcA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dev": true, "requires": { "asynckit": "^0.4.0", @@ -8688,8 +9006,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -8710,14 +9027,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -8732,20 +9047,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -8862,8 +9174,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -8875,7 +9186,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -8890,7 +9200,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -8898,14 +9207,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -8924,7 +9231,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -9005,8 +9311,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -9018,7 +9323,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -9104,8 +9408,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -9141,7 +9444,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -9161,7 +9463,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -9205,14 +9506,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -9299,8 +9598,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -9321,14 +9619,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -9343,20 +9639,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -9473,8 +9766,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -9486,7 +9778,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -9501,7 +9792,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9509,14 +9799,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -9535,7 +9823,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -9616,8 +9903,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -9629,7 +9915,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -9715,8 +10000,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -9752,7 +10036,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -9772,7 +10055,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -9816,14 +10098,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -10094,9 +10374,9 @@ } }, "gh-pages": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.0.1.tgz", - "integrity": "sha512-uFlk3bukljeiWKQ2XvPfjcSi/ou7IfoDf2p+Fj672saLAr8bnOdFVqI/JSgrSgInKpCg5BksxEwGUl++dbg8Dg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-2.1.1.tgz", + "integrity": "sha512-yNW2SFp9xGRP/8Sk2WXuLI/Gn92oOL4HBgudn6PsqAnuWT90Y1tozJoTfX1WdrDSW5Rb90kLVOf5mm9KJ/2fDw==", "dev": true, "requires": { "async": "^2.6.1", @@ -10260,13 +10540,13 @@ } }, "git-semver-tags": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.2.tgz", - "integrity": "sha512-34lMF7Yo1xEmsK2EkbArdoU79umpvm0MfzaDkSNYSJqtM5QLAVTPWgpiXSVI5o/O9EvZPSrP4Zvnec/CqhSd5w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-3.0.0.tgz", + "integrity": "sha512-T4C/gJ9k2Bnxz+PubtcyiMtUUKrC+Nh9Q4zaECcnmVMwJgPhrNyP/Rf+YpdRqsJbCV/+kYrCH24Xg+IeAmbOPg==", "dev": true, "requires": { "meow": "^4.0.0", - "semver": "^5.5.0" + "semver": "^6.0.0" }, "dependencies": { "find-up": { @@ -10343,13 +10623,7 @@ "requires": { "find-up": "^2.0.0", "read-pkg": "^3.0.0" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true + } } } }, @@ -10546,9 +10820,9 @@ "dev": true }, "globals-docs": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.0.tgz", - "integrity": "sha512-B69mWcqCmT3jNYmSxRxxOXWfzu3Go8NQXPfl2o0qPd1EEFhwW0dFUg9ztTu915zPQzqwIhWAlw6hmfIcCK4kkQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.1.tgz", + "integrity": "sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg==", "dev": true }, "globby": { @@ -10576,9 +10850,9 @@ } }, "go-ipfs-dep": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/go-ipfs-dep/-/go-ipfs-dep-0.4.21.tgz", - "integrity": "sha512-6bbMCqS0drRnVjsgnpmRwXGqaJE/LhaC7DclyM2cXLu4eskSHmdSSXMKmfChdcZpCAILJCUSSIKBbplN0o9zfg==", + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/go-ipfs-dep/-/go-ipfs-dep-0.4.22.tgz", + "integrity": "sha512-e1hPrnMzuowL8kF0xx3SorSTzmy2fHvKvb2X4lzGBv67M2ClgpFrGQ9MaaiocFNiMopwrWRNcxpHEaLWU8KPKA==", "dev": true, "requires": { "go-platform": "^1.0.0", @@ -10677,9 +10951,9 @@ } }, "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", + "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==", "dev": true }, "graceful-readlink": { @@ -10846,6 +11120,14 @@ "abstract-logging": "^1.0.0", "pino": "^5.13.1", "pino-pretty": "^2.6.1" + }, + "dependencies": { + "@hapi/hoek": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-6.2.4.tgz", + "integrity": "sha512-HOJ20Kc93DkDVvjwHyHawPwPkX44sIrbXazAUDiUXaY2R9JwQGo2PhFfnQtdrsIe4igjG2fPgMra7NYw7qhy0A==", + "dev": true + } } }, "har-schema": { @@ -11123,9 +11405,9 @@ "dev": true }, "highlight.js": { - "version": "9.15.8", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.8.tgz", - "integrity": "sha512-RrapkKQWwE+wKdF73VsOa2RQdIoO3mxwJ4P8mhbI6KYJUraUHRKM5w5zQQKXNk0xNL4UVRdulV9SBJcmzJNzVA==", + "version": "9.15.10", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.10.tgz", + "integrity": "sha512-RoV7OkQm0T3os3Dd2VHLNMoaoDVx77Wygln3n9l5YV172XonWG6rgQD3XnF/BuFFZw9A0TJgmMSO8FEWQgvcXw==", "dev": true }, "hmac-drbg": { @@ -11161,9 +11443,9 @@ "dev": true }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.4.tgz", + "integrity": "sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ==", "dev": true }, "html-void-elements": { @@ -11346,9 +11628,9 @@ "dev": true }, "ignore": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz", - "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", "dev": true }, "ignore-walk": { @@ -11480,6 +11762,12 @@ } } }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -11503,9 +11791,9 @@ "dev": true }, "inquirer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", - "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -11596,6 +11884,14 @@ "pull-defer": "~0.2.3", "pull-stream": "^3.6.9", "uuid": "^3.2.2" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + } } }, "interpret": { @@ -11636,13 +11932,13 @@ "dev": true }, "ip-address": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.2.tgz", - "integrity": "sha512-7aeFm/7oqo0mMhubTSjZ2Juw/F+WJ3hyfCScNVRQdz5RSRhw1Rj4ZlBFsmEajeKgQDI8asqVs31h8DpxEv7IfQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-6.1.0.tgz", + "integrity": "sha512-u9YYtb1p2fWSbzpKmZ/b3QXWA+diRYPxc2c4y5lFB/MMk5WZ7wNZv8S3CFcIGVJ5XtlaCAl/FQy/D3eQ2XtdOA==", "dev": true, "requires": { "jsbn": "1.1.0", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "sprintf-js": "1.1.2" }, "dependencies": { @@ -11673,13 +11969,13 @@ "dev": true }, "ipfs": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.37.0.tgz", - "integrity": "sha512-nZb/qMmq3G1IswN2g2DL9u/mdRMND5WvgChmcDiq4Z0zyntLTaCMgwnXDAnCwhXyMLanY8AlGh42nq+DQoc51A==", + "version": "0.37.1", + "resolved": "https://registry.npmjs.org/ipfs/-/ipfs-0.37.1.tgz", + "integrity": "sha512-owolbhlcDBxRKlk2buSavzqV1XDN8KR7a4xqfLee5exxWDdI1Z/6OIY3aqlw45RIp5D23zCNqdrEGqKZVo/uiQ==", "dev": true, "requires": { "@hapi/ammo": "^3.1.0", - "@hapi/boom": "^7.4.2", + "@hapi/boom": "^7.4.3", "@hapi/hapi": "^18.3.1", "@hapi/joi": "^15.0.1", "array-shuffle": "^1.0.1", @@ -11708,7 +12004,7 @@ "fsm-event": "^2.1.0", "get-folder-size": "^2.0.0", "glob": "^7.1.3", - "hapi-pino": "^6.0.0", + "hapi-pino": "^6.0.2", "hashlru": "^2.3.0", "human-to-milliseconds": "^2.0.0", "interface-datastore": "~0.6.0", @@ -11738,7 +12034,6 @@ "is-pull-stream": "~0.0.0", "is-stream": "^2.0.0", "iso-url": "~0.4.6", - "just-flatten-it": "^2.1.0", "just-safe-set": "^2.1.0", "kind-of": "^6.0.2", "libp2p": "~0.25.4", @@ -11754,14 +12049,14 @@ "libp2p-tcp": "~0.13.0", "libp2p-webrtc-star": "~0.16.0", "libp2p-websocket-star-multi": "~0.4.3", - "libp2p-websockets": "~0.12.2", + "libp2p-websockets": "~0.12.3", "lodash": "^4.17.15", "mafmt": "^6.0.2", "merge-options": "^1.0.1", "mime-types": "^2.1.21", "mkdirp": "~0.5.1", "multiaddr": "^6.1.0", - "multiaddr-to-uri": "^4.0.1", + "multiaddr-to-uri": "^5.0.0", "multibase": "~0.6.0", "multicodec": "~0.5.5", "multihashes": "~0.4.14", @@ -11783,7 +12078,7 @@ "pull-ndjson": "~0.1.1", "pull-pushable": "^2.2.0", "pull-sort": "^1.0.1", - "pull-stream": "^3.6.13", + "pull-stream": "^3.6.14", "pull-stream-to-async-iterator": "^1.0.2", "pull-stream-to-stream": "^1.3.4", "pull-traverse": "^1.0.3", @@ -11791,24 +12086,31 @@ "receptacle": "^1.3.2", "semver": "^6.3.0", "stream-to-pull-stream": "^1.7.3", - "superstruct": "~0.6.0", + "superstruct": "~0.6.2", "tar-stream": "^2.0.0", "temp": "~0.9.0", "update-notifier": "^3.0.1", "uri-to-multiaddr": "^3.0.1", "varint": "^5.0.0", - "yargs": "^13.3.0", + "yargs": "^14.0.0", "yargs-promise": "^1.1.0" }, "dependencies": { - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, "debug": { @@ -11820,31 +12122,22 @@ "ms": "^2.1.1" } }, - "err-code": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.0.tgz", - "integrity": "sha512-MsMOijQ4v0xlmrz1fc7lyPEy7jFhoNF7EVaRSP7mPzs20LaFOwG6qNjGRy3Ie85n9DARlcUnB1zbsBv5sJrIvw==", + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, - "ipfs-utils": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-0.0.4.tgz", - "integrity": "sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "is-buffer": "^2.0.3", - "is-electron": "^2.2.0", - "is-pull-stream": "0.0.0", - "is-stream": "^2.0.0", - "kind-of": "^6.0.2", - "readable-stream": "^3.4.0" - } + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true }, - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-stream": { @@ -11853,27 +12146,12 @@ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, - "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "multicodec": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.5.tgz", - "integrity": "sha512-1kOifvwAqp9IdiiTKmpK2tS+LY6GHZdKpk3S2EvW4T32vlwDyA3hJoZtGauzqdedUPVNGChnTksEotVOCVlC+Q==", - "dev": true, - "requires": { - "varint": "^5.0.0" - } - }, "readable-stream": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", @@ -11885,12 +12163,32 @@ "util-deprecate": "^1.0.1" } }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, "tar-stream": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", @@ -11903,6 +12201,36 @@ "inherits": "^2.0.3", "readable-stream": "^3.1.1" } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.0.0.tgz", + "integrity": "sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + } } } }, @@ -11984,9 +12312,9 @@ } }, "ipfs-http-client": { - "version": "33.1.0", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-33.1.0.tgz", - "integrity": "sha512-hkS8nXay3DGKb/KXU1RDvTyxnvkAdhS5enlXxNXaS7yKvADlf5SEuQGYjW+VknkPPQ4FNbY3JttQ3YW+LTuoRA==", + "version": "33.1.1", + "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-33.1.1.tgz", + "integrity": "sha512-iwtLL3lOIzxXJFwLnOEtFUv1cYTuWJ0NauD7rpMEd/y4C7z6fuN6TSF4h547lxMh7sJWv+6Z0PmOA5N8FzUHJw==", "dev": true, "requires": { "async": "^2.6.1", @@ -11995,7 +12323,7 @@ "bs58": "^4.0.1", "buffer": "^5.2.1", "cids": "~0.7.1", - "concat-stream": "github:hugomrdias/concat-stream#feat/smaller", + "concat-stream": "github:hugomrdias/concat-stream#057bc7b5d6d8df26c8cf00a3f151b6721a0a8034", "debug": "^4.1.0", "detect-node": "^2.0.4", "end-of-stream": "^1.4.1", @@ -12020,7 +12348,7 @@ "multibase": "~0.6.0", "multicodec": "~0.5.1", "multihashes": "~0.4.14", - "ndjson": "github:hugomrdias/ndjson#feat/readable-stream3", + "ndjson": "github:hugomrdias/ndjson#4db16da6b42e5b39bf300c3a7cde62abb3fa3a11", "once": "^1.4.0", "peer-id": "~0.12.2", "peer-info": "~0.15.1", @@ -12037,9 +12365,9 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -12064,6 +12392,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "is-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", @@ -12185,9 +12519,9 @@ } }, "ipfs-mfs": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/ipfs-mfs/-/ipfs-mfs-0.12.0.tgz", - "integrity": "sha512-EY+At/kw2Lsyfd/AFInmvR2O6MQvQ87RWhAnN3GXSy/tXaopaS5CqT9SSUVAx3we87/pAUbusxQ1pK7HYtrXSw==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/ipfs-mfs/-/ipfs-mfs-0.12.1.tgz", + "integrity": "sha512-TyxmsCvp5XVoy2lczAxbCKmpQaXlk/NQRemCNxJBcX+anFrUWx1YTq49HfXu0squ5SMfy51Nd/X4LF0nP1VPKg==", "dev": true, "requires": { "@hapi/boom": "^7.4.2", @@ -12221,6 +12555,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -12271,9 +12611,9 @@ "dev": true }, "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -12318,6 +12658,14 @@ "hamt-sharding": "~0.0.2", "ipfs-unixfs": "~0.1.16", "ipfs-unixfs-importer": "~0.39.11" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + } } }, "ipfs-unixfs-importer": { @@ -12342,15 +12690,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12368,9 +12722,9 @@ } }, "ipfs-utils": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-0.0.3.tgz", - "integrity": "sha512-x3X8Q7gDPR0Zta/3Zftx2JUP3lNfrWqHgExD6aSLTBcxHKQViaOgKCsGr0SMiMYeyXNCrbI8nKlpusQyusTUrg==", + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-0.0.4.tgz", + "integrity": "sha512-7cZf6aGj2FG3XJWhCNwn4mS93Q0GEWjtBZvEHqzgI43U2qzNDCyzfS1pei1Y5F+tw/zDJ5U4XG0G9reJxR53Ig==", "dev": true, "requires": { "buffer": "^5.2.1", @@ -12379,13 +12733,13 @@ "is-pull-stream": "0.0.0", "is-stream": "^2.0.0", "kind-of": "^6.0.2", - "readable-stream": "^3.3.0" + "readable-stream": "^3.4.0" }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -12454,9 +12808,9 @@ "dev": true }, "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", @@ -12481,6 +12835,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ipfs-http-client": { "version": "32.0.1", "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-32.0.1.tgz", @@ -12493,7 +12853,7 @@ "bs58": "^4.0.1", "buffer": "^5.2.1", "cids": "~0.7.1", - "concat-stream": "github:hugomrdias/concat-stream#feat/smaller", + "concat-stream": "github:hugomrdias/concat-stream#057bc7b5d6d8df26c8cf00a3f151b6721a0a8034", "debug": "^4.1.0", "detect-node": "^2.0.4", "end-of-stream": "^1.4.1", @@ -12517,7 +12877,7 @@ "multibase": "~0.6.0", "multicodec": "~0.5.1", "multihashes": "~0.4.14", - "ndjson": "github:hugomrdias/ndjson#feat/readable-stream3", + "ndjson": "github:hugomrdias/ndjson#4db16da6b42e5b39bf300c3a7cde62abb3fa3a11", "once": "^1.4.0", "peer-id": "~0.12.2", "peer-info": "~0.15.1", @@ -12645,15 +13005,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12684,15 +13050,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12724,15 +13096,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12767,15 +13145,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12807,15 +13191,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12844,15 +13234,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -12883,15 +13279,21 @@ }, "dependencies": { "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.2.tgz", + "integrity": "sha512-iy9koArjAFCzGnx3ZvNA6Z0clIbbFgbdWQ0mKD3hO0krOrZh8UgA6qMKcZvwLJxS+D6iVR76+5/pV56yMNYTag==", "dev": true, "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "multihashing-async": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-0.7.0.tgz", @@ -13327,23 +13729,11 @@ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.1.tgz", + "integrity": "sha512-CKstxrctq1kUesU6WhtZDbYKzzYBuRH0UYInAVrkc/EYdB9ltbfE0gOoayG9nhohG6447sOOVGhHqsdmBvkbNg==", + "dev": true }, "is-plain-obj": { "version": "1.1.0", @@ -13481,9 +13871,9 @@ "dev": true }, "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.1.0.tgz", + "integrity": "sha512-pFTjpv/x5HRj8kbZ/Msxi9VrvtOMRBqaDi3OIcbwPI3OuH+r3lLxVWukLITBaOGJIbA/w2+M1eVmVa4XNQlAmQ==", "dev": true }, "is-yarn-global": { @@ -13885,12 +14275,6 @@ "integrity": "sha512-87Nnc0qZKgBZuhFZjYVjSraic0x7zwjhaTMrCKlj0QYKH6lh0KbFzVnfu6LHan03NO7J8ygjeBeD0epejn5Zcg==", "dev": true }, - "just-flatten-it": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/just-flatten-it/-/just-flatten-it-2.1.0.tgz", - "integrity": "sha512-mX3NUt/LF6EzohLJZXhywCwz2zqdhx6wVkEu6UfUx00lVQlSB6SBV1O+/Le15NfsimrWRD82H69ZkSVQZffhmw==", - "dev": true - }, "just-kebab-case": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-1.1.0.tgz", @@ -13919,9 +14303,9 @@ } }, "karma": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-4.2.0.tgz", - "integrity": "sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.3.0.tgz", + "integrity": "sha512-NSPViHOt+RW38oJklvYxQC4BSQsv737oQlr/r06pCM+slDOr4myuI1ivkRmp+3dVpJDfZt2DmaPJ2wkx+ZZuMQ==", "dev": true, "requires": { "bluebird": "^3.3.0", @@ -13938,7 +14322,7 @@ "graceful-fs": "^4.1.2", "http-proxy": "^1.13.0", "isbinaryfile": "^3.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "log4js": "^4.0.0", "mime": "^2.3.1", "minimatch": "^3.0.2", @@ -13954,9 +14338,9 @@ }, "dependencies": { "anymatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", - "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.0.tgz", + "integrity": "sha512-Ozz7l4ixzI7Oxj2+cw+p0tVUt27BpaJ+1+q1TCeANWxHpvyn2+Un+YamBdfKu0uh8xLodGhoa1v7595NhKDAuA==", "dev": true, "requires": { "normalize-path": "^3.0.0", @@ -14035,9 +14419,9 @@ "dev": true }, "readdirp": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.1.tgz", - "integrity": "sha512-XXdSXZrQuvqoETj50+JAitxz1UPdt5dupjT6T5nVB+WvjMv2XKYj+s7hPeAVCXvmJrL36O4YYyWlIC3an2ePiQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.2.tgz", + "integrity": "sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw==", "dev": true, "requires": { "picomatch": "^2.0.4" @@ -14080,10 +14464,13 @@ } }, "karma-firefox-launcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", - "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", - "dev": true + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.2.0.tgz", + "integrity": "sha512-j9Zp8M8+VLq1nI/5xZGfzeaEPtGQ/vk3G+Y8vpmFWLvKLNZ2TDjD6cu2dUu7lDbu1HXNgatsAX4jgCZTkR9qhQ==", + "dev": true, + "requires": { + "is-wsl": "^2.1.0" + } }, "karma-junit-reporter": { "version": "1.2.0", @@ -14526,6 +14913,18 @@ "abstract-leveldown": "~6.0.3", "napi-macros": "~1.8.1", "node-gyp-build": "~4.1.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", + "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", + "dev": true, + "requires": { + "level-concat-iterator": "~2.0.0", + "xtend": "~4.0.0" + } + } } }, "levelup": { @@ -14557,9 +14956,9 @@ } }, "libp2p": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.25.5.tgz", - "integrity": "sha512-vkUGFkPcY7t/LyyIbjKbF7KE4O+gPmJXvv363TjmNSZX/ph0aP8KtCpurxwo82ztxec3w5XCZUyNGrjEliSshw==", + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-0.25.6.tgz", + "integrity": "sha512-9K4Blh39qX3r1YdPoGBZX4PxjBFMqQ3i3pkt0SK1q3D0hApyCpCyH/eHXlR+Uh5dBlr1KIoQC8bbH8vF9fMNBA==", "dev": true, "requires": { "async": "^2.6.2", @@ -14589,6 +14988,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -14768,40 +15173,13 @@ "resolved": "https://registry.npmjs.org/libp2p-delegated-content-routing/-/libp2p-delegated-content-routing-0.2.4.tgz", "integrity": "sha512-VgupHN9DhoNIJmnoe5H1Qb+AeG+Z7A4Yc8p/8jNNuRq61Jn7uzs03k1WWFRt/+Xnb9FlnHrBo1vrp8NqXdq9NQ==", "dev": true, - "requires": { - "async": "^2.6.2", - "ipfs-http-client": "^33.0.2", - "multiaddr": "^6.1.0", - "p-queue": "^6.1.0", - "peer-id": "^0.12.2", - "peer-info": "^0.15.1" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true - }, - "p-queue": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.1.0.tgz", - "integrity": "sha512-907vNz/cY+JEsqGglo7o/Ia9E/wisahJGOp9HPfbAyCVGERQVmFGA4IyknxY1v+QRBiMKedL3ToOBXNEy9MKQA==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "p-timeout": "^3.1.0" - } - }, - "p-timeout": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz", - "integrity": "sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - } + "requires": { + "async": "^2.6.2", + "ipfs-http-client": "^33.0.2", + "multiaddr": "^6.1.0", + "p-queue": "^6.1.0", + "peer-id": "^0.12.2", + "peer-info": "^0.15.1" } }, "libp2p-delegated-peer-routing": { @@ -14814,33 +15192,6 @@ "p-queue": "^6.1.0", "peer-id": "^0.12.2", "peer-info": "^0.15.1" - }, - "dependencies": { - "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", - "dev": true - }, - "p-queue": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.1.0.tgz", - "integrity": "sha512-907vNz/cY+JEsqGglo7o/Ia9E/wisahJGOp9HPfbAyCVGERQVmFGA4IyknxY1v+QRBiMKedL3ToOBXNEy9MKQA==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "p-timeout": "^3.1.0" - } - }, - "p-timeout": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz", - "integrity": "sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - } } }, "libp2p-floodsub": { @@ -14939,6 +15290,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -14957,6 +15314,15 @@ "murmurhash3js": "^3.0.1", "nodeify": "^1.0.1" } + }, + "p-queue": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-5.0.0.tgz", + "integrity": "sha512-6QfeouDf236N+MAxHch0CVIy8o/KBnmhttKjxZoOkUlzqU+u9rZgEyXH3OdckhTgawbqf5rpzmyR+07+Lv0+zg==", + "dev": true, + "requires": { + "eventemitter3": "^3.1.0" + } } } }, @@ -14974,6 +15340,14 @@ "node-forge": "~0.7.6", "pull-stream": "^3.6.9", "sanitize-filename": "^1.6.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + } } }, "libp2p-mdns": { @@ -15047,6 +15421,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -15067,6 +15447,14 @@ "multihashes": "~0.4.14", "multihashing-async": "~0.6.0", "protons": "^1.0.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + } } }, "libp2p-secio": { @@ -15160,6 +15548,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -15169,27 +15563,27 @@ } }, "libp2p-tcp": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.13.0.tgz", - "integrity": "sha512-bsmfxi+uVegK61x9UxBEgWtvujPl+zwzuVEyaVRs2IxHu6OE5MGKnj7AflzlK4e3w2HZn8nm4qwMV5m+fhqK1g==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/libp2p-tcp/-/libp2p-tcp-0.13.1.tgz", + "integrity": "sha512-gb9C6u+ax11+2ntXnaBPRveb/dyQ36j0dU6FLXcUSIO9ovkWWXduCZC0Fi/Uyc/CZAUYUsu/ACKSvEX+ELS9AQ==", "dev": true, "requires": { "class-is": "^1.1.0", - "debug": "^3.1.0", - "interface-connection": "~0.3.2", - "ip-address": "^5.8.9", + "debug": "^4.1.1", + "interface-connection": "~0.3.3", + "ip-address": "^6.1.0", "lodash.includes": "^4.3.0", "lodash.isfunction": "^3.0.9", - "mafmt": "^6.0.2", - "multiaddr": "^5.0.0", + "mafmt": "^6.0.7", + "multiaddr": "^6.1.0", "once": "^1.4.0", - "stream-to-pull-stream": "^1.7.2" + "stream-to-pull-stream": "^1.7.3" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" @@ -15200,22 +15594,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true - }, - "multiaddr": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-5.0.2.tgz", - "integrity": "sha512-dXz1chaUHV6L6okujDLS7uRA6NmCbitpikOJA0vMMnrwVyai5kC3ot2CSLrSfj3B8XIgNzpe/j5auSYrnbGGzA==", - "dev": true, - "requires": { - "bs58": "^4.0.1", - "class-is": "^1.1.0", - "ip": "^1.1.5", - "ip-address": "^5.8.9", - "lodash.filter": "^4.6.0", - "lodash.map": "^4.6.0", - "varint": "^5.0.0", - "xtend": "^4.0.1" - } } } }, @@ -15243,7 +15621,7 @@ "socket.io": "^2.1.1", "socket.io-client": "^2.1.1", "stream-to-pull-stream": "^1.7.3", - "webrtcsupport": "github:ipfs/webrtcsupport" + "webrtcsupport": "github:ipfs/webrtcsupport#0669f576582c53a3a42aa5ac014fcc5966809615" }, "dependencies": { "debug": { @@ -15386,6 +15764,23 @@ "ms": "^2.1.1" } }, + "ip-address": { + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", + "dev": true, + "requires": { + "jsbn": "1.1.0", + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" + } + }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha1-sBMHyym2GKHtJux56RH4A8TaAEA=", + "dev": true + }, "libp2p-crypto": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.14.1.tgz", @@ -15405,7 +15800,7 @@ "rsa-pem-to-jwk": "^1.1.3", "tweetnacl": "^1.0.0", "ursa-optional": "~0.9.9", - "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#master" + "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" } }, "libp2p-crypto-secp256k1": { @@ -15498,7 +15893,7 @@ "protons": "^1.0.1", "rsa-pem-to-jwk": "^1.1.3", "tweetnacl": "^1.0.0", - "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#master" + "webcrypto-shim": "github:dignifiedquire/webcrypto-shim#190bc9ec341375df6025b17ae12ddb2428ea49c8" } }, "multiaddr": { @@ -15574,6 +15969,12 @@ } } }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, "tweetnacl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.1.tgz", @@ -15583,17 +15984,17 @@ } }, "libp2p-websockets": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.12.2.tgz", - "integrity": "sha512-K/Jg/fWFfP5NyiLx01EJcoAcYQO00RSHpZfPQDR3May6ABvOseAjq45SrUDdDCW5mCS0502Vz1VjRrZdOXw8zQ==", + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/libp2p-websockets/-/libp2p-websockets-0.12.3.tgz", + "integrity": "sha512-qA5YZv7RoxGUtMlcD8JwquonM0/19MCV0UPDRihCjzTi4wRgGKhIXZSwd/fs+8RRTKHMEUngAxit7ZLSlYgdQQ==", "dev": true, "requires": { "class-is": "^1.1.0", "debug": "^4.1.1", - "interface-connection": "~0.3.2", - "mafmt": "^6.0.4", - "multiaddr-to-uri": "^4.0.1", - "pull-ws": "github:hugomrdias/pull-ws#fix/bundle-size" + "interface-connection": "~0.3.3", + "mafmt": "^6.0.7", + "multiaddr-to-uri": "^5.0.0", + "pull-ws": "github:hugomrdias/pull-ws#8e2ce0bb3b1cd6804828316e937fff8e0bef6225" }, "dependencies": { "debug": { @@ -15787,9 +16188,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==", + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "dev": true }, "lodash._reinterpolate": { @@ -16065,12 +16466,12 @@ "dev": true }, "mafmt": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-6.0.7.tgz", - "integrity": "sha512-2OG/EGAJZmpZBl7YRT1hD83sZa2gKsUEdegRuURreIOe7B4VeHU1rYYmhgk7BkLzknGL3xGYsDx3bbSgEEzE7g==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/mafmt/-/mafmt-6.0.8.tgz", + "integrity": "sha512-6oRO2fwNiqXXiby8Anq9ULLQpcrZUsfR3Bs+Yn1DWd/Zd65xGS9fobKzzSsnM9nqUdUA3IggG0b1R3WamVsatA==", "dev": true, "requires": { - "multiaddr": "^6.0.4" + "multiaddr": "^6.1.0" } }, "make-dir": { @@ -16084,9 +16485,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -16417,9 +16818,9 @@ } }, "merge2": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz", - "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", + "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", "dev": true }, "merkle-lib": { @@ -16852,13 +17253,13 @@ } }, "mortice": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-1.2.2.tgz", - "integrity": "sha512-zECpP0bCFVxlAbIJST7ZHQPm5ECKsJRaw4JfSmu5XQeSkO+UB8i+1GUxkskqLHHQfj/wGRWNDd8KBkWfHaZZkw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-1.2.3.tgz", + "integrity": "sha512-m285eSxSrbNieKgWWzGSbWO2oSoFHb2fdZX306afMVJ8p8boeAmUW5hCyZBC/gHuBMizR7wO9sXH74kZmf0ZbA==", "dev": true, "requires": { "observable-webworkers": "^1.0.0", - "p-queue": "^5.0.0", + "p-queue": "^6.0.0", "promise-timeout": "^1.3.0", "shortid": "^2.2.8" } @@ -16910,12 +17311,12 @@ } }, "multiaddr-to-uri": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-4.0.1.tgz", - "integrity": "sha512-RVHKm5NXcMWMIhrwF4B4Q34JtMXt1/2wgnDTnKRE+AGAiXfqFika0bIfCsAtLp+gZJOWeDLeT1vR6P0gGyVAtg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-5.0.0.tgz", + "integrity": "sha512-aVc52fdGXso3DwvVKUTjMddhLyuFBXcpGSbsIju0lKiYKFBUEREXSLpcqTOZlO8w1G1TivVmDe4CBUKQ/xMm5A==", "dev": true, "requires": { - "multiaddr": "^6.0.3" + "multiaddr": "^6.1.0" } }, "multibase": { @@ -16949,9 +17350,9 @@ } }, "multicodec": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.4.tgz", - "integrity": "sha512-0lPLiZ58b2jyXylx2qgda9/6N0YCNIpBxRsZ8sxYayVjEKh58XyNN74VTTQOR/ZCQFgbj0CsqfyRpEDPPlOMkw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.5.tgz", + "integrity": "sha512-1kOifvwAqp9IdiiTKmpK2tS+LY6GHZdKpk3S2EvW4T32vlwDyA3hJoZtGauzqdedUPVNGChnTksEotVOCVlC+Q==", "dev": true, "requires": { "varint": "^5.0.0" @@ -17007,6 +17408,12 @@ "ms": "^2.1.1" } }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -17040,9 +17447,9 @@ "dev": true }, "nanoid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.3.tgz", - "integrity": "sha512-NbaoqdhIYmY6FXDRB4eYtDVC9Z9eCbn8TyaiC16LNKtpPv/aqa0tOPD8y6gNE4yUNnaZ7LLhYtXOev/6+cBtfw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.0.tgz", + "integrity": "sha512-g5WwS+p6Cm+zQhO2YOpRbQThZVnNb7DDq74h8YDCLfAGynrEOrbx2E16dc8ciENiP1va5sqaAruqn2sN+xpkWg==", "dev": true }, "nanomatch": { @@ -17194,18 +17601,18 @@ } }, "node-abi": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.9.0.tgz", - "integrity": "sha512-jmEOvv0eanWjhX8dX1pmjb7oJl1U1oR4FOh0b2GnvALwSYoOdU7sj+kLDSAyjo4pfC9aj/IxkloxdLJQhSSQBA==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.11.0.tgz", + "integrity": "sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==", "dev": true, "requires": { "semver": "^5.4.1" }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -17221,9 +17628,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -17305,18 +17712,18 @@ "dev": true }, "node-releases": { - "version": "1.1.25", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz", - "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==", + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.29.tgz", + "integrity": "sha512-R5bDhzh6I+tpi/9i2hrrvGJ3yKPYzlVOORDkXhnZuwi5D3q1I5w4vYy24PJXTcLk9Q0kws9TO77T75bcK8/ysQ==", "dev": true, "requires": { "semver": "^5.3.0" }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -17358,9 +17765,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -17412,6 +17819,15 @@ "validator": "^10.11.0" }, "dependencies": { + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", @@ -17422,9 +17838,9 @@ } }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -18037,9 +18453,9 @@ "dev": true }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -18061,12 +18477,30 @@ "dev": true }, "p-queue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-5.0.0.tgz", - "integrity": "sha512-6QfeouDf236N+MAxHch0CVIy8o/KBnmhttKjxZoOkUlzqU+u9rZgEyXH3OdckhTgawbqf5rpzmyR+07+Lv0+zg==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.1.1.tgz", + "integrity": "sha512-R9gq36Th88xZ+rWAptN5IXLwqkwA1gagCQhT6ZXQ6RxEfmjb9ZW+UBzRVqv9sm5TQmbbI/TsKgGLbOaA61xR5w==", "dev": true, "requires": { - "eventemitter3": "^3.1.0" + "eventemitter3": "^4.0.0", + "p-timeout": "^3.1.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "p-timeout": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.1.0.tgz", + "integrity": "sha512-C27DYI+tCroT8J8cTEyySGydl2B7FlxrGNF5/wmMbl1V+jeehUCzEE/BVgzRebdm2K3ZitKOKx8YbdFumDyYmw==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + } } }, "p-timeout": { @@ -18106,15 +18540,15 @@ } }, "package-json": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.4.0.tgz", - "integrity": "sha512-bd1T8OBG7hcvMd9c/udgv6u5v9wISP3Oyl9Cm7Weop8EFwrtcQDnS2sb6zhwqus2WslSr5wSTIPiTTpxxmPm7Q==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "dev": true, "requires": { "got": "^9.6.0", - "registry-auth-token": "^3.4.0", + "registry-auth-token": "^4.0.0", "registry-url": "^5.0.0", - "semver": "^6.1.1" + "semver": "^6.2.0" }, "dependencies": { "@sindresorhus/is": { @@ -18278,15 +18712,6 @@ "path-root": "^0.1.1" } }, - "parse-git-config": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-0.2.0.tgz", - "integrity": "sha1-Jygz/dFf6hRvt10zbSNrljtv9wY=", - "dev": true, - "requires": { - "ini": "^1.3.3" - } - }, "parse-github-repo-url": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", @@ -18522,23 +18947,15 @@ } }, "peer-id": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.3.tgz", - "integrity": "sha512-rSpKw1lL0jL2hu0FO1IywmMTHLchiUO8/jkxe14d/TWSKLjlqhymzl9W6oMfmTZT5cLy99Tq3dRIBjdSaR4Flg==", + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.12.4.tgz", + "integrity": "sha512-AIAwL/6CmVc/VKbUhpA1rY3A/VJ3Z9ELvtvDQfl5cIi0A74L7lvsJ6LxQn5JSJVHM5Us2Ng9zMO523dO3FFnnw==", "dev": true, "requires": { - "async": "^3.0.1", + "async": "^2.6.3", "class-is": "^1.1.0", "libp2p-crypto": "~0.16.1", "multihashes": "~0.4.15" - }, - "dependencies": { - "async": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", - "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==", - "dev": true - } } }, "peer-info": { @@ -18645,9 +19062,9 @@ } }, "pino": { - "version": "5.13.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-5.13.1.tgz", - "integrity": "sha512-IxusG28L0g50uuf21kZELypdFOeNrJ/kRhktdi7LtdZQWCxLliMxG5iOrGUQ/ng7MiJ4XqXi/hfyXwZeKc1MxA==", + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/pino/-/pino-5.13.2.tgz", + "integrity": "sha512-WwOSCy36/gWhinsqWqAnuwIi2WtcH+jvoyeLm3bjUALIrzWIst0AovQjK4jVvSN2l64KFPfi3gd2fjsTovjdLQ==", "dev": true, "requires": { "fast-redact": "^1.4.4", @@ -18853,9 +19270,9 @@ "dev": true }, "pretty-bytes": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.2.0.tgz", - "integrity": "sha512-ujANBhiUsl9AhREUDUEY1GPOharMGm8x8juS7qOHybcLi7XsKfrYQ88hSly1l2i0klXHTDYrlL8ihMCG55Dc3w==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==", "dev": true }, "pretty-hrtime": { @@ -19144,9 +19561,9 @@ "dev": true }, "psl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", - "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz", + "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==", "dev": true }, "public-encrypt": { @@ -19324,9 +19741,9 @@ } }, "pull-stream": { - "version": "3.6.13", - "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.13.tgz", - "integrity": "sha512-enbnbnO+czsPuCq9s9HTTzDzzVQD5TSe60aO3nBioeJ9mevh8RzE4Hxbujo9TReg1fJlmNEL8uyQTUgn8+rSHg==", + "version": "3.6.14", + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.14.tgz", + "integrity": "sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew==", "dev": true }, "pull-stream-to-async-iterator": { @@ -19471,9 +19888,9 @@ "dev": true }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.8.0.tgz", + "integrity": "sha512-tPSkj8y92PfZVbinY1n84i1Qdx75lZjMQYx9WZhnkofyxzw2r7Ho39G3/aEvSUdebxpnnM4LZJCtvE/Aq3+s9w==", "dev": true }, "query-string": { @@ -19517,7 +19934,7 @@ "integrity": "sha512-TpIki3NG/X7nPnYHtYdF4Vp5NLrHvztiM5oL8+9NoeX/ClUfUyy7Y7DMrESZl1ropCpZJAjFMv/ZHYrkLu3bCQ==", "dev": true, "requires": { - "assemblyscript": "github:assemblyscript/assemblyscript#v0.6", + "assemblyscript": "github:assemblyscript/assemblyscript#3ed76a97f05335504166fce1653da75f4face28f", "bl": "^1.0.0", "debug": "^4.1.1", "minimist": "^1.2.0", @@ -19846,15 +20263,15 @@ } }, "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", + "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==", "dev": true }, "read-package-json": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.0.13.tgz", - "integrity": "sha512-/1dZ7TRZvGrYqE0UAfN6qQb5GYBsNcqS1C0tNK601CFOJmtHI7NIGXwetEPU/OtoFHZL3hDxm4rolFFVE9Bnmg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz", + "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==", "dev": true, "requires": { "glob": "^7.1.1", @@ -20037,15 +20454,15 @@ } }, "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==", + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", "dev": true }, "regenerator-transform": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.0.tgz", - "integrity": "sha512-rtOelq4Cawlbmq9xuMR5gdFmv7ku/sFoB7sRiywx7aq53bc52b4j6zvH7Te1Vt/X2YveDKnCGUbioieU7FEL3w==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", + "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", "dev": true, "requires": { "private": "^0.1.6" @@ -20062,9 +20479,9 @@ } }, "regexp-tree": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz", - "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.13.tgz", + "integrity": "sha512-hwdV/GQY5F8ReLZWO+W1SRoN5YfpOKY6852+tBFcma72DKBIcHjPRIlIvQN35bCOljuAfP2G2iB0FC/w236mUw==", "dev": true }, "regexpp": { @@ -20074,13 +20491,13 @@ "dev": true }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.5.5", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz", + "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", + "regenerate-unicode-properties": "^8.1.0", "regjsgen": "^0.5.0", "regjsparser": "^0.6.0", "unicode-match-property-ecmascript": "^1.0.4", @@ -20088,12 +20505,12 @@ } }, "registry-auth-token": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", - "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", + "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", "dev": true, "requires": { - "rc": "^1.1.6", + "rc": "^1.2.8", "safe-buffer": "^5.0.1" } }, @@ -20242,15 +20659,6 @@ "remark-slug": "^5.0.0" } }, - "remote-origin-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/remote-origin-url/-/remote-origin-url-0.4.0.tgz", - "integrity": "sha1-TT4pAvNOLTfRwmPYdxC3frQIajA=", - "dev": true, - "requires": { - "parse-git-config": "^0.2.0" - } - }, "remove-bom-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", @@ -20371,9 +20779,9 @@ "dev": true }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -20495,9 +20903,9 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" @@ -20637,9 +21045,9 @@ "dev": true }, "sanitize-filename": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.2.tgz", - "integrity": "sha512-cmTzND7RMxUB+f7gI+4+KAVHWEg0lfXvQJdko+FXDP5bNbGIdx4KMP5pX6lv5jfT9jSf6OBbjyxjFtZQwYA/ig==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", "dev": true, "requires": { "truncate-utf8-bytes": "^1.0.0" @@ -20679,9 +21087,9 @@ "dev": true }, "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, "semver-diff": { @@ -20694,9 +21102,9 @@ }, "dependencies": { "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true } } @@ -20743,9 +21151,9 @@ } }, "serialize-javascript": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz", - "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.9.0.tgz", + "integrity": "sha512-UkGlcYMtw4d9w7YfCtJFgdRTps8N4L0A48R+SmcGL57ki1+yHwJXnalk5bjgrw+ljv6SfzjzPjhohod2qllg/Q==", "dev": true }, "serve-static": { @@ -20923,9 +21331,9 @@ } }, "simple-git": { - "version": "1.121.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.121.0.tgz", - "integrity": "sha512-LyYri/nuAX8+cx9nZw38mWO6oHNi//CmiPlkBL7aVjZIsdldve7eeDwXu9L4wP/74MpNHucXkXc/BOuIQShhPg==", + "version": "1.126.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.126.0.tgz", + "integrity": "sha512-47mqHxgZnN8XRa9HbpWprzUv3Ooqz9RY/LSZgvA7jCkW8jcwLahMz7LKugY91KZehfG0sCVPtgXiU72hd6b1Bw==", "dev": true, "requires": { "debug": "^4.0.1" @@ -21330,9 +21738,9 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -21366,9 +21774,9 @@ "dev": true }, "spawn-wrap": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.2.tgz", - "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz", + "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==", "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -21645,9 +22053,9 @@ } }, "stream-http": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.0.0.tgz", - "integrity": "sha512-JELJfd+btL9GHtxU3+XXhg9NLYrKFnhybfvRuDghtyVkOFydz3PKNT1df07AMr88qW03WHF+FSV0PySpXignCA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.0.tgz", + "integrity": "sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", @@ -21991,9 +22399,9 @@ } }, "superstruct": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.6.1.tgz", - "integrity": "sha512-LDbOKL5sNbOJ00Q36iYRhSexKIptZje0/mhNznnz04wT9CmsPDZg/K/UV1dgYuCwNMuOBHTbVROZsGB9EhhK4w==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.6.2.tgz", + "integrity": "sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig==", "dev": true, "requires": { "clone-deep": "^2.0.1", @@ -22016,9 +22424,9 @@ "dev": true }, "table": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.4.tgz", - "integrity": "sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { "ajv": "^6.10.2", @@ -22151,6 +22559,17 @@ "dev": true, "requires": { "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "term-size": { @@ -22180,9 +22599,9 @@ } }, "terser": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.2.tgz", - "integrity": "sha512-jvNoEQSPXJdssFwqPSgWjsOrb+ELoE+ILpHPKXC83tIxOlh2U75F1KuB2luLD/3a6/7K3Vw5pDn+hvu0C4AzSw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.1.tgz", + "integrity": "sha512-cGbc5utAcX4a9+2GGVX4DsenG6v0x3glnDi5hx8816X1McEAwPlPgRtXPJzSBsbpILxZ8MQMT0KvArLuE0HP5A==", "dev": true, "requires": { "commander": "^2.20.0", @@ -22199,23 +22618,28 @@ } }, "terser-webpack-plugin": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", - "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", + "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", "dev": true, "requires": { - "cacache": "^11.3.2", - "find-cache-dir": "^2.0.0", + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", - "loader-utils": "^1.2.3", "schema-utils": "^1.0.0", "serialize-javascript": "^1.7.0", "source-map": "^0.6.1", - "terser": "^4.0.0", - "webpack-sources": "^1.3.0", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", "worker-farm": "^1.7.0" }, "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -22320,9 +22744,9 @@ "dev": true }, "timers-browserify": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", "dev": true, "requires": { "setimmediate": "^1.0.4" @@ -23124,15 +23548,15 @@ "dev": true }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", "dev": true }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, "validate-npm-package-license": { @@ -23173,9 +23597,9 @@ } }, "varuint-bitcoin": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.0.tgz", - "integrity": "sha512-jCEPG+COU/1Rp84neKTyDJQr478/hAfVp5xxYn09QEH0yBjbmPeMfuuQIrp+BUD83hybtYZKhr5elV3bvdV1bA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-1.1.2.tgz", + "integrity": "sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==", "dev": true, "requires": { "safe-buffer": "^5.1.1" @@ -23458,40 +23882,58 @@ "dev": true }, "webpack": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.36.1.tgz", - "integrity": "sha512-Ej01/N9W8DVyhEpeQnbUdGvOECw0L46FxS12cCOs8gSK7bhUlrbHRnWkjiXckGlHjUrmL89kDpTRIkUk6Y+fKg==", + "version": "4.39.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.3.tgz", + "integrity": "sha512-BXSI9M211JyCVc3JxHWDpze85CvjC842EvpRsVTc/d15YJGlox7GIDd38kJgWrb3ZluyvIjgenbLDMBQPDcxYQ==", "dev": true, "requires": { "@webassemblyjs/ast": "1.8.5", "@webassemblyjs/helper-module-context": "1.8.5", "@webassemblyjs/wasm-edit": "1.8.5", "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", + "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.1", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + } } }, "webpack-bundle-analyzer": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.3.2.tgz", - "integrity": "sha512-7qvJLPKB4rRWZGjVp5U1KEjwutbDHSKboAl0IfafnrdXMrgC0tOtZbQD6Rw0u4cmpgRN4O02Fc0t8eAT+FgGzA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.4.1.tgz", + "integrity": "sha512-Bs8D/1zF+17lhqj2OYmzi7HEVYqEVxu7lCO9Ff8BwajenOU0vAwEoV8e4ICCPNZAcqR1PCR/7o2SkW+cnCmF0A==", "dev": true, "requires": { "acorn": "^6.0.7", @@ -23503,12 +23945,24 @@ "express": "^4.16.3", "filesize": "^3.6.1", "gzip-size": "^5.0.0", - "lodash": "^4.17.10", + "lodash": "^4.17.15", "mkdirp": "^0.5.1", "opener": "^1.5.1", "ws": "^6.0.0" }, "dependencies": { + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, "filesize": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", @@ -23537,9 +23991,9 @@ } }, "webpack-cli": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz", - "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.7.tgz", + "integrity": "sha512-OhTUCttAsr+IZSMVwGROGRHvT+QAs8H6/mHIl4SvhAwYywjiylYjpwybGx7WQ9Hkb45FhjtsymkwiRRbGJ1SZQ==", "dev": true, "requires": { "chalk": "2.4.2", @@ -23630,9 +24084,9 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "string-width": { @@ -23664,6 +24118,12 @@ "has-flag": "^3.0.0" } }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, "wrap-ansi": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", @@ -23727,18 +24187,18 @@ } }, "webpack-merge": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", - "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", "dev": true, "requires": { - "lodash": "^4.17.5" + "lodash": "^4.17.15" } }, "webpack-sources": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", - "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, "requires": { "source-list-map": "^2.0.0", diff --git a/test/kad-dht.js b/test/kad-dht.js index 7901b299..66b27bd5 100644 --- a/test/kad-dht.js +++ b/test/kad-dht.js @@ -43,7 +43,14 @@ const spawnGoDaemon = (bootstrap = [], callback) => { const spawnJsDaemon = (bootstrap = [], callback) => { jsDf.spawn({ initOptions: { bits: 512 }, - config: getConfig(bootstrap) + config: getConfig(bootstrap), + libp2p: { + config: { + dht: { + enabled: true + } + } + } }, callback) } @@ -74,8 +81,8 @@ describe('kad-dht', () => { describe('kad-dht with a single bootstrap node', () => { describe('a JS network', () => { let bootstrapAddr - let nodes = [] - let data = crypto.randomBytes(9001) + const nodes = [] + const data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { @@ -142,8 +149,8 @@ describe('kad-dht', () => { describe('a GO network', () => { const peersToSpawn = 3 let bootstrapAddr - let nodes = [] - let data = crypto.randomBytes(9001) + const nodes = [] + const data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { @@ -209,8 +216,8 @@ describe('kad-dht', () => { describe('a JS bootstrap node in the land of Go', () => { const peersToSpawn = 3 let bootstrapAddr - let nodes = [] - let data = crypto.randomBytes(9001) + const nodes = [] + const data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { @@ -276,8 +283,8 @@ describe('kad-dht', () => { describe('a Go bootstrap node in the land of JS', () => { const peersToSpawn = 3 let bootstrapAddr - let nodes = [] - let data = crypto.randomBytes(9001) + const nodes = [] + const data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { @@ -342,8 +349,8 @@ describe('kad-dht', () => { describe('a JS bootstrap node in an hybrid land', () => { let bootstrapAddr - let nodes = [] - let data = crypto.randomBytes(9001) + const nodes = [] + const data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { @@ -408,8 +415,8 @@ describe('kad-dht', () => { describe('a Go bootstrap node in an hybrid land', () => { let bootstrapAddr - let nodes = [] - let data = crypto.randomBytes(9001) + const nodes = [] + const data = crypto.randomBytes(9001) // spawn bootstrap daemon and get address before(function (done) { From bdcd8fc369e91ffea1891a98c36b97ac7ce160c4 Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Mon, 2 Sep 2019 14:47:43 +0200 Subject: [PATCH 5/5] chore: address review --- test/kad-dht.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/kad-dht.js b/test/kad-dht.js index 66b27bd5..e42da578 100644 --- a/test/kad-dht.js +++ b/test/kad-dht.js @@ -54,7 +54,7 @@ const spawnJsDaemon = (bootstrap = [], callback) => { }, callback) } -const getBootstrapAddr = (node, callback) => { +const getNodeAddr = (node, callback) => { node.api.id((err, res) => { expect(err).to.not.exist() expect(res.id).to.exist() @@ -92,7 +92,7 @@ describe('kad-dht', () => { expect(err).to.not.exist() nodes.push(node) - getBootstrapAddr(nodes[0], (err, res) => { + getNodeAddr(nodes[0], (err, res) => { expect(err).to.not.exist() bootstrapAddr = res done() @@ -160,7 +160,7 @@ describe('kad-dht', () => { expect(err).to.not.exist() nodes.push(node) - getBootstrapAddr(nodes[0], (err, res) => { + getNodeAddr(nodes[0], (err, res) => { expect(err).to.not.exist() bootstrapAddr = res done() @@ -227,7 +227,7 @@ describe('kad-dht', () => { expect(err).to.not.exist() nodes.push(node) - getBootstrapAddr(nodes[0], (err, res) => { + getNodeAddr(nodes[0], (err, res) => { expect(err).to.not.exist() bootstrapAddr = res done() @@ -294,7 +294,7 @@ describe('kad-dht', () => { expect(err).to.not.exist() nodes.push(node) - getBootstrapAddr(nodes[0], (err, res) => { + getNodeAddr(nodes[0], (err, res) => { expect(err).to.not.exist() bootstrapAddr = res done() @@ -360,7 +360,7 @@ describe('kad-dht', () => { expect(err).to.not.exist() nodes.push(node) - getBootstrapAddr(nodes[0], (err, res) => { + getNodeAddr(nodes[0], (err, res) => { expect(err).to.not.exist() bootstrapAddr = res done() @@ -426,7 +426,7 @@ describe('kad-dht', () => { expect(err).to.not.exist() nodes.push(node) - getBootstrapAddr(nodes[0], (err, res) => { + getNodeAddr(nodes[0], (err, res) => { expect(err).to.not.exist() bootstrapAddr = res done()