From 876ae7ca685d5e97a2ed3337f2f38d08e5d8c560 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Fri, 22 Nov 2019 14:42:51 +0000 Subject: [PATCH 01/43] docs: tweak formatting in changelog for v40 --- CHANGELOG.md | 32 ++++++++++++-------------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f0de1f04..cb5bff527 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,34 +22,26 @@ ### BREAKING CHANGES * The `log.tail` method now returns an async iterator that yields log messages. Use it like: - -```js -for await (const message of ipfs.log.tail()) { - console.log(message) -} -``` + ```js + for await (const message of ipfs.log.tail()) { + console.log(message) + } + ``` * The response to a call to `log.level` now returns an object that has camel cased keys. i.e. `Message` and `Error` properties have changed to `message` and `error`. * Dropped support for go-ipfs <= 0.4.4 in `swarm.peers` response. * The signature for `ipfs.mount` has changed from `ipfs.mount([ipfsPath], [ipnsPath])` to `ipfs.mount([options])`. Where `options` is an optional object that may contain two boolean properties `ipfsPath` and `ipnsPath`. The response object has also changed to be camel case. See https://docs.ipfs.io/reference/api/http/#api-v0-mount. * Default ping `count` of 1 in client has been removed. The default ping count is now whatever the IPFS node defaults it to (currently 10). If you specifically need 1 ping message then please pass `count: 1` in options for `ipfs.ping()`. * Multi parameter constructor options are no longer supported. To create a new IPFS HTTP client, pass a single parameter to the constructor. The parameter can be one of: - -* String, formatted as one of: - * Multiaddr e.g. /ip4/127.0.0.1/tcp/5001 - * URL e.g. http://127.0.0.1:5001 -* [Multiaddr](https://www.npmjs.com/package/multiaddr) instance -* Object, in format of either: - * Address and path e.g. `{ apiAddr: '/ip4/127.0.0.1/tcp/5001': apiPath: '/api/v0' }` (Note: `apiAddr` can also be a string in URL form or a Multiaddr instance) - * Node.js style address e.g. `{ host: '127.0.0.1', port: 5001, protocol: 'http' }` + * String, formatted as one of: + * Multiaddr e.g. /ip4/127.0.0.1/tcp/5001 + * URL e.g. http://127.0.0.1:5001 + * [Multiaddr](https://www.npmjs.com/package/multiaddr) instance + * Object, in format of either: + * Address and path e.g. `{ apiAddr: '/ip4/127.0.0.1/tcp/5001': apiPath: '/api/v0' }` (Note: `apiAddr` can also be a string in URL form or a Multiaddr instance) + * Node.js style address e.g. `{ host: '127.0.0.1', port: 5001, protocol: 'http' }` * Errors returned from request failures are now all [`HTTPError`](https://github.com/sindresorhus/ky/blob/c0d9d2bb07e4c122a08f019b39e9c55a4c9324f3/index.js#L117-L123)s which carry a `response` property. This is a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) that can be used to inspect _all_ information relating to the HTTP response. This means that the `err.status` or `err.statusCode` property should now be accessed via `err.response.status`. - -License: MIT -Signed-off-by: Alan Shaw * files in `src/files-regular` have moved to `src`. The `src/files-mfs` directory has been renamed to `src/files`. If you were previously requiring files from these directories e.g. `require('ipfs-http-client/src/files-regular/add')` then please be aware that they have moved. -License: MIT -Signed-off-by: Alan Shaw - From 64a44f5ce63a4d97a787753a47ffef3f5e740ed8 Mon Sep 17 00:00:00 2001 From: Pedro Santos Date: Wed, 27 Nov 2019 06:41:14 +0000 Subject: [PATCH 02/43] chore: change interface tests to async node creation (#1176) * chore: change interface tests to async node creation * chore: update interface-ipfs-core dep * chore: code review changes --- package.json | 2 +- test/interface.spec.js | 11 +++++------ test/utils/interface-common-factory.js | 21 ++++++++++++--------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 423109411..955cb94af 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.121.0", + "interface-ipfs-core": "^0.122.0", "ipfsd-ctl": "^0.47.1", "ndjson": "^1.5.0", "nock": "^11.4.0", diff --git a/test/interface.spec.js b/test/interface.spec.js index 760962b38..dc41ec325 100644 --- a/test/interface.spec.js +++ b/test/interface.spec.js @@ -7,7 +7,7 @@ const CommonFactory = require('./utils/interface-common-factory') const isWindows = process.platform && process.platform === 'win32' describe('interface-ipfs-core tests', () => { - const defaultCommonFactory = CommonFactory.create() + const defaultCommonFactory = CommonFactory.createAsync() tests.bitswap(defaultCommonFactory, { skip: [ @@ -172,7 +172,7 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.name(CommonFactory.create({ + tests.name(CommonFactory.createAsync({ spawnOptions: { args: ['--offline'] } @@ -186,8 +186,7 @@ describe('interface-ipfs-core tests', () => { ] }) - // TODO: uncomment after https://github.com/ipfs/interface-ipfs-core/pull/361 being merged and a new release - tests.namePubsub(CommonFactory.create({ + tests.namePubsub(CommonFactory.createAsync({ spawnOptions: { args: ['--enable-namesys-pubsub'], initOptions: { bits: 1024, profile: 'test' } @@ -228,7 +227,7 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.pubsub(CommonFactory.create({ + tests.pubsub(CommonFactory.createAsync({ spawnOptions: { args: ['--enable-pubsub-experiment'], initOptions: { bits: 1024, profile: 'test' } @@ -251,5 +250,5 @@ describe('interface-ipfs-core tests', () => { tests.stats(defaultCommonFactory) - tests.swarm(CommonFactory.createAsync()) + tests.swarm(defaultCommonFactory) }) diff --git a/test/utils/interface-common-factory.js b/test/utils/interface-common-factory.js index 4a47fda42..bd4720b6e 100644 --- a/test/utils/interface-common-factory.js +++ b/test/utils/interface-common-factory.js @@ -6,10 +6,14 @@ const IPFSFactory = require('ipfsd-ctl') const ipfsClient = require('../../src') const merge = require('merge-options') +const DEFAULT_FACTORY_OPTIONS = { + IpfsClient: ipfsClient +} + function createFactory (options) { options = options || {} - options.factoryOptions = options.factoryOptions || { IpfsClient: ipfsClient } + options.factoryOptions = options.factoryOptions || { ...DEFAULT_FACTORY_OPTIONS } options.spawnOptions = options.spawnOptions || { initOptions: { bits: 1024, profile: 'test' } } const ipfsFactory = IPFSFactory.create(options.factoryOptions) @@ -52,19 +56,18 @@ function createFactory (options) { } } -function createAsync (createFactoryOptions, createSpawnOptions) { +function createAsync (options = {}) { return () => { const nodes = [] - const setup = async (factoryOptions = {}, spawnOptions) => { + const setup = async (setupOptions = {}) => { const ipfsFactory = IPFSFactory.create(merge( - { IpfsClient: ipfsClient }, - factoryOptions, - createFactoryOptions + options.factoryOptions ? {} : { ...DEFAULT_FACTORY_OPTIONS }, + setupOptions.factoryOptions, + options.factoryOptions )) const node = await ipfsFactory.spawn(merge( - { initOptions: { profile: 'test' } }, - spawnOptions, - createSpawnOptions + setupOptions.spawnOptions, + options.spawnOptions || { initOptions: { profile: 'test' } } )) nodes.push(node) From cb39a69ca527c452d9a104bdc4bd331969c61a9c Mon Sep 17 00:00:00 2001 From: "greenkeeper[bot]" <23040076+greenkeeper[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2019 06:41:54 +0000 Subject: [PATCH 03/43] chore(package): update it-glob to version 0.0.7 (#1182) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 955cb94af..7d562b413 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "ipld-dag-pb": "^0.18.1", "ipld-raw": "^4.0.0", "is-ipfs": "~0.6.1", - "it-glob": "0.0.6", + "it-glob": "0.0.7", "it-tar": "^1.1.1", "it-to-stream": "^0.1.1", "iterable-ndjson": "^1.1.0", From 2f3763f682eb4cbca5c1cd773d363491063a7483 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Wed, 27 Nov 2019 15:51:06 +0000 Subject: [PATCH 04/43] fix: pin ls with multiple CIDs (#1184) Fixes `pin.ls` with multiple CIDs, which was inadvertently unsupported since it wasn't documented but was being tested for in js-ipfs CLI tests. https://github.com/ipfs/interface-js-ipfs-core/pull/563 adds a test and documents the feature. --- package.json | 2 +- src/pin/ls.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7d562b413..1b7d098b4 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.122.0", + "interface-ipfs-core": "^0.123.0", "ipfsd-ctl": "^0.47.1", "ndjson": "^1.5.0", "nock": "^11.4.0", diff --git a/src/pin/ls.js b/src/pin/ls.js index cd1cc07f1..9c42fd71d 100644 --- a/src/pin/ls.js +++ b/src/pin/ls.js @@ -9,10 +9,12 @@ module.exports = configure(({ ky }) => { path = null } + path = path || [] + path = Array.isArray(path) ? path : [path] options = options || {} const searchParams = new URLSearchParams(options.searchParams) - if (path) searchParams.set('arg', `${path}`) + path.forEach(p => searchParams.append('arg', `${p}`)) if (options.type) searchParams.set('type', options.type) const { Keys } = await ky.post('pin/ls', { From fd7cc4c26e6ad22311a6dc3f66ecb0e744f37608 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Wed, 27 Nov 2019 15:54:41 +0000 Subject: [PATCH 05/43] chore: update contributors --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 1b7d098b4..99103fa69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "40.0.0", + "version": "40.0.1", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -157,6 +157,7 @@ "Níckolas Goline ", "Oli Evans ", "Orie Steele ", + "Pedro Santos ", "Pedro Teixeira ", "Pete Thomas ", "Richard Littauer ", From d95b8f16a6060c501e217ccb2835feba670ed9ce Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Wed, 27 Nov 2019 15:54:42 +0000 Subject: [PATCH 06/43] chore: release version v40.0.1 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb5bff527..0d8658a5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +## [40.0.1](https://github.com/ipfs/js-ipfs-http-client/compare/v40.0.0...v40.0.1) (2019-11-27) + + +### Bug Fixes + +* pin ls with multiple CIDs ([#1184](https://github.com/ipfs/js-ipfs-http-client/issues/1184)) ([2f3763f](https://github.com/ipfs/js-ipfs-http-client/commit/2f3763f)) + + + # [40.0.0](https://github.com/ipfs/js-ipfs-http-client/compare/v39.0.2...v40.0.0) (2019-11-22) From f77819c4c366a471c22bb6de08a2b133c835cf43 Mon Sep 17 00:00:00 2001 From: sarthak khandelwal Date: Fri, 29 Nov 2019 20:51:13 +0530 Subject: [PATCH 07/43] docs: switch license to dual MIT and Apache 2 (#1179) --- COPYRIGHT | 5 +++++ LICENSE-APACHE | 5 +++++ LICENSE => LICENSE-MIT | 0 package.json | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 COPYRIGHT create mode 100644 LICENSE-APACHE rename LICENSE => LICENSE-MIT (100%) diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 000000000..b8b0a702d --- /dev/null +++ b/COPYRIGHT @@ -0,0 +1,5 @@ +This project is transitioning from an MIT-only license to a dual MIT/Apache-2.0 license. +Unless otherwise noted, all code contributed prior to 2019-11-26 and not contributed by +a user listed in [this signoff issue](https://github.com/ipfs/js-ipfs-http-client/issues/1189) is +licensed under MIT-only. All new contributions (and past contributions since 2019-11-29) +are licensed under a dual MIT/Apache-2.0 license. diff --git a/LICENSE-APACHE b/LICENSE-APACHE new file mode 100644 index 000000000..14478a3b6 --- /dev/null +++ b/LICENSE-APACHE @@ -0,0 +1,5 @@ +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. diff --git a/LICENSE b/LICENSE-MIT similarity index 100% rename from LICENSE rename to LICENSE-MIT diff --git a/package.json b/package.json index 99103fa69..88c175538 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ ], "homepage": "https://github.com/ipfs/js-ipfs-http-client", "bugs": "https://github.com/ipfs/js-ipfs-http-client/issues", - "license": "MIT", + "license": "(Apache-2.0 OR MIT)", "leadMaintainer": "Alan Shaw ", "files": [ "src", From e8a32a781b9b9df76fa102d790e381f9014e6ef5 Mon Sep 17 00:00:00 2001 From: Pedro Santos Date: Mon, 2 Dec 2019 11:14:42 +0000 Subject: [PATCH 08/43] refactor: use echo-server start and stop functions as promises (#1191) * refactor: use echo-server start and stop functions as promises * chore: update interface-ipfs-core version --- .aegir.js | 11 ++++------- package.json | 3 +-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.aegir.js b/.aegir.js index 847d73a9b..69e938893 100644 --- a/.aegir.js +++ b/.aegir.js @@ -1,13 +1,10 @@ 'use strict' -const promisify = require('promisify-es6') const createServer = require('ipfsd-ctl').createServer const EchoServer = require('interface-ipfs-core/src/utils/echo-http-server') const server = createServer() const echoServer = EchoServer.createServer() -const echoServerStart = promisify(echoServer.start) -const echoServerStop = promisify(echoServer.stop) module.exports = { bundlesize: { maxSize: '246kB' }, webpack: { @@ -27,20 +24,20 @@ module.exports = { }, hooks: { node: { - pre: () => echoServerStart(), - post: () => echoServerStop() + pre: () => echoServer.start(), + post: () => echoServer.stop() }, browser: { pre: () => { return Promise.all([ server.start(), - echoServerStart() + echoServer.start() ]) }, post: () => { return Promise.all([ server.stop(), - echoServerStop() + echoServer.stop() ]) } } diff --git a/package.json b/package.json index 88c175538..25e596d77 100644 --- a/package.json +++ b/package.json @@ -84,11 +84,10 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.123.0", + "interface-ipfs-core": "^0.124.0", "ipfsd-ctl": "^0.47.1", "ndjson": "^1.5.0", "nock": "^11.4.0", - "promisify-es6": "^1.0.3", "pull-stream": "^3.6.14", "pump": "^3.0.0", "stream-equal": "^1.1.1" From d158d2a5a753284235434ebda7f42ec20f95a8b0 Mon Sep 17 00:00:00 2001 From: Daniel Constantin Date: Mon, 2 Dec 2019 13:47:49 +0200 Subject: [PATCH 09/43] chore: fix supported engines (#1193) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 25e596d77..2ebbffb98 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "stream-equal": "^1.1.1" }, "engines": { - "node": ">=8.3.0", + "node": ">=10.3.0", "npm": ">=3.0.0" }, "contributors": [ From fff35c811dd4eab05870d04d588c13c693975a05 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Fri, 6 Dec 2019 15:48:55 +0000 Subject: [PATCH 10/43] docs: add missing breaking change info to v40 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d8658a5f..7c50e3d72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,6 +51,8 @@ * Node.js style address e.g. `{ host: '127.0.0.1', port: 5001, protocol: 'http' }` * Errors returned from request failures are now all [`HTTPError`](https://github.com/sindresorhus/ky/blob/c0d9d2bb07e4c122a08f019b39e9c55a4c9324f3/index.js#L117-L123)s which carry a `response` property. This is a [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response) that can be used to inspect _all_ information relating to the HTTP response. This means that the `err.status` or `err.statusCode` property should now be accessed via `err.response.status`. * files in `src/files-regular` have moved to `src`. The `src/files-mfs` directory has been renamed to `src/files`. If you were previously requiring files from these directories e.g. `require('ipfs-http-client/src/files-regular/add')` then please be aware that they have moved. +* Kebab case options are no longer supported. Please use camel case option names as defined in the [`interface-ipfs-core`](https://github.com/ipfs/interface-js-ipfs-core/tree/master/SPEC) docs. e.g. the `allow-offline` option to `name.publish` should be passed as `allowOffline`. + * Note that you can pass [additional query string parameters](https://github.com/ipfs/js-ipfs-http-client#additional-options) in the `searchParams` option available to all API methods. From 47093d53724fdad3b1b9f569a8a11877b6a4cf40 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Fri, 6 Dec 2019 20:51:05 +0000 Subject: [PATCH 11/43] feat: expose import concurrency controls (#1187) --- package.json | 2 +- src/add/index.js | 2 ++ src/index.js | 2 +- src/lib/converters.js | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 2ebbffb98..791fe0a2b 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,6 @@ }, "dependencies": { "abort-controller": "^3.0.0", - "async-iterator-all": "^1.0.0", "async-iterator-to-pull-stream": "^1.3.0", "bignumber.js": "^9.0.0", "bl": "^4.0.0", @@ -60,6 +59,7 @@ "ipld-dag-pb": "^0.18.1", "ipld-raw": "^4.0.0", "is-ipfs": "~0.6.1", + "it-all": "^1.0.1", "it-glob": "0.0.7", "it-tar": "^1.1.1", "it-to-stream": "^0.1.1", diff --git a/src/add/index.js b/src/add/index.js index b1a8bb2a1..df6afbad3 100644 --- a/src/add/index.js +++ b/src/add/index.js @@ -29,6 +29,8 @@ module.exports = configure(({ ky }) => { if (options.trickle != null) searchParams.set('trickle', options.trickle) if (options.wrapWithDirectory != null) searchParams.set('wrap-with-directory', options.wrapWithDirectory) if (options.preload != null) searchParams.set('preload', options.preload) + if (options.fileImportConcurrency != null) searchParams.set('file-import-concurrency', options.fileImportConcurrency) + if (options.blockWriteConcurrency != null) searchParams.set('block-write-concurrency', options.blockWriteConcurrency) const res = await ky.post('add', { timeout: options.timeout, diff --git a/src/index.js b/src/index.js index d9dc89630..939f5986f 100644 --- a/src/index.js +++ b/src/index.js @@ -11,7 +11,7 @@ const PeerId = require('peer-id') const PeerInfo = require('peer-info') const nodeify = require('promise-nodeify') const callbackify = require('callbackify') -const all = require('async-iterator-all') +const all = require('it-all') const toPullStream = require('async-iterator-to-pull-stream') const toStream = require('it-to-stream') const BufferList = require('bl/BufferList') diff --git a/src/lib/converters.js b/src/lib/converters.js index a1ed8a010..4f42b3175 100644 --- a/src/lib/converters.js +++ b/src/lib/converters.js @@ -1,7 +1,7 @@ 'use strict' const toPull = require('async-iterator-to-pull-stream') -const all = require('async-iterator-all') +const all = require('it-all') const toStream = require('it-to-stream') const { Buffer } = require('buffer') From cfb5245aa3b8fb0527d2f61b2d4b99731bae9ab7 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Tue, 10 Dec 2019 16:30:45 +0000 Subject: [PATCH 12/43] chore: update contributors --- package.json | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 791fe0a2b..abaf35d69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "40.0.1", + "version": "40.1.0", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -100,10 +100,12 @@ "Alan Shaw ", "Alan Shaw ", "Alex Mingoia ", + "Alex Potsides ", "Antonio Tenorio-Fornés ", "Bruno Barbieri ", "Clemo ", "Connor Keenan ", + "Daniel Constantin ", "Danny ", "David Braun ", "David Dias ", @@ -156,6 +158,7 @@ "Níckolas Goline ", "Oli Evans ", "Orie Steele ", + "Pedro Santos ", "Pedro Santos ", "Pedro Teixeira ", "Pete Thomas ", @@ -173,7 +176,6 @@ "Victor Bjelkholm ", "Volker Mische ", "Zhiyuan Lin ", - "achingbrain ", "dirkmc ", "dmitriy ryajov ", "elsehow ", @@ -188,6 +190,7 @@ "phillmac ", "priecint ", "samuli ", + "sarthak khandelwal ", "shunkin ", "victorbjelkholm ", "Łukasz Magiera ", From 70c78d1f7e62d0890f98c799fab103d283da9e64 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Tue, 10 Dec 2019 16:30:45 +0000 Subject: [PATCH 13/43] chore: release version v40.1.0 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c50e3d72..af8c75cd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [40.1.0](https://github.com/ipfs/js-ipfs-http-client/compare/v40.0.1...v40.1.0) (2019-12-10) + + +### Features + +* expose import concurrency controls ([#1187](https://github.com/ipfs/js-ipfs-http-client/issues/1187)) ([47093d5](https://github.com/ipfs/js-ipfs-http-client/commit/47093d5)) + + + ## [40.0.1](https://github.com/ipfs/js-ipfs-http-client/compare/v40.0.0...v40.0.1) (2019-11-27) From 23421f397e4ae80ac9e9264ee6662b2cc0e34791 Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Wed, 11 Dec 2019 19:29:12 +0000 Subject: [PATCH 14/43] refactor: use new ipfsd-ctl setup (#1127) * fix: use new ipfsd-ctl setup * chore: add correct branches * fix: support new ctl * fix: update to the latest ctl api * fix: use proper module * fix: override properly * chore: bump ipfsd-ctl, interface-core --- package.json | 4 +- test/commands.spec.js | 16 +-- test/constructor.spec.js | 12 +- test/dag.spec.js | 16 +-- test/diag.spec.js | 16 +-- test/files-mfs.spec.js | 16 +-- test/get.spec.js | 17 +-- test/interface.spec.js | 146 ++++++++++++------------- test/key.spec.js | 17 +-- test/log.spec.js | 16 +-- test/ping.spec.js | 30 +---- test/repo.spec.js | 16 +-- test/stats.spec.js | 16 +-- test/utils/factory.js | 14 ++- test/utils/interface-common-factory.js | 92 ---------------- 15 files changed, 106 insertions(+), 338 deletions(-) delete mode 100644 test/utils/interface-common-factory.js diff --git a/package.json b/package.json index abaf35d69..f0253c933 100644 --- a/package.json +++ b/package.json @@ -84,8 +84,8 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.124.0", - "ipfsd-ctl": "^0.47.1", + "interface-ipfs-core": "~0.125.0", + "ipfsd-ctl": "^1.0.0", "ndjson": "^1.5.0", "nock": "^11.4.0", "pull-stream": "^3.6.14", diff --git a/test/commands.spec.js b/test/commands.spec.js index 2f7b1f5e3..9e68a1e01 100644 --- a/test/commands.spec.js +++ b/test/commands.spec.js @@ -2,30 +2,18 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('.commands', function () { this.timeout(60 * 1000) - let ipfsd let ipfs before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('lists commands', async () => { const res = await ipfs.commands() diff --git a/test/constructor.spec.js b/test/constructor.spec.js index 60bfc9f33..a1a000c84 100644 --- a/test/constructor.spec.js +++ b/test/constructor.spec.js @@ -93,24 +93,18 @@ describe('ipfs-http-client constructor tests', () => { }) describe('integration', () => { - let apiAddr let ipfsd before(async function () { this.timeout(60 * 1000) // slow CI - ipfsd = await f.spawn({ initOptions: { bits: 1024, profile: 'test' } }) - apiAddr = ipfsd.apiAddr.toString() + ipfsd = await f.spawn() }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('can connect to an ipfs http api', async () => { - await clientWorks(ipfsClient(apiAddr)) + await clientWorks(ipfsClient(ipfsd.apiAddr)) }) }) }) diff --git a/test/dag.spec.js b/test/dag.spec.js index cd58002ad..de9217d13 100644 --- a/test/dag.spec.js +++ b/test/dag.spec.js @@ -6,29 +6,17 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const { DAGNode } = require('ipld-dag-pb') const CID = require('cids') -const ipfsClient = require('../src') const f = require('./utils/factory') -let ipfsd let ipfs describe('.dag', function () { this.timeout(20 * 1000) before(async function () { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('should be able to put and get a DAG node with format dag-pb', async () => { const data = Buffer.from('some data') diff --git a/test/diag.spec.js b/test/diag.spec.js index e42716214..37a1911e7 100644 --- a/test/diag.spec.js +++ b/test/diag.spec.js @@ -3,7 +3,6 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const platform = require('browser-process-platform') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('.diag', function () { @@ -12,24 +11,13 @@ describe('.diag', function () { // go-ipfs does not support these on Windows if (platform === 'win32') { return } - let ipfsd let ipfs before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) describe('api API', () => { // Disabled in go-ipfs 0.4.10 diff --git a/test/files-mfs.spec.js b/test/files-mfs.spec.js index 6ae508d1d..0e3d6b1af 100644 --- a/test/files-mfs.spec.js +++ b/test/files-mfs.spec.js @@ -10,7 +10,6 @@ const values = require('pull-stream/sources/values') const pull = require('pull-stream/pull') const collect = require('pull-stream/sinks/collect') -const ipfsClient = require('../src') const f = require('./utils/factory') const expectTimeout = require('./utils/expect-timeout') @@ -31,26 +30,15 @@ const HASH_ALGS = [ describe('.files (the MFS API part)', function () { this.timeout(20 * 1000) - let ipfsd let ipfs const expectedMultihash = 'Qma4hjFTnCasJ8PVp3mZbZK5g2vGDT4LByLJ7m8ciyRFZP' before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('.add file for testing', async () => { const res = await ipfs.add(testfile) diff --git a/test/get.spec.js b/test/get.spec.js index 7c1a63e74..a6fb3aaa4 100644 --- a/test/get.spec.js +++ b/test/get.spec.js @@ -6,7 +6,6 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const loadFixture = require('aegir/fixtures') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('.get (specific go-ipfs features)', function () { @@ -21,26 +20,14 @@ describe('.get (specific go-ipfs features)', function () { data: fixture('test/fixtures/testfile.txt') } - let ipfsd let ipfs before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) - + ipfs = (await f.spawn()).api await ipfs.add(smallFile.data) }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('no compression args', async () => { const files = await ipfs.get(smallFile.cid) diff --git a/test/interface.spec.js b/test/interface.spec.js index dc41ec325..5435518cf 100644 --- a/test/interface.spec.js +++ b/test/interface.spec.js @@ -2,47 +2,41 @@ 'use strict' const tests = require('interface-ipfs-core') -const isNode = require('detect-node') -const CommonFactory = require('./utils/interface-common-factory') +const merge = require('merge-options') +const { isNode } = require('ipfs-utils/src/env') +const { createFactory } = require('ipfsd-ctl') +const { findBin } = require('ipfsd-ctl/src/utils') const isWindows = process.platform && process.platform === 'win32' -describe('interface-ipfs-core tests', () => { - const defaultCommonFactory = CommonFactory.createAsync() - - tests.bitswap(defaultCommonFactory, { - skip: [ - // bitswap.stat - { - name: 'should not get bitswap stats when offline', - reason: 'FIXME go-ipfs returns an error https://github.com/ipfs/go-ipfs/issues/4078' - }, - // bitswap.wantlist - { - name: 'should not get the wantlist when offline', - reason: 'FIXME go-ipfs returns an error https://github.com/ipfs/go-ipfs/issues/4078' - }, - // bitswap.unwant - { - name: 'should remove a key from the wantlist', - reason: 'FIXME why is this skipped?' - }, - { - name: 'should not remove a key from the wantlist when offline', - reason: 'FIXME go-ipfs returns an error https://github.com/ipfs/go-ipfs/issues/4078' - } - ] - }) +/** @typedef {import("ipfsd-ctl").ControllerOptions} ControllerOptions */ - tests.block(defaultCommonFactory, { +describe('interface-ipfs-core tests', () => { + /** @type ControllerOptions */ + const commonOptions = { + test: true, + ipfsHttpModule: { + path: require.resolve('../src'), + ref: require('../src') + }, + ipfsOptions: { + pass: 'ipfs-is-awesome-software' + }, + ipfsBin: findBin('go') + } + const commonFactory = createFactory(commonOptions) + + tests.bitswap(commonFactory) + + tests.block(commonFactory, { skip: [{ name: 'should get a block added as CIDv1 with a CIDv0', reason: 'go-ipfs does not support the `version` param' }] }) - tests.bootstrap(defaultCommonFactory) + tests.bootstrap(commonFactory) - tests.config(defaultCommonFactory, { + tests.config(commonFactory, { skip: [ // config.replace { @@ -60,7 +54,7 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.dag(defaultCommonFactory, { + tests.dag(commonFactory, { skip: [ // dag.tree { @@ -87,7 +81,7 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.dht(defaultCommonFactory, { + tests.dht(commonFactory, { skip: [ // dht.findpeer { @@ -107,47 +101,47 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.filesRegular(defaultCommonFactory, { + tests.filesMFS(commonFactory, { skip: [ - // .addFromFs - isNode ? null : { - name: 'addFromFs', - reason: 'Not designed to run in the browser' - }, - // .catPullStream { - name: 'should export a chunk of a file', - reason: 'TODO not implemented in go-ipfs yet' + name: 'should ls directory with long option', + reason: 'TODO unskip when go-ipfs supports --long https://github.com/ipfs/go-ipfs/pull/6528' }, { - name: 'should export a chunk of a file in a Pull Stream', + name: 'should read from outside of mfs', reason: 'TODO not implemented in go-ipfs yet' }, { - name: 'should export a chunk of a file in a Readable Stream', + name: 'should ls from outside of mfs', reason: 'TODO not implemented in go-ipfs yet' } ] }) - tests.filesMFS(defaultCommonFactory, { + tests.filesRegular(commonFactory, { skip: [ + // .addFromFs + isNode ? null : { + name: 'addFromFs', + reason: 'Not designed to run in the browser' + }, + // .catPullStream { - name: 'should ls directory with long option', - reason: 'TODO unskip when go-ipfs supports --long https://github.com/ipfs/go-ipfs/pull/6528' + name: 'should export a chunk of a file', + reason: 'TODO not implemented in go-ipfs yet' }, { - name: 'should read from outside of mfs', + name: 'should export a chunk of a file in a Pull Stream', reason: 'TODO not implemented in go-ipfs yet' }, { - name: 'should ls from outside of mfs', + name: 'should export a chunk of a file in a Readable Stream', reason: 'TODO not implemented in go-ipfs yet' } ] }) - tests.key(defaultCommonFactory, { + tests.key(commonFactory, { skip: [ // key.export { @@ -162,21 +156,15 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.miscellaneous(defaultCommonFactory, { - skip: [ - // stop - { - name: 'should stop the node', - reason: 'FIXME go-ipfs returns an error https://github.com/ipfs/go-ipfs/issues/4078' - } - ] - }) + tests.miscellaneous(commonFactory) - tests.name(CommonFactory.createAsync({ - spawnOptions: { - args: ['--offline'] + tests.name(createFactory(merge(commonOptions, + { + ipfsOptions: { + offline: true + } } - }), { + )), { skip: [ // stop { @@ -186,12 +174,15 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.namePubsub(CommonFactory.createAsync({ - spawnOptions: { - args: ['--enable-namesys-pubsub'], - initOptions: { bits: 1024, profile: 'test' } + tests.namePubsub(createFactory(merge(commonOptions, + { + ipfsOptions: { + EXPERIMENTAL: { + ipnsPubsub: true + } + } } - }), { + )), { skip: [ // name.pubsub.cancel { @@ -206,11 +197,11 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.object(defaultCommonFactory) + tests.object(commonFactory) - tests.pin(defaultCommonFactory) + tests.pin(commonFactory) - tests.ping(defaultCommonFactory, { + tests.ping(commonFactory, { skip: [ { name: 'should fail when pinging an unknown peer over pull stream', @@ -227,10 +218,9 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.pubsub(CommonFactory.createAsync({ - spawnOptions: { - args: ['--enable-pubsub-experiment'], - initOptions: { bits: 1024, profile: 'test' } + tests.pubsub(createFactory(commonOptions, { + go: { + args: ['--enable-pubsub-experiment'] } }), { skip: isWindows ? [ @@ -246,9 +236,9 @@ describe('interface-ipfs-core tests', () => { ] : null }) - tests.repo(defaultCommonFactory) + tests.repo(commonFactory) - tests.stats(defaultCommonFactory) + tests.stats(commonFactory) - tests.swarm(defaultCommonFactory) + tests.swarm(commonFactory) }) diff --git a/test/key.spec.js b/test/key.spec.js index 2e4e15714..180cb795b 100644 --- a/test/key.spec.js +++ b/test/key.spec.js @@ -1,32 +1,19 @@ /* eslint-env mocha */ -/* eslint max-nested-callbacks: ["error", 8] */ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('.key', function () { this.timeout(50 * 1000) - let ipfsd let ipfs before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) describe('.gen', () => { it('create a new rsa key', async () => { diff --git a/test/log.spec.js b/test/log.spec.js index 7f8e2c608..1a885028d 100644 --- a/test/log.spec.js +++ b/test/log.spec.js @@ -3,30 +3,18 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('.log', function () { this.timeout(100 * 1000) - let ipfsd let ipfs before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('.log.tail', async () => { const i = setInterval(async () => { diff --git a/test/ping.spec.js b/test/ping.spec.js index 10c131b75..01636ed60 100644 --- a/test/ping.spec.js +++ b/test/ping.spec.js @@ -5,7 +5,6 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const pull = require('pull-stream/pull') const collect = require('pull-stream/sinks/collect') -const ipfsClient = require('../src') const f = require('./utils/factory') // Determine if a ping response object is a pong, or something else, like a status message @@ -17,29 +16,14 @@ describe('.ping', function () { this.timeout(20 * 1000) let ipfs - let ipfsd let other - let otherd let otherId before(async function () { this.timeout(30 * 1000) // slow CI - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) - - otherd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - other = otherd.api + ipfs = (await f.spawn()).api + other = (await f.spawn()).api const ma = (await ipfs.id()).addresses[0] await other.swarm.connect(ma) @@ -47,15 +31,7 @@ describe('.ping', function () { otherId = (await other.id()).id }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - - if (otherd) { - await otherd.stop() - } - }) + after(() => f.clean()) it('.ping with default count', async () => { const res = await ipfs.ping(otherId) diff --git a/test/repo.spec.js b/test/repo.spec.js index 84b5a42c3..21482135d 100644 --- a/test/repo.spec.js +++ b/test/repo.spec.js @@ -2,30 +2,18 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('.repo', function () { this.timeout(50 * 1000) // slow CI let ipfs - let ipfsd before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('.repo.gc', async () => { const res = await ipfs.repo.gc() diff --git a/test/stats.spec.js b/test/stats.spec.js index 0b7084d0a..d60aaa330 100644 --- a/test/stats.spec.js +++ b/test/stats.spec.js @@ -2,30 +2,18 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const ipfsClient = require('../src') const f = require('./utils/factory') describe('stats', function () { this.timeout(50 * 1000) // slow CI let ipfs - let ipfsd before(async () => { - ipfsd = await f.spawn({ - initOptions: { - bits: 1024, - profile: 'test' - } - }) - ipfs = ipfsClient(ipfsd.apiAddr) + ipfs = (await f.spawn()).api }) - after(async () => { - if (ipfsd) { - await ipfsd.stop() - } - }) + after(() => f.clean()) it('.stats.bitswap', async () => { const res = await ipfs.stats.bitswap() diff --git a/test/utils/factory.js b/test/utils/factory.js index aab6296fe..d6ac161ea 100644 --- a/test/utils/factory.js +++ b/test/utils/factory.js @@ -1,5 +1,15 @@ 'use strict' +const { createFactory } = require('ipfsd-ctl') +const { findBin } = require('ipfsd-ctl/src/utils') -const IPFSFactory = require('ipfsd-ctl') +const factory = createFactory({ + test: 'true', + type: 'go', + ipfsBin: findBin('go'), + ipfsHttpModule: { + path: require.resolve('../../src'), + ref: require('../../src') + } +}) -module.exports = IPFSFactory.create() +module.exports = factory diff --git a/test/utils/interface-common-factory.js b/test/utils/interface-common-factory.js deleted file mode 100644 index bd4720b6e..000000000 --- a/test/utils/interface-common-factory.js +++ /dev/null @@ -1,92 +0,0 @@ -/* eslint-env mocha */ -'use strict' - -const each = require('async/each') -const IPFSFactory = require('ipfsd-ctl') -const ipfsClient = require('../../src') -const merge = require('merge-options') - -const DEFAULT_FACTORY_OPTIONS = { - IpfsClient: ipfsClient -} - -function createFactory (options) { - options = options || {} - - options.factoryOptions = options.factoryOptions || { ...DEFAULT_FACTORY_OPTIONS } - options.spawnOptions = options.spawnOptions || { initOptions: { bits: 1024, profile: 'test' } } - - const ipfsFactory = IPFSFactory.create(options.factoryOptions) - - return function createCommon () { - const nodes = [] - let setup, teardown - - if (options.createSetup) { - setup = options.createSetup({ ipfsFactory, nodes }, options) - } else { - setup = (callback) => { - callback(null, { - spawnNode (cb) { - ipfsFactory.spawn(options.spawnOptions) - .then((ipfsd) => { - nodes.push(ipfsd) - setImmediate(() => cb(null, ipfsd.api)) - }) - .catch(err => { - setImmediate(() => cb(err)) - }) - } - }) - } - } - - if (options.createTeardown) { - teardown = options.createTeardown({ ipfsFactory, nodes }, options) - } else { - teardown = callback => each(nodes, (node, cb) => { - node - .stop() - .then(() => setImmediate(() => cb())) - .catch(err => setImmediate(() => cb(err))) - }, callback) - } - - return { setup, teardown } - } -} - -function createAsync (options = {}) { - return () => { - const nodes = [] - const setup = async (setupOptions = {}) => { - const ipfsFactory = IPFSFactory.create(merge( - options.factoryOptions ? {} : { ...DEFAULT_FACTORY_OPTIONS }, - setupOptions.factoryOptions, - options.factoryOptions - )) - const node = await ipfsFactory.spawn(merge( - setupOptions.spawnOptions, - options.spawnOptions || { initOptions: { profile: 'test' } } - )) - nodes.push(node) - - const id = await node.api.id() - node.api.peerId = id - - return node.api - } - - const teardown = () => { - return Promise.all(nodes.map(n => n.stop())) - } - return { - setup, - teardown - } - } -} -module.exports = { - createAsync, - create: createFactory -} From 8b9fc28253c46960a4dc1142a47d47c23985b080 Mon Sep 17 00:00:00 2001 From: Jim Pick Date: Wed, 18 Dec 2019 12:14:40 -0800 Subject: [PATCH 15/43] docs: change "IPN" to "IPNS" in README (#1204) I'm assuming that's what it was supposed to be. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5c6a00070..9c6d3a3c7 100644 --- a/README.md +++ b/README.md @@ -413,7 +413,7 @@ The js-ipfs-http-client is a work in progress. As such, there's a few things you - **[Check out the existing issues](https://github.com/ipfs/js-ipfs-http-client/issues)**! - **Perform code reviews**. More eyes will help a) speed the project along b) ensure quality and c) reduce possible future bugs. - **Add tests**. There can never be enough tests. Note that interface tests exist inside [`interface-ipfs-core`](https://github.com/ipfs/interface-ipfs-core/tree/master/js/src). -- **Contribute to the [FAQ repository](https://github.com/ipfs/faq/issues)** with any questions you have about IPFS or any of the relevant technology. A good example would be asking, 'What is a merkledag tree?'. If you don't know a term, odds are, someone else doesn't either. Eventually, we should have a good understanding of where we need to improve communications and teaching together to make IPFS and IPN better. +- **Contribute to the [FAQ repository](https://github.com/ipfs/faq/issues)** with any questions you have about IPFS or any of the relevant technology. A good example would be asking, 'What is a merkledag tree?'. If you don't know a term, odds are, someone else doesn't either. Eventually, we should have a good understanding of where we need to improve communications and teaching together to make IPFS and IPNS better. **Want to hack on IPFS?** From 4cd7858de6a2812ee941eaeb4bd48f6ea6cc121c Mon Sep 17 00:00:00 2001 From: Paul Cowgill Date: Tue, 31 Dec 2019 06:02:21 -0600 Subject: [PATCH 16/43] docs: grammar fix (#1208) * Grammar fix * Same grammar fix in a different spot --- examples/bundle-browserify/README.md | 2 +- examples/bundle-webpack/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/bundle-browserify/README.md b/examples/bundle-browserify/README.md index a185527e0..def887200 100644 --- a/examples/bundle-browserify/README.md +++ b/examples/bundle-browserify/README.md @@ -11,7 +11,7 @@ As for any js-ipfs-http-client example, **you need a running IPFS daemon**, you **Note:** If you load your app from a different domain than the one the daemon is running (most probably), you will need to set up CORS, see https://github.com/ipfs/js-ipfs-http-client#cors to learn how to do that. -A quick (and dirty way to get it done) is: +A quick (and dirty) way to get it done is: ```bash > ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]" diff --git a/examples/bundle-webpack/README.md b/examples/bundle-webpack/README.md index 3b894b7f5..c85543240 100644 --- a/examples/bundle-webpack/README.md +++ b/examples/bundle-webpack/README.md @@ -11,7 +11,7 @@ As for any js-ipfs-http-client example, **you need a running IPFS daemon**, you **Note:** If you load your app from a different domain than the one the daemon is running (most probably), you will need to set up CORS, see https://github.com/ipfs/js-ipfs-http-client#cors to learn how to do that. -A quick (and dirty way to get it done) is: +A quick (and dirty) way to get it done is: ```bash > ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]" From da9d17a38ce09d299e7180d489a56c1e276b4fb9 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Thu, 9 Jan 2020 11:04:33 +0000 Subject: [PATCH 17/43] feat: support UnixFSv1.5 metadata (#1186) * feat: support UnixFSv1.5 metadata * fix: expose new mfs functions * refactor: send mtime and mode as headers instead of message parts * fix: include headers for directories * chore: update ipfs utils dep version * chore: update ipfs-utils dep * fix: stringify mode in browser * test: add tests for unixfs metadata * fix: fix up tests etc for optional mtime --- package.json | 4 +- src/add/form-data.browser.js | 24 +++- src/add/form-data.js | 22 +++- src/add/index.js | 14 +- src/files/chmod.js | 25 ++++ src/files/index.js | 2 + src/files/ls.js | 7 +- src/files/mkdir.js | 11 ++ src/files/stat.js | 5 +- src/files/touch.js | 29 +++++ src/files/write.js | 16 ++- src/lib/buffer-to-form-data.js | 20 ++- src/lib/mode-to-string.js | 13 ++ src/lib/mtime-to-object.js | 56 ++++++++ src/lib/object-to-camel-with-metadata.js | 24 ++++ src/ls.js | 18 ++- test/interface.spec.js | 156 +++++++++++++++++++++++ 17 files changed, 429 insertions(+), 17 deletions(-) create mode 100644 src/files/chmod.js create mode 100644 src/files/touch.js create mode 100644 src/lib/mode-to-string.js create mode 100644 src/lib/mtime-to-object.js create mode 100644 src/lib/object-to-camel-with-metadata.js diff --git a/package.json b/package.json index f0253c933..261b888c9 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "explain-error": "^1.0.4", "form-data": "^3.0.0", "ipfs-block": "~0.8.1", - "ipfs-utils": "^0.4.0", + "ipfs-utils": "^0.4.2", "ipld-dag-cbor": "~0.15.0", "ipld-dag-pb": "^0.18.1", "ipld-raw": "^4.0.0", @@ -84,7 +84,7 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "~0.125.0", + "interface-ipfs-core": "^0.126.0", "ipfsd-ctl": "^1.0.0", "ndjson": "^1.5.0", "nock": "^11.4.0", diff --git a/src/add/form-data.browser.js b/src/add/form-data.browser.js index 247396c42..484f67c6c 100644 --- a/src/add/form-data.browser.js +++ b/src/add/form-data.browser.js @@ -2,6 +2,7 @@ /* eslint-env browser */ const normaliseInput = require('ipfs-utils/src/files/normalise-input') +const mtimeToObject = require('../lib/mtime-to-object') exports.toFormData = async input => { const files = normaliseInput(input) @@ -9,6 +10,21 @@ exports.toFormData = async input => { let i = 0 for await (const file of files) { + const headers = {} + + if (file.mtime !== undefined && file.mtime !== null) { + const mtime = mtimeToObject(file.mtime) + + if (mtime) { + headers.mtime = mtime.secs + headers['mtime-nsecs'] = mtime.nsecs + } + } + + if (file.mode !== undefined && file.mode !== null) { + headers.mode = file.mode.toString(8).padStart(4, '0') + } + if (file.content) { // In the browser there's _currently_ no streaming upload, buffer up our // async iterator chunks and append a big Blob :( @@ -18,9 +34,13 @@ exports.toFormData = async input => { bufs.push(chunk) } - formData.append(`file-${i}`, new Blob(bufs, { type: 'application/octet-stream' }), encodeURIComponent(file.path)) + formData.append(`file-${i}`, new Blob(bufs, { type: 'application/octet-stream' }), encodeURIComponent(file.path), { + header: headers + }) } else { - formData.append(`dir-${i}`, new Blob([], { type: 'application/x-directory' }), encodeURIComponent(file.path)) + formData.append(`dir-${i}`, new Blob([], { type: 'application/x-directory' }), encodeURIComponent(file.path), { + header: headers + }) } i++ diff --git a/src/add/form-data.js b/src/add/form-data.js index 96d55f672..1ce5050da 100644 --- a/src/add/form-data.js +++ b/src/add/form-data.js @@ -5,6 +5,7 @@ const { Buffer } = require('buffer') const toStream = require('it-to-stream') const normaliseInput = require('ipfs-utils/src/files/normalise-input') const { isElectronRenderer } = require('ipfs-utils/src/env') +const mtimeToObject = require('../lib/mtime-to-object') exports.toFormData = async input => { const files = normaliseInput(input) @@ -12,6 +13,21 @@ exports.toFormData = async input => { let i = 0 for await (const file of files) { + const headers = {} + + if (file.mtime !== undefined && file.mtime !== null) { + const mtime = mtimeToObject(file.mtime) + + if (mtime) { + headers.mtime = mtime.secs + headers['mtime-nsecs'] = mtime.nsecs + } + } + + if (file.mode !== undefined && file.mode !== null) { + headers.mode = file.mode.toString(8).padStart(4, '0') + } + if (file.content) { // In Node.js, FormData can be passed a stream so no need to buffer formData.append( @@ -26,13 +42,15 @@ exports.toFormData = async input => { { filepath: encodeURIComponent(file.path), contentType: 'application/octet-stream', - knownLength: file.content.length // Send Content-Length header if known + knownLength: file.content.length, // Send Content-Length header if known + header: headers } ) } else { formData.append(`dir-${i}`, Buffer.alloc(0), { filepath: encodeURIComponent(file.path), - contentType: 'application/x-directory' + contentType: 'application/x-directory', + header: headers }) } diff --git a/src/add/index.js b/src/add/index.js index df6afbad3..546e5428d 100644 --- a/src/add/index.js +++ b/src/add/index.js @@ -52,6 +52,16 @@ module.exports = configure(({ ky }) => { } }) -function toCoreInterface ({ name, hash, size }) { - return { path: name, hash, size: parseInt(size) } +function toCoreInterface ({ name, hash, size, mode, mtime }) { + const output = { + path: name, + hash, + size: parseInt(size) + } + + if (mode !== undefined) { + output.mode = parseInt(mode, 8) + } + + return output } diff --git a/src/files/chmod.js b/src/files/chmod.js new file mode 100644 index 000000000..b4c0a11dd --- /dev/null +++ b/src/files/chmod.js @@ -0,0 +1,25 @@ +'use strict' + +const configure = require('../lib/configure') +const modeToString = require('../lib/mode-to-string') + +module.exports = configure(({ ky }) => { + return function chmod (path, mode, options) { + options = options || {} + + const searchParams = new URLSearchParams(options.searchParams) + searchParams.append('arg', path) + searchParams.append('mode', modeToString(mode)) + if (options.format) searchParams.set('format', options.format) + if (options.flush != null) searchParams.set('flush', options.flush) + if (options.hashAlg) searchParams.set('hash', options.hashAlg) + if (options.parents != null) searchParams.set('parents', options.parents) + + return ky.post('files/chmod', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams + }).text() + } +}) diff --git a/src/files/index.js b/src/files/index.js index 25e79fcab..ee6b7d8d8 100644 --- a/src/files/index.js +++ b/src/files/index.js @@ -8,6 +8,7 @@ module.exports = config => { const read = require('./read')(config) return { + chmod: callbackify.variadic(require('./chmod')(config)), cp: callbackify.variadic(require('./cp')(config)), mkdir: callbackify.variadic(require('./mkdir')(config)), flush: callbackify.variadic(require('./flush')(config)), @@ -19,6 +20,7 @@ module.exports = config => { read: callbackify.variadic(concatify(read)), readReadableStream: streamify.readable(read), readPullStream: pullify.source(read), + touch: callbackify.variadic(require('./touch')(config)), write: callbackify.variadic(require('./write')(config)), mv: callbackify.variadic(require('./mv')(config)) } diff --git a/src/files/ls.js b/src/files/ls.js index 1baa3f656..51ee33912 100644 --- a/src/files/ls.js +++ b/src/files/ls.js @@ -4,7 +4,7 @@ const CID = require('cids') const ndjson = require('iterable-ndjson') const toIterable = require('../lib/stream-to-iterable') const configure = require('../lib/configure') -const toCamel = require('../lib/object-to-camel') +const toCamelWithMetadata = require('../lib/object-to-camel-with-metadata') module.exports = configure(({ ky }) => { return async function * ls (path, options) { @@ -32,11 +32,12 @@ module.exports = configure(({ ky }) => { // go-ipfs does not yet support the "stream" option if ('Entries' in result) { for (const entry of result.Entries || []) { - yield toCamel(entry) + yield toCamelWithMetadata(entry) } return } - yield toCamel(result) + + yield toCamelWithMetadata(result) } } }) diff --git a/src/files/mkdir.js b/src/files/mkdir.js index 0fc3c238d..3a50c7728 100644 --- a/src/files/mkdir.js +++ b/src/files/mkdir.js @@ -1,10 +1,13 @@ 'use strict' const configure = require('../lib/configure') +const modeToString = require('../lib/mode-to-string') +const mtimeToObject = require('../lib/mtime-to-object') module.exports = configure(({ ky }) => { return (path, options) => { options = options || {} + const mtime = mtimeToObject(options.mtime) const searchParams = new URLSearchParams(options.searchParams) searchParams.append('arg', path) @@ -13,6 +16,14 @@ module.exports = configure(({ ky }) => { if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) + if (mtime) { + searchParams.set('mtime', mtime.secs) + + if (mtime.nsecs != null) { + searchParams.set('mtimeNsecs', mtime.nsecs) + } + } + if (options.mode != null) searchParams.set('mode', modeToString(options.mode)) return ky.post('files/mkdir', { timeout: options.timeout, diff --git a/src/files/stat.js b/src/files/stat.js index 98026283e..1b4af061b 100644 --- a/src/files/stat.js +++ b/src/files/stat.js @@ -1,7 +1,7 @@ 'use strict' const configure = require('../lib/configure') -const toCamel = require('../lib/object-to-camel') +const toCamelWithMetadata = require('../lib/object-to-camel-with-metadata') module.exports = configure(({ ky }) => { return async (path, options) => { @@ -27,6 +27,7 @@ module.exports = configure(({ ky }) => { }).json() res.WithLocality = res.WithLocality || false - return toCamel(res) + + return toCamelWithMetadata(res) } }) diff --git a/src/files/touch.js b/src/files/touch.js new file mode 100644 index 000000000..b38aca905 --- /dev/null +++ b/src/files/touch.js @@ -0,0 +1,29 @@ +'use strict' + +const configure = require('../lib/configure') +const mtimeToObject = require('../lib/mtime-to-object') + +module.exports = configure(({ ky }) => { + return function touch (path, options) { + options = options || {} + const mtime = mtimeToObject(options.mtime) + + const searchParams = new URLSearchParams(options.searchParams) + searchParams.append('arg', path) + if (mtime) { + searchParams.set('mtime', mtime.secs) + searchParams.set('mtimeNsecs', mtime.nsecs) + } + if (options.format) searchParams.set('format', options.format) + if (options.flush != null) searchParams.set('flush', options.flush) + if (options.hashAlg) searchParams.set('hash', options.hashAlg) + if (options.parents != null) searchParams.set('parents', options.parents) + + return ky.post('files/touch', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams + }).text() + } +}) diff --git a/src/files/write.js b/src/files/write.js index 77a772ea6..e31f0a8a2 100644 --- a/src/files/write.js +++ b/src/files/write.js @@ -2,10 +2,13 @@ const configure = require('../lib/configure') const toFormData = require('../lib/buffer-to-form-data') +const modeToString = require('../lib/mode-to-string') +const mtimeToObject = require('../lib/mtime-to-object') module.exports = configure(({ ky }) => { return async (path, input, options) => { options = options || {} + const mtime = mtimeToObject(options.mtime) const searchParams = new URLSearchParams(options.searchParams) searchParams.set('arg', path) @@ -18,13 +21,24 @@ module.exports = configure(({ ky }) => { if (options.parents != null) searchParams.set('parents', options.parents) if (options.rawLeaves != null) searchParams.set('raw-leaves', options.rawLeaves) if (options.truncate != null) searchParams.set('truncate', options.truncate) + if (mtime) { + searchParams.set('mtime', mtime.secs) + + if (mtime.nsecs != null) { + searchParams.set('mtimeNsecs', mtime.nsecs) + } + } const res = await ky.post('files/write', { timeout: options.timeout, signal: options.signal, headers: options.headers, searchParams, - body: toFormData(input) // TODO: support inputs other than buffer as per spec + body: toFormData(input, { + mode: options.mode != null ? modeToString(options.mode) : undefined, + mtime: mtime ? mtime.secs : undefined, + mtimeNsecs: mtime ? mtime.nsecs : undefined + }) // TODO: support inputs other than buffer as per spec }) return res.text() diff --git a/src/lib/buffer-to-form-data.js b/src/lib/buffer-to-form-data.js index 41f03383e..1a4830361 100644 --- a/src/lib/buffer-to-form-data.js +++ b/src/lib/buffer-to-form-data.js @@ -3,9 +3,25 @@ const FormData = require('form-data') const { isElectronRenderer } = require('ipfs-utils/src/env') -module.exports = buf => { +module.exports = (buf, { mode, mtime, mtimeNsecs } = {}) => { + const headers = {} + + if (mode != null) { + headers.mode = mode + } + + if (mtime != null) { + headers.mtime = mtime + + if (mtimeNsecs != null) { + headers['mtime-nsecs'] = mtimeNsecs + } + } + const formData = new FormData() - formData.append('file', buf) + formData.append('file', buf, { + header: headers + }) return formData } diff --git a/src/lib/mode-to-string.js b/src/lib/mode-to-string.js new file mode 100644 index 000000000..ee2742b9a --- /dev/null +++ b/src/lib/mode-to-string.js @@ -0,0 +1,13 @@ +'use strict' + +module.exports = (mode) => { + if (mode === undefined || mode === null) { + return undefined + } + + if (typeof mode === 'string' || mode instanceof String) { + return mode + } + + return mode.toString(8).padStart(4, '0') +} diff --git a/src/lib/mtime-to-object.js b/src/lib/mtime-to-object.js new file mode 100644 index 000000000..be89148f6 --- /dev/null +++ b/src/lib/mtime-to-object.js @@ -0,0 +1,56 @@ +'use strict' + +module.exports = function parseMtime (mtime) { + if (mtime == null) { + return undefined + } + + // Javascript Date + if (mtime instanceof Date) { + const ms = mtime.getTime() + const secs = Math.floor(ms / 1000) + + return { + secs: secs, + nsecs: (ms - (secs * 1000)) * 1000 + } + } + + // { secs, nsecs } + if (Object.prototype.hasOwnProperty.call(mtime, 'secs')) { + return { + secs: mtime.secs, + nsecs: mtime.nsecs + } + } + + // UnixFS TimeSpec + if (Object.prototype.hasOwnProperty.call(mtime, 'Seconds')) { + return { + secs: mtime.Seconds, + nsecs: mtime.FractionalNanoseconds + } + } + + // process.hrtime() + if (Array.isArray(mtime)) { + return { + secs: mtime[0], + nsecs: mtime[1] + } + } + /* + TODO: https://github.com/ipfs/aegir/issues/487 + + // process.hrtime.bigint() + if (typeof mtime === 'bigint') { + const secs = mtime / BigInt(1e9) + const nsecs = mtime - (secs * BigInt(1e9)) + + return { + secs: parseInt(secs), + nsecs: parseInt(nsecs) + } + } + */ +} diff --git a/src/lib/object-to-camel-with-metadata.js b/src/lib/object-to-camel-with-metadata.js new file mode 100644 index 000000000..55f16d0bb --- /dev/null +++ b/src/lib/object-to-camel-with-metadata.js @@ -0,0 +1,24 @@ +'use strict' + +const toCamel = require('./object-to-camel') + +function toCamelWithMetadata (entry) { + const file = toCamel(entry) + + if (Object.prototype.hasOwnProperty.call(file, 'mode')) { + file.mode = parseInt(file.mode, 8) + } + + if (Object.prototype.hasOwnProperty.call(file, 'mtime')) { + file.mtime = { + secs: file.mtime, + nsecs: file.mtimeNsecs || 0 + } + + delete file.mtimeNsecs + } + + return file +} + +module.exports = toCamelWithMetadata diff --git a/src/ls.js b/src/ls.js index a9cd476f9..43e92a54a 100644 --- a/src/ls.js +++ b/src/ls.js @@ -48,7 +48,7 @@ module.exports = configure(({ ky }) => { } for (const link of result) { - yield { + const entry = { name: link.Name, path: path + '/' + link.Name, size: link.Size, @@ -56,6 +56,22 @@ module.exports = configure(({ ky }) => { type: typeOf(link), depth: link.Depth || 1 } + + if (link.Mode) { + entry.mode = parseInt(link.Mode, 8) + } + + if (link.Mtime !== undefined && link.Mtime !== null) { + entry.mtime = { + secs: link.Mtime + } + + if (link.MtimeNsecs !== undefined && link.MtimeNsecs !== null) { + entry.mtime.nsecs = link.MtimeNsecs + } + } + + yield entry } } }) diff --git a/test/interface.spec.js b/test/interface.spec.js index 5435518cf..e09cac5a6 100644 --- a/test/interface.spec.js +++ b/test/interface.spec.js @@ -114,6 +114,134 @@ describe('interface-ipfs-core tests', () => { { name: 'should ls from outside of mfs', reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should change file mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should change directory mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should change file mode as string', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should change file mode to 0', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should update file mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should update directory mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should respect metadata when copying files', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should respect metadata when copying directories', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should respect metadata when copying from outside of mfs', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'ls directory with long option should include metadata', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should have default mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should set mtime as Date', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should set mtime as { nsecs, secs }', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should set mtime as timespec', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should set mtime as hrtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and have default mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mode as string', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mode as number', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mtime as Date', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mtime as { nsecs, secs }', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mtime as timespec', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should make directory and specify mtime as hrtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mode as a string', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mode as a number', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mtime as Date', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mtime as { nsecs, secs }', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mtime as timespec', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should write file and specify mtime as hrtime', + reason: 'TODO not implemented in go-ipfs yet' } ] }) @@ -125,6 +253,30 @@ describe('interface-ipfs-core tests', () => { name: 'addFromFs', reason: 'Not designed to run in the browser' }, + { + name: 'should add with mode as string', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mode as number', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as Date', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as { nsecs, secs }', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as timespec', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as hrtime', + reason: 'TODO not implemented in go-ipfs yet' + }, // .catPullStream { name: 'should export a chunk of a file', @@ -137,6 +289,10 @@ describe('interface-ipfs-core tests', () => { { name: 'should export a chunk of a file in a Readable Stream', reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should ls with metadata', + reason: 'TODO not implemented in go-ipfs yet' } ] }) From 0c679de76c96770e50a5813f246514e142149756 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 9 Jan 2020 11:42:35 +0000 Subject: [PATCH 18/43] chore: update contributors --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 261b888c9..d0b0d7783 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "40.1.0", + "version": "40.2.0", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -137,6 +137,7 @@ "Jeff Downie ", "Jeromy ", "Jeromy ", + "Jim Pick ", "Joe Turgeon ", "Jonathan ", "Juan Batiz-Benet ", @@ -158,6 +159,7 @@ "Níckolas Goline ", "Oli Evans ", "Orie Steele ", + "Paul Cowgill ", "Pedro Santos ", "Pedro Santos ", "Pedro Teixeira ", From 7042ea190c032b940763975b6553853258919dd6 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 9 Jan 2020 11:42:35 +0000 Subject: [PATCH 19/43] chore: release version v40.2.0 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index af8c75cd7..c41311373 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [40.2.0](https://github.com/ipfs/js-ipfs-http-client/compare/v40.1.0...v40.2.0) (2020-01-09) + + +### Features + +* support UnixFSv1.5 metadata ([#1186](https://github.com/ipfs/js-ipfs-http-client/issues/1186)) ([da9d17a](https://github.com/ipfs/js-ipfs-http-client/commit/da9d17a)) + + + # [40.1.0](https://github.com/ipfs/js-ipfs-http-client/compare/v40.0.1...v40.1.0) (2019-12-10) From 8565018b890c88e73705e9cbe3573c953c395e1f Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 9 Jan 2020 16:59:01 +0000 Subject: [PATCH 20/43] chore: update multicodec dep to stable version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d0b0d7783..66ceca2fc 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "multiaddr": "^6.0.6", "multiaddr-to-uri": "^5.0.0", "multibase": "~0.6.0", - "multicodec": "~0.5.1", + "multicodec": "^1.0.0", "multihashes": "~0.4.14", "parse-duration": "^0.1.1", "peer-id": "~0.12.3", From 3651baba3e1b704c5c4c862c47e45602590f5ab8 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 9 Jan 2020 17:56:11 +0000 Subject: [PATCH 21/43] chore: update contributors --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 66ceca2fc..901ca797f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "40.2.0", + "version": "40.2.1", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -100,7 +100,6 @@ "Alan Shaw ", "Alan Shaw ", "Alex Mingoia ", - "Alex Potsides ", "Antonio Tenorio-Fornés ", "Bruno Barbieri ", "Clemo ", @@ -178,6 +177,7 @@ "Victor Bjelkholm ", "Volker Mische ", "Zhiyuan Lin ", + "achingbrain ", "dirkmc ", "dmitriy ryajov ", "elsehow ", From ed43408d53f65c61f234acdeeb05a3acfa1b6677 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 9 Jan 2020 17:56:11 +0000 Subject: [PATCH 22/43] chore: release version v40.2.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c41311373..8d6712433 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ + +## [40.2.1](https://github.com/ipfs/js-ipfs-http-client/compare/v40.2.0...v40.2.1) (2020-01-09) + + + # [40.2.0](https://github.com/ipfs/js-ipfs-http-client/compare/v40.1.0...v40.2.0) (2020-01-09) From 13f8d7ae3510ef6a4156f3b947973549fb1b529f Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Sat, 11 Jan 2020 23:23:07 +0100 Subject: [PATCH 23/43] fix: return CIDs from files.flush (#1216) * fix: return CIDs from files.flush * chore: remove gh url --- package.json | 2 +- src/files/flush.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 901ca797f..416066e32 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.126.0", + "interface-ipfs-core": "^0.127.0", "ipfsd-ctl": "^1.0.0", "ndjson": "^1.5.0", "nock": "^11.4.0", diff --git a/src/files/flush.js b/src/files/flush.js index ab2062387..34e725814 100644 --- a/src/files/flush.js +++ b/src/files/flush.js @@ -1,6 +1,7 @@ 'use strict' const configure = require('../lib/configure') +const CID = require('cids') module.exports = configure(({ ky }) => { return async (path, options) => { @@ -14,11 +15,13 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams(options.searchParams) searchParams.set('arg', path) - await ky.post('files/flush', { + const res = await ky.post('files/flush', { timeout: options.timeout, signal: options.signal, headers: options.headers, searchParams - }).text() + }).json() + + return new CID(res.Cid) } }) From 4ef26cdedd81a0b82d667ac2c4c1b3fb4e4bc1e4 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Sun, 12 Jan 2020 07:12:05 +0100 Subject: [PATCH 24/43] refactor: removes format option (#1218) BREAKING CHANGE: `format` option is no longer supported as everything is `dag-pb` all of the time. Follows on from https://github.com/ipfs/js-ipfs-mfs/pull/69 --- src/files/chmod.js | 1 - src/files/cp.js | 1 - src/files/mkdir.js | 1 - src/files/mv.js | 1 - src/files/touch.js | 1 - 5 files changed, 5 deletions(-) diff --git a/src/files/chmod.js b/src/files/chmod.js index b4c0a11dd..3979d4622 100644 --- a/src/files/chmod.js +++ b/src/files/chmod.js @@ -10,7 +10,6 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams(options.searchParams) searchParams.append('arg', path) searchParams.append('mode', modeToString(mode)) - if (options.format) searchParams.set('format', options.format) if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) diff --git a/src/files/cp.js b/src/files/cp.js index 812c8b7d7..f9ed0bb20 100644 --- a/src/files/cp.js +++ b/src/files/cp.js @@ -10,7 +10,6 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams(options.searchParams) sources.forEach(src => searchParams.append('arg', CID.isCID(src) ? `/ipfs/${src}` : src)) - if (options.format) searchParams.set('format', options.format) if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) diff --git a/src/files/mkdir.js b/src/files/mkdir.js index 3a50c7728..382c62b22 100644 --- a/src/files/mkdir.js +++ b/src/files/mkdir.js @@ -12,7 +12,6 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams(options.searchParams) searchParams.append('arg', path) if (options.cidVersion != null) searchParams.set('cid-version', options.cidVersion) - if (options.format) searchParams.set('format', options.format) if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) diff --git a/src/files/mv.js b/src/files/mv.js index fadf0c34c..78560dfeb 100644 --- a/src/files/mv.js +++ b/src/files/mv.js @@ -10,7 +10,6 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams(options.searchParams) sources.forEach(src => searchParams.append('arg', CID.isCID(src) ? `/ipfs/${src}` : src)) - if (options.format) searchParams.set('format', options.format) if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) diff --git a/src/files/touch.js b/src/files/touch.js index b38aca905..c4189ecab 100644 --- a/src/files/touch.js +++ b/src/files/touch.js @@ -14,7 +14,6 @@ module.exports = configure(({ ky }) => { searchParams.set('mtime', mtime.secs) searchParams.set('mtimeNsecs', mtime.nsecs) } - if (options.format) searchParams.set('format', options.format) if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) From 17466baccfaf2cb5b24483c5dc7e4896799d5113 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Sun, 12 Jan 2020 09:31:31 +0100 Subject: [PATCH 25/43] chore: update contributors --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 416066e32..6ba92841e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "40.2.1", + "version": "41.0.0", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -100,6 +100,7 @@ "Alan Shaw ", "Alan Shaw ", "Alex Mingoia ", + "Alex Potsides ", "Antonio Tenorio-Fornés ", "Bruno Barbieri ", "Clemo ", @@ -177,7 +178,6 @@ "Victor Bjelkholm ", "Volker Mische ", "Zhiyuan Lin ", - "achingbrain ", "dirkmc ", "dmitriy ryajov ", "elsehow ", From d7eb0e8ffb15e207a8a6062e292a3b5babf35a9e Mon Sep 17 00:00:00 2001 From: achingbrain Date: Sun, 12 Jan 2020 09:31:31 +0100 Subject: [PATCH 26/43] chore: release version v41.0.0 --- CHANGELOG.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d6712433..50a33bbfa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ + +# [41.0.0](https://github.com/ipfs/js-ipfs-http-client/compare/v40.2.1...v41.0.0) (2020-01-12) + + +### Bug Fixes + +* return CIDs from files.flush ([#1216](https://github.com/ipfs/js-ipfs-http-client/issues/1216)) ([13f8d7a](https://github.com/ipfs/js-ipfs-http-client/commit/13f8d7a)) + + +### Code Refactoring + +* removes format option ([#1218](https://github.com/ipfs/js-ipfs-http-client/issues/1218)) ([4ef26cd](https://github.com/ipfs/js-ipfs-http-client/commit/4ef26cd)) + + +### BREAKING CHANGES + +* `format` option is no longer supported as everything is `dag-pb` all +of the time. + +Follows on from https://github.com/ipfs/js-ipfs-mfs/pull/69 + + + ## [40.2.1](https://github.com/ipfs/js-ipfs-http-client/compare/v40.2.0...v40.2.1) (2020-01-09) From 86eba683abebf48bd68e584287ab0225a8694eb3 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Thu, 23 Jan 2020 07:08:16 +0000 Subject: [PATCH 27/43] test: adds tests for metadata with mfs stat and files.add (#1221) * test: adds tests for metadata with mfs stat and files.add * chore: remove gh url --- package.json | 2 +- src/add/index.js | 13 ++++++++++--- src/files/cp.js | 1 + src/files/mkdir.js | 1 + src/files/mv.js | 1 + src/files/rm.js | 1 + src/files/write.js | 1 + test/interface.spec.js | 24 ++++++++++++++++++++++++ 8 files changed, 40 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 6ba92841e..3d0e8bacb 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "cross-env": "^6.0.0", "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.127.0", + "interface-ipfs-core": "^0.128.0", "ipfsd-ctl": "^1.0.0", "ndjson": "^1.5.0", "nock": "^11.4.0", diff --git a/src/add/index.js b/src/add/index.js index 546e5428d..e8b3c22f0 100644 --- a/src/add/index.js +++ b/src/add/index.js @@ -42,7 +42,7 @@ module.exports = configure(({ ky }) => { for await (let file of ndjson(toIterable(res.body))) { file = toCamel(file) - // console.log(file) + if (options.progress && file.bytes) { options.progress(file.bytes) } else { @@ -52,16 +52,23 @@ module.exports = configure(({ ky }) => { } }) -function toCoreInterface ({ name, hash, size, mode, mtime }) { +function toCoreInterface ({ name, hash, size, mode, mtime, mtimeNsecs }) { const output = { path: name, hash, size: parseInt(size) } - if (mode !== undefined) { + if (mode != null) { output.mode = parseInt(mode, 8) } + if (mtime != null) { + output.mtime = { + secs: mtime, + nsecs: mtimeNsecs || 0 + } + } + return output } diff --git a/src/files/cp.js b/src/files/cp.js index f9ed0bb20..ce68aa588 100644 --- a/src/files/cp.js +++ b/src/files/cp.js @@ -13,6 +13,7 @@ module.exports = configure(({ ky }) => { if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) + if (options.shardSplitThreshold != null) searchParams.set('shardSplitThreshold', options.shardSplitThreshold) return ky.post('files/cp', { timeout: options.timeout, diff --git a/src/files/mkdir.js b/src/files/mkdir.js index 382c62b22..7083d4b40 100644 --- a/src/files/mkdir.js +++ b/src/files/mkdir.js @@ -15,6 +15,7 @@ module.exports = configure(({ ky }) => { if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) + if (options.shardSplitThreshold != null) searchParams.set('shardSplitThreshold', options.shardSplitThreshold) if (mtime) { searchParams.set('mtime', mtime.secs) diff --git a/src/files/mv.js b/src/files/mv.js index 78560dfeb..5b0efbc89 100644 --- a/src/files/mv.js +++ b/src/files/mv.js @@ -13,6 +13,7 @@ module.exports = configure(({ ky }) => { if (options.flush != null) searchParams.set('flush', options.flush) if (options.hashAlg) searchParams.set('hash', options.hashAlg) if (options.parents != null) searchParams.set('parents', options.parents) + if (options.shardSplitThreshold != null) searchParams.set('shardSplitThreshold', options.shardSplitThreshold) return ky.post('files/mv', { timeout: options.timeout, diff --git a/src/files/rm.js b/src/files/rm.js index c0a5e7eab..ebfbd4061 100644 --- a/src/files/rm.js +++ b/src/files/rm.js @@ -10,6 +10,7 @@ module.exports = configure(({ ky }) => { searchParams.append('arg', path) if (options.recursive != null) searchParams.set('recursive', options.recursive) if (options.force != null) searchParams.set('force', options.force) + if (options.shardSplitThreshold != null) searchParams.set('shardSplitThreshold', options.shardSplitThreshold) return ky.post('files/rm', { timeout: options.timeout, diff --git a/src/files/write.js b/src/files/write.js index e31f0a8a2..a91c920a7 100644 --- a/src/files/write.js +++ b/src/files/write.js @@ -21,6 +21,7 @@ module.exports = configure(({ ky }) => { if (options.parents != null) searchParams.set('parents', options.parents) if (options.rawLeaves != null) searchParams.set('raw-leaves', options.rawLeaves) if (options.truncate != null) searchParams.set('truncate', options.truncate) + if (options.shardSplitThreshold != null) searchParams.set('shardSplitThreshold', options.shardSplitThreshold) if (mtime) { searchParams.set('mtime', mtime.secs) diff --git a/test/interface.spec.js b/test/interface.spec.js index e09cac5a6..796c1ae86 100644 --- a/test/interface.spec.js +++ b/test/interface.spec.js @@ -242,6 +242,30 @@ describe('interface-ipfs-core tests', () => { { name: 'should write file and specify mtime as hrtime', reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should stat file with mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should stat file with mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should stat dir with mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should stat dir with mtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should stat sharded dir with mode', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should stat sharded dir with mtime', + reason: 'TODO not implemented in go-ipfs yet' } ] }) From 410de4bbcf48a6aba1dcf1a6f7e57b83e2d80a00 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 23 Jan 2020 09:35:19 +0000 Subject: [PATCH 28/43] chore: update contributors --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d0e8bacb..033449aad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "41.0.0", + "version": "41.0.1", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" From 435e1325d519ba0815df3a199bb8b5e7838018fc Mon Sep 17 00:00:00 2001 From: achingbrain Date: Thu, 23 Jan 2020 09:35:20 +0000 Subject: [PATCH 29/43] chore: release version v41.0.1 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a33bbfa..55592d9dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ + +## [41.0.1](https://github.com/ipfs/js-ipfs-http-client/compare/v41.0.0...v41.0.1) (2020-01-23) + + + # [41.0.0](https://github.com/ipfs/js-ipfs-http-client/compare/v40.2.1...v41.0.0) (2020-01-12) From 8a6bfde4a2cd1fbef03cdceb0ff987912237dd26 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Thu, 23 Jan 2020 20:18:39 +0000 Subject: [PATCH 30/43] refactor: async iterables (#1183) TLDR; * Remove Node.js streams and pull streams * Remove callbacks * Remove `peer-info` and `peer-id` --- Now that internals are all async/await/iterables and `fetch` the next step is to bubble up that goodness to the core API, removing the multiple stream APIs and removing callback support. I'm also proposing removing `peer-info` and `peer-id`, since these drastically increase the bundle size by pulling in `libp2p-crypto`, for which 99% of it's capability is unused. In place of `peer-id` we return a `CID`, which can easily be converted to a `PeerId` instance via: ```js const peerId = PeerId.createFromCID(peerCid) ``` In place of `peer-info` we return an object `{ id: CID, addrs: Multiaddr[] }`, which can easily be converted to a `PeerInfo` like: ```js const peerInfo = new PeerInfo(PeerId.createFromCID(info.id)) info.addrs.forEach(addr => peerInfo.multiaddrs.add(addr)) ``` refs https://github.com/ipfs/js-ipfs/issues/1670 refs https://github.com/ipfs/js-ipfs/issues/2611 refs https://github.com/ipfs/interface-js-ipfs-core/issues/394 TODO: * [x] Refactor local tests * [x] Remove `addFromFs` and `addFromUrl` and export `globSource` and `urlSource` instead * [x] Refactor `interface-ipfs-core` tests * [x] Document new APIs in `interface-ipfs-core` * [x] Update README with API changes * [x] [Document upgrade path from Node.js/pull streams to async iterables](https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26) Depends on: * [x] https://github.com/ipfs/js-ipfs-utils/pull/15 * [x] https://github.com/ipfs/interface-js-ipfs-core/pull/567 BREAKING CHANGE: Callbacks are no longer supported on any API methods. Please use a utility such as [`callbackify`](https://www.npmjs.com/package/callbackify) on API methods that return Promises to emulate previous behaviour. BREAKING CHANGE: `PeerId` and `PeerInfo` classes are no longer statically exported from `ipfs-http-client` since they are no longer used internally. BREAKING CHANGE: `pin.add` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. BREAKING CHANGE: `pin.ls` now returns an async iterable. BREAKING CHANGE: `pin.ls` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. BREAKING CHANGE: `pin.rm` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. BREAKING CHANGE: `add` now returns an async iterable. BREAKING CHANGE: `add` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. BREAKING CHANGE: `addReadableStream`, `addPullStream` have been removed. BREAKING CHANGE: `ls` now returns an async iterable. BREAKING CHANGE: `ls` results now contain a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `hash` property. BREAKING CHANGE: `files.ls` now returns an async iterable. BREAKING CHANGE: `files.readPullStream` and `files.readReadableStream` have been removed. BREAKING CHANGE: `files.read` now returns an async iterable. BREAKING CHANGE: `files.lsPullStream` and `files.lsReadableStream` have been removed. BREAKING CHANGE: `files.ls` now returns an async iterable. BREAKING CHANGE: `files.ls` results now contain a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `hash` property. BREAKING CHANGE: `files.ls` no longer takes a `long` option (in core) - you will receive all data by default. BREAKING CHANGE: `files.stat` result now contains a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `hash` property. BREAKING CHANGE: `get` now returns an async iterable. The `content` property value for objects yielded from the iterator is now an async iterable that yields [`BufferList`](https://github.com/rvagg/bl) objects. BREAKING CHANGE: `stats.bw` now returns an async iterable. BREAKING CHANGE: `addFromStream` has been removed. Use `add` instead. BREAKING CHANGE: `isIPFS` is no longer exported from the client, please `npm i is-ipfs` or include the CDN script tag `` to use this utility in your applications. BREAKING CHANGE: `addFromFs` has been removed. Please use the exported `globSource` utility and pass the result to `add`. See the [glob source documentation](https://github.com/ipfs/js-ipfs-http-client#glob-source) for more details and an example. BREAKING CHANGE: `addFromURL` has been removed. Please use the exported `urlSource` utility and pass the result to `add`. See the [URL source documentation](https://github.com/ipfs/js-ipfs-http-client#url-source) for more details and an example. BREAKING CHANGE: `name.resolve` now returns an async iterable. It yields increasingly more accurate resolved values as they are discovered until the best value is selected from the quorum of 16. The "best" resolved value is the last item yielded from the iterator. If you are interested only in this best value you could use `it-last` to extract it like so: ```js const last = require('it-last') await last(ipfs.name.resolve('/ipns/QmHash')) ``` BREAKING CHANGE: `block.rm` now returns an async iterable. BREAKING CHANGE: `block.rm` now yields objects of `{ cid: CID, error: Error }`. BREAKING CHANGE: `dht.findProvs`, `dht.provide`, `dht.put` and `dht.query` now all return an async iterable. BREAKING CHANGE: `dht.findPeer`, `dht.findProvs`, `dht.provide`, `dht.put` and `dht.query` now yield/return an object `{ id: CID, addrs: Multiaddr[] }` instead of a `PeerInfo` instance(s). BREAKING CHANGE: `refs` and `refs.local` now return an async iterable. BREAKING CHANGE: `object.data` now returns an async iterable that yields `Buffer` objects. BREAKING CHANGE: `ping` now returns an async iterable. BREAKING CHANGE: `repo.gc` now returns an async iterable. BREAKING CHANGE: `swarm.peers` now returns an array of objects with a `peer` property that is a `CID`, instead of a `PeerId` instance. BREAKING CHANGE: `swarm.addrs` now returns an array of objects `{ id: CID, addrs: Multiaddr[] }` instead of `PeerInfo` instances. BREAKING CHANGE: `block.stat` result now contains a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `key` property. BREAKING CHANGE: `bitswap.wantlist` now returns an array of [CID](https://github.com/multiformats/js-cid) instances. BREAKING CHANGE: `bitswap.stat` result has changed - `wantlist` and `peers` values are now an array of [CID](https://github.com/multiformats/js-cid) instances. --- README.md | 107 +++++++++++----- package.json | 47 +++---- src/add-from-fs/index.browser.js | 3 - src/add-from-fs/index.js | 8 -- src/add-from-url.js | 21 ---- src/add/index.js | 5 +- src/bitswap/index.js | 10 +- src/bitswap/stat.js | 5 +- src/bitswap/wantlist.js | 2 +- src/block/index.js | 27 +--- src/block/{rm-async-iterator.js => rm.js} | 17 ++- src/block/stat.js | 3 +- src/bootstrap/index.js | 8 +- src/cat.js | 2 +- src/config/index.js | 8 +- src/config/profiles/index.js | 6 +- src/dag/index.js | 8 +- src/dht/find-peer.js | 28 +++-- src/dht/find-provs.js | 21 ++-- src/dht/get.js | 27 ++-- src/dht/index.js | 37 ++---- src/dht/provide.js | 26 ++-- src/dht/put.js | 23 ++-- src/dht/query.js | 19 ++- src/diag/index.js | 8 +- src/files/index.js | 38 ++---- src/files/ls.js | 21 ++-- src/files/read.js | 2 +- src/files/stat.js | 10 +- src/get.js | 2 +- src/index.js | 144 +++------------------- src/key/index.js | 14 +-- src/lib/converters.js | 20 --- src/lib/stream-to-iterable.js | 25 ---- src/log/index.js | 6 +- src/log/tail.js | 2 +- src/ls.js | 82 ++++++------ src/name/index.js | 6 +- src/name/pubsub/index.js | 8 +- src/name/resolve.js | 11 +- src/object/data.js | 11 +- src/object/index.js | 15 +-- src/object/patch/index.js | 10 +- src/pin/add.js | 8 +- src/pin/index.js | 8 +- src/pin/ls.js | 20 ++- src/pin/rm.js | 3 +- src/ping.js | 2 +- src/pubsub/index.js | 55 ++------- src/pubsub/subscribe.js | 6 +- src/refs/index.js | 2 +- src/refs/local.js | 2 +- src/repo/gc.js | 2 +- src/repo/index.js | 9 +- src/stats/bw.js | 2 +- src/stats/index.js | 22 +--- src/swarm/addrs.js | 12 +- src/swarm/disconnect.js | 2 +- src/swarm/index.js | 12 +- src/swarm/peers.js | 4 +- test/custom-headers.spec.js | 2 +- test/exports.spec.js | 6 - test/files-mfs.spec.js | 105 ++++++++-------- test/get.spec.js | 28 +++-- test/interface.spec.js | 143 +++++++++------------ test/lib.stream-to-iterable.spec.js | 40 ------ test/log.spec.js | 3 +- test/node/swarm.js | 4 +- test/ping.spec.js | 42 +------ test/request-api.spec.js | 73 +++++------ test/stats.spec.js | 3 +- test/sub-modules.spec.js | 19 --- test/utils/expect-timeout.js | 16 --- 73 files changed, 601 insertions(+), 957 deletions(-) delete mode 100644 src/add-from-fs/index.browser.js delete mode 100644 src/add-from-fs/index.js delete mode 100644 src/add-from-url.js rename src/block/{rm-async-iterator.js => rm.js} (76%) delete mode 100644 src/lib/converters.js delete mode 100644 src/lib/stream-to-iterable.js delete mode 100644 test/lib.stream-to-iterable.spec.js delete mode 100644 test/utils/expect-timeout.js diff --git a/README.md b/README.md index 9c6d3a3c7..88ed592f8 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,8 @@ - [Additional Options](#additional-options) - [Instance Utils](#instance-utils) - [Static Types and Utils](#static-types-and-utils) + - [Glob source](#glob-source) + - [URL source](#url-source) - [Development](#development) - [Testing](#testing) - [Contribute](#contribute) @@ -210,34 +212,20 @@ const ipfs = ipfsClient({ timeout: '2m' }) - [Regular Files API](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md) - [`ipfs.add(data, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#add) - - [`ipfs.addPullStream([options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#addpullstream) - - [`ipfs.addReadableStream([options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#addreadablestream) - - [`ipfs.addFromStream(stream)`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#addfromstream) - - [`ipfs.addFromFs(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#addfromfs) - - [`ipfs.addFromURL(url, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#addfromurl) - [`ipfs.cat(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#cat) - - [`ipfs.catPullStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#catpullstream) - - [`ipfs.catReadableStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#catreadablestream) - [`ipfs.get(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#get) - - [`ipfs.getPullStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#getpullstream) - - [`ipfs.getReadableStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#getreadablestream) - [`ipfs.ls(ipfsPath)`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#ls) - - [`ipfs.lsPullStream(ipfsPath)`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#lspullstream) - - [`ipfs.lsReadableStream(ipfsPath)`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#lsreadablestream) - [MFS (mutable file system) specific](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#mutable-file-system) - - _Explore the Mutable File System through interactive coding challenges in our [ProtoSchool tutorial](https://proto.school/#/mutable-file-system/)._ - [`ipfs.files.cp([from, to])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filescp) - [`ipfs.files.flush([path])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesflush) - [`ipfs.files.ls([path], [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesls) - [`ipfs.files.mkdir(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesmkdir) - [`ipfs.files.mv([from, to])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesmv) - [`ipfs.files.read(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesread) - - [`ipfs.files.readPullStream(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesreadpullstream) - - [`ipfs.files.readReadableStream(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesreadreadablestream) - [`ipfs.files.rm(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesrm) - [`ipfs.files.stat(path, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#filesstat) - [`ipfs.files.write(path, content, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/FILES.md#fileswrite) + _Explore the Mutable File System through interactive coding challenges in our [ProtoSchool tutorial](https://proto.school/#/mutable-file-system/)._ - [block](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/BLOCK.md) - [`ipfs.block.get(cid, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/BLOCK.md#blockget) @@ -246,20 +234,15 @@ const ipfs = ipfsClient({ timeout: '2m' }) - [refs](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md) - [`ipfs.refs(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md#refs) - - [`ipfs.refsReadableStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md#refsreadablestream) - - [`ipfs.refsPullStream(ipfsPath, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md#refspullstream) - [`ipfs.refs.local()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md#refslocal) - - [`ipfs.refs.localReadableStream()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md#refslocalreadablestream) - - [`ipfs.refs.localPullStream()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/REFS.md#refslocalpullstream) #### Graph - [dag](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/DAG.md) - - _Explore the DAG API through interactive coding challenges in our [ProtoSchool tutorial](https://proto.school/#/basics)._ - [`ipfs.dag.get(cid, [path], [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/DAG.md#dagget) - [`ipfs.dag.put(dagNode, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/DAG.md#dagput) - [`ipfs.dag.tree(cid, [path], [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/DAG.md#dagtree) + _Explore the DAG API through interactive coding challenges in our [ProtoSchool tutorial](https://proto.school/#/basics)._ - [object](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/OBJECT.md) - [`ipfs.object.data(multihash, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/OBJECT.md#objectdata) @@ -278,9 +261,6 @@ const ipfs = ipfsClient({ timeout: '2m' }) - [`ipfs.pin.ls([hash], [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/PIN.md#pinls) - [`ipfs.pin.rm(hash, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/PIN.md#pinrm) -- refs - - `ipfs.refs.local()` - #### Network - [bootstrap](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/BOOTSTRAP.md) @@ -326,8 +306,6 @@ const ipfs = ipfsClient({ timeout: '2m' }) - [`ipfs.dns(domain)`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#dns) - [`ipfs.id()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#id) - [`ipfs.ping(id, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#ping) - - [`ipfs.pingPullStream(id, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#pingpullstream) - - [`ipfs.pingReadableStream(id, [options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#pingreadablestream) - [`ipfs.stop()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#stop). Alias to `ipfs.shutdown`. - [`ipfs.version()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/MISCELLANEOUS.md#version) @@ -341,8 +319,6 @@ const ipfs = ipfsClient({ timeout: '2m' }) - [stats](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/STATS.md) - [`ipfs.stats.bitswap()`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/STATS.md#statsbitswap) - [`ipfs.stats.bw([options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/STATS.md#statsbw) - - [`ipfs.stats.bwPullStream([options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/STATS.md#statsbwpullstream) - - [`ipfs.stats.bwReadableStream([options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/STATS.md#statsbwreadablestream) - [`ipfs.stats.repo([options])`](https://github.com/ipfs/interface-ipfs-core/blob/master/SPEC/STATS.md#statsrepo) - log @@ -382,15 +358,14 @@ Call this on your client instance to return an object containing the `host`, `po Aside from the default export, `ipfs-http-client` exports various types and utilities that are included in the bundle: -- [`isIPFS`](https://www.npmjs.com/package/is-ipfs) - [`Buffer`](https://www.npmjs.com/package/buffer) -- [`PeerId`](https://www.npmjs.com/package/peer-id) -- [`PeerInfo`](https://www.npmjs.com/package/peer-info) - [`multiaddr`](https://www.npmjs.com/package/multiaddr) - [`multibase`](https://www.npmjs.com/package/multibase) - [`multicodec`](https://www.npmjs.com/package/multicodec) -- [`multihash`](https://www.npmjs.com/package/multihash) +- [`multihash`](https://www.npmjs.com/package/multihashes) - [`CID`](https://www.npmjs.com/package/cids) +- [`globSource`](https://github.com/ipfs/js-ipfs-utils/blob/master/src/files/glob-source.js) (not available in the browser) +- [`urlSource`](https://github.com/ipfs/js-ipfs-utils/blob/master/src/files/url-source.js) These can be accessed like this, for example: @@ -400,6 +375,74 @@ const { CID } = require('ipfs-http-client') import { CID } from 'ipfs-http-client' ``` +##### Glob source + +A utility to allow files on the file system to be easily added to IPFS. + +###### `globSource(path, [options])` + +- `path`: A path to a single file or directory to glob from +- `options`: Optional options +- `options.recursive`: If `path` is a directory, use option `{ recursive: true }` to add the directory and all its sub-directories. +- `options.ignore`: To exclude file globs from the directory, use option `{ ignore: ['ignore/this/folder/**', 'and/this/file'] }`. +- `options.hidden`: Hidden/dot files (files or folders starting with a `.`, for example, `.git/`) are not included by default. To add them, use the option `{ hidden: true }`. + +Returns an async iterable that yields `{ path, content }` objects suitable for passing to `ipfs.add`. + +###### Example + +```js +const IpfsHttpClient = require('ipfs-http-client') +const { globSource } = IpfsHttpClient +const ipfs = IpfsHttpClient() + +for await (const file of ipfs.add(globSource('./docs', { recursive: true }))) { + console.log(file) +} +/* +{ + path: 'docs/assets/anchor.js', + cid: CID('QmVHxRocoWgUChLEvfEyDuuD6qJ4PhdDL2dTLcpUy3dSC2'), + size: 15347 +} +{ + path: 'docs/assets/bass-addons.css', + cid: CID('QmPiLWKd6yseMWDTgHegb8T7wVS7zWGYgyvfj7dGNt2viQ'), + size: 232 +} +... +*/ +``` + +##### URL source + +A utility to allow content from the internet to be easily added to IPFS. + +###### `urlSource(url)` + +- `url`: A string URL or [`URL`](https://developer.mozilla.org/en-US/docs/Web/API/URL) instance to send HTTP GET request to + +Returns an async iterable that yields `{ path, content }` objects suitable for passing to `ipfs.add`. + +###### Example + +```js +const IpfsHttpClient = require('ipfs-http-client') +const { urlSource } = IpfsHttpClient +const ipfs = IpfsHttpClient() + +for await (const file of ipfs.add(urlSource('https://ipfs.io/images/ipfs-logo.svg'))) { + console.log(file) +} +/* +{ + path: 'ipfs-logo.svg', + cid: CID('QmTqZhR6f7jzdhLgPArDPnsbZpvvgxzCZycXK7ywkLxSyU'), + size: 3243 +} +*/ +``` + ## Development ### Testing diff --git a/package.json b/package.json index 033449aad..add5c2ebb 100644 --- a/package.json +++ b/package.json @@ -15,13 +15,9 @@ ], "main": "src/index.js", "browser": { - "glob": false, - "fs": false, - "stream": "readable-stream", - "ky-universal": "ky/umd", "./src/add/form-data.js": "./src/add/form-data.browser.js", - "./src/add-from-fs/index.js": "./src/add-from-fs/index.browser.js", - "./src/lib/buffer-to-form-data.js": "./src/lib/buffer-to-form-data.browser.js" + "./src/lib/buffer-to-form-data.js": "./src/lib/buffer-to-form-data.browser.js", + "ipfs-utils/src/files/glob-source": false }, "repository": "github:ipfs/js-ipfs-http-client", "scripts": { @@ -42,55 +38,42 @@ }, "dependencies": { "abort-controller": "^3.0.0", - "async-iterator-to-pull-stream": "^1.3.0", "bignumber.js": "^9.0.0", - "bl": "^4.0.0", "bs58": "^4.0.1", "buffer": "^5.4.2", - "callbackify": "^1.1.0", "cids": "~0.7.1", "debug": "^4.1.0", - "err-code": "^2.0.0", - "explain-error": "^1.0.4", "form-data": "^3.0.0", "ipfs-block": "~0.8.1", - "ipfs-utils": "^0.4.2", - "ipld-dag-cbor": "~0.15.0", - "ipld-dag-pb": "^0.18.1", - "ipld-raw": "^4.0.0", - "is-ipfs": "~0.6.1", - "it-all": "^1.0.1", - "it-glob": "0.0.7", + "ipfs-utils": "^0.7.1", + "ipld-dag-cbor": "^0.15.1", + "ipld-dag-pb": "^0.18.2", + "ipld-raw": "^4.0.1", "it-tar": "^1.1.1", "it-to-stream": "^0.1.1", "iterable-ndjson": "^1.1.0", "ky": "^0.15.0", "ky-universal": "^0.3.0", "merge-options": "^2.0.0", - "multiaddr": "^6.0.6", - "multiaddr-to-uri": "^5.0.0", + "multiaddr": "^7.2.1", + "multiaddr-to-uri": "^5.1.0", "multibase": "~0.6.0", "multicodec": "^1.0.0", "multihashes": "~0.4.14", "parse-duration": "^0.1.1", - "peer-id": "~0.12.3", - "peer-info": "~0.15.1", - "promise-nodeify": "^3.0.1" + "stream-to-it": "^0.2.0" }, "devDependencies": { "aegir": "^20.4.1", "async": "^3.1.0", "browser-process-platform": "~0.1.1", - "cross-env": "^6.0.0", - "detect-node": "^2.0.4", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.128.0", - "ipfsd-ctl": "^1.0.0", - "ndjson": "^1.5.0", - "nock": "^11.4.0", - "pull-stream": "^3.6.14", - "pump": "^3.0.0", - "stream-equal": "^1.1.1" + "interface-ipfs-core": "^0.129.0", + "ipfsd-ctl": "^1.0.2", + "it-all": "^1.0.1", + "it-concat": "^1.0.0", + "it-pipe": "^1.1.0", + "nock": "^11.7.2" }, "engines": { "node": ">=10.3.0", diff --git a/src/add-from-fs/index.browser.js b/src/add-from-fs/index.browser.js deleted file mode 100644 index 81d551294..000000000 --- a/src/add-from-fs/index.browser.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict' - -module.exports = () => () => { throw new Error('unavailable in the browser') } diff --git a/src/add-from-fs/index.js b/src/add-from-fs/index.js deleted file mode 100644 index 7403f7e46..000000000 --- a/src/add-from-fs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict' - -const globSource = require('ipfs-utils/src/files/glob-source') - -module.exports = (config) => { - const add = require('../add')(config) - return (path, options) => add(globSource(path, options), options) -} diff --git a/src/add-from-url.js b/src/add-from-url.js deleted file mode 100644 index deb3f4bad..000000000 --- a/src/add-from-url.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict' - -const kyDefault = require('ky-universal').default -const toIterable = require('./lib/stream-to-iterable') - -module.exports = (config) => { - const add = require('./add')(config) - - return async function * addFromURL (url, options) { - options = options || {} - - const { body } = await kyDefault.get(url) - - const input = { - path: decodeURIComponent(new URL(url).pathname.split('/').pop() || ''), - content: toIterable(body) - } - - yield * add(input, options) - } -} diff --git a/src/add/index.js b/src/add/index.js index e8b3c22f0..cd162c2f9 100644 --- a/src/add/index.js +++ b/src/add/index.js @@ -1,8 +1,9 @@ 'use strict' const ndjson = require('iterable-ndjson') +const CID = require('cids') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const { toFormData } = require('./form-data') const toCamel = require('../lib/object-to-camel') @@ -55,7 +56,7 @@ module.exports = configure(({ ky }) => { function toCoreInterface ({ name, hash, size, mode, mtime, mtimeNsecs }) { const output = { path: name, - hash, + cid: new CID(hash), size: parseInt(size) } diff --git a/src/bitswap/index.js b/src/bitswap/index.js index fb47d4da0..5c8354498 100644 --- a/src/bitswap/index.js +++ b/src/bitswap/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - -module.exports = (config) => ({ - wantlist: callbackify.variadic(require('./wantlist')(config)), - stat: callbackify.variadic(require('./stat')(config)), - unwant: callbackify.variadic(require('./unwant')(config)) +module.exports = config => ({ + wantlist: require('./wantlist')(config), + stat: require('./stat')(config), + unwant: require('./unwant')(config) }) diff --git a/src/bitswap/stat.js b/src/bitswap/stat.js index fee13c355..e041f5d9d 100644 --- a/src/bitswap/stat.js +++ b/src/bitswap/stat.js @@ -2,6 +2,7 @@ const configure = require('../lib/configure') const Big = require('bignumber.js') +const CID = require('cids') module.exports = configure(({ ky }) => { return async (options) => { @@ -21,8 +22,8 @@ module.exports = configure(({ ky }) => { function toCoreInterface (res) { return { provideBufLen: res.ProvideBufLen, - wantlist: res.Wantlist || [], - peers: res.Peers || [], + wantlist: (res.Wantlist || []).map(k => new CID(k['/'])), + peers: (res.Peers || []).map(p => new CID(p)), blocksReceived: new Big(res.BlocksReceived), dataReceived: new Big(res.DataReceived), blocksSent: new Big(res.BlocksSent), diff --git a/src/bitswap/wantlist.js b/src/bitswap/wantlist.js index 6b087db1b..d917d6747 100644 --- a/src/bitswap/wantlist.js +++ b/src/bitswap/wantlist.js @@ -24,6 +24,6 @@ module.exports = configure(({ ky }) => { searchParams }).json() - return res + return (res.Keys || []).map(k => new CID(k['/'])) } }) diff --git a/src/block/index.js b/src/block/index.js index 8c683dd83..f25c73366 100644 --- a/src/block/index.js +++ b/src/block/index.js @@ -1,23 +1,8 @@ 'use strict' -const nodeify = require('promise-nodeify') -const callbackify = require('callbackify') -const { collectify } = require('../lib/converters') - -module.exports = config => { - const rm = require('./rm-async-iterator')(config) - - return { - get: callbackify.variadic(require('./get')(config)), - stat: callbackify.variadic(require('./stat')(config)), - put: callbackify.variadic(require('./put')(config)), - rm: (input, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(collectify(rm)(input, options), callback) - }, - _rmAsyncIterator: rm - } -} +module.exports = config => ({ + get: require('./get')(config), + stat: require('./stat')(config), + put: require('./put')(config), + rm: require('./rm')(config) +}) diff --git a/src/block/rm-async-iterator.js b/src/block/rm.js similarity index 76% rename from src/block/rm-async-iterator.js rename to src/block/rm.js index e44aedcd2..f8fc8c103 100644 --- a/src/block/rm-async-iterator.js +++ b/src/block/rm.js @@ -3,8 +3,7 @@ const CID = require('cids') const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') -const toCamel = require('../lib/object-to-camel') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * rm (cid, options) { @@ -31,7 +30,19 @@ module.exports = configure(({ ky }) => { }) for await (const removed of ndjson(toIterable(res.body))) { - yield toCamel(removed) + yield toCoreInterface(removed) } } }) + +function toCoreInterface (removed) { + const out = { + cid: new CID(removed.Hash) + } + + if (removed.Error) { + out.error = new Error(removed.Error) + } + + return out +} diff --git a/src/block/stat.js b/src/block/stat.js index 9063d137c..24b4256fc 100644 --- a/src/block/stat.js +++ b/src/block/stat.js @@ -3,7 +3,6 @@ const CID = require('cids') const { Buffer } = require('buffer') const configure = require('../lib/configure') -const toCamel = require('../lib/object-to-camel') module.exports = configure(({ ky }) => { return async (cid, options) => { @@ -23,6 +22,6 @@ module.exports = configure(({ ky }) => { searchParams }).json() - return toCamel(res) + return { cid: new CID(res.Key), size: res.Size } } }) diff --git a/src/bootstrap/index.js b/src/bootstrap/index.js index 032265803..519a7161e 100644 --- a/src/bootstrap/index.js +++ b/src/bootstrap/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - add: callbackify.variadic(require('./add')(config)), - rm: callbackify.variadic(require('./rm')(config)), - list: callbackify.variadic(require('./list')(config)) + add: require('./add')(config), + rm: require('./rm')(config), + list: require('./list')(config) }) diff --git a/src/cat.js b/src/cat.js index 32bccf59e..3d4971a1c 100644 --- a/src/cat.js +++ b/src/cat.js @@ -3,7 +3,7 @@ const CID = require('cids') const { Buffer } = require('buffer') const configure = require('./lib/configure') -const toIterable = require('./lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * cat (path, options) { diff --git a/src/config/index.js b/src/config/index.js index 36621fd39..cb56190a2 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -1,10 +1,8 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - get: callbackify.variadic(require('./get')(config)), - set: callbackify.variadic(require('./set')(config)), - replace: callbackify.variadic(require('./replace')(config)), + get: require('./get')(config), + set: require('./set')(config), + replace: require('./replace')(config), profiles: require('./profiles')(config) }) diff --git a/src/config/profiles/index.js b/src/config/profiles/index.js index 57cd1ad7f..77b68de41 100644 --- a/src/config/profiles/index.js +++ b/src/config/profiles/index.js @@ -1,8 +1,6 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - apply: callbackify.variadic(require('./apply')(config)), - list: callbackify.variadic(require('./list')(config)) + apply: require('./apply')(config), + list: require('./list')(config) }) diff --git a/src/dag/index.js b/src/dag/index.js index 06194e4a8..3cc4d410e 100644 --- a/src/dag/index.js +++ b/src/dag/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - get: callbackify.variadic(require('./get')(config)), - put: callbackify.variadic(require('./put')(config)), - resolve: callbackify.variadic(require('./resolve')(config)) + get: require('./get')(config), + put: require('./put')(config), + resolve: require('./resolve')(config) }) diff --git a/src/dht/find-peer.js b/src/dht/find-peer.js index 71779952c..9d8f517e5 100644 --- a/src/dht/find-peer.js +++ b/src/dht/find-peer.js @@ -1,18 +1,18 @@ 'use strict' -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') +const { Buffer } = require('buffer') +const CID = require('cids') const multiaddr = require('multiaddr') const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { - return async function * findPeer (peerId, options) { + return async function findPeer (peerId, options) { options = options || {} const searchParams = new URLSearchParams(options.searchParams) - searchParams.set('arg', `${peerId}`) + searchParams.set('arg', `${Buffer.isBuffer(peerId) ? new CID(peerId) : peerId}`) if (options.verbose != null) searchParams.set('verbose', options.verbose) const res = await ky.post('dht/findpeer', { @@ -23,15 +23,27 @@ module.exports = configure(({ ky }) => { }) for await (const message of ndjson(toIterable(res.body))) { + // 3 = QueryError + // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18 + // https://github.com/ipfs/go-ipfs/blob/eb11f569b064b960d1aba4b5b8ca155a3bd2cb21/core/commands/dht.go#L388-L389 + if (message.Type === 3) { + throw new Error(message.Extra) + } + // 2 = FinalPeer // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18 if (message.Type === 2 && message.Responses) { + // There will only be 1: + // https://github.com/ipfs/go-ipfs/blob/eb11f569b064b960d1aba4b5b8ca155a3bd2cb21/core/commands/dht.go#L395-L396 for (const { ID, Addrs } of message.Responses) { - const peerInfo = new PeerInfo(PeerId.createFromB58String(ID)) - if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a))) - yield peerInfo + return { + id: new CID(ID), + addrs: (Addrs || []).map(a => multiaddr(a)) + } } } } + + throw new Error('not found') } }) diff --git a/src/dht/find-provs.js b/src/dht/find-provs.js index a0fc35722..7adbaf38c 100644 --- a/src/dht/find-provs.js +++ b/src/dht/find-provs.js @@ -1,18 +1,17 @@ 'use strict' -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') +const CID = require('cids') const multiaddr = require('multiaddr') const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * findProvs (cid, options) { options = options || {} const searchParams = new URLSearchParams(options.searchParams) - searchParams.set('arg', `${cid}`) + searchParams.set('arg', `${new CID(cid)}`) if (options.numProviders) searchParams.set('num-providers', options.numProviders) if (options.verbose != null) searchParams.set('verbose', options.verbose) @@ -24,13 +23,21 @@ module.exports = configure(({ ky }) => { }) for await (const message of ndjson(toIterable(res.body))) { + // 3 = QueryError + // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18 + // https://github.com/libp2p/go-libp2p-kad-dht/blob/master/routing.go#L525-L526 + if (message.Type === 3) { + throw new Error(message.Extra) + } + // 4 = Provider // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L20 if (message.Type === 4 && message.Responses) { for (const { ID, Addrs } of message.Responses) { - const peerInfo = new PeerInfo(PeerId.createFromB58String(ID)) - if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a))) - yield peerInfo + yield { + id: new CID(ID), + addrs: (Addrs || []).map(a => multiaddr(a)) + } } } } diff --git a/src/dht/get.js b/src/dht/get.js index d2cd0db22..4be7b80c2 100644 --- a/src/dht/get.js +++ b/src/dht/get.js @@ -1,30 +1,43 @@ 'use strict' +const { Buffer } = require('buffer') const ndjson = require('iterable-ndjson') +const toIterable = require('stream-to-it/source') +const encodeBufferURIComponent = require('../lib/encode-buffer-uri-component') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') module.exports = configure(({ ky }) => { - return async function * get (key, options) { + return async function get (key, options) { options = options || {} const searchParams = new URLSearchParams(options.searchParams) - searchParams.set('arg', `${key}`) if (options.verbose != null) searchParams.set('verbose', options.verbose) - const res = await ky.post('dht/get', { + if (!Buffer.isBuffer(key)) { + throw new Error('invalid key') + } + + const res = await ky.post(`dht/get?key=${encodeBufferURIComponent(key)}&${searchParams}`, { timeout: options.timeout, signal: options.signal, - headers: options.headers, - searchParams + headers: options.headers }) for await (const message of ndjson(toIterable(res.body))) { + // 3 = QueryError + // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18 + // https://github.com/ipfs/go-ipfs/blob/eb11f569b064b960d1aba4b5b8ca155a3bd2cb21/core/commands/dht.go#L472-L473 + if (message.Type === 3) { + throw new Error(message.Extra) + } + // 5 = Value // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L21 if (message.Type === 5) { - yield message.Extra + return message.Extra } } + + throw new Error('not found') } }) diff --git a/src/dht/index.js b/src/dht/index.js index 5478876ff..754e57b83 100644 --- a/src/dht/index.js +++ b/src/dht/index.js @@ -1,30 +1,11 @@ 'use strict' -const callbackify = require('callbackify') -const errCode = require('err-code') -const { collectify } = require('../lib/converters') - -module.exports = config => { - const get = require('./get')(config) - const findPeer = require('./find-peer')(config) - - return { - get: callbackify.variadic(async (key, options) => { - for await (const value of get(key, options)) { - return value - } - throw errCode(new Error('value not found'), 'ERR_TYPE_5_NOT_FOUND') - }), - put: callbackify.variadic(collectify(require('./put')(config))), - findProvs: callbackify.variadic(collectify(require('./find-provs')(config))), - findPeer: callbackify.variadic(async (peerId, options) => { - for await (const peerInfo of findPeer(peerId, options)) { - return peerInfo - } - throw errCode(new Error('final peer not found'), 'ERR_TYPE_2_NOT_FOUND') - }), - provide: callbackify.variadic(collectify(require('./provide')(config))), - // find closest peerId to given peerId - query: callbackify.variadic(collectify(require('./query')(config))) - } -} +module.exports = config => ({ + get: require('./get')(config), + put: require('./put')(config), + findProvs: require('./find-provs')(config), + findPeer: require('./find-peer')(config), + provide: require('./provide')(config), + // find closest peerId to given peerId + query: require('./query')(config) +}) diff --git a/src/dht/provide.js b/src/dht/provide.js index cb72f9c6d..f9013bfed 100644 --- a/src/dht/provide.js +++ b/src/dht/provide.js @@ -1,11 +1,10 @@ 'use strict' -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') +const CID = require('cids') const multiaddr = require('multiaddr') const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const toCamel = require('../lib/object-to-camel') module.exports = configure(({ ky }) => { @@ -14,7 +13,7 @@ module.exports = configure(({ ky }) => { options = options || {} const searchParams = new URLSearchParams(options.searchParams) - cids.forEach(cid => searchParams.append('arg', `${cid}`)) + cids.forEach(cid => searchParams.append('arg', `${new CID(cid)}`)) if (options.recursive != null) searchParams.set('recursive', options.recursive) if (options.verbose != null) searchParams.set('verbose', options.verbose) @@ -26,13 +25,22 @@ module.exports = configure(({ ky }) => { }) for await (let message of ndjson(toIterable(res.body))) { + // 3 = QueryError + // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18 + // https://github.com/ipfs/go-ipfs/blob/eb11f569b064b960d1aba4b5b8ca155a3bd2cb21/core/commands/dht.go#L283-L284 + if (message.Type === 3) { + throw new Error(message.Extra) + } + message = toCamel(message) + message.id = new CID(message.id) if (message.responses) { - message.responses = message.responses.map(({ ID, Addrs }) => { - const peerInfo = new PeerInfo(PeerId.createFromB58String(ID)) - if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a))) - return peerInfo - }) + message.responses = message.responses.map(({ ID, Addrs }) => ({ + id: new CID(ID), + addrs: (Addrs || []).map(a => multiaddr(a)) + })) + } else { + message.responses = [] } yield message } diff --git a/src/dht/put.js b/src/dht/put.js index 49a6947aa..6d0ecf6fc 100644 --- a/src/dht/put.js +++ b/src/dht/put.js @@ -1,11 +1,11 @@ 'use strict' -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') +const { Buffer } = require('buffer') +const CID = require('cids') const multiaddr = require('multiaddr') const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const encodeBufferURIComponent = require('../lib/encode-buffer-uri-component') const toCamel = require('../lib/object-to-camel') @@ -27,13 +27,20 @@ module.exports = configure(({ ky }) => { }) for await (let message of ndjson(toIterable(res.body))) { + // 3 = QueryError + // https://github.com/libp2p/go-libp2p-core/blob/6e566d10f4a5447317a66d64c7459954b969bdab/routing/query.go#L18 + // https://github.com/ipfs/go-ipfs/blob/eb11f569b064b960d1aba4b5b8ca155a3bd2cb21/core/commands/dht.go#L472-L473 + if (message.Type === 3) { + throw new Error(message.Extra) + } + message = toCamel(message) + message.id = new CID(message.id) if (message.responses) { - message.responses = message.responses.map(({ ID, Addrs }) => { - const peerInfo = new PeerInfo(PeerId.createFromB58String(ID)) - if (Addrs) Addrs.forEach(a => peerInfo.multiaddrs.add(multiaddr(a))) - return peerInfo - }) + message.responses = message.responses.map(({ ID, Addrs }) => ({ + id: new CID(ID), + addrs: (Addrs || []).map(a => multiaddr(a)) + })) } yield message } diff --git a/src/dht/query.js b/src/dht/query.js index 5aefaf90d..1628c0cc8 100644 --- a/src/dht/query.js +++ b/src/dht/query.js @@ -1,17 +1,18 @@ 'use strict' -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') +const CID = require('cids') const ndjson = require('iterable-ndjson') +const multiaddr = require('multiaddr') +const toIterable = require('stream-to-it/source') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toCamel = require('../lib/object-to-camel') module.exports = configure(({ ky }) => { return async function * query (peerId, options) { options = options || {} const searchParams = new URLSearchParams(options.searchParams) - searchParams.set('arg', `${peerId}`) + searchParams.set('arg', `${Buffer.isBuffer(peerId) ? new CID(peerId) : peerId}`) if (options.verbose != null) searchParams.set('verbose', options.verbose) const res = await ky.post('dht/query', { @@ -21,8 +22,14 @@ module.exports = configure(({ ky }) => { searchParams }) - for await (const message of ndjson(toIterable(res.body))) { - yield new PeerInfo(PeerId.createFromB58String(message.ID)) + for await (let message of ndjson(toIterable(res.body))) { + message = toCamel(message) + message.id = new CID(message.id) + message.responses = (message.responses || []).map(({ ID, Addrs }) => ({ + id: new CID(ID), + addrs: (Addrs || []).map(a => multiaddr(a)) + })) + yield message } } }) diff --git a/src/diag/index.js b/src/diag/index.js index 7e48d576d..d3ac85d55 100644 --- a/src/diag/index.js +++ b/src/diag/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - net: callbackify.variadic(require('./net')(config)), - sys: callbackify.variadic(require('./sys')(config)), - cmds: callbackify.variadic(require('./cmds')(config)) + net: require('./net')(config), + sys: require('./sys')(config), + cmds: require('./cmds')(config) }) diff --git a/src/files/index.js b/src/files/index.js index ee6b7d8d8..5dbf395a2 100644 --- a/src/files/index.js +++ b/src/files/index.js @@ -1,27 +1,15 @@ 'use strict' -const callbackify = require('callbackify') -const { collectify, streamify, pullify, concatify } = require('../lib/converters') - -module.exports = config => { - const ls = require('./ls')(config) - const read = require('./read')(config) - - return { - chmod: callbackify.variadic(require('./chmod')(config)), - cp: callbackify.variadic(require('./cp')(config)), - mkdir: callbackify.variadic(require('./mkdir')(config)), - flush: callbackify.variadic(require('./flush')(config)), - stat: callbackify.variadic(require('./stat')(config)), - rm: callbackify.variadic(require('./rm')(config)), - ls: callbackify.variadic(collectify(ls)), - lsReadableStream: streamify.readable(ls), - lsPullStream: pullify.source(ls), - read: callbackify.variadic(concatify(read)), - readReadableStream: streamify.readable(read), - readPullStream: pullify.source(read), - touch: callbackify.variadic(require('./touch')(config)), - write: callbackify.variadic(require('./write')(config)), - mv: callbackify.variadic(require('./mv')(config)) - } -} +module.exports = config => ({ + chmod: require('./chmod')(config), + cp: require('./cp')(config), + mkdir: require('./mkdir')(config), + flush: require('./flush')(config), + stat: require('./stat')(config), + rm: require('./rm')(config), + ls: require('./ls')(config), + read: require('./read')(config), + touch: require('./touch')(config), + write: require('./write')(config), + mv: require('./mv')(config) +}) diff --git a/src/files/ls.js b/src/files/ls.js index 51ee33912..f07c65c09 100644 --- a/src/files/ls.js +++ b/src/files/ls.js @@ -2,7 +2,7 @@ const CID = require('cids') const ndjson = require('iterable-ndjson') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const configure = require('../lib/configure') const toCamelWithMetadata = require('../lib/object-to-camel-with-metadata') @@ -17,9 +17,11 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams(options.searchParams) searchParams.set('arg', CID.isCID(path) ? `/ipfs/${path}` : path) - searchParams.set('stream', true) + searchParams.set('stream', options.stream == null ? true : options.stream) if (options.cidBase) searchParams.set('cid-base', options.cidBase) - if (options.long != null) searchParams.set('long', options.long) + searchParams.set('long', options.long == null ? true : options.long) + // TODO: remove after go-ipfs 0.5 is released + searchParams.set('l', options.long == null ? true : options.long) const res = await ky.post('files/ls', { timeout: options.timeout, @@ -32,12 +34,17 @@ module.exports = configure(({ ky }) => { // go-ipfs does not yet support the "stream" option if ('Entries' in result) { for (const entry of result.Entries || []) { - yield toCamelWithMetadata(entry) + yield toCoreInterface(toCamelWithMetadata(entry)) } - return + } else { + yield toCoreInterface(toCamelWithMetadata(result)) } - - yield toCamelWithMetadata(result) } } }) + +function toCoreInterface (entry) { + if (entry.hash) entry.cid = new CID(entry.hash) + delete entry.hash + return entry +} diff --git a/src/files/read.js b/src/files/read.js index 5a6a14acb..1800609d0 100644 --- a/src/files/read.js +++ b/src/files/read.js @@ -2,7 +2,7 @@ const { Buffer } = require('buffer') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * read (path, options) { diff --git a/src/files/stat.js b/src/files/stat.js index 1b4af061b..0d8c9caa1 100644 --- a/src/files/stat.js +++ b/src/files/stat.js @@ -1,5 +1,6 @@ 'use strict' +const CID = require('cids') const configure = require('../lib/configure') const toCamelWithMetadata = require('../lib/object-to-camel-with-metadata') @@ -27,7 +28,12 @@ module.exports = configure(({ ky }) => { }).json() res.WithLocality = res.WithLocality || false - - return toCamelWithMetadata(res) + return toCoreInterface(toCamelWithMetadata(res)) } }) + +function toCoreInterface (entry) { + entry.cid = new CID(entry.hash) + delete entry.hash + return entry +} diff --git a/src/get.js b/src/get.js index 1a5ebfd93..635f8b34f 100644 --- a/src/get.js +++ b/src/get.js @@ -4,7 +4,7 @@ const configure = require('./lib/configure') const Tar = require('it-tar') const { Buffer } = require('buffer') const CID = require('cids') -const toIterable = require('./lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * get (path, options) { diff --git a/src/index.js b/src/index.js index 939f5986f..320a5a9a8 100644 --- a/src/index.js +++ b/src/index.js @@ -1,159 +1,51 @@ 'use strict' -const isIPFS = require('is-ipfs') const { Buffer } = require('buffer') const CID = require('cids') const multiaddr = require('multiaddr') const multibase = require('multibase') const multicodec = require('multicodec') const multihash = require('multihashes') -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') -const nodeify = require('promise-nodeify') -const callbackify = require('callbackify') -const all = require('it-all') -const toPullStream = require('async-iterator-to-pull-stream') -const toStream = require('it-to-stream') -const BufferList = require('bl/BufferList') -const { concatify, collectify, pullify, streamify } = require('./lib/converters') +const globSource = require('ipfs-utils/src/files/glob-source') +const urlSource = require('ipfs-utils/src/files/url-source') function ipfsClient (config) { - const add = require('./add')(config) - const addFromFs = require('./add-from-fs')(config) - const addFromURL = require('./add-from-url')(config) - const cat = require('./cat')(config) - const get = require('./get')(config) - const ls = require('./ls')(config) - const ping = require('./ping')(config) - const refs = require('./refs')(config) - - const api = { - add: (input, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(collectify(add)(input, options), callback) - }, - addReadableStream: streamify.transform(add), - addPullStream: pullify.transform(add), - addFromFs: (path, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(collectify(addFromFs)(path, options), callback) - }, - addFromURL: (url, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(collectify(addFromURL)(url, options), callback) - }, - addFromStream: (input, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(collectify(add)(input, options), callback) - }, - _addAsyncIterator: add, + return { + add: require('./add')(config), bitswap: require('./bitswap')(config), block: require('./block')(config), bootstrap: require('./bootstrap')(config), - cat: callbackify.variadic((path, options) => concatify(cat)(path, options)), - catReadableStream: streamify.readable(cat), - catPullStream: pullify.source(cat), - _catAsyncIterator: cat, - commands: callbackify.variadic(require('./commands')(config)), + cat: require('./cat')(config), + commands: require('./commands')(config), config: require('./config')(config), dag: require('./dag')(config), dht: require('./dht')(config), diag: require('./diag')(config), - dns: callbackify.variadic(require('./dns')(config)), + dns: require('./dns')(config), files: require('./files')(config), - get: callbackify.variadic(async (path, options) => { - const output = [] - - for await (const entry of get(path, options)) { - if (entry.content) { - entry.content = new BufferList(await all(entry.content)).slice() - } - - output.push(entry) - } - - return output - }), + get: require('./get')(config), getEndpointConfig: require('./get-endpoint-config')(config), - getReadableStream: streamify.readable(async function * (path, options) { - for await (const file of get(path, options)) { - if (file.content) { - const { content } = file - file.content = toStream((async function * () { - for await (const chunk of content) { - yield chunk.slice() // Convert bl to Buffer - } - })()) - } - - yield file - } - }), - getPullStream: pullify.source(async function * (path, options) { - for await (const file of get(path, options)) { - if (file.content) { - const { content } = file - file.content = toPullStream((async function * () { - for await (const chunk of content) { - yield chunk.slice() // Convert bl to Buffer - } - })()) - } - - yield file - } - }), - _getAsyncIterator: get, - id: callbackify.variadic(require('./id')(config)), + id: require('./id')(config), key: require('./key')(config), log: require('./log')(config), - ls: callbackify.variadic((path, options) => collectify(ls)(path, options)), - lsReadableStream: streamify.readable(ls), - lsPullStream: pullify.source(ls), - _lsAsyncIterator: ls, - mount: callbackify.variadic(require('./mount')(config)), + ls: require('./ls')(config), + mount: require('./mount')(config), name: require('./name')(config), object: require('./object')(config), pin: require('./pin')(config), - ping: callbackify.variadic(collectify(ping)), - pingReadableStream: streamify.readable(ping), - pingPullStream: pullify.source(ping), + ping: require('./ping')(config), pubsub: require('./pubsub')(config), - refs: callbackify.variadic((path, options) => collectify(refs)(path, options)), - refsReadableStream: streamify.readable(refs), - refsPullStream: pullify.source(refs), - _refsAsyncIterator: refs, + refs: require('./refs')(config), repo: require('./repo')(config), - resolve: callbackify.variadic(require('./resolve')(config)), + resolve: require('./resolve')(config), stats: require('./stats')(config), - stop: callbackify.variadic(require('./stop')(config)), - shutdown: callbackify.variadic(require('./stop')(config)), + stop: require('./stop')(config), + shutdown: require('./stop')(config), swarm: require('./swarm')(config), - version: callbackify.variadic(require('./version')(config)) + version: require('./version')(config) } - - Object.assign(api.refs, { - local: callbackify.variadic(options => collectify(refs.local)(options)), - localReadableStream: streamify.readable(refs.local), - localPullStream: pullify.source(refs.local), - _localAsyncIterator: refs.local - }) - - return api } -Object.assign(ipfsClient, { isIPFS, Buffer, CID, multiaddr, multibase, multicodec, multihash, PeerId, PeerInfo }) +Object.assign(ipfsClient, { Buffer, CID, multiaddr, multibase, multicodec, multihash, globSource, urlSource }) module.exports = ipfsClient diff --git a/src/key/index.js b/src/key/index.js index 7293236f1..de12c732c 100644 --- a/src/key/index.js +++ b/src/key/index.js @@ -1,12 +1,10 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - gen: callbackify.variadic(require('./gen')(config)), - list: callbackify.variadic(require('./list')(config)), - rename: callbackify.variadic(require('./rename')(config)), - rm: callbackify.variadic(require('./rm')(config)), - export: callbackify.variadic(require('./export')(config)), - import: callbackify.variadic(require('./import')(config)) + gen: require('./gen')(config), + list: require('./list')(config), + rename: require('./rename')(config), + rm: require('./rm')(config), + export: require('./export')(config), + import: require('./import')(config) }) diff --git a/src/lib/converters.js b/src/lib/converters.js deleted file mode 100644 index 4f42b3175..000000000 --- a/src/lib/converters.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict' - -const toPull = require('async-iterator-to-pull-stream') -const all = require('it-all') -const toStream = require('it-to-stream') -const { Buffer } = require('buffer') - -exports.collectify = fn => (...args) => all(fn(...args)) - -exports.concatify = fn => async (...args) => Buffer.concat(await all(fn(...args))) - -exports.pullify = { - source: fn => (...args) => toPull(fn(...args)), - transform: fn => (...args) => toPull.transform(source => fn(source, ...args)) -} - -exports.streamify = { - readable: fn => (...args) => toStream(fn(...args), { objectMode: true }), - transform: fn => (...args) => toStream.transform(source => fn(source, ...args), { objectMode: true }) -} diff --git a/src/lib/stream-to-iterable.js b/src/lib/stream-to-iterable.js deleted file mode 100644 index 5e06a99c6..000000000 --- a/src/lib/stream-to-iterable.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict' - -module.exports = function toIterable (body) { - // Node.js stream - if (body[Symbol.asyncIterator]) return body - - // Browser ReadableStream - if (body.getReader) { - return (async function * () { - const reader = body.getReader() - - try { - while (true) { - const { done, value } = await reader.read() - if (done) return - yield value - } - } finally { - reader.releaseLock() - } - })() - } - - throw new Error('unknown stream') -} diff --git a/src/log/index.js b/src/log/index.js index f7d94f910..3eea39fd5 100644 --- a/src/log/index.js +++ b/src/log/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ tail: require('./tail')(config), - ls: callbackify.variadic(require('./ls')(config)), - level: callbackify.variadic(require('./level')(config)) + ls: require('./ls')(config), + level: require('./level')(config) }) diff --git a/src/log/tail.js b/src/log/tail.js index 00708e9b9..74b72b2c2 100644 --- a/src/log/tail.js +++ b/src/log/tail.js @@ -2,7 +2,7 @@ const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * tail (options) { diff --git a/src/ls.js b/src/ls.js index 43e92a54a..ec7e37dfb 100644 --- a/src/ls.js +++ b/src/ls.js @@ -2,6 +2,8 @@ const { Buffer } = require('buffer') const CID = require('cids') +const ndjson = require('iterable-ndjson') +const toIterable = require('stream-to-it/source') const configure = require('./lib/configure') module.exports = configure(({ ky }) => { @@ -10,18 +12,11 @@ module.exports = configure(({ ky }) => { const searchParams = new URLSearchParams() searchParams.set('arg', `${Buffer.isBuffer(path) ? new CID(path) : path}`) + searchParams.set('stream', options.stream == null ? true : options.stream) - if (options.long !== undefined) { - searchParams.set('long', options.long) - } - - if (options.unsorted !== undefined) { - searchParams.set('unsorted', options.unsorted) - } - - if (options.recursive !== undefined) { - searchParams.set('recursive', options.recursive) - } + if (options.long != null) searchParams.set('long', options.long) + if (options.unsorted != null) searchParams.set('unsorted', options.unsorted) + if (options.recursive != null) searchParams.set('recursive', options.recursive) const res = await ky.post('ls', { timeout: options.timeout, @@ -30,48 +25,49 @@ module.exports = configure(({ ky }) => { searchParams }) - let result = await res.json() - - result = result.Objects - if (!result) { - throw new Error('expected .Objects in results') - } - - result = result[0] - if (!result) { - throw new Error('expected one array in results.Objects') - } + for await (let result of ndjson(toIterable(res.body))) { + result = result.Objects - result = result.Links - if (!Array.isArray(result)) { - throw new Error('expected one array in results.Objects[0].Links') - } + if (!result) { + throw new Error('expected .Objects in results') + } - for (const link of result) { - const entry = { - name: link.Name, - path: path + '/' + link.Name, - size: link.Size, - hash: link.Hash, - type: typeOf(link), - depth: link.Depth || 1 + result = result[0] + if (!result) { + throw new Error('expected one array in results.Objects') } - if (link.Mode) { - entry.mode = parseInt(link.Mode, 8) + result = result.Links + if (!Array.isArray(result)) { + throw new Error('expected one array in results.Objects[0].Links') } - if (link.Mtime !== undefined && link.Mtime !== null) { - entry.mtime = { - secs: link.Mtime + for (const link of result) { + const entry = { + name: link.Name, + path: path + '/' + link.Name, + size: link.Size, + cid: new CID(link.Hash), + type: typeOf(link), + depth: link.Depth || 1 } - if (link.MtimeNsecs !== undefined && link.MtimeNsecs !== null) { - entry.mtime.nsecs = link.MtimeNsecs + if (link.Mode) { + entry.mode = parseInt(link.Mode, 8) } - } - yield entry + if (link.Mtime !== undefined && link.Mtime !== null) { + entry.mtime = { + secs: link.Mtime + } + + if (link.MtimeNsecs !== undefined && link.MtimeNsecs !== null) { + entry.mtime.nsecs = link.MtimeNsecs + } + } + + yield entry + } } } }) diff --git a/src/name/index.js b/src/name/index.js index 7a6837b82..65d1acca2 100644 --- a/src/name/index.js +++ b/src/name/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - publish: callbackify.variadic(require('./publish')(config)), - resolve: callbackify.variadic(require('./resolve')(config)), + publish: require('./publish')(config), + resolve: require('./resolve')(config), pubsub: require('./pubsub')(config) }) diff --git a/src/name/pubsub/index.js b/src/name/pubsub/index.js index 70db19874..14ffd8852 100644 --- a/src/name/pubsub/index.js +++ b/src/name/pubsub/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - cancel: callbackify.variadic(require('./cancel')(config)), - state: callbackify.variadic(require('./state')(config)), - subs: callbackify.variadic(require('./subs')(config)) + cancel: require('./cancel')(config), + state: require('./state')(config), + subs: require('./subs')(config) }) diff --git a/src/name/resolve.js b/src/name/resolve.js index b6e8db47e..e7eb20b4f 100644 --- a/src/name/resolve.js +++ b/src/name/resolve.js @@ -1,13 +1,16 @@ 'use strict' +const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { - return async (path, options) => { + return async function * (path, options) { options = options || {} const searchParams = new URLSearchParams(options.searchParams) searchParams.set('arg', path) + searchParams.set('stream', options.stream == null ? true : options.stream) if (options.dhtRecordCount != null) searchParams.set('dht-record-count', options.dhtRecordCount) if (options.dhtTimeout != null) searchParams.set('dht-timeout', options.dhtTimeout) if (options.noCache != null) searchParams.set('nocache', options.noCache) @@ -18,8 +21,10 @@ module.exports = configure(({ ky }) => { signal: options.signal, headers: options.headers, searchParams - }).json() + }) - return res.Path + for await (const result of ndjson(toIterable(res.body))) { + yield result.Path + } } }) diff --git a/src/object/data.js b/src/object/data.js index 48291f722..5f40e0450 100644 --- a/src/object/data.js +++ b/src/object/data.js @@ -3,24 +3,21 @@ const { Buffer } = require('buffer') const CID = require('cids') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') module.exports = configure(({ ky }) => { - return async function * data (cid, options) { + return async function data (cid, options) { options = options || {} const searchParams = new URLSearchParams(options.searchParams) searchParams.set('arg', `${Buffer.isBuffer(cid) ? new CID(cid) : cid}`) - const res = await ky.post('object/data', { + const data = await ky.post('object/data', { timeout: options.timeout, signal: options.signal, headers: options.headers, searchParams - }) + }).arrayBuffer() - for await (const chunk of toIterable(res.body)) { - yield Buffer.from(chunk) - } + return Buffer.from(data) } }) diff --git a/src/object/index.js b/src/object/index.js index dac85598c..ee7c85dd6 100644 --- a/src/object/index.js +++ b/src/object/index.js @@ -1,14 +1,11 @@ 'use strict' -const callbackify = require('callbackify') -const { concatify } = require('../lib/converters') - module.exports = config => ({ - data: callbackify.variadic(concatify(require('./data')(config))), - get: callbackify.variadic(require('./get')(config)), - links: callbackify.variadic(require('./links')(config)), - new: callbackify.variadic(require('./new')(config)), + data: require('./data')(config), + get: require('./get')(config), + links: require('./links')(config), + new: require('./new')(config), patch: require('./patch')(config), - put: callbackify.variadic(require('./put')(config)), - stat: callbackify.variadic(require('./stat')(config)) + put: require('./put')(config), + stat: require('./stat')(config) }) diff --git a/src/object/patch/index.js b/src/object/patch/index.js index 5711200ec..f886e288f 100644 --- a/src/object/patch/index.js +++ b/src/object/patch/index.js @@ -1,10 +1,8 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - addLink: callbackify.variadic(require('./add-link')(config)), - appendData: callbackify.variadic(require('./append-data')(config)), - rmLink: callbackify.variadic(require('./rm-link')(config)), - setData: callbackify.variadic(require('./set-data')(config)) + addLink: require('./add-link')(config), + appendData: require('./append-data')(config), + rmLink: require('./rm-link')(config), + setData: require('./set-data')(config) }) diff --git a/src/pin/add.js b/src/pin/add.js index 74eb47a2d..41b119fe8 100644 --- a/src/pin/add.js +++ b/src/pin/add.js @@ -1,13 +1,15 @@ 'use strict' +const CID = require('cids') const configure = require('../lib/configure') module.exports = configure(({ ky }) => { - return async (path, options) => { + return async (paths, options) => { + paths = Array.isArray(paths) ? paths : [paths] options = options || {} const searchParams = new URLSearchParams(options.searchParams) - searchParams.set('arg', `${path}`) + paths.forEach(path => searchParams.append('arg', `${path}`)) if (options.recursive != null) searchParams.set('recursive', options.recursive) const res = await ky.post('pin/add', { @@ -17,6 +19,6 @@ module.exports = configure(({ ky }) => { searchParams }).json() - return (res.Pins || []).map(hash => ({ hash })) + return (res.Pins || []).map(cid => ({ cid: new CID(cid) })) } }) diff --git a/src/pin/index.js b/src/pin/index.js index c62d3a46a..ad43057ec 100644 --- a/src/pin/index.js +++ b/src/pin/index.js @@ -1,9 +1,7 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - add: callbackify.variadic(require('./add')(config)), - rm: callbackify.variadic(require('./rm')(config)), - ls: callbackify.variadic(require('./ls')(config)) + add: require('./add')(config), + rm: require('./rm')(config), + ls: require('./ls')(config) }) diff --git a/src/pin/ls.js b/src/pin/ls.js index 9c42fd71d..f9e0968ac 100644 --- a/src/pin/ls.js +++ b/src/pin/ls.js @@ -1,9 +1,12 @@ 'use strict' +const ndjson = require('iterable-ndjson') +const CID = require('cids') const configure = require('../lib/configure') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { - return async (path, options) => { + return async function * ls (path, options) { if (path && path.type) { options = path path = null @@ -14,16 +17,25 @@ module.exports = configure(({ ky }) => { options = options || {} const searchParams = new URLSearchParams(options.searchParams) + searchParams.set('stream', options.stream == null ? true : options.stream) path.forEach(p => searchParams.append('arg', `${p}`)) if (options.type) searchParams.set('type', options.type) - const { Keys } = await ky.post('pin/ls', { + const res = await ky.post('pin/ls', { timeout: options.timeout, signal: options.signal, headers: options.headers, searchParams - }).json() + }) - return Object.keys(Keys).map(hash => ({ hash, type: Keys[hash].Type })) + for await (const pin of ndjson(toIterable(res.body))) { + if (pin.Keys) { // non-streaming response + for (const cid of Object.keys(pin.Keys)) { + yield { cid: new CID(cid), type: pin.Keys[cid].Type } + } + return + } + yield { cid: new CID(pin.Cid), type: pin.Type } + } } }) diff --git a/src/pin/rm.js b/src/pin/rm.js index 9f75307ff..83fbca93c 100644 --- a/src/pin/rm.js +++ b/src/pin/rm.js @@ -1,5 +1,6 @@ 'use strict' +const CID = require('cids') const configure = require('../lib/configure') module.exports = configure(({ ky }) => { @@ -17,6 +18,6 @@ module.exports = configure(({ ky }) => { searchParams }).json() - return (res.Pins || []).map(hash => ({ hash })) + return (res.Pins || []).map(cid => ({ cid: new CID(cid) })) } }) diff --git a/src/ping.js b/src/ping.js index 33b275617..332120934 100644 --- a/src/ping.js +++ b/src/ping.js @@ -2,7 +2,7 @@ const ndjson = require('iterable-ndjson') const configure = require('./lib/configure') -const toIterable = require('./lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const toCamel = require('./lib/object-to-camel') module.exports = configure(({ ky }) => { diff --git a/src/pubsub/index.js b/src/pubsub/index.js index 2738bd5ac..e369bb6f3 100644 --- a/src/pubsub/index.js +++ b/src/pubsub/index.js @@ -1,50 +1,9 @@ 'use strict' -const nodeify = require('promise-nodeify') - -// This file is temporary and for compatibility with legacy usage -module.exports = (send, options) => { - if (typeof send !== 'function') { - options = send - } - - const ls = require('./ls')(options) - const peers = require('./peers')(options) - const publish = require('./publish')(options) - const subscribe = require('./subscribe')(options) - const unsubscribe = require('./unsubscribe')(options) - - return { - ls: (options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(ls(options), callback) - }, - peers: (topic, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(peers(topic, options), callback) - }, - publish: (topic, data, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(publish(topic, data, options), callback) - }, - subscribe: (topic, handler, options, callback) => { - if (typeof options === 'function') { - callback = options - options = {} - } - return nodeify(subscribe(topic, handler, options), callback) - }, - unsubscribe: (topic, handler, callback) => { - return nodeify(unsubscribe(topic, handler), callback) - } - } -} +module.exports = config => ({ + ls: require('./ls')(config), + peers: require('./peers')(config), + publish: require('./publish')(config), + subscribe: require('./subscribe')(config), + unsubscribe: require('./unsubscribe')(config) +}) diff --git a/src/pubsub/subscribe.js b/src/pubsub/subscribe.js index 7950a274a..188a91664 100644 --- a/src/pubsub/subscribe.js +++ b/src/pubsub/subscribe.js @@ -1,12 +1,11 @@ 'use strict' const ndjson = require('iterable-ndjson') -const explain = require('explain-error') const bs58 = require('bs58') const { Buffer } = require('buffer') const log = require('debug')('ipfs-http-client:pubsub:subscribe') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const SubscriptionTracker = require('./subscription-tracker') module.exports = configure((config) => { @@ -71,7 +70,8 @@ async function readMessages (msgStream, { onMessage, onEnd, onError }) { topicIDs: msg.topicIDs }) } catch (err) { - onError(explain(err, 'Failed to parse pubsub message'), false, msg) // Not fatal + err.message = `Failed to parse pubsub message: ${err.message}` + onError(err, false, msg) // Not fatal } } } catch (err) { diff --git a/src/refs/index.js b/src/refs/index.js index b15f2cd0c..05a636feb 100644 --- a/src/refs/index.js +++ b/src/refs/index.js @@ -4,7 +4,7 @@ const configure = require('../lib/configure') const { Buffer } = require('buffer') const CID = require('cids') const ndjson = require('iterable-ndjson') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const toCamel = require('../lib/object-to-camel') module.exports = config => { diff --git a/src/refs/local.js b/src/refs/local.js index afa1630ea..98e0fce40 100644 --- a/src/refs/local.js +++ b/src/refs/local.js @@ -2,7 +2,7 @@ const configure = require('../lib/configure') const ndjson = require('iterable-ndjson') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') const toCamel = require('../lib/object-to-camel') module.exports = configure(({ ky }) => { diff --git a/src/repo/gc.js b/src/repo/gc.js index 3d92dee4c..fc60a46bc 100644 --- a/src/repo/gc.js +++ b/src/repo/gc.js @@ -3,7 +3,7 @@ const CID = require('cids') const ndjson = require('iterable-ndjson') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * gc (peerId, options) { diff --git a/src/repo/index.js b/src/repo/index.js index fe58504ad..4785f55db 100644 --- a/src/repo/index.js +++ b/src/repo/index.js @@ -1,10 +1,7 @@ 'use strict' -const callbackify = require('callbackify') -const { collectify } = require('../lib/converters') - module.exports = config => ({ - gc: callbackify.variadic(collectify(require('./gc')(config))), - stat: callbackify.variadic(require('./stat')(config)), - version: callbackify.variadic(require('./version')(config)) + gc: require('./gc')(config), + stat: require('./stat')(config), + version: require('./version')(config) }) diff --git a/src/stats/bw.js b/src/stats/bw.js index f68ad23ba..12bc6d44a 100644 --- a/src/stats/bw.js +++ b/src/stats/bw.js @@ -3,7 +3,7 @@ const ndjson = require('iterable-ndjson') const Big = require('bignumber.js') const configure = require('../lib/configure') -const toIterable = require('../lib/stream-to-iterable') +const toIterable = require('stream-to-it/source') module.exports = configure(({ ky }) => { return async function * bw (options) { diff --git a/src/stats/index.js b/src/stats/index.js index 4351d79e2..d13a534a7 100644 --- a/src/stats/index.js +++ b/src/stats/index.js @@ -1,19 +1,7 @@ 'use strict' -const callbackify = require('callbackify') -const { streamify, pullify } = require('../lib/converters') - -module.exports = config => { - const bw = require('./bw')(config) - return { - bitswap: callbackify.variadic(require('../bitswap/stat')(config)), - bw: callbackify.variadic(async options => { - for await (const stats of bw(options)) { - return stats - } - }), - bwReadableStream: streamify.readable(bw), - bwPullStream: pullify.source(bw), - repo: callbackify.variadic(require('../repo/stat')(config)) - } -} +module.exports = config => ({ + bitswap: require('../bitswap/stat')(config), + bw: require('./bw')(config), + repo: require('../repo/stat')(config) +}) diff --git a/src/swarm/addrs.js b/src/swarm/addrs.js index a786d32cb..25bd98d02 100644 --- a/src/swarm/addrs.js +++ b/src/swarm/addrs.js @@ -1,7 +1,6 @@ 'use strict' -const PeerInfo = require('peer-info') -const PeerId = require('peer-id') +const CID = require('cids') const multiaddr = require('multiaddr') const configure = require('../lib/configure') @@ -16,10 +15,9 @@ module.exports = configure(({ ky }) => { searchParams: options.searchParams }).json() - return Object.keys(res.Addrs).map(id => { - const peerInfo = new PeerInfo(PeerId.createFromB58String(id)) - res.Addrs[id].forEach(addr => peerInfo.multiaddrs.add(multiaddr(addr))) - return peerInfo - }) + return Object.keys(res.Addrs).map(id => ({ + id: new CID(id), + addrs: (res.Addrs[id] || []).map(a => multiaddr(a)) + })) } }) diff --git a/src/swarm/disconnect.js b/src/swarm/disconnect.js index a3d60d172..e83ca0dd4 100644 --- a/src/swarm/disconnect.js +++ b/src/swarm/disconnect.js @@ -8,7 +8,7 @@ module.exports = configure(({ ky }) => { options = options || {} const searchParams = new URLSearchParams(options.searchParams) - addrs.forEach(addr => searchParams.append('arg', addr)) + addrs.forEach(addr => searchParams.append('arg', `${addr}`)) const res = await ky.post('swarm/disconnect', { timeout: options.timeout, diff --git a/src/swarm/index.js b/src/swarm/index.js index e86a7c22c..84648439d 100644 --- a/src/swarm/index.js +++ b/src/swarm/index.js @@ -1,11 +1,9 @@ 'use strict' -const callbackify = require('callbackify') - module.exports = config => ({ - addrs: callbackify.variadic(require('./addrs')(config)), - connect: callbackify.variadic(require('./connect')(config)), - disconnect: callbackify.variadic(require('./disconnect')(config)), - localAddrs: callbackify.variadic(require('./localAddrs')(config)), - peers: callbackify.variadic(require('./peers')(config)) + addrs: require('./addrs')(config), + connect: require('./connect')(config), + disconnect: require('./disconnect')(config), + localAddrs: require('./localAddrs')(config), + peers: require('./peers')(config) }) diff --git a/src/swarm/peers.js b/src/swarm/peers.js index 3b897348c..f10035e06 100644 --- a/src/swarm/peers.js +++ b/src/swarm/peers.js @@ -1,7 +1,7 @@ 'use strict' const multiaddr = require('multiaddr') -const PeerId = require('peer-id') +const CID = require('cids') const configure = require('../lib/configure') module.exports = configure(({ ky }) => { @@ -25,7 +25,7 @@ module.exports = configure(({ ky }) => { const info = {} try { info.addr = multiaddr(peer.Addr) - info.peer = PeerId.createFromB58String(peer.Peer) + info.peer = new CID(peer.Peer) } catch (error) { info.error = error info.rawPeerInfo = peer diff --git a/test/custom-headers.spec.js b/test/custom-headers.spec.js index ce14a01e5..5e88b72a6 100644 --- a/test/custom-headers.spec.js +++ b/test/custom-headers.spec.js @@ -1,7 +1,7 @@ /* eslint-env mocha */ 'use strict' -const isNode = require('detect-node') +const { isNode } = require('ipfs-utils/src/env') const { expect } = require('interface-ipfs-core/src/utils/mocha') const ipfsClient = require('../src') diff --git a/test/exports.spec.js b/test/exports.spec.js index f97707e13..0df770da6 100644 --- a/test/exports.spec.js +++ b/test/exports.spec.js @@ -1,28 +1,22 @@ /* eslint-env mocha, browser */ 'use strict' -const isIPFS = require('is-ipfs') const CID = require('cids') const multiaddr = require('multiaddr') const multibase = require('multibase') const multicodec = require('multicodec') const multihash = require('multihashes') -const PeerId = require('peer-id') -const PeerInfo = require('peer-info') const { expect } = require('interface-ipfs-core/src/utils/mocha') const IpfsHttpClient = require('../') describe('exports', () => { it('should export the expected types and utilities', () => { - expect(IpfsHttpClient.isIPFS).to.equal(isIPFS) expect(IpfsHttpClient.Buffer).to.equal(Buffer) expect(IpfsHttpClient.CID).to.equal(CID) expect(IpfsHttpClient.multiaddr).to.equal(multiaddr) expect(IpfsHttpClient.multibase).to.equal(multibase) expect(IpfsHttpClient.multicodec).to.equal(multicodec) expect(IpfsHttpClient.multihash).to.equal(multihash) - expect(IpfsHttpClient.PeerId).to.equal(PeerId) - expect(IpfsHttpClient.PeerInfo).to.equal(PeerInfo) }) }) diff --git a/test/files-mfs.spec.js b/test/files-mfs.spec.js index 0e3d6b1af..edc7698e1 100644 --- a/test/files-mfs.spec.js +++ b/test/files-mfs.spec.js @@ -5,13 +5,11 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const loadFixture = require('aegir/fixtures') const mh = require('multihashes') -const CID = require('cids') -const values = require('pull-stream/sources/values') -const pull = require('pull-stream/pull') -const collect = require('pull-stream/sinks/collect') +const all = require('it-all') +const pipe = require('it-pipe') +const { TimeoutError } = require('ky-universal') const f = require('./utils/factory') -const expectTimeout = require('./utils/expect-timeout') const testfile = loadFixture('test/fixtures/testfile.txt') @@ -41,10 +39,10 @@ describe('.files (the MFS API part)', function () { after(() => f.clean()) it('.add file for testing', async () => { - const res = await ipfs.add(testfile) + const res = await all(ipfs.add(testfile)) expect(res).to.have.length(1) - expect(res[0].hash).to.equal(expectedMultihash) + expect(res[0].cid.toString()).to.equal(expectedMultihash) expect(res[0].path).to.equal(expectedMultihash) }) @@ -54,10 +52,10 @@ describe('.files (the MFS API part)', function () { const expectedBufferMultihash = 'QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX' const file = Buffer.from('hello') - const res = await ipfs.add(file) + const res = await all(ipfs.add(file)) expect(res).to.have.length(1) - expect(res[0].hash).to.equal(expectedBufferMultihash) + expect(res[0].cid.toString()).to.equal(expectedBufferMultihash) expect(res[0].path).to.equal(expectedBufferMultihash) }) @@ -65,10 +63,10 @@ describe('.files (the MFS API part)', function () { const expectedHash = 'QmWfVY9y3xjsixTgbd9AorQxH7VtMpzfx2HaWtsoUYecaX' const content = Buffer.from('hello') - const res = await ipfs.add([{ path: '', content }]) + const res = await all(ipfs.add([{ path: '', content }])) expect(res).to.have.length(1) - expect(res[0].hash).to.equal(expectedHash) + expect(res[0].cid.toString()).to.equal(expectedHash) expect(res[0].path).to.equal(expectedHash) }) @@ -76,39 +74,40 @@ describe('.files (the MFS API part)', function () { const expectedCid = 'bafybeifogzovjqrcxvgt7g36y7g63hvwvoakledwk4b2fr2dl4wzawpnny' const options = { cidVersion: 1, rawLeaves: false } - const res = await ipfs.add(testfile, options) + const res = await all(ipfs.add(testfile, options)) expect(res).to.have.length(1) - expect(res[0].hash).to.equal(expectedCid) + expect(res[0].cid.toString()).to.equal(expectedCid) expect(res[0].path).to.equal(expectedCid) }) it('.add with only-hash=true', async () => { const content = String(Math.random() + Date.now()) - const files = await ipfs.add(Buffer.from(content), { onlyHash: true }) + const files = await all(ipfs.add(Buffer.from(content), { onlyHash: true })) expect(files).to.have.length(1) // 'ipfs.object.get()' should timeout because content wasn't actually added - await expectTimeout(ipfs.object.get(files[0].hash), 4000) + return expect(ipfs.object.get(files[0].cid, { timeout: 2000 })) + .to.be.rejectedWith(TimeoutError) }) it('.add with options', async () => { - const res = await ipfs.add(testfile, { pin: false }) + const res = await all(ipfs.add(testfile, { pin: false })) expect(res).to.have.length(1) - expect(res[0].hash).to.equal(expectedMultihash) + expect(res[0].cid.toString()).to.equal(expectedMultihash) expect(res[0].path).to.equal(expectedMultihash) }) it('.add pins by default', async () => { const newContent = Buffer.from(String(Math.random())) - const initialPins = await ipfs.pin.ls() + const initialPins = await all(ipfs.pin.ls()) - await ipfs.add(newContent) + await all(ipfs.add(newContent)) - const pinsAfterAdd = await ipfs.pin.ls() + const pinsAfterAdd = await all(ipfs.pin.ls()) expect(pinsAfterAdd.length).to.eql(initialPins.length + 1) }) @@ -116,11 +115,11 @@ describe('.files (the MFS API part)', function () { it('.add with pin=false', async () => { const newContent = Buffer.from(String(Math.random())) - const initialPins = await ipfs.pin.ls() + const initialPins = await all(ipfs.pin.ls()) - await ipfs.add(newContent, { pin: false }) + await all(ipfs.add(newContent, { pin: false })) - const pinsAfterAdd = await ipfs.pin.ls() + const pinsAfterAdd = await all(ipfs.pin.ls()) expect(pinsAfterAdd.length).to.eql(initialPins.length) }) @@ -134,10 +133,10 @@ describe('.files (the MFS API part)', function () { } const options = { hashAlg: name, rawLeaves: false } - const res = await ipfs.add([file], options) + const res = await all(ipfs.add([file], options)) expect(res).to.have.length(1) - const cid = new CID(res[0].hash) + const { cid } = res[0] expect(mh.decode(cid.multihash).name).to.equal(name) }) }) @@ -151,7 +150,7 @@ describe('.files (the MFS API part)', function () { progress = p } - const res = await ipfs.add(testfile, { progress: progressHandler }) + const res = await all(ipfs.add(testfile, { progress: progressHandler })) expect(res).to.have.length(1) expect(progress).to.be.equal(testfile.byteLength) @@ -168,7 +167,7 @@ describe('.files (the MFS API part)', function () { } // TODO: needs to be using a big file - const res = await ipfs.add(testfile, { progress: progressHandler }) + const res = await all(ipfs.add(testfile, { progress: progressHandler })) expect(res).to.have.length(1) expect(progress).to.be.equal(testfile.byteLength) @@ -185,7 +184,7 @@ describe('.files (the MFS API part)', function () { } // TODO: needs to be using a directory - const res = await ipfs.add(testfile, { progress: progressHandler }) + const res = await all(ipfs.add(testfile, { progress: progressHandler })) expect(res).to.have.length(1) expect(progress).to.be.equal(testfile.byteLength) @@ -193,7 +192,7 @@ describe('.files (the MFS API part)', function () { }) it('.add without progress options', async () => { - const res = await ipfs.add(testfile) + const res = await all(ipfs.add(testfile)) expect(res).to.have.length(1) }) @@ -207,44 +206,35 @@ describe('.files (the MFS API part)', function () { } const options = { hashAlg: name, rawLeaves: false } - const res = await ipfs.add([file], options) + const res = await all(ipfs.add([file], options)) expect(res).to.have.length(1) - const cid = new CID(res[0].hash) + const { cid } = res[0] expect(mh.decode(cid.multihash).name).to.equal(name) }) }) - it('.addPullStream with object chunks and pull stream content', (done) => { + it('.add with object chunks and iterable content', async () => { const expectedCid = 'QmRf22bZar3WKmojipms22PkXH1MZGmvsqzQtuSvQE3uhm' - pull( - values([{ content: values([Buffer.from('test')]) }]), - ipfs.addPullStream(), - collect((err, res) => { - expect(err).to.not.exist() - - expect(res).to.have.length(1) - expect(res[0]).to.deep.equal({ path: expectedCid, hash: expectedCid, size: 12 }) - done() - }) + const res = await pipe( + [{ content: [Buffer.from('test')] }], + ipfs.add, + all ) - }) - - it('.add with pull stream', async () => { - const expectedCid = 'QmRf22bZar3WKmojipms22PkXH1MZGmvsqzQtuSvQE3uhm' - const res = await ipfs.add(values([Buffer.from('test')])) expect(res).to.have.length(1) - expect(res[0]).to.deep.equal({ path: expectedCid, hash: expectedCid, size: 12 }) + res[0].cid = res[0].cid.toString() + expect(res[0]).to.deep.equal({ path: expectedCid, cid: expectedCid, size: 12 }) }) - it('.add with array of objects with pull stream content', async () => { + it('.add with iterable', async () => { const expectedCid = 'QmRf22bZar3WKmojipms22PkXH1MZGmvsqzQtuSvQE3uhm' - const res = await ipfs.add([{ content: values([Buffer.from('test')]) }]) + const res = await all(ipfs.add([Buffer.from('test')])) expect(res).to.have.length(1) - expect(res[0]).to.eql({ path: expectedCid, hash: expectedCid, size: 12 }) + res[0].cid = res[0].cid.toString() + expect(res[0]).to.deep.equal({ path: expectedCid, cid: expectedCid, size: 12 }) }) it('files.mkdir', async () => { @@ -315,7 +305,7 @@ describe('.files (the MFS API part)', function () { await ipfs.files.write(file, Buffer.from('Hello, world'), { create: true }) - const files = await ipfs.files.ls(folder) + const files = await all(ipfs.files.ls(folder)) expect(files.length).to.equal(1) }) @@ -324,7 +314,7 @@ describe('.files (the MFS API part)', function () { const folder = `test-folder-${Math.random()}` await ipfs.files.mkdir(`/${folder}`) - const files = await ipfs.files.ls() + const files = await all(ipfs.files.ls()) expect(files.find(file => file.name === folder)).to.be.ok() }) @@ -334,7 +324,7 @@ describe('.files (the MFS API part)', function () { create: true }) - const buf = await ipfs.files.read('/test-folder/test-file-2.txt') + const buf = Buffer.concat(await all(ipfs.files.read('/test-folder/test-file-2.txt'))) expect(buf.toString()).to.be.equal('hello world') }) @@ -342,7 +332,7 @@ describe('.files (the MFS API part)', function () { it('files.write without options', async () => { await ipfs.files.write('/test-folder/test-file-2.txt', Buffer.from('hello world')) - const buf = await ipfs.files.read('/test-folder/test-file-2.txt') + const buf = Buffer.concat(await all(ipfs.files.read('/test-folder/test-file-2.txt'))) expect(buf.toString()).to.be.equal('hello world') }) @@ -357,9 +347,10 @@ describe('.files (the MFS API part)', function () { }) const stats = await ipfs.files.stat(file) + stats.cid = stats.cid.toString() expect(stats).to.deep.equal({ - hash: 'QmQhouoDPAnzhVM148yCa9CbUXK65wSEAZBtgrLGHtmdmP', + cid: 'QmQhouoDPAnzhVM148yCa9CbUXK65wSEAZBtgrLGHtmdmP', size: 12, cumulativeSize: 70, blocks: 1, @@ -383,7 +374,7 @@ describe('.files (the MFS API part)', function () { await ipfs.files.write(file, testfile, { create: true }) - const buf = await ipfs.files.read(file) + const buf = Buffer.concat(await all(ipfs.files.read(file))) expect(Buffer.from(buf)).to.deep.equal(testfile) }) diff --git a/test/get.spec.js b/test/get.spec.js index a6fb3aaa4..c303179c8 100644 --- a/test/get.spec.js +++ b/test/get.spec.js @@ -5,6 +5,8 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const loadFixture = require('aegir/fixtures') +const all = require('it-all') +const concat = require('it-concat') const f = require('./utils/factory') @@ -24,35 +26,37 @@ describe('.get (specific go-ipfs features)', function () { before(async () => { ipfs = (await f.spawn()).api - await ipfs.add(smallFile.data) + await all(ipfs.add(smallFile.data)) }) after(() => f.clean()) it('no compression args', async () => { - const files = await ipfs.get(smallFile.cid) + const files = await all(ipfs.get(smallFile.cid)) expect(files).to.be.length(1) - expect(files[0].content.toString()).to.contain(smallFile.data.toString()) + const content = await concat(files[0].content) + expect(content.toString()).to.contain(smallFile.data.toString()) }) it('archive true', async () => { - const files = await ipfs.get(smallFile.cid, { archive: true }) + const files = await all(ipfs.get(smallFile.cid, { archive: true })) expect(files).to.be.length(1) - expect(files[0].content.toString()).to.contain(smallFile.data.toString()) + const content = await concat(files[0].content) + expect(content.toString()).to.contain(smallFile.data.toString()) }) it('err with out of range compression level', async () => { - await expect(ipfs.get(smallFile.cid, { + await expect(all(ipfs.get(smallFile.cid, { compress: true, compressionLevel: 10 - })).to.be.rejectedWith('compression level must be between 1 and 9') + }))).to.be.rejectedWith('compression level must be between 1 and 9') }) // TODO Understand why this test started failing it.skip('with compression level', async () => { - await ipfs.get(smallFile.cid, { compress: true, 'compression-level': 1 }) + await all(ipfs.get(smallFile.cid, { compress: true, 'compression-level': 1 })) }) it('add path containing "+"s (for testing get)', async () => { @@ -60,17 +64,17 @@ describe('.get (specific go-ipfs features)', function () { const subdir = 'tmp/c++files' const expectedCid = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff' const path = `${subdir}/${filename}` - const files = await ipfs.add([{ + const files = await all(ipfs.add([{ path, content: Buffer.from(path) - }]) + }])) - expect(files[2].hash).to.equal(expectedCid) + expect(files[2].cid.toString()).to.equal(expectedCid) }) it('get path containing "+"s', async () => { const cid = 'QmPkmARcqjo5fqK1V1o8cFsuaXxWYsnwCNLJUYS4KeZyff' - const files = await ipfs.get(cid) + const files = await all(ipfs.get(cid)) expect(files).to.be.an('array').with.lengthOf(3) expect(files[0]).to.have.property('path', cid) diff --git a/test/interface.spec.js b/test/interface.spec.js index 796c1ae86..ebec1b0e9 100644 --- a/test/interface.spec.js +++ b/test/interface.spec.js @@ -3,7 +3,6 @@ const tests = require('interface-ipfs-core') const merge = require('merge-options') -const { isNode } = require('ipfs-utils/src/env') const { createFactory } = require('ipfsd-ctl') const { findBin } = require('ipfsd-ctl/src/utils') const isWindows = process.platform && process.platform === 'win32' @@ -25,6 +24,43 @@ describe('interface-ipfs-core tests', () => { } const commonFactory = createFactory(commonOptions) + tests.root(commonFactory, { + skip: [ + { + name: 'should add with mode as string', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mode as number', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as Date', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as { nsecs, secs }', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as timespec', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should add with mtime as hrtime', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should export a chunk of a file', + reason: 'TODO not implemented in go-ipfs yet' + }, + { + name: 'should ls with metadata', + reason: 'TODO not implemented in go-ipfs yet' + } + ] + }) + tests.bitswap(commonFactory) tests.block(commonFactory, { @@ -34,7 +70,18 @@ describe('interface-ipfs-core tests', () => { }] }) - tests.bootstrap(commonFactory) + tests.bootstrap(commonFactory, { + skip: [{ + name: 'should return a list containing the bootstrap peer when called with a valid arg (ip4)', + reason: 'TODO unskip when go-ipfs switches to p2p for libp2p keys' + }, { + name: 'should prevent duplicate inserts of bootstrap peers', + reason: 'TODO unskip when go-ipfs switches to p2p for libp2p keys' + }, { + name: 'should return a list containing the peer removed when called with a valid arg (ip4)', + reason: 'TODO unskip when go-ipfs switches to p2p for libp2p keys' + }] + }) tests.config(commonFactory, { skip: [ @@ -81,31 +128,21 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.dht(commonFactory, { + tests.dht(commonFactory) + + tests.files(commonFactory, { skip: [ - // dht.findpeer { - name: 'should fail to find other peer if peer does not exist', - reason: 'FIXME checking what is exactly go-ipfs returning https://github.com/ipfs/go-ipfs/issues/3862#issuecomment-294168090' + name: 'should ls directory', + reason: 'TODO unskip when go-ipfs supports --long https://github.com/ipfs/go-ipfs/pull/6528' }, - // dht.findprovs { - name: 'should take options to override timeout config', - reason: 'FIXME go-ipfs does not support a timeout option' + name: 'should list a file directly', + reason: 'TODO unskip when go-ipfs supports --long https://github.com/ipfs/go-ipfs/pull/6528' }, - // dht.get - { - name: 'should get a value after it was put on another node', - reason: 'FIXME go-ipfs errors with Error: key was not found (type 6) https://github.com/ipfs/go-ipfs/issues/3862' - } - ] - }) - - tests.filesMFS(commonFactory, { - skip: [ { - name: 'should ls directory with long option', - reason: 'TODO unskip when go-ipfs supports --long https://github.com/ipfs/go-ipfs/pull/6528' + name: 'should ls directory and include metadata', + reason: 'TODO not implemented in go-ipfs yet' }, { name: 'should read from outside of mfs', @@ -167,10 +204,6 @@ describe('interface-ipfs-core tests', () => { name: 'should respect metadata when copying from outside of mfs', reason: 'TODO not implemented in go-ipfs yet' }, - { - name: 'ls directory with long option should include metadata', - reason: 'TODO not implemented in go-ipfs yet' - }, { name: 'should have default mtime', reason: 'TODO not implemented in go-ipfs yet' @@ -270,57 +303,6 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.filesRegular(commonFactory, { - skip: [ - // .addFromFs - isNode ? null : { - name: 'addFromFs', - reason: 'Not designed to run in the browser' - }, - { - name: 'should add with mode as string', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should add with mode as number', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should add with mtime as Date', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should add with mtime as { nsecs, secs }', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should add with mtime as timespec', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should add with mtime as hrtime', - reason: 'TODO not implemented in go-ipfs yet' - }, - // .catPullStream - { - name: 'should export a chunk of a file', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should export a chunk of a file in a Pull Stream', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should export a chunk of a file in a Readable Stream', - reason: 'TODO not implemented in go-ipfs yet' - }, - { - name: 'should ls with metadata', - reason: 'TODO not implemented in go-ipfs yet' - } - ] - }) - tests.key(commonFactory, { skip: [ // key.export @@ -346,7 +328,6 @@ describe('interface-ipfs-core tests', () => { } )), { skip: [ - // stop { name: 'should resolve a record from peerid as cidv1 in base32', reason: 'TODO not implemented in go-ipfs yet: https://github.com/ipfs/go-ipfs/issues/5287' @@ -383,14 +364,6 @@ describe('interface-ipfs-core tests', () => { tests.ping(commonFactory, { skip: [ - { - name: 'should fail when pinging an unknown peer over pull stream', - reason: 'FIXME go-ipfs return success with text: Looking up peer ' - }, - { - name: 'should fail when pinging peer that is not available over readable stream', - reason: 'FIXME go-ipfs return success with text: Looking up peer ' - }, { name: 'should fail when pinging a peer that is not available', reason: 'FIXME go-ipfs return success with text: Looking up peer ' diff --git a/test/lib.stream-to-iterable.spec.js b/test/lib.stream-to-iterable.spec.js deleted file mode 100644 index 3ad326480..000000000 --- a/test/lib.stream-to-iterable.spec.js +++ /dev/null @@ -1,40 +0,0 @@ -/* eslint-env mocha */ -'use strict' - -const { expect } = require('interface-ipfs-core/src/utils/mocha') -const toIterable = require('../src/lib/stream-to-iterable') - -describe('lib/stream-to-iterable', () => { - it('should return input if already async iterable', () => { - const input = { [Symbol.asyncIterator] () { return this } } - expect(toIterable(input)).to.equal(input) - }) - - it('should convert reader to async iterable', async () => { - const inputData = [2, 31, 3, 4] - const input = { - getReader () { - let i = 0 - return { - read () { - return i === inputData.length - ? { done: true } - : { value: inputData[i++] } - }, - releaseLock () {} - } - } - } - - const chunks = [] - for await (const chunk of toIterable(input)) { - chunks.push(chunk) - } - - expect(chunks).to.eql(inputData) - }) - - it('should throw on unknown stream', () => { - expect(() => toIterable({})).to.throw('unknown stream') - }) -}) diff --git a/test/log.spec.js b/test/log.spec.js index 1a885028d..c56660d07 100644 --- a/test/log.spec.js +++ b/test/log.spec.js @@ -3,6 +3,7 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') +const all = require('it-all') const f = require('./utils/factory') describe('.log', function () { @@ -19,7 +20,7 @@ describe('.log', function () { it('.log.tail', async () => { const i = setInterval(async () => { try { - await ipfs.add(Buffer.from('just adding some data to generate logs')) + await all(ipfs.add(Buffer.from('just adding some data to generate logs'))) } catch (_) { // this can error if the test has finished and we're shutting down the node } diff --git a/test/node/swarm.js b/test/node/swarm.js index 9e0252a2c..89315f2fe 100644 --- a/test/node/swarm.js +++ b/test/node/swarm.js @@ -25,7 +25,7 @@ describe('.swarm.peers', function () { expect(res.length).to.equal(1) expect(res[0].error).to.not.exist() expect(res[0].addr.toString()).to.equal(response.Peers[0].Addr) - expect(res[0].peer.toB58String()).to.equal(response.Peers[0].Peer) + expect(res[0].peer.toString()).to.equal(response.Peers[0].Peer) expect(scope.isDone()).to.equal(true) }) @@ -43,7 +43,7 @@ describe('.swarm.peers', function () { expect(res.length).to.equal(1) expect(res[0].error).to.not.exist() expect(res[0].addr.toString()).to.equal(response.Peers[0].Addr) - expect(res[0].peer.toB58String()).to.equal(response.Peers[0].Peer) + expect(res[0].peer.toString()).to.equal(response.Peers[0].Peer) expect(scope.isDone()).to.equal(true) }) diff --git a/test/ping.spec.js b/test/ping.spec.js index 01636ed60..7076f208b 100644 --- a/test/ping.spec.js +++ b/test/ping.spec.js @@ -2,8 +2,7 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const pull = require('pull-stream/pull') -const collect = require('pull-stream/sinks/collect') +const all = require('it-all') const f = require('./utils/factory') @@ -34,7 +33,7 @@ describe('.ping', function () { after(() => f.clean()) it('.ping with default count', async () => { - const res = await ipfs.ping(otherId) + const res = await all(ipfs.ping(otherId)) expect(res).to.be.an('array') expect(res.filter(isPong)).to.have.lengthOf(10) res.forEach(packet => { @@ -46,7 +45,7 @@ describe('.ping', function () { }) it('.ping with count = 2', async () => { - const res = await ipfs.ping(otherId, { count: 2 }) + const res = await all(ipfs.ping(otherId, { count: 2 })) expect(res).to.be.an('array') expect(res.filter(isPong)).to.have.lengthOf(2) res.forEach(packet => { @@ -56,39 +55,4 @@ describe('.ping', function () { const resultMsg = res.find(packet => packet.text.includes('Average latency')) expect(resultMsg).to.exist() }) - - it('.pingPullStream', (done) => { - pull( - ipfs.pingPullStream(otherId, { count: 2 }), - collect((err, data) => { - expect(err).to.not.exist() - expect(data).to.be.an('array') - expect(data.filter(isPong)).to.have.lengthOf(2) - data.forEach(packet => { - expect(packet).to.have.keys('success', 'time', 'text') - expect(packet.time).to.be.a('number') - }) - const resultMsg = data.find(packet => packet.text.includes('Average latency')) - expect(resultMsg).to.exist() - done() - }) - ) - }) - - it('.pingReadableStream', (done) => { - let packetNum = 0 - ipfs.pingReadableStream(otherId, { count: 2 }) - .on('data', data => { - expect(data).to.be.an('object') - expect(data).to.have.keys('success', 'time', 'text') - if (isPong(data)) packetNum++ - }) - .on('error', err => { - expect(err).not.to.exist() - }) - .on('end', () => { - expect(packetNum).to.equal(2) - done() - }) - }) }) diff --git a/test/request-api.spec.js b/test/request-api.spec.js index c213193bb..1767b5914 100644 --- a/test/request-api.spec.js +++ b/test/request-api.spec.js @@ -2,16 +2,12 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const isNode = require('detect-node') +const { isNode } = require('ipfs-utils/src/env') const ipfsClient = require('../src/index.js') -const ndjson = require('ndjson') -const pump = require('pump') describe('\'deal with HTTP weirdness\' tests', () => { - it('does not crash if no content-type header is provided', (done) => { - if (!isNode) { - return done() - } + it('does not crash if no content-type header is provided', async function () { + if (!isNode) return this.skip() // go-ipfs always (currently) adds a content-type header, even if no content is present, // the standard behaviour for an http-api is to omit this header if no content is present @@ -24,12 +20,10 @@ describe('\'deal with HTTP weirdness\' tests', () => { }) }) - server.listen(6001, () => { - ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json', (err) => { - expect(err).to.not.exist() - server.close(done) - }) - }) + await new Promise(resolve => server.listen(6001, resolve)) + await ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json') + + server.close() }) }) @@ -39,12 +33,11 @@ describe('trailer headers', () => { if (!isNode) { return done() } const server = require('http').createServer((req, res) => { - const resStream = pump(res, ndjson.stringify()) res.setHeader('x-chunked-output', '1') res.setHeader('content-type', 'application/json') res.setHeader('Trailer', 'X-Stream-Error') res.addTrailers({ 'X-Stream-Error': JSON.stringify({ Message: 'ups, something went wrong', Code: 500 }) }) - resStream.write({ Bytes: 1 }) + res.write(JSON.stringify({ Bytes: 1 })) res.end() }) @@ -64,7 +57,7 @@ describe('trailer headers', () => { }) describe('error handling', () => { - it('should handle plain text error response', function (done) { + it('should handle plain text error response', async function () { if (!isNode) return this.skip() const server = require('http').createServer((req, res) => { @@ -78,17 +71,16 @@ describe('error handling', () => { }) }) - server.listen(6001, () => { - ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json', (err) => { - expect(err).to.exist() - expect(err.response.status).to.equal(403) - expect(err.message).to.equal('ipfs method not allowed') - server.close(done) - }) - }) + await new Promise(resolve => server.listen(6001, resolve)) + + await expect(ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json')) + .to.eventually.be.rejectedWith('ipfs method not allowed') + .and.to.have.nested.property('response.status').that.equals(403) + + server.close() }) - it('should handle JSON error response', function (done) { + it('should handle JSON error response', async function () { if (!isNode) return this.skip() const server = require('http').createServer((req, res) => { @@ -102,17 +94,16 @@ describe('error handling', () => { }) }) - server.listen(6001, () => { - ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json', (err) => { - expect(err).to.exist() - expect(err.response.status).to.equal(400) - expect(err.message).to.equal('client error') - server.close(done) - }) - }) + await new Promise(resolve => server.listen(6001, resolve)) + + await expect(ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json')) + .to.eventually.be.rejectedWith('client error') + .and.to.have.nested.property('response.status').that.equals(400) + + server.close() }) - it('should handle JSON error response with invalid JSON', function (done) { + it('should handle JSON error response with invalid JSON', async function () { if (!isNode) return this.skip() const server = require('http').createServer((req, res) => { @@ -126,12 +117,12 @@ describe('error handling', () => { }) }) - server.listen(6001, () => { - ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json', (err) => { - expect(err).to.exist() - expect(err.message).to.include('Unexpected token M in JSON at position 2') - server.close(done) - }) - }) + await new Promise(resolve => server.listen(6001, resolve)) + + await expect(ipfsClient('/ip4/127.0.0.1/tcp/6001').config.replace('test/fixtures/r-config.json')) + .to.eventually.be.rejected() + .and.to.have.property('message').that.includes('Unexpected token M in JSON at position 2') + + server.close() }) }) diff --git a/test/stats.spec.js b/test/stats.spec.js index d60aaa330..1e5d7da25 100644 --- a/test/stats.spec.js +++ b/test/stats.spec.js @@ -2,6 +2,7 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') +const all = require('it-all') const f = require('./utils/factory') describe('stats', function () { @@ -31,7 +32,7 @@ describe('stats', function () { }) it('.stats.bw', async () => { - const res = await ipfs.stats.bw() + const res = (await all(ipfs.stats.bw()))[0] expect(res).to.exist() expect(res).to.have.a.property('totalIn') diff --git a/test/sub-modules.spec.js b/test/sub-modules.spec.js index ee8f6d93b..a5db456df 100644 --- a/test/sub-modules.spec.js +++ b/test/sub-modules.spec.js @@ -64,12 +64,8 @@ describe('submodules', () => { it('ping', () => { const ping = require('../src')().ping - const pingPullStream = require('../src')().pingPullStream - const pingReadableStream = require('../src')().pingReadableStream expect(ping).to.be.a('function') - expect(pingPullStream).to.be.a('function') - expect(pingReadableStream).to.be.a('function') }) it('log', () => { @@ -164,26 +160,11 @@ describe('submodules', () => { const filesRegular = require('../src')() expect(filesRegular.add).to.be.a('function') - expect(filesRegular.addReadableStream).to.be.a('function') - expect(filesRegular.addPullStream).to.be.a('function') - expect(filesRegular.addFromStream).to.be.a('function') - expect(filesRegular.addFromFs).to.be.a('function') - expect(filesRegular.addFromURL).to.be.a('function') expect(filesRegular.get).to.be.a('function') - expect(filesRegular.getReadableStream).to.be.a('function') - expect(filesRegular.getPullStream).to.be.a('function') expect(filesRegular.cat).to.be.a('function') - expect(filesRegular.catReadableStream).to.be.a('function') - expect(filesRegular.catPullStream).to.be.a('function') expect(filesRegular.ls).to.be.a('function') - expect(filesRegular.lsReadableStream).to.be.a('function') - expect(filesRegular.lsPullStream).to.be.a('function') expect(filesRegular.refs).to.be.a('function') - expect(filesRegular.refsReadableStream).to.be.a('function') - expect(filesRegular.refsPullStream).to.be.a('function') expect(filesRegular.refs.local).to.be.a('function') - expect(filesRegular.refs.localReadableStream).to.be.a('function') - expect(filesRegular.refs.localPullStream).to.be.a('function') }) it('files MFS API', () => { diff --git a/test/utils/expect-timeout.js b/test/utils/expect-timeout.js deleted file mode 100644 index 51c733075..000000000 --- a/test/utils/expect-timeout.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict' - -/** - * Resolve if @param promise hangs for at least @param ms, throw otherwise - * @param {Promise} promise promise that you expect to hang - * @param {Number} ms millis to wait - * @return {Promise} - */ -module.exports = (promise, ms) => { - return Promise.race([ - promise.then((out) => { - throw new Error('Expected Promise to timeout but it was successful.') - }), - new Promise((resolve, reject) => setTimeout(resolve, ms)) - ]) -} From e74c42f2d7a3c5616fd3e114c875e80ff0bb1998 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Thu, 23 Jan 2020 20:25:46 +0000 Subject: [PATCH 31/43] chore: update contributors --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index add5c2ebb..5fe20ecc4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "41.0.1", + "version": "42.0.0-pre.0", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -83,7 +83,6 @@ "Alan Shaw ", "Alan Shaw ", "Alex Mingoia ", - "Alex Potsides ", "Antonio Tenorio-Fornés ", "Bruno Barbieri ", "Clemo ", @@ -161,6 +160,7 @@ "Victor Bjelkholm ", "Volker Mische ", "Zhiyuan Lin ", + "achingbrain ", "dirkmc ", "dmitriy ryajov ", "elsehow ", From e9aaa750beeb000f485fb31d43d2af648676dc8e Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Thu, 23 Jan 2020 20:25:47 +0000 Subject: [PATCH 32/43] chore: release version v42.0.0-pre.0 --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 55592d9dc..709438c6b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ + +# [42.0.0-pre.0](https://github.com/ipfs/js-ipfs-http-client/compare/v41.0.1...v42.0.0-pre.0) (2020-01-23) + + + ## [41.0.1](https://github.com/ipfs/js-ipfs-http-client/compare/v41.0.0...v41.0.1) (2020-01-23) From 2a9d7657a96fad9af48dfce56f73be2697a3db6b Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Fri, 31 Jan 2020 12:46:37 +0000 Subject: [PATCH 33/43] refactor: return peer ids as strings (#1226) BREAKING CHANGE: Where `PeerID`s were previously [CID]s, now they are Strings - `ipfs.bitswap.stat().peers[n]` is now a String (was a CID) - `ipfs.dht.findPeer().id` is now a String (was a CID) - `ipfs.dht.findProvs()[n].id` is now a String (was a CID) - `ipfs.dht.provide()[n].id` is now a String (was a CID) - `ipfs.dht.put()[n].id` is now a String (was a CID) - `ipfs.dht.query()[n].id` is now a String (was a CID) - `ipfs.id().id` is now a String (was a CID) - `ipfs.id().addresses[n]` are now [Multiaddr]s (were Strings) --- package.json | 4 ++-- src/bitswap/stat.js | 2 +- src/dht/find-peer.js | 2 +- src/dht/find-provs.js | 2 +- src/dht/provide.js | 2 +- src/dht/put.js | 2 +- src/dht/query.js | 2 +- src/id.js | 9 ++++++++- src/swarm/addrs.js | 3 +-- src/swarm/peers.js | 3 +-- 10 files changed, 18 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 5fe20ecc4..844f26807 100644 --- a/package.json +++ b/package.json @@ -68,8 +68,8 @@ "async": "^3.1.0", "browser-process-platform": "~0.1.1", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.129.0", - "ipfsd-ctl": "^1.0.2", + "interface-ipfs-core": "^0.131.0", + "ipfsd-ctl": "^2.1.0", "it-all": "^1.0.1", "it-concat": "^1.0.0", "it-pipe": "^1.1.0", diff --git a/src/bitswap/stat.js b/src/bitswap/stat.js index e041f5d9d..36101a1f4 100644 --- a/src/bitswap/stat.js +++ b/src/bitswap/stat.js @@ -23,7 +23,7 @@ function toCoreInterface (res) { return { provideBufLen: res.ProvideBufLen, wantlist: (res.Wantlist || []).map(k => new CID(k['/'])), - peers: (res.Peers || []).map(p => new CID(p)), + peers: (res.Peers || []), blocksReceived: new Big(res.BlocksReceived), dataReceived: new Big(res.DataReceived), blocksSent: new Big(res.BlocksSent), diff --git a/src/dht/find-peer.js b/src/dht/find-peer.js index 9d8f517e5..ef5c6c92a 100644 --- a/src/dht/find-peer.js +++ b/src/dht/find-peer.js @@ -37,7 +37,7 @@ module.exports = configure(({ ky }) => { // https://github.com/ipfs/go-ipfs/blob/eb11f569b064b960d1aba4b5b8ca155a3bd2cb21/core/commands/dht.go#L395-L396 for (const { ID, Addrs } of message.Responses) { return { - id: new CID(ID), + id: ID, addrs: (Addrs || []).map(a => multiaddr(a)) } } diff --git a/src/dht/find-provs.js b/src/dht/find-provs.js index 7adbaf38c..e70935dec 100644 --- a/src/dht/find-provs.js +++ b/src/dht/find-provs.js @@ -35,7 +35,7 @@ module.exports = configure(({ ky }) => { if (message.Type === 4 && message.Responses) { for (const { ID, Addrs } of message.Responses) { yield { - id: new CID(ID), + id: ID, addrs: (Addrs || []).map(a => multiaddr(a)) } } diff --git a/src/dht/provide.js b/src/dht/provide.js index f9013bfed..cdcae2f84 100644 --- a/src/dht/provide.js +++ b/src/dht/provide.js @@ -36,7 +36,7 @@ module.exports = configure(({ ky }) => { message.id = new CID(message.id) if (message.responses) { message.responses = message.responses.map(({ ID, Addrs }) => ({ - id: new CID(ID), + id: ID, addrs: (Addrs || []).map(a => multiaddr(a)) })) } else { diff --git a/src/dht/put.js b/src/dht/put.js index 6d0ecf6fc..8dc924f7a 100644 --- a/src/dht/put.js +++ b/src/dht/put.js @@ -38,7 +38,7 @@ module.exports = configure(({ ky }) => { message.id = new CID(message.id) if (message.responses) { message.responses = message.responses.map(({ ID, Addrs }) => ({ - id: new CID(ID), + id: ID, addrs: (Addrs || []).map(a => multiaddr(a)) })) } diff --git a/src/dht/query.js b/src/dht/query.js index 1628c0cc8..b2b878572 100644 --- a/src/dht/query.js +++ b/src/dht/query.js @@ -26,7 +26,7 @@ module.exports = configure(({ ky }) => { message = toCamel(message) message.id = new CID(message.id) message.responses = (message.responses || []).map(({ ID, Addrs }) => ({ - id: new CID(ID), + id: ID, addrs: (Addrs || []).map(a => multiaddr(a)) })) yield message diff --git a/src/id.js b/src/id.js index d6080ea67..cfec69d3d 100644 --- a/src/id.js +++ b/src/id.js @@ -2,6 +2,7 @@ const configure = require('./lib/configure') const toCamel = require('./lib/object-to-camel') +const multiaddr = require('multiaddr') module.exports = configure(({ ky }) => { return async options => { @@ -14,6 +15,12 @@ module.exports = configure(({ ky }) => { searchParams: options.searchParams }).json() - return toCamel(res) + const output = toCamel(res) + + if (output.addresses) { + output.addresses = output.addresses.map(ma => multiaddr(ma)) + } + + return output } }) diff --git a/src/swarm/addrs.js b/src/swarm/addrs.js index 25bd98d02..c4b6576f6 100644 --- a/src/swarm/addrs.js +++ b/src/swarm/addrs.js @@ -1,6 +1,5 @@ 'use strict' -const CID = require('cids') const multiaddr = require('multiaddr') const configure = require('../lib/configure') @@ -16,7 +15,7 @@ module.exports = configure(({ ky }) => { }).json() return Object.keys(res.Addrs).map(id => ({ - id: new CID(id), + id, addrs: (res.Addrs[id] || []).map(a => multiaddr(a)) })) } diff --git a/src/swarm/peers.js b/src/swarm/peers.js index f10035e06..8388af49f 100644 --- a/src/swarm/peers.js +++ b/src/swarm/peers.js @@ -1,7 +1,6 @@ 'use strict' const multiaddr = require('multiaddr') -const CID = require('cids') const configure = require('../lib/configure') module.exports = configure(({ ky }) => { @@ -25,7 +24,7 @@ module.exports = configure(({ ky }) => { const info = {} try { info.addr = multiaddr(peer.Addr) - info.peer = new CID(peer.Peer) + info.peer = peer.Peer } catch (error) { info.error = error info.rawPeerInfo = peer From 00cdba5922368e518142b450370b537e7689c9d3 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 31 Jan 2020 12:48:09 +0000 Subject: [PATCH 34/43] chore: update bundle size --- .aegir.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.aegir.js b/.aegir.js index 69e938893..2e5fb64db 100644 --- a/.aegir.js +++ b/.aegir.js @@ -6,7 +6,7 @@ const server = createServer() const echoServer = EchoServer.createServer() module.exports = { - bundlesize: { maxSize: '246kB' }, + bundlesize: { maxSize: '90kB' }, webpack: { resolve: { mainFields: ['browser', 'main'] From ddce43dade36e650f32d5dc1ea96594014814f99 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 31 Jan 2020 12:48:28 +0000 Subject: [PATCH 35/43] 42.0.0-pre.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 844f26807..fa23fad33 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "42.0.0-pre.0", + "version": "42.0.0-pre.1", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" From 7d05429859936391a7982a37ea01fbead10a7f58 Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 31 Jan 2020 12:53:56 +0000 Subject: [PATCH 36/43] 42.0.0-pre.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fa23fad33..0328f7e27 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "42.0.0-pre.1", + "version": "42.0.0-pre.2", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" From d3eee0dc40f00b7a767ae8efb1057b4ddcdca25a Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Mon, 3 Feb 2020 13:13:53 +0000 Subject: [PATCH 37/43] fix: interface tests (#1233) * chore: update go-ipfs-dep * chore: build webworkers separately --- .travis.yml | 16 ++++++++++++++-- examples/browser-pubsub/README.md | 2 +- package.json | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 802efe943..0509e5a96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,13 +35,25 @@ jobs: name: chrome addons: chrome: stable - script: npx aegir test -t browser -t webworker + script: npx aegir test -t browser + + - stage: test + name: chrome webworker + addons: + chrome: stable + script: npx aegir test -t webworker - stage: test name: firefox addons: firefox: latest - script: npx aegir test -t browser -t webworker -- --browsers FirefoxHeadless + script: npx aegir test -t browser -- --browsers FirefoxHeadless + + - stage: test + name: firefox webworker + addons: + firefox: latest + script: npx aegir test -t webworker -- --browsers FirefoxHeadless - stage: test name: electron-main diff --git a/examples/browser-pubsub/README.md b/examples/browser-pubsub/README.md index abe6a21f9..a74f77604 100644 --- a/examples/browser-pubsub/README.md +++ b/examples/browser-pubsub/README.md @@ -64,7 +64,7 @@ jsipfs init # Configure CORS to allow ipfs-http-client to access this IPFS node jsipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["http://127.0.0.1:8888"]' # Start the IPFS node, enabling pubsub -jsipfs daemon --enable-pubsub-experiment +jsipfs daemon ``` ### Install and start the Go IPFS node diff --git a/package.json b/package.json index 0328f7e27..ccc412bcb 100644 --- a/package.json +++ b/package.json @@ -67,8 +67,8 @@ "aegir": "^20.4.1", "async": "^3.1.0", "browser-process-platform": "~0.1.1", - "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.131.0", + "go-ipfs-dep": "^0.4.23", + "interface-ipfs-core": "^0.131.7", "ipfsd-ctl": "^2.1.0", "it-all": "^1.0.1", "it-concat": "^1.0.0", From 74a91471ff11201989306953c84b50abc301b548 Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Tue, 4 Feb 2020 11:28:39 +0000 Subject: [PATCH 38/43] docs: port examples to new api (#1222) * fix: change name-api examples to new api * fix: change files-api example to new api * fix: change upload example to new api * fix: change bundle-webpack to support new api * fix: remove browserify example doesnt support imports * fix: change pubsub example to the new api * Update examples/bundle-webpack/src/App.js Co-Authored-By: Alan Shaw * Update examples/bundle-webpack/src/App.js Co-Authored-By: Alan Shaw * Update examples/files-api/files-api.js Co-Authored-By: Alan Shaw * Update examples/upload-file-via-browser/src/App.js Co-Authored-By: Alan Shaw * Update examples/upload-file-via-browser/src/App.js Co-Authored-By: Alan Shaw Co-authored-by: Alan Shaw --- examples/browser-pubsub/index.html | 2 +- examples/browser-pubsub/package.json | 13 +- examples/bundle-browserify/.gitignore | 1 - examples/bundle-browserify/README.md | 35 - examples/bundle-browserify/img/1.png | Bin 100527 -> 0 bytes examples/bundle-browserify/img/2.png | Bin 146800 -> 0 bytes examples/bundle-browserify/index.html | 26 - examples/bundle-browserify/index.js | 36 - examples/bundle-browserify/package.json | 18 - examples/bundle-webpack/package.json | 5 +- examples/bundle-webpack/src/App.js | 37 +- examples/files-api/files-api.js | 27 +- examples/name-api/index.html | 3 +- examples/name-api/index.js | 57 +- examples/name-api/package-lock.json | 25332 +++++++++++++++- examples/name-api/package.json | 13 +- examples/upload-file-via-browser/README.md | 3 - examples/upload-file-via-browser/index.html | 2 +- examples/upload-file-via-browser/package.json | 27 +- examples/upload-file-via-browser/src/App.js | 54 +- examples/upload-file-via-browser/src/index.js | 1 + .../upload-file-via-browser/webpack.config.js | 37 - 22 files changed, 24529 insertions(+), 1200 deletions(-) delete mode 100644 examples/bundle-browserify/.gitignore delete mode 100644 examples/bundle-browserify/README.md delete mode 100644 examples/bundle-browserify/img/1.png delete mode 100644 examples/bundle-browserify/img/2.png delete mode 100644 examples/bundle-browserify/index.html delete mode 100644 examples/bundle-browserify/index.js delete mode 100644 examples/bundle-browserify/package.json delete mode 100644 examples/upload-file-via-browser/webpack.config.js diff --git a/examples/browser-pubsub/index.html b/examples/browser-pubsub/index.html index d5d84d564..22a0d4765 100644 --- a/examples/browser-pubsub/index.html +++ b/examples/browser-pubsub/index.html @@ -37,6 +37,6 @@

Pubsub

- + diff --git a/examples/browser-pubsub/package.json b/examples/browser-pubsub/package.json index c4c6e2727..6e519bf9e 100644 --- a/examples/browser-pubsub/package.json +++ b/examples/browser-pubsub/package.json @@ -5,16 +5,17 @@ "private": true, "main": "index.js", "scripts": { - "start": "npm run build && npm run serve", - "build": "browserify index.js > bundle.js", - "serve": "http-server -a 127.0.0.1 -p 8888", - "test": "echo \"Error: no test specified\" && exit 1" + "start": "parcel index.html" }, "author": "Alan Shaw", "license": "MIT", "dependencies": { - "browserify": "^16.5.0", - "http-server": "^0.11.1", "ipfs-http-client": "../../" + }, + "browserslist": [ + "last 2 versions and not dead and > 2%" + ], + "devDependencies": { + "parcel-bundler": "^1.12.4" } } diff --git a/examples/bundle-browserify/.gitignore b/examples/bundle-browserify/.gitignore deleted file mode 100644 index 4187d6774..000000000 --- a/examples/bundle-browserify/.gitignore +++ /dev/null @@ -1 +0,0 @@ -bundle.js \ No newline at end of file diff --git a/examples/bundle-browserify/README.md b/examples/bundle-browserify/README.md deleted file mode 100644 index def887200..000000000 --- a/examples/bundle-browserify/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Bundle js-ipfs-http-client with Browserify! - -> In this example, you will find a boilerplate you can use to guide yourself into bundling js-ipfs-http-client with browserify, so that you can use it in your own web app! - -## Setup - -As for any js-ipfs-http-client example, **you need a running IPFS daemon**, you learn how to do that here: - -- [Spawn a go-ipfs daemon](https://ipfs.io/docs/getting-started/) -- [Spawn a js-ipfs daemon](https://github.com/ipfs/js-ipfs#usage) - -**Note:** If you load your app from a different domain than the one the daemon is running (most probably), you will need to set up CORS, see https://github.com/ipfs/js-ipfs-http-client#cors to learn how to do that. - -A quick (and dirty) way to get it done is: - -```bash -> ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin "[\"*\"]" -> ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "[\"true\"]" -``` - -## Run this example - -Once the daemon is on, run the following commands within this folder: - -```bash -> npm install -> npm start -``` - -Now open your browser at `http://localhost:8888` - -You should see the following: - -![](https://ipfs.io/ipfs/QmNtpcWCEd6LjdPNfBFDaVZdD4jpgT8ZTAwoFJXKhYMJdo/1.png) -![](https://ipfs.io/ipfs/QmNtpcWCEd6LjdPNfBFDaVZdD4jpgT8ZTAwoFJXKhYMJdo/2.png) diff --git a/examples/bundle-browserify/img/1.png b/examples/bundle-browserify/img/1.png deleted file mode 100644 index 580511dad7510b8791f5c73ac03c37512580d649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100527 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 O2s~Z=T-G@yGywofrixJj diff --git a/examples/bundle-browserify/img/2.png b/examples/bundle-browserify/img/2.png deleted file mode 100644 index 5c72fc0a38aa7f6e27b933958355551178cf59b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146800 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�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 - - - - JS IPFS API - Example - Browser - Add - - - - -

JS IPFS API - Add data to IPFS from the browser

- - -
-
found in ipfs:
-
[ipfs hash]
-
[ipfs content]
-
- - diff --git a/examples/bundle-browserify/index.js b/examples/bundle-browserify/index.js deleted file mode 100644 index b0bc9f15e..000000000 --- a/examples/bundle-browserify/index.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict' - -var IPFS = require('ipfs-http-client') - -var ipfs = IPFS() - -function store () { - var toStore = document.getElementById('source').value - ipfs.add(Buffer.from(toStore), function (err, res) { - if (err || !res) { - return console.error('ipfs add error', err, res) - } - - res.forEach(function (file) { - if (file && file.hash) { - console.log('successfully stored', file.hash) - display(file.hash) - } - }) - }) -} - -function display (hash) { - ipfs.cat(hash, function (err, res) { - if (err || !res) { - return console.error('ipfs cat error', err, res) - } - - document.getElementById('hash').innerText = hash - document.getElementById('content').innerText = res.toString() - }) -} - -document.addEventListener('DOMContentLoaded', function () { - document.getElementById('store').onclick = store -}) diff --git a/examples/bundle-browserify/package.json b/examples/bundle-browserify/package.json deleted file mode 100644 index 7245b9c3a..000000000 --- a/examples/bundle-browserify/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "bundle-browserify", - "version": "1.0.0", - "description": "Bundle js-ipfs-http-client with Browserify", - "main": "index.js", - "scripts": { - "start": "browserify index.js > bundle.js && http-server -a 127.0.0.1 -p 8888" - }, - "keywords": [], - "author": "Friedel Ziegelmayer", - "license": "MIT", - "devDependencies": { - "browserify": "^16.2.3", - "ipfs-http-client": "../../", - "http-server": "~0.11.1" - }, - "dependencies": {} -} diff --git a/examples/bundle-webpack/package.json b/examples/bundle-webpack/package.json index bfa0b9428..7141efa03 100644 --- a/examples/bundle-webpack/package.json +++ b/examples/bundle-webpack/package.json @@ -21,9 +21,6 @@ "webpack-dev-server": "~3.3.1" }, "browserslist": [ - ">1%", - "not dead", - "not ie <= 11", - "not op_mini all" + "last 2 versions and not dead and > 2%" ] } diff --git a/examples/bundle-webpack/src/App.js b/examples/bundle-webpack/src/App.js index 06bf81991..bc25b5b81 100644 --- a/examples/bundle-webpack/src/App.js +++ b/examples/bundle-webpack/src/App.js @@ -2,7 +2,7 @@ const React = require('react') const ipfsClient = require('ipfs-http-client') -const ipfs = ipfsClient('localhost', '5001') +const ipfs = ipfsClient('/ip4/127.0.0.1/tcp/5001') const stringToUse = 'hello world from webpacked IPFS' class App extends React.Component { @@ -16,24 +16,27 @@ class App extends React.Component { added_file_contents: null } } - componentDidMount () { - ipfs.id((err, res) => { - if (err) throw err - this.setState({ - id: res.id, - version: res.agentVersion, - protocol_version: res.protocolVersion - }) + async componentDidMount () { + const id = await ipfs.id() + this.setState({ + id: id.id, + version: id.agentVersion, + protocol_version: id.protocolVersion }) - ipfs.add([Buffer.from(stringToUse)], (err, res) => { - if (err) throw err - const hash = res[0].hash + + const source = ipfs.add(stringToUse) + for await (const file of source) { + console.log("TCL: App -> forawait -> file", file) + const hash = file.path this.setState({ added_file_hash: hash }) - ipfs.cat(hash, (err, data) => { - if (err) throw err - this.setState({ added_file_contents: data.toString() }) - }) - }) + + const source = ipfs.cat(hash) + const data = [] + for await (const chunk of source) { + data.push(chunk) + } + this.setState({ added_file_contents: Buffer.concat(data).toString() }) + } } render () { return
diff --git a/examples/files-api/files-api.js b/examples/files-api/files-api.js index fefc957d6..308c3fc9e 100644 --- a/examples/files-api/files-api.js +++ b/examples/files-api/files-api.js @@ -1,14 +1,21 @@ +/* eslint-disable no-console */ 'use strict' -const ipfs = require('../../src')('localhost', 5001) +// Run `ipfs daemon` in your terminal to start the IPFS daemon +// Look for `API server listening on /ip4/127.0.0.1/tcp/5001` +const ipfs = require('../../src')('/ip4/127.0.0.1/tcp/5001') -ipfs.files.ls('/folder1', function (err, res) { - if (err) { - return console.log('got an error', err) - } - if (res.readable) { - res.pipe(process.stdout) - } else { - console.log(res) +const run = async () => { + await ipfs.files.write( + '/temp/hello-world', + Buffer.from('Hello, world!'), + { create: true, parents: true } + ) + const source = ipfs.files.ls('/temp') + + for await (const file of source) { + console.log(file) } -}) +} + +run() diff --git a/examples/name-api/index.html b/examples/name-api/index.html index 3e5fba013..54843d332 100644 --- a/examples/name-api/index.html +++ b/examples/name-api/index.html @@ -58,7 +58,6 @@

Resolve an IPNS name

- - + diff --git a/examples/name-api/index.js b/examples/name-api/index.js index 931f5560e..b65c43fd3 100644 --- a/examples/name-api/index.js +++ b/examples/name-api/index.js @@ -1,6 +1,7 @@ +/* eslint-disable no-console */ 'use strict' - -const ipfs = window.IpfsHttpClient('/ip4/127.0.0.1/tcp/5001') +const ipfsHttp = require('ipfs-http-client') +const ipfs = ipfsHttp('/ip4/127.0.0.1/tcp/5001') const DOM = { status: document.getElementById('status'), @@ -30,7 +31,7 @@ const showStatus = (text, bg) => { } const enableForms = () => { - for (let btn of DOM.buttons) { + for (const btn of DOM.buttons) { btn.disabled = false } } @@ -48,31 +49,30 @@ const init = () => { } // Adds a new file to IPFS and publish it -const addAndPublish = (e) => { +const addAndPublish = async (e) => { e.preventDefault() - let input = e.target.elements['text'] - let buffer = Buffer.from(input.value) + const input = e.target.elements.text + const buffer = Buffer.from(input.value) showStatus('adding to IPFS...', COLORS.active) + try { + for await (const file of ipfs.add(buffer)) { + showStatus('success!', COLORS.success) - ipfs.add(buffer) - .then(res => { - showStatus(`success!`, COLORS.success) - - publish(res[0].path) + publish(file.path) input.value = '' - }) - .catch(err => { - showStatus('failed to add the data', COLORS.error) - console.error(err) - }) + } + } catch (err) { + showStatus('failed to add the data', COLORS.error) + console.error(err) + } } // Publishes an IPFS file or directory under your node's identity const publish = (path) => { - showStatus(`publishing...`, COLORS.active) + showStatus('publishing...', COLORS.active) DOM.publishResultsDiv.classList.add('hidden') ipfs.name.publish(path) @@ -90,21 +90,20 @@ const publish = (path) => { } // Resolves an IPNS name -const resolve = (name) => { - showStatus(`resolving...`, COLORS.active) +const resolve = async (name) => { + showStatus('resolving...', COLORS.active) DOM.resolveResultsDiv.classList.add('hidden') - - ipfs.name.resolve(name) - .then(path => { + try { + for await (const path of ipfs.name.resolve(name)) { showStatus('success!', COLORS.success) DOM.resolveResultsDiv.classList.remove('hidden') DOM.resolveResult.innerText = path DOM.resolveGatewayLink.href = `${IPFS_DOMAIN}${path}` - }) - .catch(err => { - showStatus(`error resolving ${name}`, COLORS.error) - console.error(err) - }) + } + } catch (err) { + showStatus(`error resolving ${name}`, COLORS.error) + console.error(err) + } } // Event listeners @@ -112,14 +111,14 @@ DOM.publishNew.onsubmit = addAndPublish DOM.publishPath.onsubmit = (e) => { e.preventDefault() - let input = e.target.elements['path'] + const input = e.target.elements.path publish(input.value) input.value = '' } DOM.resolveName.onsubmit = (e) => { e.preventDefault() - let input = e.target.elements['name'] + const input = e.target.elements.name resolve(input.value) input.value = '' } diff --git a/examples/name-api/package-lock.json b/examples/name-api/package-lock.json index e30d976fb..f0484619d 100644 --- a/examples/name-api/package-lock.json +++ b/examples/name-api/package-lock.json @@ -4,1276 +4,24560 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, - "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==", - "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==", + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "dev": true, "requires": { - "acorn": "^6.1.1", - "acorn-dynamic-import": "^4.0.0", - "acorn-walk": "^6.1.1", - "xtend": "^4.0.1" + "@babel/highlight": "^7.8.3" } }, - "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 - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true - }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "@babel/compat-data": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.8.1.tgz", + "integrity": "sha512-Z+6ZOXvyOWYxJ50BwxzdhRnRsGST8Y3jaZgxYig575lTjVSs3KtJnmESwZegg6e2Dn0td1eDhoWlp1wI4BTCPw==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "browserslist": "^4.8.2", + "invariant": "^2.2.4", + "semver": "^5.5.0" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "@babel/core": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.3.tgz", + "integrity": "sha512-4XFkf8AwyrEG7Ziu3L2L0Cv+WyY47Tcsp70JFmpftbAA1K7YL/sgE9jh9HyNj08Y/U50ItUchpN0w6HxAoX1rA==", "dev": true, "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "json5": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { - "inherits": "2.0.1" + "minimist": "^1.2.0" } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "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==", - "dev": true - }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "dev": true + "@babel/generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.3.tgz", + "integrity": "sha512-WjoPk8hRpDRqqzRpvaR8/gDUPkrnOOeuT2m8cNICJtZH6mwaCo3v0OKMI7Y6SM1pBtyijnLtAL0HDi41pf41ug==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz", + "integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@babel/types": "^7.8.3" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz", + "integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } }, - "browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", + "@babel/helper-builder-react-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.8.3.tgz", + "integrity": "sha512-JT8mfnpTkKNCboTqZsQTdGo3l3Ik3l7QIt9hh0O9DYiwVel37VoJpILKM4YFbP2euF32nkQSb+F9cUk9b7DDXQ==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" + "@babel/types": "^7.8.3", + "esutils": "^2.0.0" } }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "@babel/helper-call-delegate": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz", + "integrity": "sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A==", "dev": true, "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "browserify": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.3.0.tgz", - "integrity": "sha512-BWaaD7alyGZVEBBwSTYx4iJF5DswIGzK17o8ai9w4iKRbYpk3EOiprRHMRRA8DCZFmFeOdx7A385w2XdFvxWmg==", + "@babel/helper-compilation-targets": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.3.tgz", + "integrity": "sha512-JLylPCsFjhLN+6uBSSh3iYdxKdeO9MNmoY96PE/99d8kyBFaXLORtAVhqN6iHa+wtPeqxKLghDOZry0+Aiw9Tw==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^1.11.0", - "browserify-zlib": "~0.2.0", - "buffer": "^5.0.2", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.0", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^2.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.0.0", - "labeled-stream-splicer": "^2.0.0", - "mkdirp": "^0.5.0", - "module-deps": "^6.0.0", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "~0.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^2.0.0", - "stream-http": "^2.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.10.1", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" + "@babel/compat-data": "^7.8.1", + "browserslist": "^4.8.2", + "invariant": "^2.2.4", + "levenary": "^1.1.0", + "semver": "^5.5.0" } }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz", + "integrity": "sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q==", "dev": true, "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.6.0" } }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "@babel/helper-define-map": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz", + "integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz", + "integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "@babel/helper-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz", + "integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz", + "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "@babel/types": "^7.8.3" } }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz", + "integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==", "dev": true, "requires": { - "pako": "~1.0.5" + "@babel/types": "^7.8.3" } }, - "buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz", + "integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" + "@babel/types": "^7.8.3" } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true + "@babel/helper-module-imports": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz", + "integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true + "@babel/helper-module-transforms": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz", + "integrity": "sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz", + "integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.8.3" + } }, - "cached-path-relative": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz", - "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==", + "@babel/helper-plugin-utils": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz", + "integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==", "dev": true }, - "charset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", - "dev": true + "@babel/helper-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz", + "integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz", + "integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=", + "@babel/helper-replace-supers": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz", + "integrity": "sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA==", "dev": true, "requires": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "@babel/helper-simple-access": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz", + "integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz", + "integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "@babel/types": "^7.8.3" } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "@babel/helper-wrap-function": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz", + "integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==", "dev": true, "requires": { - "date-now": "^0.1.4" + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true + "@babel/helpers": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.8.3.tgz", + "integrity": "sha512-LmU3q9Pah/XyZU89QvBgGt+BCsTPoQa+73RxAQh8fb8qkDyIfeQnmgs+hvzhTCKTzqOyk7JTkS3MS1S8Mq5yrQ==", + "dev": true, + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } }, - "convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=", - "dev": true + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "@babel/parser": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.3.tgz", + "integrity": "sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==", "dev": true }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz", + "integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz", + "integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz", + "integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==", "dev": true, "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", "dev": true, "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, - "dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-8qvuPwU/xxUCt78HocNlv0mXXo0wdh9VT1R04WU8HGOfaOob26pF+9P5/lYjN/q7DHOX1bvX60hnhOvuQUJdbA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", - "dev": true + "@babel/plugin-proposal-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.8.3.tgz", + "integrity": "sha512-QIoIR9abkVn+seDE3OjA08jWcs3eZ9+wJCKSRgo3WdEU2csFYgdScb+8qHB3+WXsGJD55u+5hWCISI7ejXS+kg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } }, - "deps-sort": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", - "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz", + "integrity": "sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "shasum": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "detective": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", - "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { - "acorn-node": "^1.6.1", - "defined": "^1.0.0", - "minimist": "^1.1.1" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "@babel/plugin-syntax-flow": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz", + "integrity": "sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz", + "integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "events": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz", - "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==", - "dev": true + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "@babel/helper-plugin-utils": "^7.8.0" } }, - "extatic": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/extatic/-/extatic-4.1.3.tgz", - "integrity": "sha512-ZOzJowsUKufkUKDoRe8WTltm+/mUJRLQzWEgr0FgC0+lMv9yrtXU4OnYQSN++AEKK5LXPe2oyird+xrkDvoogA==", + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz", + "integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==", "dev": true, "requires": { - "charset": "^1.0.1", - "he": "^1.1.1", - "mime": "^2.4.1", - "minimist": "^1.1.0", - "on-finished": "^2.3.0", - "url-join": "^4.0.0" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz", + "integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz", + "integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } }, - "get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz", + "integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz", + "integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "@babel/plugin-transform-classes": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz", + "integrity": "sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" } }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz", + "integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "@babel/plugin-transform-destructuring": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz", + "integrity": "sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ==", "dev": true, "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz", + "integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz", + "integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==", "dev": true, "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=", - "dev": true + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz", + "integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true + "@babel/plugin-transform-flow-strip-types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.8.3.tgz", + "integrity": "sha512-g/6WTWG/xbdd2exBBzMfygjX/zw4eyNC4X8pRaq7aRHRoDUCzAIu3kGYIXviOv8BjCuWm8vDBwjHcjiRNgXrPA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } }, - "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true + "@babel/plugin-transform-for-of": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.3.tgz", + "integrity": "sha512-ZjXznLNTxhpf4Q5q3x1NsngzGA38t9naWH8Gt+0qYZEJAcvPI9waSStSh56u19Ofjr7QmD0wUsQ8hw8s/p1VnA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz", + "integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz", + "integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz", + "integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==", "dev": true, "requires": { - "source-map": "~0.5.3" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "insert-module-globals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", - "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==", + "@babel/plugin-transform-modules-amd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.8.3.tgz", + "integrity": "sha512-MadJiU3rLKclzT5kBH4yxdry96odTUwuqrZM+GllFI/VhxfPz+k9MshJM+MwhfkCdxxclSbSBbUGciBngR+kEQ==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "@babel/plugin-transform-modules-commonjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.8.3.tgz", + "integrity": "sha512-JpdMEfA15HZ/1gNuB9XEDlZM1h/gF/YOH7zaZzQu2xCFRfwc01NXBMHHSTT6hRjlXJJs5x/bfODM3LiCk94Sxg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "@babel/plugin-transform-modules-systemjs": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.8.3.tgz", + "integrity": "sha512-8cESMCJjmArMYqa9AO5YuMEkE4ds28tMpZcGZB/jl3n0ZzlsxOAi3mC+SKypTfT8gjMupCnd3YiXCkMjj2jfOg==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } }, - "json-stable-stringify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", - "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "@babel/plugin-transform-modules-umd": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.8.3.tgz", + "integrity": "sha512-evhTyWhbwbI3/U6dZAnx/ePoV7H6OUG+OjiJFHmhr9FPn0VShjwC2kdxqIuQ/+1P50TMrneGzMeyMTFOjKSnAw==", "dev": true, "requires": { - "jsonify": "~0.0.0" + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz", + "integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz", + "integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==", "dev": true, "requires": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" } }, - "lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=", - "dev": true + "@babel/plugin-transform-parameters": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.3.tgz", + "integrity": "sha512-/pqngtGb54JwMBZ6S/D3XYylQDFtGjWrnoCF4gXZOUpFV/ujbxnoNGNvDGu6doFWRPBveE72qTx/RRU44j5I/Q==", + "dev": true, + "requires": { + "@babel/helper-call-delegate": "^7.8.3", + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz", + "integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "@babel/plugin-transform-react-jsx": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.8.3.tgz", + "integrity": "sha512-r0h+mUiyL595ikykci+fbwm9YzmuOrUBi0b+FDIKmi3fPQyFokWVEMJnRWHJPPQEjyFJyna9WZC6Viv6UHSv1g==", "dev": true, "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" + "@babel/helper-builder-react-jsx": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" } }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true + "@babel/plugin-transform-regenerator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz", + "integrity": "sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.0" + } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz", + "integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz", + "integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz", + "integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "@babel/helper-plugin-utils": "^7.8.3" } }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz", + "integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" } }, - "module-deps": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz", - "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==", + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz", + "integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==", "dev": true, "requires": { - "JSONStream": "^1.0.3", - "browser-resolve": "^1.7.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.0.2", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.3.tgz", + "integrity": "sha512-3TrkKd4LPqm4jHs6nPtSDI/SV9Cm5PRJkHLUgTcqRQQTMAZ44ZaAdDZJtvWFSaRcvT0a1rTmJ5ZA5tDKjleF3g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz", + "integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==", "dev": true, "requires": { - "ee-first": "1.1.1" + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "@babel/preset-env": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.8.3.tgz", + "integrity": "sha512-Rs4RPL2KjSLSE2mWAx5/iCH+GC1ikKdxPrhnRS6PfFVaiZeom22VFKN4X8ZthyN61kAaR05tfXTbCvatl9WIQg==", "dev": true, "requires": { - "wrappy": "1" + "@babel/compat-data": "^7.8.0", + "@babel/helper-compilation-targets": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.8.3", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.8.3", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-commonjs": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.8.3", + "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.3", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.3", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.3", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/types": "^7.8.3", + "browserslist": "^4.8.2", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.0", + "semver": "^5.5.0" } }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true + "@babel/runtime": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.8.3.tgz", + "integrity": "sha512-fVHx1rzEmwB130VTkLnxR+HmxcTjGzH12LYQcFFoBwakMd3aOMD4OsRN7tGG/UOYE2ektgFrS8uACAoRk1CY0w==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } }, - "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", - "dev": true + "@babel/template": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.3.tgz", + "integrity": "sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } }, - "parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "@babel/traverse": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.3.tgz", + "integrity": "sha512-we+a2lti+eEImHmEXp7bM9cTxGzxPmBiVJlLVD+FuuQMeeO7RaDbutbgeheDkw+Xe3mCfJHnGOWLswT74m2IPg==", "dev": true, "requires": { - "path-platform": "~0.11.15" + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" } }, - "parse-asn1": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", - "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "@babel/types": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz", + "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==", "dev": true, "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "@iarna/toml": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.3.tgz", + "integrity": "sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg==", "dev": true }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, - "path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=", + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + } + }, + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dev": true, + "requires": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + } + }, + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", "dev": true }, - "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", "dev": true, "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" } }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } + }, + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "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-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "dev": true, "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" } }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "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 }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "ajv": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "safe-buffer": "^5.1.0" + "color-convert": "^1.9.0" } }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "ansi-to-html": { + "version": "0.6.13", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.13.tgz", + "integrity": "sha512-Ys2/umuaTlQvP9DLkaa7UzRKF2FLrfod/hNHXS9QhXCrw7seObG6ksOGmNz3UoK+adwM8L9vQfG7mvaxfJ3Jvw==", "dev": true, "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" + "entities": "^1.1.2" } }, - "read-only-stream": { + "anymatch": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "readable-stream": "^2.0.2" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" }, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", "dev": true }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "inherits": "2.0.1" } } } }, - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "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": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "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==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.4.tgz", + "integrity": "sha512-3qv/Ar3nRnRTpwGD+LZc7F4YHDBb3NAEIn+DesNa8TcBhyxf8eDqYwTOa70kiWXwvFjQQz+abbykJcyOlfBfNg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001021", + "electron-to-chromium": "^1.3.338", + "node-releases": "^1.1.46" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30001022", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001022.tgz", + "integrity": "sha512-FjwPPtt/I07KyLPkBQ0g7/XuZg6oUkYBVnPHNj3VHJbOjmmJ/GdSo/GUY6MwINEQvjhP6WZVbX8Tvms8xh0D5A==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "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", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "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": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.8.tgz", + "integrity": "sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "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": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz", + "integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==", + "dev": true, + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-unit-converter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz", + "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=", + "dev": true + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "deasync": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.19.tgz", + "integrity": "sha512-oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "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" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.338", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.338.tgz", + "integrity": "sha512-wlmfixuHEc9CkfOKgcqdtzBmRW4NStM9ptl5oPILY2UDyHuSXb3Yit+yLVyLObTgGuMMU36hhnfs2GDJId7ctA==", + "dev": true + }, + "elliptic": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", + "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "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 + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "envinfo": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.0.tgz", + "integrity": "sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.3.tgz", + "integrity": "sha512-AwiVPKf3sKGMoWtFw0J7Y4MTZ4Iek67k4COWOwHqS8B9TOZ71DCfcoBmdamy8Y6mj4MDz0+VNUpC2HKHFHA3pg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "estraverse": { + "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.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.1.0.tgz", + "integrity": "sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "foreach": "^2.0.5", + "isarray": "0.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "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 + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "dev": true + }, + "htmlnano": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz", + "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "normalize-html-whitespace": "^1.0.0", + "posthtml": "^0.12.0", + "posthtml-render": "^1.1.5", + "purgecss": "^1.4.0", + "svgo": "^1.3.2", + "terser": "^4.3.9", + "uncss": "^0.17.2" + }, + "dependencies": { + "posthtml": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.0.tgz", + "integrity": "sha512-aNUEP/SfKUXAt+ghG51LC5MmafChBZeslVe/SSdfKIgLGUVRE68mrMF4V8XbH07ZifM91tCSuxY3eHIFLlecQw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.3.tgz", + "integrity": "sha512-Lw+ieAXmY69d09IIc/yqeBqXpEQIpDGZqT34ui1QWXIUpR2RjbqEkT8X7Lgex19hslSqcWM5iMN2kM11eMsESQ==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ipfs-http-client": { + "version": "file:../..", + "requires": { + "abort-controller": "^3.0.0", + "bignumber.js": "^9.0.0", + "bs58": "^4.0.1", + "buffer": "^5.4.2", + "cids": "~0.7.1", + "debug": "^4.1.0", + "form-data": "^3.0.0", + "ipfs-block": "~0.8.1", + "ipfs-utils": "^0.6.0", + "ipld-dag-cbor": "^0.15.1", + "ipld-dag-pb": "^0.18.2", + "ipld-raw": "^4.0.1", + "it-tar": "^1.1.1", + "it-to-stream": "^0.1.1", + "iterable-ndjson": "^1.1.0", + "ky": "^0.15.0", + "ky-universal": "^0.3.0", + "merge-options": "^2.0.0", + "multiaddr": "^7.2.1", + "multiaddr-to-uri": "^5.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.14", + "parse-duration": "^0.1.1", + "stream-to-it": "^0.2.0" + }, + "dependencies": { + "@babel/cli": { + "version": "7.8.3", + "requires": { + "chokidar": "^2.1.8", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "commander": { + "version": "4.1.0" + }, + "slash": { + "version": "2.0.0" + }, + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/code-frame": { + "version": "7.8.3", + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/compat-data": { + "version": "7.8.1", + "requires": { + "browserslist": "^4.8.2", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.8.3", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helpers": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.0", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/generator": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.8.3", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3", + "esutils": "^2.0.0" + } + }, + "@babel/helper-call-delegate": { + "version": "7.8.3", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.8.3", + "requires": { + "@babel/compat-data": "^7.8.1", + "browserslist": "^4.8.2", + "invariant": "^2.2.4", + "levenary": "^1.1.0", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.8.3", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.8.3", + "requires": { + "@babel/helper-regex": "^7.8.3", + "regexpu-core": "^4.6.0" + } + }, + "@babel/helper-define-map": { + "version": "7.8.3", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.8.3", + "requires": { + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-function-name": { + "version": "7.8.3", + "requires": { + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-imports": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-module-transforms": { + "version": "7.8.3", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.8.3" + }, + "@babel/helper-regex": { + "version": "7.8.3", + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.8.3", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-replace-supers": { + "version": "7.8.3", + "requires": { + "@babel/helper-member-expression-to-functions": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-simple-access": { + "version": "7.8.3", + "requires": { + "@babel/template": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.8.3", + "requires": { + "@babel/types": "^7.8.3" + } + }, + "@babel/helper-wrap-function": { + "version": "7.8.3", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/helpers": { + "version": "7.8.3", + "requires": { + "@babel/template": "^7.8.3", + "@babel/traverse": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.8.3" + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-do-expressions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-do-expressions": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-function-bind": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-function-bind": "^7.8.3" + } + }, + "@babel/plugin-proposal-function-sent": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-wrap-function": "^7.8.3", + "@babel/plugin-syntax-function-sent": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-pipeline-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-pipeline-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-throw-expressions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-throw-expressions": "^7.8.3" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.8.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-do-expressions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-function-bind": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-function-sent": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-pipeline-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-throw-expressions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.8.3", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-remap-async-to-generator": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.8.3", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-define-map": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-optimise-call-expression": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.8.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.8.3", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.8.3", + "requires": { + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.8.3", + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.8.3", + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-simple-access": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.8.3", + "requires": { + "@babel/helper-hoist-variables": "^7.8.3", + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "babel-plugin-dynamic-import-node": "^2.3.0" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.8.3", + "requires": { + "@babel/helper-module-transforms": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-replace-supers": "^7.8.3" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.8.3", + "requires": { + "@babel/helper-call-delegate": "^7.8.3", + "@babel/helper-get-function-arity": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.8.3", + "requires": { + "@babel/helper-builder-react-jsx": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-jsx": "^7.8.3" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.8.3", + "requires": { + "regenerator-transform": "^0.14.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.8.3", + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/helper-regex": "^7.8.3" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.8.3", + "requires": { + "@babel/helper-annotate-as-pure": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.8.3", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.8.3", + "requires": { + "@babel/compat-data": "^7.8.0", + "@babel/helper-compilation-targets": "^7.8.3", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.8.3", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.8.3", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.8.3", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.8.3", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.8.3", + "@babel/plugin-transform-modules-commonjs": "^7.8.3", + "@babel/plugin-transform-modules-systemjs": "^7.8.3", + "@babel/plugin-transform-modules-umd": "^7.8.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.3", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.3", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.3", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/types": "^7.8.3", + "browserslist": "^4.8.2", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.0", + "semver": "^5.5.0" + } + }, + "@babel/preset-flow": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-flow-strip-types": "^7.8.3" + } + }, + "@babel/preset-react": { + "version": "7.8.3", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.8.3", + "@babel/plugin-transform-react-jsx-self": "^7.8.3", + "@babel/plugin-transform-react-jsx-source": "^7.8.3" + } + }, + "@babel/preset-stage-0": { + "version": "7.8.3" + }, + "@babel/register": { + "version": "7.8.3", + "requires": { + "find-cache-dir": "^2.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "pirates": "^4.0.0", + "source-map-support": "^0.5.16" + } + }, + "@babel/runtime": { + "version": "7.8.3", + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "@babel/template": { + "version": "7.8.3", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3" + } + }, + "@babel/traverse": { + "version": "7.8.3", + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.8.3", + "@babel/helper-function-name": "^7.8.3", + "@babel/helper-split-export-declaration": "^7.8.3", + "@babel/parser": "^7.8.3", + "@babel/types": "^7.8.3", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.8.3", + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@commitlint/cli": { + "version": "8.3.5", + "requires": { + "@commitlint/format": "^8.3.4", + "@commitlint/lint": "^8.3.5", + "@commitlint/load": "^8.3.5", + "@commitlint/read": "^8.3.4", + "babel-polyfill": "6.26.0", + "chalk": "2.4.2", + "get-stdin": "7.0.0", + "lodash": "4.17.15", + "meow": "5.0.0", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "7.0.0" + } + } + }, + "@commitlint/config-conventional": { + "version": "8.3.4", + "requires": { + "conventional-changelog-conventionalcommits": "4.2.1" + } + }, + "@commitlint/ensure": { + "version": "8.3.4", + "requires": { + "lodash": "4.17.15" + } + }, + "@commitlint/execute-rule": { + "version": "8.3.4" + }, + "@commitlint/format": { + "version": "8.3.4", + "requires": { + "chalk": "^2.0.1" + } + }, + "@commitlint/is-ignored": { + "version": "8.3.5", + "requires": { + "semver": "6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0" + } + } + }, + "@commitlint/lint": { + "version": "8.3.5", + "requires": { + "@commitlint/is-ignored": "^8.3.5", + "@commitlint/parse": "^8.3.4", + "@commitlint/rules": "^8.3.4", + "babel-runtime": "^6.23.0", + "lodash": "4.17.15" + } + }, + "@commitlint/load": { + "version": "8.3.5", + "requires": { + "@commitlint/execute-rule": "^8.3.4", + "@commitlint/resolve-extends": "^8.3.5", + "babel-runtime": "^6.23.0", + "chalk": "2.4.2", + "cosmiconfig": "^5.2.0", + "lodash": "4.17.15", + "resolve-from": "^5.0.0" + } + }, + "@commitlint/message": { + "version": "8.3.4" + }, + "@commitlint/parse": { + "version": "8.3.4", + "requires": { + "conventional-changelog-angular": "^1.3.3", + "conventional-commits-parser": "^3.0.0", + "lodash": "^4.17.11" + } + }, + "@commitlint/read": { + "version": "8.3.4", + "requires": { + "@commitlint/top-level": "^8.3.4", + "@marionebl/sander": "^0.6.0", + "babel-runtime": "^6.23.0", + "git-raw-commits": "^2.0.0" + }, + "dependencies": { + "git-raw-commits": { + "version": "2.0.3", + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^5.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "@commitlint/resolve-extends": { + "version": "8.3.5", + "requires": { + "import-fresh": "^3.0.0", + "lodash": "4.17.15", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + } + }, + "@commitlint/rules": { + "version": "8.3.4", + "requires": { + "@commitlint/ensure": "^8.3.4", + "@commitlint/message": "^8.3.4", + "@commitlint/to-lines": "^8.3.4", + "babel-runtime": "^6.23.0" + } + }, + "@commitlint/to-lines": { + "version": "8.3.4" + }, + "@commitlint/top-level": { + "version": "8.3.4", + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0" + } + } + }, + "@commitlint/travis-cli": { + "version": "8.3.5", + "requires": { + "@commitlint/cli": "^8.3.5", + "babel-runtime": "6.26.0", + "execa": "0.11.0" + }, + "dependencies": { + "execa": { + "version": "0.11.0", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0" + } + } + }, + "@hapi/accept": { + "version": "3.2.3", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/address": { + "version": "2.1.4" + }, + "@hapi/ammo": { + "version": "3.1.1", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/b64": { + "version": "4.2.1", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/boom": { + "version": "7.4.11", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/bounce": { + "version": "1.3.2", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/hoek": "^8.3.1" + } + }, + "@hapi/bourne": { + "version": "1.3.2" + }, + "@hapi/call": { + "version": "5.1.2", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/catbox": { + "version": "10.2.3", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/joi": "16.x.x", + "@hapi/podium": "3.x.x" + } + }, + "@hapi/catbox-memory": { + "version": "4.1.1", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/content": { + "version": "4.1.0", + "requires": { + "@hapi/boom": "7.x.x" + } + }, + "@hapi/cryptiles": { + "version": "4.2.1", + "requires": { + "@hapi/boom": "7.x.x" + } + }, + "@hapi/file": { + "version": "1.0.0" + }, + "@hapi/formula": { + "version": "1.2.0" + }, + "@hapi/hapi": { + "version": "18.4.0", + "requires": { + "@hapi/accept": "3.x.x", + "@hapi/ammo": "3.x.x", + "@hapi/boom": "7.x.x", + "@hapi/bounce": "1.x.x", + "@hapi/call": "5.x.x", + "@hapi/catbox": "10.x.x", + "@hapi/catbox-memory": "4.x.x", + "@hapi/heavy": "6.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/joi": "15.x.x", + "@hapi/mimos": "4.x.x", + "@hapi/podium": "3.x.x", + "@hapi/shot": "4.x.x", + "@hapi/somever": "2.x.x", + "@hapi/statehood": "6.x.x", + "@hapi/subtext": "6.x.x", + "@hapi/teamwork": "3.x.x", + "@hapi/topo": "3.x.x" + }, + "dependencies": { + "@hapi/joi": { + "version": "15.1.1", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + } + } + }, + "@hapi/heavy": { + "version": "6.2.2", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/joi": "16.x.x" + } + }, + "@hapi/hoek": { + "version": "8.5.0" + }, + "@hapi/inert": { + "version": "5.2.2", + "requires": { + "@hapi/ammo": "3.x.x", + "@hapi/boom": "7.x.x", + "@hapi/bounce": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/joi": "16.x.x", + "lru-cache": "4.1.x" + } + }, + "@hapi/iron": { + "version": "5.1.4", + "requires": { + "@hapi/b64": "4.x.x", + "@hapi/boom": "7.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/cryptiles": "4.x.x", + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/joi": { + "version": "16.1.8", + "requires": { + "@hapi/address": "^2.1.2", + "@hapi/formula": "^1.2.0", + "@hapi/hoek": "^8.2.4", + "@hapi/pinpoint": "^1.0.2", + "@hapi/topo": "^3.1.3" + } + }, + "@hapi/mimos": { + "version": "4.1.1", + "requires": { + "@hapi/hoek": "8.x.x", + "mime-db": "1.x.x" + } + }, + "@hapi/nigel": { + "version": "3.1.1", + "requires": { + "@hapi/hoek": "8.x.x", + "@hapi/vise": "3.x.x" + } + }, + "@hapi/pez": { + "version": "4.1.1", + "requires": { + "@hapi/b64": "4.x.x", + "@hapi/boom": "7.x.x", + "@hapi/content": "4.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/nigel": "3.x.x" + } + }, + "@hapi/pinpoint": { + "version": "1.0.2" + }, + "@hapi/podium": { + "version": "3.4.3", + "requires": { + "@hapi/hoek": "8.x.x", + "@hapi/joi": "16.x.x" + } + }, + "@hapi/shot": { + "version": "4.1.2", + "requires": { + "@hapi/hoek": "8.x.x", + "@hapi/joi": "16.x.x" + } + }, + "@hapi/somever": { + "version": "2.1.1", + "requires": { + "@hapi/bounce": "1.x.x", + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/statehood": { + "version": "6.1.2", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/bounce": "1.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/cryptiles": "4.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/iron": "5.x.x", + "@hapi/joi": "16.x.x" + } + }, + "@hapi/subtext": { + "version": "6.1.2", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/content": "4.x.x", + "@hapi/file": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/pez": "4.x.x", + "@hapi/wreck": "15.x.x" + } + }, + "@hapi/teamwork": { + "version": "3.3.1" + }, + "@hapi/topo": { + "version": "3.1.6", + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@hapi/vise": { + "version": "3.1.1", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/wreck": { + "version": "15.1.0", + "requires": { + "@hapi/boom": "7.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x" + } + }, + "@marionebl/sander": { + "version": "0.6.1", + "requires": { + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3" + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@protobufjs/utf8": { + "version": "1.1.0" + }, + "@samverschueren/stream-to-observable": { + "version": "0.3.0", + "requires": { + "any-observable": "^0.3.0" + } + }, + "@sindresorhus/is": { + "version": "0.7.0" + }, + "@sinonjs/commons": { + "version": "1.7.0", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/formatio": { + "version": "3.2.2", + "requires": { + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" + } + }, + "@sinonjs/samsam": { + "version": "3.3.3", + "requires": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.1" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "requires": { + "@types/node": "*" + } + }, + "@types/color-name": { + "version": "1.1.1" + }, + "@types/events": { + "version": "3.0.0" + }, + "@types/glob": { + "version": "7.1.1", + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3" + }, + "@types/minimist": { + "version": "1.2.0" + }, + "@types/node": { + "version": "13.1.8" + }, + "@types/normalize-package-data": { + "version": "2.4.0" + }, + "@types/unist": { + "version": "2.0.3" + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0" + }, + "@xtuc/long": { + "version": "4.2.2" + }, + "JSONStream": { + "version": "1.3.5", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1" + }, + "abort-controller": { + "version": "3.0.0", + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-leveldown": { + "version": "5.0.0", + "requires": { + "xtend": "~4.0.0" + } + }, + "abstract-logging": { + "version": "1.0.0" + }, + "accepts": { + "version": "1.3.7", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.1.0" + }, + "acorn-jsx": { + "version": "5.1.0" + }, + "acorn-node": { + "version": "1.8.2", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn-walk": { + "version": "7.0.0" + } + } + }, + "acorn-walk": { + "version": "6.2.0" + }, + "add-stream": { + "version": "1.0.0" + }, + "aegir": { + "version": "20.5.1", + "requires": { + "@babel/cli": "^7.7.5", + "@babel/core": "^7.7.5", + "@babel/plugin-transform-regenerator": "^7.7.5", + "@babel/plugin-transform-runtime": "^7.7.6", + "@babel/preset-env": "^7.7.6", + "@babel/register": "^7.7.4", + "@babel/runtime": "^7.7.6", + "@commitlint/cli": "^8.0.0", + "@commitlint/config-conventional": "^8.0.0", + "@commitlint/lint": "^8.0.0", + "@commitlint/load": "^8.0.0", + "@commitlint/read": "^8.0.0", + "@commitlint/travis-cli": "^8.0.0", + "@hapi/joi": "^15.1.0", + "arrify": "^2.0.1", + "async": "^2.6.1", + "babel-loader": "^8.0.5", + "babel-plugin-transform-flow-comments": "^6.22.0", + "browserify-zlib": "~0.2.0", + "bundlesize": "~0.18.0", + "chalk": "^3.0.0", + "codecov": "^3.3.0", + "conventional-changelog": "^3.1.15", + "conventional-github-releaser": "^3.1.3", + "del": "^5.1.0", + "dependency-check": "^4.1.0", + "detect-node": "^2.0.4", + "documentation": "^12.1.4", + "electron": "^6.0.9", + "electron-mocha": "^8.1.2", + "es6-promisify": "^6.0.2", + "eslint": "^6.3.0", + "eslint-config-standard": "^14.1.0", + "eslint-plugin-import": "^2.19.1", + "eslint-plugin-no-only-tests": "^2.4.0", + "eslint-plugin-node": "^10.0.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^4.0.1", + "execa": "^1.0.0", + "filesize": "^6.0.1", + "findup-sync": "^4.0.0", + "fs-extra": "^8.1.0", + "gh-pages": "^2.1.1", + "git-validate": "^2.2.4", + "globby": "^10.0.1", + "it-glob": "~0.0.5", + "json-loader": "~0.5.7", + "karma": "^4.4.1", + "karma-chrome-launcher": "^3.1.0", + "karma-cli": "^2.0.0", + "karma-edge-launcher": "~0.4.2", + "karma-firefox-launcher": "^1.2.0", + "karma-junit-reporter": "^2.0.1", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.5", + "karma-mocha-webworker": "^1.3.0", + "karma-sourcemap-loader": "~0.3.7", + "karma-webpack": "4.0.2", + "listr": "~0.14.2", + "listr-verbose-renderer": "~0.6.0", + "lodash": "^4.17.14", + "mocha": "^6.2.2", + "npm-package-json-lint": "^4.4.0", + "npm-which": "^3.0.1", + "nyc": "^14.1.0", + "p-map": "^3.0.0", + "pify": "^4.0.1", + "pretty-hrtime": "^1.0.3", + "prompt-promise": "^1.0.3", + "read-pkg-up": "^7.0.1", + "resolve-bin": "~0.4.0", + "rimraf": "^3.0.0", + "semver": "^6.3.0", + "simple-git": "^1.128.0", + "stats-webpack-plugin": "~0.7.0", + "stream-array": "^1.1.2", + "stream-http": "^3.1.0", + "terser-webpack-plugin": "^2.2.3", + "through": "^2.3.8", + "transform-loader": "~0.2.4", + "update-notifier": "^3.0.1", + "vinyl-fs": "^3.0.3", + "webpack": "^4.41.2", + "webpack-bundle-analyzer": "^3.6.0", + "webpack-cli": "^3.3.10", + "webpack-merge": "^4.2.2", + "yargs": "^15.0.2", + "yargs-parser": "^16.1.0" + }, + "dependencies": { + "@hapi/joi": { + "version": "15.1.1", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "ansi-regex": { + "version": "5.0.0" + }, + "ansi-styles": { + "version": "4.2.1", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "arrify": { + "version": "2.0.1" + }, + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "chalk": { + "version": "3.0.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "6.0.0", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "emoji-regex": { + "version": "8.0.0" + }, + "filesize": { + "version": "6.0.1" + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "read-pkg": { + "version": "5.2.0", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "rimraf": { + "version": "3.0.0", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "6.3.0" + }, + "string-width": { + "version": "4.2.0", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "requires": { + "has-flag": "^4.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.1.0", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^16.1.0" + } + }, + "yargs-parser": { + "version": "16.1.0", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "after": { + "version": "0.8.2" + }, + "agent-base": { + "version": "4.3.0", + "requires": { + "es6-promisify": "^5.0.0" + }, + "dependencies": { + "es6-promisify": { + "version": "5.0.0", + "requires": { + "es6-promise": "^4.0.3" + } + } + } + }, + "aggregate-error": { + "version": "3.0.1", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "dependencies": { + "indent-string": { + "version": "4.0.0" + } + } + }, + "ajv": { + "version": "6.11.0", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1" + }, + "ajv-keywords": { + "version": "3.4.1" + }, + "ansi-align": { + "version": "3.0.0", + "requires": { + "string-width": "^3.0.0" + } + }, + "ansi-colors": { + "version": "3.2.3" + }, + "ansi-escapes": { + "version": "4.3.0", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-html": { + "version": "0.0.7" + }, + "ansi-regex": { + "version": "2.1.1" + }, + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-observable": { + "version": "0.3.0" + }, + "anymatch": { + "version": "3.1.1", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-buffer": { + "version": "1.0.2", + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "append-transform": { + "version": "1.0.0", + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0" + }, + "archy": { + "version": "1.0.0" + }, + "are-we-there-yet": { + "version": "1.1.5", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "args": { + "version": "5.0.1", + "requires": { + "camelcase": "5.0.0", + "chalk": "2.4.2", + "leven": "2.1.0", + "mri": "1.1.4" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0" + }, + "leven": { + "version": "2.1.0" + } + } + }, + "argv": { + "version": "0.0.2" + }, + "arr-diff": { + "version": "4.0.0" + }, + "arr-flatten": { + "version": "1.1.0" + }, + "arr-union": { + "version": "3.1.0" + }, + "array-find-index": { + "version": "1.0.2" + }, + "array-flatten": { + "version": "1.1.1" + }, + "array-from": { + "version": "2.1.1" + }, + "array-ify": { + "version": "1.0.0" + }, + "array-includes": { + "version": "3.1.1", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-shuffle": { + "version": "1.0.1" + }, + "array-union": { + "version": "2.1.0" + }, + "array-uniq": { + "version": "1.0.3" + }, + "array-unique": { + "version": "0.3.2" + }, + "array.prototype.flat": { + "version": "1.2.3", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arraybuffer.slice": { + "version": "0.0.7" + }, + "arrify": { + "version": "1.0.1" + }, + "asmcrypto.js": { + "version": "2.3.2" + }, + "asn1": { + "version": "0.2.4", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.3.0", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "assemblyscript": { + "version": "0.6.0", + "requires": { + "@protobufjs/utf8": "^1.1.0", + "binaryen": "77.0.0-nightly.20190407", + "glob": "^7.1.3", + "long": "^4.0.0", + "opencollective-postinstall": "^2.0.0", + "source-map-support": "^0.5.11" + } + }, + "assert": { + "version": "1.5.0", + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1" + }, + "util": { + "version": "0.10.3", + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0" + }, + "assertion-error": { + "version": "1.1.0" + }, + "assign-symbols": { + "version": "1.0.0" + }, + "astral-regex": { + "version": "1.0.0" + }, + "async": { + "version": "3.1.0" + }, + "async-each": { + "version": "1.0.3" + }, + "async-iterator-all": { + "version": "1.0.0" + }, + "async-iterator-batch": { + "version": "0.0.1" + }, + "async-iterator-first": { + "version": "1.0.0" + }, + "async-iterator-last": { + "version": "1.0.0" + }, + "async-iterator-to-pull-stream": { + "version": "1.3.0", + "requires": { + "get-iterator": "^1.0.2", + "pull-stream-to-async-iterator": "^1.0.1" + } + }, + "async-iterator-to-stream": { + "version": "1.1.0", + "requires": { + "readable-stream": "^3.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "async-limiter": { + "version": "1.0.1" + }, + "asynckit": { + "version": "0.4.0" + }, + "atob": { + "version": "2.1.2" + }, + "aws-sign2": { + "version": "0.7.0" + }, + "aws4": { + "version": "1.9.1" + }, + "axios": { + "version": "0.19.1", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-loader": { + "version": "8.0.6", + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0" + }, + "babel-plugin-transform-flow-comments": { + "version": "6.22.0", + "requires": { + "babel-plugin-syntax-flow": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-polyfill": { + "version": "6.26.0", + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1" + } + } + }, + "babelify": { + "version": "10.0.0" + }, + "backo2": { + "version": "1.0.2" + }, + "bail": { + "version": "1.0.4" + }, + "balanced-match": { + "version": "1.0.0" + }, + "base": { + "version": "0.11.2", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.3.0" + }, + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base-x": { + "version": "3.0.4", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base32-encode": { + "version": "1.1.1" + }, + "base32.js": { + "version": "0.1.0" + }, + "base64-arraybuffer": { + "version": "0.1.5" + }, + "base64-js": { + "version": "1.3.1" + }, + "base64id": { + "version": "1.0.0" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bech32": { + "version": "1.1.3" + }, + "better-assert": { + "version": "1.0.2", + "requires": { + "callsite": "1.0.0" + } + }, + "bfj": { + "version": "6.1.2", + "requires": { + "bluebird": "^3.5.5", + "check-types": "^8.0.3", + "hoopy": "^0.1.4", + "tryer": "^1.0.1" + } + }, + "big.js": { + "version": "5.2.2" + }, + "bignumber.js": { + "version": "9.0.0" + }, + "binary": { + "version": "0.3.0", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.0.0" + }, + "binary-querystring": { + "version": "0.1.2" + }, + "binaryen": { + "version": "77.0.0-nightly.20190407" + }, + "bindings": { + "version": "1.5.0", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bintrees": { + "version": "1.0.1" + }, + "bip174": { + "version": "1.0.1" + }, + "bip32": { + "version": "2.0.5", + "requires": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "dependencies": { + "@types/node": { + "version": "10.12.18" + } + } + }, + "bip66": { + "version": "1.1.5", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "bitcoin-ops": { + "version": "1.4.1" + }, + "bitcoinjs-lib": { + "version": "5.1.7", + "requires": { + "bech32": "^1.1.2", + "bip174": "^1.0.1", + "bip32": "^2.0.4", + "bip66": "^1.1.0", + "bitcoin-ops": "^1.4.0", + "bs58check": "^2.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.3", + "merkle-lib": "^2.0.10", + "pushdata-bitcoin": "^1.0.1", + "randombytes": "^2.0.1", + "tiny-secp256k1": "^1.1.1", + "typeforce": "^1.11.3", + "varuint-bitcoin": "^1.0.4", + "wif": "^2.0.1" + } + }, + "bl": { + "version": "4.0.0", + "requires": { + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "blakejs": { + "version": "1.1.0" + }, + "blob": { + "version": "0.0.5" + }, + "bluebird": { + "version": "3.7.2" + }, + "bn.js": { + "version": "4.11.8" + }, + "body": { + "version": "5.1.0", + "requires": { + "continuable-cache": "^0.3.1", + "error": "^7.0.0", + "raw-body": "~1.1.0", + "safe-json-parse": "~1.0.1" + }, + "dependencies": { + "bytes": { + "version": "1.0.0" + }, + "raw-body": { + "version": "1.1.7", + "requires": { + "bytes": "1", + "string_decoder": "0.10" + } + } + } + }, + "body-parser": { + "version": "1.19.0", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "qs": { + "version": "6.7.0" + } + } + }, + "borc": { + "version": "2.1.1", + "requires": { + "bignumber.js": "^9.0.0", + "commander": "^2.15.0", + "ieee754": "^1.1.8", + "iso-url": "~0.4.4", + "json-text-sequence": "~0.1.0" + } + }, + "boxen": { + "version": "3.2.0", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^2.4.2", + "cli-boxes": "^2.2.0", + "string-width": "^3.0.0", + "term-size": "^1.2.0", + "type-fest": "^0.3.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.3.1" + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0" + }, + "brotli-size": { + "version": "0.1.0", + "requires": { + "duplexer": "^0.1.1", + "iltorb": "^2.4.3" + } + }, + "browser-process-platform": { + "version": "0.1.1" + }, + "browser-resolve": { + "version": "1.11.3", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7" + } + } + }, + "browser-stdout": { + "version": "1.3.1" + }, + "browserify-aes": { + "version": "1.2.0", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.8.4", + "requires": { + "caniuse-lite": "^1.0.30001021", + "electron-to-chromium": "^1.3.338", + "node-releases": "^1.1.46" + } + }, + "bs58": { + "version": "4.0.1", + "requires": { + "base-x": "^3.0.2" + }, + "dependencies": { + "base-x": { + "version": "3.0.7", + "requires": { + "safe-buffer": "^5.0.1" + } + } + } + }, + "bs58check": { + "version": "2.1.2", + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "5.4.3", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0" + }, + "buffer-equal": { + "version": "1.0.0" + }, + "buffer-fill": { + "version": "1.0.0" + }, + "buffer-from": { + "version": "1.1.1" + }, + "buffer-indexof": { + "version": "1.1.1" + }, + "buffer-peek-stream": { + "version": "1.0.1" + }, + "buffer-reuse-pool": { + "version": "1.0.0" + }, + "buffer-shims": { + "version": "1.0.0" + }, + "buffer-split": { + "version": "1.0.0", + "requires": { + "buffer-indexof": "~0.0.0" + }, + "dependencies": { + "buffer-indexof": { + "version": "0.0.2" + } + } + }, + "buffer-xor": { + "version": "1.0.3" + }, + "buffers": { + "version": "0.1.1" + }, + "builtin-status-codes": { + "version": "3.0.0" + }, + "bundlesize": { + "version": "0.18.0", + "requires": { + "axios": "^0.19.0", + "brotli-size": "0.1.0", + "bytes": "^3.1.0", + "ci-env": "^1.4.0", + "commander": "^2.20.0", + "cosmiconfig": "^5.2.1", + "github-build": "^1.2.0", + "glob": "^7.1.4", + "gzip-size": "^4.0.0", + "prettycli": "^1.4.3" + } + }, + "byteman": { + "version": "1.3.5" + }, + "bytes": { + "version": "3.1.0" + }, + "cacache": { + "version": "13.0.1", + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "requires": { + "yallist": "^3.0.2" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "component-emitter": { + "version": "1.3.0" + } + } + }, + "cacheable-request": { + "version": "2.1.4", + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0" + }, + "normalize-url": { + "version": "2.0.1", + "requires": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + } + }, + "query-string": { + "version": "5.1.1", + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "sort-keys": { + "version": "2.0.0", + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "cached-path-relative": { + "version": "1.0.2" + }, + "caching-transform": { + "version": "3.0.2", + "requires": { + "hasha": "^3.0.0", + "make-dir": "^2.0.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.4.2" + } + }, + "callbackify": { + "version": "1.1.0" + }, + "caller-callsite": { + "version": "2.0.0", + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0" + } + } + }, + "caller-path": { + "version": "2.0.0", + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0" + }, + "callsites": { + "version": "3.1.0" + }, + "camelcase": { + "version": "5.3.1" + }, + "camelcase-keys": { + "version": "4.2.0", + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0" + }, + "map-obj": { + "version": "2.0.0" + } + } + }, + "caniuse-lite": { + "version": "1.0.30001022" + }, + "caseless": { + "version": "0.12.0" + }, + "ccount": { + "version": "1.0.4" + }, + "chai": { + "version": "4.2.0", + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chai-as-promised": { + "version": "7.1.1", + "requires": { + "check-error": "^1.0.2" + } + }, + "chai-checkmark": { + "version": "1.0.1" + }, + "chainsaw": { + "version": "0.1.0", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "character-entities": { + "version": "1.2.3" + }, + "character-entities-html4": { + "version": "1.1.3" + }, + "character-entities-legacy": { + "version": "1.1.3" + }, + "character-reference-invalid": { + "version": "1.1.3" + }, + "chardet": { + "version": "0.7.0" + }, + "check-error": { + "version": "1.0.2" + }, + "check-types": { + "version": "8.0.3" + }, + "chokidar": { + "version": "2.1.8", + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1" + }, + "braces": { + "version": "2.3.2", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.11", + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "optional": true + }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", + "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz", + "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "chownr": { + "version": "1.1.3" + }, + "chrome-trace-event": { + "version": "1.0.2", + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-env": { + "version": "1.12.0" + }, + "ci-info": { + "version": "2.0.0" + }, + "cid-tool": { + "version": "0.4.0", + "requires": { + "cids": "~0.7.0", + "explain-error": "^1.0.4", + "multibase": "~0.6.0", + "multihashes": "~0.4.14", + "split2": "^3.1.1", + "yargs": "^15.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0" + }, + "ansi-styles": { + "version": "4.2.1", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "emoji-regex": { + "version": "8.0.0" + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "split2": { + "version": "3.1.1", + "requires": { + "readable-stream": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.0", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.1.0", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^16.1.0" + } + }, + "yargs-parser": { + "version": "16.1.0", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "cids": { + "version": "0.7.2", + "requires": { + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + } + }, + "cipher-base": { + "version": "1.0.4", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-is": { + "version": "1.1.0" + }, + "class-utils": { + "version": "0.3.6", + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + } + }, + "clean-stack": { + "version": "2.2.0" + }, + "cli-boxes": { + "version": "2.2.0" + }, + "cli-cursor": { + "version": "2.1.0", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-truncate": { + "version": "0.2.1", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "slice-ansi": { + "version": "0.0.4" + }, + "string-width": { + "version": "1.0.2", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.0" + }, + "cliui": { + "version": "5.0.0", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "2.1.2" + }, + "clone-buffer": { + "version": "1.0.0" + }, + "clone-deep": { + "version": "4.0.1", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "clone-stats": { + "version": "1.0.0" + }, + "cloneable-readable": { + "version": "1.1.3", + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1" + } + } + }, + "code-point-at": { + "version": "1.1.0" + }, + "codecov": { + "version": "3.6.1", + "requires": { + "argv": "^0.0.2", + "ignore-walk": "^3.0.1", + "js-yaml": "^3.13.1", + "teeny-request": "^3.11.3", + "urlgrey": "^0.4.4" + } + }, + "collapse-white-space": { + "version": "1.0.5" + }, + "collection-visit": { + "version": "1.0.0", + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "colors": { + "version": "1.4.0" + }, + "combined-stream": { + "version": "1.0.8", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "1.0.7" + }, + "commander": { + "version": "2.20.3" + }, + "commondir": { + "version": "1.0.1" + }, + "compare-func": { + "version": "1.3.2", + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^3.0.0" + } + }, + "component-bind": { + "version": "1.0.0" + }, + "component-emitter": { + "version": "1.2.1" + }, + "component-inherit": { + "version": "0.0.3" + }, + "concat-map": { + "version": "0.0.1" + }, + "concat-stream": { + "version": "1.6.2", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "4.0.0", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "4.2.0", + "requires": { + "is-obj": "^1.0.0" + } + }, + "make-dir": { + "version": "1.3.0", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0" + } + } + }, + "connect": { + "version": "3.7.0", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "console-browserify": { + "version": "1.2.0" + }, + "console-control-strings": { + "version": "1.1.0" + }, + "constants-browserify": { + "version": "1.0.0" + }, + "contains-path": { + "version": "0.1.0" + }, + "content-disposition": { + "version": "0.5.3", + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "content-type": { + "version": "1.0.4" + }, + "continuable-cache": { + "version": "0.3.1" + }, + "conventional-changelog": { + "version": "3.1.18", + "requires": { + "conventional-changelog-angular": "^5.0.6", + "conventional-changelog-atom": "^2.0.3", + "conventional-changelog-codemirror": "^2.0.3", + "conventional-changelog-conventionalcommits": "^4.2.3", + "conventional-changelog-core": "^4.1.4", + "conventional-changelog-ember": "^2.0.4", + "conventional-changelog-eslint": "^3.0.4", + "conventional-changelog-express": "^2.0.1", + "conventional-changelog-jquery": "^3.0.6", + "conventional-changelog-jshint": "^2.0.3", + "conventional-changelog-preset-loader": "^2.3.0" + }, + "dependencies": { + "conventional-changelog-angular": { + "version": "5.0.6", + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "4.2.3", + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.17.15", + "q": "^1.5.1" + } + } + } + }, + "conventional-changelog-angular": { + "version": "1.6.6", + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-atom": { + "version": "2.0.3", + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-codemirror": { + "version": "2.0.3", + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-conventionalcommits": { + "version": "4.2.1", + "requires": { + "compare-func": "^1.3.1", + "lodash": "^4.2.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "4.1.4", + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^4.0.11", + "conventional-commits-parser": "^3.0.8", + "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": "^3.0.1", + "lodash": "^4.17.15", + "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": { + "git-semver-tags": { + "version": "3.0.1", + "requires": { + "meow": "^5.0.0", + "semver": "^6.0.0" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0" + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-changelog-ember": { + "version": "2.0.4", + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-eslint": { + "version": "3.0.4", + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-express": { + "version": "2.0.1", + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-jquery": { + "version": "3.0.6", + "requires": { + "q": "^1.5.1" + } + }, + "conventional-changelog-jscs": { + "version": "0.1.0", + "requires": { + "q": "^1.4.1" + } + }, + "conventional-changelog-jshint": { + "version": "2.0.3", + "requires": { + "compare-func": "^1.3.1", + "q": "^1.5.1" + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.0" + }, + "conventional-changelog-writer": { + "version": "4.0.11", + "requires": { + "compare-func": "^1.3.1", + "conventional-commits-filter": "^2.0.2", + "dateformat": "^3.0.0", + "handlebars": "^4.4.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^5.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0" + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-commits-filter": { + "version": "2.0.2", + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.0.8", + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^5.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-github-releaser": { + "version": "3.1.3", + "requires": { + "conventional-changelog": "^2.0.0", + "dateformat": "^3.0.0", + "debug": "^3.1.0", + "gh-got": "^7.0.0", + "git-semver-tags": "^2.0.0", + "lodash.merge": "^4.0.2", + "meow": "^5.0.0", + "object-assign": "^4.0.1", + "q": "^1.4.1", + "semver": "^5.0.1", + "semver-regex": "^2.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "conventional-changelog": { + "version": "2.0.3", + "requires": { + "conventional-changelog-angular": "^1.6.6", + "conventional-changelog-atom": "^2.0.0", + "conventional-changelog-codemirror": "^2.0.0", + "conventional-changelog-core": "^3.1.0", + "conventional-changelog-ember": "^2.0.1", + "conventional-changelog-eslint": "^3.0.0", + "conventional-changelog-express": "^2.0.0", + "conventional-changelog-jquery": "^0.1.0", + "conventional-changelog-jscs": "^0.1.0", + "conventional-changelog-jshint": "^2.0.0", + "conventional-changelog-preset-loader": "^2.0.1" + } + }, + "conventional-changelog-core": { + "version": "3.2.3", + "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", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-changelog-jquery": { + "version": "0.1.0", + "requires": { + "q": "^1.4.1" + } + }, + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2" + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "convert-source-map": { + "version": "1.7.0", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "cookie": { + "version": "0.3.1" + }, + "cookie-signature": { + "version": "1.0.6" + }, + "copy-concurrently": { + "version": "1.0.5", + "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" + }, + "core-js": { + "version": "2.6.11" + }, + "core-js-compat": { + "version": "3.6.4", + "requires": { + "browserslist": "^4.8.3", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0" + } + } + }, + "core-util-is": { + "version": "1.0.2" + }, + "cosmiconfig": { + "version": "5.2.1", + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0" + } + } + }, + "cp-file": { + "version": "6.2.0", + "requires": { + "graceful-fs": "^4.1.2", + "make-dir": "^2.0.0", + "nested-error-stacks": "^2.0.0", + "pify": "^4.0.1", + "safe-buffer": "^5.0.1" + } + }, + "create-ecdh": { + "version": "4.0.3", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-random-string": { + "version": "1.0.0" + }, + "currently-unhandled": { + "version": "0.4.1", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1" + }, + "cyclist": { + "version": "1.0.1" + }, + "dag-cbor-links": { + "version": "1.3.2", + "requires": { + "cids": "^0.7.1", + "dag-cbor-sync": "^0.6.2" + } + }, + "dag-cbor-sync": { + "version": "0.6.2", + "requires": { + "borc": "^2.0.3", + "cids": "^0.7.1", + "ipfs-block": "^0.8.0", + "is-circular": "^1.0.1", + "multihashing-async": "^0.8.0" + } + }, + "dargs": { + "version": "4.1.0", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "dashdash": { + "version": "1.14.1", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-queue": { + "version": "0.0.3" + }, + "datastore-core": { + "version": "0.7.0", + "requires": { + "debug": "^4.1.1", + "interface-datastore": "~0.7.0" + } + }, + "datastore-fs": { + "version": "0.9.1", + "requires": { + "datastore-core": "~0.7.0", + "fast-write-atomic": "~0.2.0", + "glob": "^7.1.3", + "interface-datastore": "~0.7.0", + "mkdirp": "~0.5.1" + } + }, + "datastore-level": { + "version": "0.14.1", + "requires": { + "datastore-core": "~0.7.0", + "interface-datastore": "^0.8.0", + "level": "^5.0.1" + }, + "dependencies": { + "interface-datastore": { + "version": "0.8.0", + "requires": { + "class-is": "^1.1.0", + "err-code": "^2.0.0", + "uuid": "^3.2.2" + } + } + } + }, + "datastore-pubsub": { + "version": "0.2.3", + "requires": { + "debug": "^4.1.1", + "err-code": "^2.0.0", + "interface-datastore": "~0.7.0", + "multibase": "~0.6.0" + } + }, + "date-fns": { + "version": "2.9.0" + }, + "date-format": { + "version": "2.1.0" + }, + "dateformat": { + "version": "3.0.3" + }, + "de-indent": { + "version": "1.0.2" + }, + "debug": { + "version": "4.1.1", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2" + } + } + }, + "decamelize": { + "version": "1.2.0" + }, + "decamelize-keys": { + "version": "1.1.0", + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + } + }, + "decode-uri-component": { + "version": "0.2.0" + }, + "decompress-response": { + "version": "3.3.0", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0" + }, + "deep-is": { + "version": "0.1.3" + }, + "default-require-extensions": { + "version": "2.0.0", + "requires": { + "strip-bom": "^3.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.1" + }, + "deferred-leveldown": { + "version": "1.2.2", + "requires": { + "abstract-leveldown": "~2.6.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "define-properties": { + "version": "1.1.3", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "0.2.5", + "requires": { + "is-descriptor": "^0.1.0" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "0.1.6", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6" + }, + "is-data-descriptor": { + "version": "0.1.4", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0" + } + } + }, + "defined": { + "version": "1.0.0" + }, + "del": { + "version": "5.1.0", + "requires": { + "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": { + "rimraf": { + "version": "3.0.0", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delay": { + "version": "4.3.0" + }, + "delayed-stream": { + "version": "1.0.0" + }, + "delegates": { + "version": "1.0.0" + }, + "delimit-stream": { + "version": "0.1.0" + }, + "depd": { + "version": "1.1.2" + }, + "dependency-check": { + "version": "4.1.0", + "requires": { + "debug": "^4.0.0", + "detective": "^5.0.2", + "globby": "^10.0.1", + "is-relative": "^1.0.0", + "micromatch": "^4.0.2", + "minimist": "^1.2.0", + "pkg-up": "^3.1.0", + "read-package-json": "^2.0.10", + "resolve": "^1.1.7" + }, + "dependencies": { + "micromatch": { + "version": "4.0.2", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + } + } + }, + "des.js": { + "version": "1.0.1", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4" + }, + "detab": { + "version": "2.0.2", + "requires": { + "repeat-string": "^1.5.4" + } + }, + "detect-file": { + "version": "1.0.0" + }, + "detect-libc": { + "version": "1.0.3" + }, + "detect-node": { + "version": "2.0.4" + }, + "detective": { + "version": "5.2.0", + "requires": { + "acorn-node": "^1.6.1", + "defined": "^1.0.0", + "minimist": "^1.1.1" + } + }, + "di": { + "version": "0.0.1" + }, + "diff": { + "version": "3.5.0" + }, + "diff-match-patch": { + "version": "1.0.4" + }, + "diffie-hellman": { + "version": "5.0.3", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "3.0.1", + "requires": { + "path-type": "^4.0.0" + }, + "dependencies": { + "path-type": { + "version": "4.0.0" + } + } + }, + "dirty-chai": { + "version": "2.0.1" + }, + "dlv": { + "version": "1.1.3" + }, + "dns-packet": { + "version": "4.2.0", + "requires": { + "ip": "^1.1.5", + "safe-buffer": "^5.1.1" + } + }, + "doctrine": { + "version": "1.5.0", + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "doctrine-temporary-fork": { + "version": "2.1.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "documentation": { + "version": "12.1.4", + "requires": { + "@babel/core": "^7.1.2", + "@babel/generator": "^7.1.3", + "@babel/parser": "7.1.3", + "@babel/plugin-proposal-class-properties": "^7.1.0", + "@babel/plugin-proposal-decorators": "^7.1.2", + "@babel/plugin-proposal-do-expressions": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "@babel/plugin-proposal-function-bind": "^7.0.0", + "@babel/plugin-proposal-function-sent": "^7.1.0", + "@babel/plugin-proposal-json-strings": "^7.0.0", + "@babel/plugin-proposal-logical-assignment-operators": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-proposal-pipeline-operator": "^7.0.0", + "@babel/plugin-proposal-throw-expressions": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-import-meta": "^7.0.0", + "@babel/preset-env": "^7.1.0", + "@babel/preset-flow": "^7.0.0", + "@babel/preset-react": "^7.0.0", + "@babel/preset-stage-0": "^7.0.0", + "@babel/traverse": "^7.1.4", + "@babel/types": "^7.1.3", + "ansi-html": "^0.0.7", + "babelify": "^10.0.0", + "chalk": "^2.3.0", + "chokidar": "^2.0.4", + "concat-stream": "^1.6.0", + "diff": "^4.0.1", + "doctrine-temporary-fork": "2.1.0", + "get-port": "^4.0.0", + "git-url-parse": "^11.1.2", + "github-slugger": "1.2.0", + "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", + "micromatch": "^3.1.5", + "mime": "^2.2.0", + "module-deps-sortable": "5.0.0", + "parse-filepath": "^1.0.2", + "pify": "^4.0.0", + "read-pkg-up": "^4.0.0", + "remark": "^9.0.0", + "remark-html": "^8.0.0", + "remark-reference-links": "^4.0.1", + "remark-toc": "^5.0.0", + "resolve": "^1.8.1", + "stream-array": "^1.1.2", + "strip-json-comments": "^2.0.1", + "tiny-lr": "^1.1.0", + "unist-builder": "^1.0.2", + "unist-util-visit": "^1.3.0", + "vfile": "^4.0.0", + "vfile-reporter": "^6.0.0", + "vfile-sort": "^2.1.0", + "vinyl": "^2.1.0", + "vinyl-fs": "^3.0.2", + "vue-template-compiler": "^2.5.16", + "yargs": "^12.0.2" + }, + "dependencies": { + "@babel/parser": { + "version": "7.1.3" + }, + "ansi-regex": { + "version": "3.0.0" + }, + "cliui": { + "version": "4.1.0", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "diff": { + "version": "4.0.2" + }, + "get-caller-file": { + "version": "1.0.3" + }, + "github-slugger": { + "version": "1.2.0", + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "require-main-filename": { + "version": "1.0.1" + }, + "string-width": { + "version": "2.1.1", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "dom-serialize": { + "version": "2.2.1", + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "domain-browser": { + "version": "1.2.0" + }, + "dot-prop": { + "version": "3.0.0", + "requires": { + "is-obj": "^1.0.0" + } + }, + "drbg.js": { + "version": "1.0.1", + "requires": { + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "duplexer": { + "version": "0.1.1" + }, + "duplexer2": { + "version": "0.1.4", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexer3": { + "version": "0.1.4" + }, + "duplexify": { + "version": "3.7.1", + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "edge-launcher": { + "version": "1.2.2" + }, + "ee-first": { + "version": "1.1.1" + }, + "ejs": { + "version": "2.7.4" + }, + "electron": { + "version": "6.1.7", + "requires": { + "@types/node": "^10.12.18", + "electron-download": "^4.1.0", + "extract-zip": "^1.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.13" + } + } + }, + "electron-download": { + "version": "4.1.1", + "requires": { + "debug": "^3.0.0", + "env-paths": "^1.0.0", + "fs-extra": "^4.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "path-exists": "^3.0.0", + "rc": "^1.2.1", + "semver": "^5.4.1", + "sumchecker": "^2.0.2" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "4.0.3", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "electron-mocha": { + "version": "8.2.0", + "requires": { + "ansi-colors": "^4.1.1", + "electron-window": "^0.8.0", + "fs-extra": "^8.1.0", + "log-symbols": "^3.0.0", + "mocha": "^7.0.0", + "which": "^2.0.2", + "yargs": "^15.1.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1" + }, + "ansi-regex": { + "version": "5.0.0" + }, + "ansi-styles": { + "version": "4.2.1", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chokidar": { + "version": "3.3.0", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "6.0.0", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2" + } + } + }, + "emoji-regex": { + "version": "8.0.0" + }, + "glob": { + "version": "7.1.3", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "requires": { + "chalk": "^2.4.2" + } + }, + "mocha": { + "version": "7.0.0", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.3" + }, + "ansi-regex": { + "version": "4.1.0" + }, + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "cliui": { + "version": "5.0.0", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "emoji-regex": { + "version": "7.0.3" + }, + "is-fullwidth-code-point": { + "version": "2.0.0" + }, + "log-symbols": { + "version": "2.2.0", + "requires": { + "chalk": "^2.0.1" + } + }, + "string-width": { + "version": "3.1.0", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which": { + "version": "1.3.1", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.0", + "requires": { + "cliui": "^5.0.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" + } + } + } + }, + "node-environment-flags": { + "version": "1.0.6", + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "readdirp": { + "version": "3.2.0", + "requires": { + "picomatch": "^2.0.4" + } + }, + "string-width": { + "version": "4.2.0", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "6.0.0", + "requires": { + "has-flag": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.1.0", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.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": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^16.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "yargs-parser": { + "version": "16.1.0", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + } + } + }, + "electron-to-chromium": { + "version": "1.3.338" + }, + "electron-window": { + "version": "0.8.1", + "requires": { + "is-electron-renderer": "^2.0.0" + } + }, + "elegant-spinner": { + "version": "1.0.1" + }, + "elliptic": { + "version": "6.5.2", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "email-addresses": { + "version": "3.1.0" + }, + "emoji-regex": { + "version": "6.1.1" + }, + "emojis-list": { + "version": "2.1.0" + }, + "encodeurl": { + "version": "1.0.2" + }, + "encoding-down": { + "version": "6.3.0", + "requires": { + "abstract-leveldown": "^6.2.1", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.2", + "requires": { + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.2.1", + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "engine.io-client": { + "version": "3.4.0", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "engine.io-parser": { + "version": "2.2.0", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ws": { + "version": "6.1.4", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0" + }, + "env-paths": { + "version": "1.0.0" + }, + "epimetheus": { + "version": "1.0.92", + "requires": { + "prom-client": "^10.0.0" + }, + "dependencies": { + "prom-client": { + "version": "10.2.3", + "requires": { + "tdigest": "^0.1.1" + } + } + } + }, + "err-code": { + "version": "2.0.0" + }, + "errno": { + "version": "0.1.7", + "requires": { + "prr": "~1.0.1" + } + }, + "error": { + "version": "7.2.1", + "requires": { + "string-template": "~0.2.1" + } + }, + "error-ex": { + "version": "1.3.2", + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.3", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-error": { + "version": "4.1.1" + }, + "es6-promise": { + "version": "4.2.8" + }, + "es6-promisify": { + "version": "6.0.2" + }, + "escape-html": { + "version": "1.0.3" + }, + "escape-string-regexp": { + "version": "1.0.5" + }, + "eslint": { + "version": "6.8.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "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.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^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", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "doctrine": { + "version": "3.0.0", + "requires": { + "esutils": "^2.0.2" + } + }, + "eslint-scope": { + "version": "5.0.0", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "globals": { + "version": "12.3.0", + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6" + }, + "semver": { + "version": "6.3.0" + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "strip-json-comments": { + "version": "3.0.1" + }, + "v8-compile-cache": { + "version": "2.1.0" + } + } + }, + "eslint-config-standard": { + "version": "14.1.0" + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "eslint-module-utils": { + "version": "2.5.2", + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "p-limit": { + "version": "1.3.0", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0" + }, + "pkg-dir": { + "version": "2.0.0", + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-es": { + "version": "2.0.0", + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "dependencies": { + "regexpp": { + "version": "3.0.0" + } + } + }, + "eslint-plugin-import": { + "version": "2.20.0", + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "p-limit": { + "version": "1.3.0", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0" + }, + "parse-json": { + "version": "2.2.0", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0" + }, + "read-pkg": { + "version": "2.0.0", + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + } + } + }, + "eslint-plugin-no-only-tests": { + "version": "2.4.0" + }, + "eslint-plugin-node": { + "version": "10.0.0", + "requires": { + "eslint-plugin-es": "^2.0.0", + "eslint-utils": "^1.4.2", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0" + } + } + }, + "eslint-plugin-promise": { + "version": "4.2.1" + }, + "eslint-plugin-standard": { + "version": "4.0.1" + }, + "eslint-scope": { + "version": "4.0.3", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0" + }, + "espree": { + "version": "6.1.2", + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1" + }, + "esquery": { + "version": "1.0.1", + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0" + }, + "esutils": { + "version": "2.0.3" + }, + "etag": { + "version": "1.8.1" + }, + "ethereumjs-account": { + "version": "3.0.0", + "requires": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.0", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "2.1.0", + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + } + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "isarray": { + "version": "0.0.1" + }, + "level-ws": { + "version": "0.0.0", + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2" + } + } + }, + "object-keys": { + "version": "0.4.0" + }, + "xtend": { + "version": "2.1.2", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "ethereumjs-common": { + "version": "1.5.0" + }, + "ethereumjs-tx": { + "version": "2.1.2", + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.0", + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", + "secp256k1": "^3.0.1" + } + }, + "keccak": { + "version": "2.1.0", + "requires": { + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" + } + } + } + }, + "ethereumjs-util": { + "version": "5.2.0", + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "^0.1.3", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "ethjs-util": { + "version": "0.1.6", + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-iterator": { + "version": "1.2.0" + }, + "event-target-shim": { + "version": "5.0.1" + }, + "eventemitter3": { + "version": "4.0.0" + }, + "events": { + "version": "3.1.0" + }, + "evp_bytestokey": { + "version": "1.0.3", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0" + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "expand-template": { + "version": "2.0.3" + }, + "expand-tilde": { + "version": "2.0.2", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "explain-error": { + "version": "1.0.4" + }, + "express": { + "version": "4.17.1", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.0" + }, + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "qs": { + "version": "6.7.0" + }, + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "extend": { + "version": "3.0.2" + }, + "extend-shallow": { + "version": "2.0.1", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "external-editor": { + "version": "3.1.0", + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "extract-zip": { + "version": "1.6.7", + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "extsprintf": { + "version": "1.3.0" + }, + "fast-deep-equal": { + "version": "3.1.1" + }, + "fast-fifo": { + "version": "1.0.0" + }, + "fast-glob": { + "version": "3.1.1", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2" + }, + "dependencies": { + "micromatch": { + "version": "4.0.2", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0" + }, + "fast-levenshtein": { + "version": "2.0.6" + }, + "fast-redact": { + "version": "2.0.0" + }, + "fast-safe-stringify": { + "version": "2.0.7" + }, + "fast-write-atomic": { + "version": "0.2.1" + }, + "fastq": { + "version": "1.6.0", + "requires": { + "reusify": "^1.0.0" + } + }, + "faye-websocket": { + "version": "0.10.0", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fd-slicer": { + "version": "1.0.1", + "requires": { + "pend": "~1.2.0" + } + }, + "figgy-pudding": { + "version": "3.5.1" + }, + "figures": { + "version": "2.0.0", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-type": { + "version": "12.4.2" + }, + "file-uri-to-path": { + "version": "1.0.0" + }, + "filename-reserved-regex": { + "version": "1.0.0" + }, + "filenamify": { + "version": "1.2.1", + "requires": { + "filename-reserved-regex": "^1.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + } + }, + "filenamify-url": { + "version": "1.0.0", + "requires": { + "filenamify": "^1.0.0", + "humanize-url": "^1.0.0" + } + }, + "filesize": { + "version": "3.6.1" + }, + "fill-range": { + "version": "7.0.1", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-parent-dir": { + "version": "0.3.0" + }, + "find-up": { + "version": "3.0.0", + "requires": { + "locate-path": "^3.0.0" + } + }, + "findup-sync": { + "version": "4.0.0", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^4.0.2", + "resolve-dir": "^1.0.1" + }, + "dependencies": { + "micromatch": { + "version": "4.0.2", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + } + } + }, + "flat": { + "version": "4.1.0", + "requires": { + "is-buffer": "~2.0.3" + } + }, + "flat-cache": { + "version": "2.0.1", + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatmap": { + "version": "0.0.3" + }, + "flatstr": { + "version": "1.0.12" + }, + "flatted": { + "version": "2.0.1" + }, + "flush-write-stream": { + "version": "1.1.1", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "fnv1a": { + "version": "1.0.1" + }, + "follow-redirects": { + "version": "1.5.10", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "for-in": { + "version": "1.0.2" + }, + "for-own": { + "version": "1.0.0", + "requires": { + "for-in": "^1.0.1" + } + }, + "foreground-child": { + "version": "1.5.6", + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "4.0.2", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + } + } + }, + "forever-agent": { + "version": "0.6.1" + }, + "form-data": { + "version": "3.0.0", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2" + }, + "fragment-cache": { + "version": "0.2.1", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2" + }, + "from2": { + "version": "2.3.0", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-constants": { + "version": "1.0.0" + }, + "fs-extra": { + "version": "8.1.0", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.0.1", + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0" + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0" + }, + "fsevents": { + "version": "2.1.2", + "optional": true + }, + "fsm": { + "version": "1.0.2", + "requires": { + "split": "~0.3.0" + }, + "dependencies": { + "split": { + "version": "0.3.3", + "requires": { + "through": "2" + } + } + } + }, + "fsm-event": { + "version": "2.1.0", + "requires": { + "fsm": "^1.0.2" + } + }, + "function-bind": { + "version": "1.1.1" + }, + "functional-red-black-tree": { + "version": "1.0.1" + }, + "gar": { + "version": "1.0.4" + }, + "gauge": { + "version": "2.7.4", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "gc-stats": { + "version": "1.4.0", + "optional": true, + "requires": { + "nan": "^2.13.2", + "node-pre-gyp": "^0.13.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "optional": true + }, + "needle": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.3.1.tgz", + "integrity": "sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg==", + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz", + "integrity": "sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==", + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.6.tgz", + "integrity": "sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g==", + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.1.tgz", + "integrity": "sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw==", + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "optional": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "optional": true + } + } + }, + "gensync": { + "version": "1.0.0-beta.1" + }, + "get-browser-rtc": { + "version": "1.0.2" + }, + "get-caller-file": { + "version": "2.0.5" + }, + "get-folder-size": { + "version": "2.0.1", + "requires": { + "gar": "^1.0.4", + "tiny-each-async": "2.0.3" + } + }, + "get-func-name": { + "version": "2.0.0" + }, + "get-iterator": { + "version": "1.0.2" + }, + "get-pkg-repo": { + "version": "1.4.0", + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1" + }, + "camelcase-keys": { + "version": "2.1.0", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "meow": { + "version": "3.7.0", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0" + }, + "read-pkg": { + "version": "1.1.0", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0" + } + } + }, + "get-port": { + "version": "4.2.0" + }, + "get-stdin": { + "version": "4.0.1" + }, + "get-stream": { + "version": "3.0.0" + }, + "get-value": { + "version": "2.0.6" + }, + "getpass": { + "version": "0.1.7", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "gh-got": { + "version": "7.1.0", + "requires": { + "got": "^8.0.0", + "is-plain-obj": "^1.1.0" + } + }, + "gh-pages": { + "version": "2.2.0", + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify-url": "^1.0.0", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "globby": { + "version": "6.1.0", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0" + } + } + }, + "git-raw-commits": { + "version": "2.0.0", + "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", + "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-remote-origin-url": { + "version": "2.0.0", + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0" + } + } + }, + "git-semver-tags": { + "version": "2.0.3", + "requires": { + "meow": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "meow": { + "version": "4.0.1", + "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" + } + } + }, + "git-up": { + "version": "4.0.1", + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^5.0.0" + } + }, + "git-url-parse": { + "version": "11.1.2", + "requires": { + "git-up": "^4.0.0" + } + }, + "git-validate": { + "version": "2.2.4" + }, + "gitconfiglocal": { + "version": "1.0.0", + "requires": { + "ini": "^1.3.2" + } + }, + "github-build": { + "version": "1.2.1", + "requires": { + "axios": "0.19.0" + }, + "dependencies": { + "axios": { + "version": "0.19.0", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + } + } + } + }, + "github-from-package": { + "version": "0.0.0" + }, + "github-slugger": { + "version": "1.2.1", + "requires": { + "emoji-regex": ">=6.0.0 <=6.1.1" + } + }, + "glob": { + "version": "7.1.6", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-stream": { + "version": "6.1.0", + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "is-glob": { + "version": "3.1.0", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "global-dirs": { + "version": "0.1.1", + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "2.0.0", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + }, + "globals": { + "version": "11.12.0" + }, + "globals-docs": { + "version": "2.4.1" + }, + "globalthis": { + "version": "1.0.1", + "requires": { + "define-properties": "^1.1.3" + } + }, + "globby": { + "version": "10.0.2", + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "go-ipfs-dep": { + "version": "0.4.22", + "requires": { + "go-platform": "^1.0.0", + "gunzip-maybe": "^1.4.1", + "node-fetch": "^2.3.0", + "pkg-conf": "^3.1.0", + "tar-fs": "^2.0.0", + "unzip-stream": "^0.3.0" + } + }, + "go-platform": { + "version": "1.0.0" + }, + "got": { + "version": "8.3.2", + "requires": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "dependencies": { + "p-timeout": { + "version": "2.0.1", + "requires": { + "p-finally": "^1.0.0" + } + }, + "pify": { + "version": "3.0.0" + } + } + }, + "graceful-fs": { + "version": "4.2.3" + }, + "growl": { + "version": "1.10.5" + }, + "gunzip-maybe": { + "version": "1.4.1", + "requires": { + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" + }, + "dependencies": { + "browserify-zlib": { + "version": "0.1.4", + "requires": { + "pako": "~0.2.0" + } + }, + "pako": { + "version": "0.2.9" + } + } + }, + "gzip-size": { + "version": "4.1.0", + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0" + } + } + }, + "hamt-sharding": { + "version": "0.0.2", + "requires": { + "sparse-array": "^1.3.1" + } + }, + "handlebars": { + "version": "4.7.2", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "hapi-pino": { + "version": "6.3.0", + "requires": { + "@hapi/hoek": "^8.3.0", + "abstract-logging": "^1.0.0", + "pino": "^5.13.5", + "pino-pretty": "^3.2.2" + } + }, + "har-schema": { + "version": "2.0.0" + }, + "har-validator": { + "version": "5.1.3", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0" + }, + "has": { + "version": "1.0.3", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary2": { + "version": "1.0.3", + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1" + } + } + }, + "has-cors": { + "version": "1.1.0" + }, + "has-flag": { + "version": "3.0.0" + }, + "has-symbol-support-x": { + "version": "1.4.2" + }, + "has-symbols": { + "version": "1.0.1" + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-unicode": { + "version": "2.0.1" + }, + "has-value": { + "version": "1.0.0", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + }, + "kind-of": { + "version": "4.0.0", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "has-yarn": { + "version": "2.1.0" + }, + "hash-base": { + "version": "3.0.4", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasha": { + "version": "3.0.0", + "requires": { + "is-stream": "^1.0.1" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0" + } + } + }, + "hashlru": { + "version": "2.3.0" + }, + "hast-util-is-element": { + "version": "1.0.3" + }, + "hast-util-sanitize": { + "version": "1.3.1", + "requires": { + "xtend": "^4.0.1" + } + }, + "hast-util-to-html": { + "version": "4.0.1", + "requires": { + "ccount": "^1.0.0", + "comma-separated-tokens": "^1.0.1", + "hast-util-is-element": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "html-void-elements": "^1.0.0", + "property-information": "^4.0.0", + "space-separated-tokens": "^1.0.0", + "stringify-entities": "^1.0.1", + "unist-util-is": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "hast-util-whitespace": { + "version": "1.0.3" + }, + "hat": { + "version": "0.0.3" + }, + "he": { + "version": "1.2.0" + }, + "heap": { + "version": "0.2.6" + }, + "hi-base32": { + "version": "0.5.0" + }, + "highlight.js": { + "version": "9.18.0" + }, + "hmac-drbg": { + "version": "1.0.1", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hoopy": { + "version": "0.1.4" + }, + "hosted-git-info": { + "version": "2.8.5" + }, + "html-escaper": { + "version": "2.0.0" + }, + "html-void-elements": { + "version": "1.0.4" + }, + "http-cache-semantics": { + "version": "3.8.1" + }, + "http-errors": { + "version": "1.7.2", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3" + } + } + }, + "http-parser-js": { + "version": "0.4.10" + }, + "http-proxy": { + "version": "1.18.0", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "follow-redirects": { + "version": "1.9.0", + "requires": { + "debug": "^3.0.0" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "http-signature": { + "version": "1.2.0", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0" + }, + "https-proxy-agent": { + "version": "2.2.4", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "human-signals": { + "version": "1.1.1" + }, + "human-to-milliseconds": { + "version": "2.0.0" + }, + "humanize-url": { + "version": "1.0.1", + "requires": { + "normalize-url": "^1.0.0", + "strip-url-auth": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.1.13" + }, + "iferr": { + "version": "0.1.5" + }, + "ignore": { + "version": "5.1.4" + }, + "ignore-walk": { + "version": "3.0.3", + "requires": { + "minimatch": "^3.0.4" + } + }, + "iltorb": { + "version": "2.4.4", + "requires": { + "detect-libc": "^1.0.3", + "nan": "^2.14.0", + "npmlog": "^4.1.2", + "prebuild-install": "^5.3.2", + "which-pm-runs": "^1.0.0" + } + }, + "immediate": { + "version": "3.2.3" + }, + "import-fresh": { + "version": "3.2.1", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0" + } + } + }, + "import-lazy": { + "version": "2.1.0" + }, + "import-local": { + "version": "2.0.0", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "resolve-cwd": { + "version": "2.0.0", + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0" + } + } + }, + "imurmurhash": { + "version": "0.1.4" + }, + "indent-string": { + "version": "3.2.0" + }, + "indexof": { + "version": "0.0.1" + }, + "infer-owner": { + "version": "1.0.4" + }, + "inflight": { + "version": "1.0.6", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "1.3.5" + }, + "inquirer": { + "version": "7.0.3", + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "cli-cursor": { + "version": "3.1.0", + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0" + }, + "figures": { + "version": "3.1.0", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "restore-cursor": { + "version": "3.1.0", + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "4.2.0", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0" + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "interface-connection": { + "version": "0.3.3", + "requires": { + "pull-defer": "~0.2.3" + } + }, + "interface-datastore": { + "version": "0.7.0", + "requires": { + "class-is": "^1.1.0", + "err-code": "^1.1.2", + "uuid": "^3.2.2" + }, + "dependencies": { + "err-code": { + "version": "1.1.2" + } + } + }, + "interface-ipfs-core": { + "version": "0.127.0", + "requires": { + "chai": "^4.2.0", + "chai-as-promised": "^7.1.1", + "cids": "~0.7.1", + "delay": "^4.3.0", + "dirty-chai": "^2.0.1", + "hat": "0.0.3", + "ipfs-block": "~0.8.0", + "ipfs-unixfs": "^0.3.0", + "ipfs-utils": "^0.6.0", + "ipld-dag-cbor": "~0.15.0", + "ipld-dag-pb": "^0.18.1", + "is-ipfs": "~0.6.1", + "it-all": "^1.0.1", + "it-concat": "^1.0.0", + "it-last": "^1.0.1", + "it-pushable": "^1.3.1", + "multiaddr": "^7.2.1", + "multibase": "~0.6.0", + "multihashes": "~0.4.14", + "multihashing-async": "^0.8.0", + "peer-id": "~0.13.5", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "bn.js": { + "version": "5.1.1" + }, + "ipfs-unixfs": { + "version": "0.3.0", + "requires": { + "err-code": "^2.0.0", + "protons": "^1.1.0" + } + }, + "libp2p-crypto": { + "version": "0.17.2", + "requires": { + "asmcrypto.js": "^2.3.2", + "asn1.js": "^5.2.0", + "bn.js": "^5.0.0", + "browserify-aes": "^1.2.0", + "bs58": "^4.0.1", + "err-code": "^1.1.2", + "iso-random-stream": "^1.1.0", + "keypair": "^1.0.1", + "libp2p-crypto-secp256k1": "~0.4.0", + "multihashing-async": "~0.8.0", + "node-forge": "~0.9.1", + "pem-jwk": "^2.0.0", + "protons": "^1.0.1", + "rsa-pem-to-jwk": "^1.1.3", + "tweetnacl": "^1.0.1", + "ursa-optional": "~0.10.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2" + } + } + }, + "libp2p-crypto-secp256k1": { + "version": "0.4.1", + "requires": { + "bs58": "^4.0.1", + "multihashing-async": "^0.8.0", + "nodeify": "^1.0.1", + "safe-buffer": "^5.1.2", + "secp256k1": "^3.6.2" + } + }, + "peer-id": { + "version": "0.13.6", + "requires": { + "cids": "~0.7.1", + "class-is": "^1.1.0", + "libp2p-crypto": "~0.17.0", + "multihashes": "~0.4.15", + "protons": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "tweetnacl": { + "version": "1.0.2" + } + } + }, + "interpret": { + "version": "1.2.0" + }, + "into-stream": { + "version": "3.1.0", + "requires": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + } + }, + "invariant": { + "version": "2.2.4", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0" + }, + "ip": { + "version": "1.1.5" + }, + "ip-address": { + "version": "6.2.0", + "requires": { + "jsbn": "1.1.0", + "lodash.find": "4.6.0", + "lodash.max": "4.0.1", + "lodash.merge": "4.6.2", + "lodash.padstart": "4.6.1", + "lodash.repeat": "4.1.0", + "sprintf-js": "1.1.2" + }, + "dependencies": { + "jsbn": { + "version": "1.1.0" + }, + "sprintf-js": { + "version": "1.1.2" + } + } + }, + "ip-regex": { + "version": "4.1.0" + }, + "ipaddr.js": { + "version": "1.9.0" + }, + "ipfs": { + "version": "0.40.0", + "requires": { + "@hapi/ammo": "^4.0.0", + "@hapi/boom": "^7.4.3", + "@hapi/hapi": "^18.3.2", + "@hapi/joi": "^15.0.0", + "abort-controller": "^3.0.0", + "array-shuffle": "^1.0.1", + "async-iterator-all": "^1.0.0", + "async-iterator-first": "^1.0.0", + "async-iterator-to-pull-stream": "^1.3.0", + "async-iterator-to-stream": "^1.1.0", + "base32.js": "~0.1.0", + "bignumber.js": "^9.0.0", + "binary-querystring": "~0.1.2", + "bl": "^4.0.0", + "bs58": "^4.0.1", + "buffer-peek-stream": "^1.0.1", + "byteman": "^1.3.5", + "callbackify": "^1.1.0", + "cid-tool": "~0.4.0", + "cids": "~0.7.1", + "class-is": "^1.1.0", + "dag-cbor-links": "^1.3.2", + "datastore-core": "~0.7.0", + "datastore-pubsub": "^0.2.1", + "debug": "^4.1.0", + "dlv": "^1.1.3", + "err-code": "^2.0.0", + "explain-error": "^1.0.4", + "file-type": "^12.0.1", + "fnv1a": "^1.0.1", + "fsm-event": "^2.1.0", + "get-folder-size": "^2.0.0", + "glob": "^7.1.3", + "hapi-pino": "^6.1.0", + "hashlru": "^2.3.0", + "human-to-milliseconds": "^2.0.0", + "interface-datastore": "~0.8.0", + "ipfs-bitswap": "^0.26.0", + "ipfs-block": "~0.8.1", + "ipfs-block-service": "~0.16.0", + "ipfs-http-client": "^39.0.2", + "ipfs-http-response": "~0.4.0", + "ipfs-mfs": "^0.13.0", + "ipfs-multipart": "^0.2.0", + "ipfs-repo": "^0.29.3", + "ipfs-unixfs": "~0.1.16", + "ipfs-unixfs-exporter": "^0.38.0", + "ipfs-unixfs-importer": "^0.40.0", + "ipfs-utils": "~0.4.0", + "ipld": "~0.25.0", + "ipld-bitcoin": "~0.3.0", + "ipld-dag-cbor": "~0.15.0", + "ipld-dag-pb": "~0.18.0", + "ipld-ethereum": "^4.0.0", + "ipld-git": "~0.5.0", + "ipld-raw": "^4.0.0", + "ipld-zcash": "~0.4.0", + "ipns": "^0.6.1", + "is-domain-name": "^1.0.1", + "is-ipfs": "~0.6.1", + "is-pull-stream": "~0.0.0", + "is-stream": "^2.0.0", + "iso-url": "~0.4.6", + "it-pipe": "^1.0.1", + "it-to-stream": "^0.1.1", + "jsondiffpatch": "~0.3.11", + "just-safe-set": "^2.1.0", + "kind-of": "^6.0.2", + "ky": "^0.15.0", + "ky-universal": "~0.3.0", + "libp2p": "^0.26.2", + "libp2p-bootstrap": "~0.9.3", + "libp2p-crypto": "^0.16.2", + "libp2p-delegated-content-routing": "^0.3.1", + "libp2p-delegated-peer-routing": "^0.3.1", + "libp2p-floodsub": "^0.18.0", + "libp2p-gossipsub": "~0.0.5", + "libp2p-kad-dht": "~0.16.0", + "libp2p-keychain": "^0.5.1", + "libp2p-mdns": "~0.12.0", + "libp2p-record": "~0.7.0", + "libp2p-secio": "~0.11.0", + "libp2p-tcp": "^0.13.0", + "libp2p-webrtc-star": "~0.16.0", + "libp2p-websocket-star-multi": "~0.4.3", + "libp2p-websockets": "~0.12.3", + "lodash.flatten": "^4.4.0", + "mafmt": "^6.0.10", + "merge-options": "^2.0.0", + "mime-types": "^2.1.21", + "mkdirp": "~0.5.1", + "mortice": "^2.0.0", + "multiaddr": "^6.1.1", + "multiaddr-to-uri": "^5.0.0", + "multibase": "~0.6.0", + "multicodec": "~0.5.5", + "multihashes": "~0.4.14", + "multihashing-async": "^0.8.0", + "node-fetch": "^2.3.0", + "p-iteration": "^1.1.8", + "p-queue": "^6.1.0", + "peer-book": "^0.9.1", + "peer-id": "^0.12.2", + "peer-info": "~0.15.1", + "progress": "^2.0.1", + "prom-client": "^11.5.3", + "prometheus-gc-stats": "~0.6.0", + "promise-nodeify": "^3.0.1", + "promisify-es6": "^1.0.3", + "protons": "^1.0.1", + "pull-abortable": "^4.1.1", + "pull-cat": "^1.1.11", + "pull-defer": "~0.2.3", + "pull-file": "^1.1.0", + "pull-mplex": "~0.1.1", + "pull-ndjson": "^0.2.0", + "pull-pushable": "^2.2.0", + "pull-sort": "^1.0.1", + "pull-stream": "^3.6.14", + "pull-stream-to-async-iterator": "^1.0.2", + "pull-stream-to-stream": "^2.0.0", + "pull-traverse": "^1.0.3", + "readable-stream": "^3.4.0", + "receptacle": "^1.3.2", + "semver": "^6.3.0", + "stream-to-pull-stream": "^1.7.3", + "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": "^14.0.0", + "yargs-promise": "^1.1.0" + }, + "dependencies": { + "@hapi/ammo": { + "version": "4.0.0", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "@hapi/joi": { + "version": "15.1.1", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "concat-stream": { + "version": "2.0.0", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.0.2" + } + }, + "form-data": { + "version": "2.5.1", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "interface-datastore": { + "version": "0.8.0", + "requires": { + "class-is": "^1.1.0", + "err-code": "^2.0.0", + "uuid": "^3.2.2" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "ipfs-http-client": { + "version": "39.0.2", + "requires": { + "abort-controller": "^3.0.0", + "async": "^2.6.1", + "async-iterator-all": "^1.0.0", + "async-iterator-to-pull-stream": "^1.3.0", + "bignumber.js": "^9.0.0", + "bl": "^4.0.0", + "bs58": "^4.0.1", + "buffer": "^5.4.2", + "callbackify": "^1.1.0", + "cids": "~0.7.1", + "debug": "^4.1.0", + "delay": "^4.3.0", + "detect-node": "^2.0.4", + "end-of-stream": "^1.4.1", + "err-code": "^2.0.0", + "event-iterator": "^1.2.0", + "explain-error": "^1.0.4", + "flatmap": "0.0.3", + "form-data": "^2.5.1", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "ipfs-block": "~0.8.1", + "ipfs-utils": "^0.4.0", + "ipld-dag-cbor": "~0.15.0", + "ipld-dag-pb": "^0.18.1", + "ipld-raw": "^4.0.0", + "is-ipfs": "~0.6.1", + "is-pull-stream": "0.0.0", + "is-stream": "^2.0.0", + "iso-stream-http": "~0.1.2", + "iso-url": "~0.4.6", + "it-glob": "0.0.6", + "it-to-stream": "^0.1.1", + "iterable-ndjson": "^1.1.0", + "just-kebab-case": "^1.1.0", + "just-map-keys": "^1.1.0", + "kind-of": "^6.0.2", + "ky": "^0.15.0", + "ky-universal": "^0.3.0", + "lru-cache": "^5.1.1", + "merge-options": "^2.0.0", + "multiaddr": "^6.0.6", + "multibase": "~0.6.0", + "multicodec": "~0.5.1", + "multihashes": "~0.4.14", + "once": "^1.4.0", + "peer-id": "~0.12.3", + "peer-info": "~0.15.1", + "promise-nodeify": "^3.0.1", + "promisify-es6": "^1.0.3", + "pull-defer": "~0.2.3", + "pull-stream": "^3.6.9", + "pull-stream-to-async-iterator": "^1.0.2", + "pull-to-stream": "~0.1.1", + "pump": "^3.0.0", + "qs": "^6.5.2", + "readable-stream": "^3.1.1", + "stream-to-pull-stream": "^1.7.2", + "tar-stream": "^2.0.1", + "through2": "^3.0.1" + } + }, + "ipfs-utils": { + "version": "0.4.2", + "requires": { + "buffer": "^5.2.1", + "err-code": "^2.0.0", + "fs-extra": "^8.1.0", + "is-buffer": "^2.0.3", + "is-electron": "^2.2.0", + "is-pull-stream": "0.0.0", + "is-stream": "^2.0.0", + "it-glob": "0.0.7", + "kind-of": "^6.0.2", + "pull-stream-to-async-iterator": "^1.0.2", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "it-glob": { + "version": "0.0.7", + "requires": { + "fs-extra": "^8.1.0", + "minimatch": "^3.0.4" + } + } + } + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "it-glob": { + "version": "0.0.6", + "requires": { + "fs-extra": "^8.1.0", + "minimatch": "^3.0.4" + } + }, + "lru-cache": { + "version": "5.1.1", + "requires": { + "yallist": "^3.0.2" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + }, + "multicodec": { + "version": "0.5.7", + "requires": { + "varint": "^5.0.0" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "6.3.0" + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + }, + "yargs": { + "version": "14.2.2", + "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": "^15.0.0" + } + }, + "yargs-parser": { + "version": "15.0.0", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "ipfs-bitswap": { + "version": "0.26.2", + "requires": { + "bignumber.js": "^9.0.0", + "callbackify": "^1.1.0", + "cids": "~0.7.0", + "debug": "^4.1.0", + "ipfs-block": "~0.8.0", + "just-debounce-it": "^1.1.0", + "moving-average": "^1.0.0", + "multicodec": "~0.5.7", + "multihashing-async": "^0.8.0", + "protons": "^1.0.1", + "pull-length-prefixed": "^1.3.1", + "pull-stream": "^3.6.9", + "varint-decoder": "~0.1.1" + }, + "dependencies": { + "multicodec": { + "version": "0.5.7", + "requires": { + "varint": "^5.0.0" + } + } + } + }, + "ipfs-block": { + "version": "0.8.1", + "requires": { + "cids": "~0.7.0", + "class-is": "^1.1.0" + } + }, + "ipfs-block-service": { + "version": "0.16.0", + "requires": { + "streaming-iterables": "^4.1.0" + } + }, + "ipfs-http-client": { + "version": "33.1.1", + "requires": { + "async": "^2.6.1", + "bignumber.js": "^9.0.0", + "bl": "^3.0.0", + "bs58": "^4.0.1", + "buffer": "^5.2.1", + "cids": "~0.7.1", + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "end-of-stream": "^1.4.1", + "err-code": "^1.1.2", + "flatmap": "0.0.3", + "glob": "^7.1.3", + "ipfs-block": "~0.8.1", + "ipfs-utils": "~0.0.3", + "ipld-dag-cbor": "~0.15.0", + "ipld-dag-pb": "~0.17.3", + "ipld-raw": "^4.0.0", + "is-ipfs": "~0.6.1", + "is-pull-stream": "0.0.0", + "is-stream": "^2.0.0", + "iso-stream-http": "~0.1.2", + "iso-url": "~0.4.6", + "just-kebab-case": "^1.1.0", + "just-map-keys": "^1.1.0", + "kind-of": "^6.0.2", + "lru-cache": "^5.1.1", + "multiaddr": "^6.0.6", + "multibase": "~0.6.0", + "multicodec": "~0.5.1", + "multihashes": "~0.4.14", + "once": "^1.4.0", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1", + "promisify-es6": "^1.0.3", + "pull-defer": "~0.2.3", + "pull-stream": "^3.6.9", + "pull-to-stream": "~0.1.1", + "pump": "^3.0.0", + "qs": "^6.5.2", + "readable-stream": "^3.1.1", + "stream-to-pull-stream": "^1.7.2", + "tar-stream": "^2.0.1", + "through2": "^3.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "bl": { + "version": "3.0.0", + "requires": { + "readable-stream": "^3.0.1" + } + }, + "concat-stream": { + "version": "2.0.0", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.0.2" + } + }, + "err-code": { + "version": "1.1.2" + }, + "ip-regex": { + "version": "2.1.0" + }, + "ipfs-utils": { + "version": "0.0.4", + "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" + } + }, + "ipld-dag-pb": { + "version": "0.17.4", + "requires": { + "cids": "~0.7.0", + "class-is": "^1.1.0", + "multicodec": "~0.5.1", + "multihashing-async": "~0.7.0", + "protons": "^1.0.1", + "stable": "~0.1.8" + } + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "requires": { + "yallist": "^3.0.2" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + }, + "multicodec": { + "version": "0.5.7", + "requires": { + "varint": "^5.0.0" + } + }, + "multihashing-async": { + "version": "0.7.0", + "requires": { + "blakejs": "^1.1.0", + "buffer": "^5.2.1", + "err-code": "^1.1.2", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js-revisited": "^3.0.0" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "ipfs-http-response": { + "version": "0.4.0", + "requires": { + "cids": "~0.7.1", + "debug": "^4.1.1", + "file-type": "^8.0.0", + "filesize": "^3.6.1", + "get-stream": "^3.0.0", + "ipfs-unixfs": "~0.1.16", + "mime-types": "^2.1.21", + "multihashes": "~0.4.14", + "p-try-each": "^1.0.1", + "stream-to-blob": "^2.0.0" + }, + "dependencies": { + "file-type": { + "version": "8.1.0" + } + } + }, + "ipfs-mfs": { + "version": "0.13.2", + "requires": { + "@hapi/boom": "^7.4.2", + "@hapi/joi": "^15.1.0", + "async-iterator-last": "^1.0.0", + "cids": "~0.7.1", + "debug": "^4.1.0", + "err-code": "^2.0.0", + "hamt-sharding": "~0.0.2", + "interface-datastore": "~0.7.0", + "ipfs-multipart": "~0.2.0", + "ipfs-unixfs": "~0.1.16", + "ipfs-unixfs-exporter": "~0.38.0", + "ipfs-unixfs-importer": "~0.40.0", + "ipld-dag-pb": "~0.18.0", + "joi-browser": "^13.4.0", + "mortice": "^2.0.0", + "multicodec": "~0.5.3", + "multihashes": "~0.4.14", + "once": "^1.4.0", + "pull-stream": "^3.6.9" + }, + "dependencies": { + "@hapi/joi": { + "version": "15.1.1", + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "multicodec": { + "version": "0.5.7", + "requires": { + "varint": "^5.0.0" + } + } + } + }, + "ipfs-multipart": { + "version": "0.2.0", + "requires": { + "@hapi/content": "^4.1.0", + "it-multipart": "~0.0.2" + } + }, + "ipfs-repo": { + "version": "0.29.3", + "requires": { + "base32.js": "~0.1.0", + "bignumber.js": "^9.0.0", + "bytes": "^3.1.0", + "cids": "~0.7.0", + "datastore-core": "~0.7.0", + "datastore-fs": "~0.9.0", + "datastore-level": "~0.14.0", + "debug": "^4.1.0", + "err-code": "^1.1.2", + "interface-datastore": "~0.7.0", + "ipfs-block": "~0.8.1", + "ipfs-repo-migrations": "~0.1.0", + "just-safe-get": "^1.3.0", + "just-safe-set": "^2.1.0", + "lodash.has": "^4.5.2", + "p-queue": "^6.0.0", + "pretty-bytes": "^5.3.0", + "proper-lockfile": "^4.0.0", + "sort-keys": "^3.0.0" + }, + "dependencies": { + "err-code": { + "version": "1.1.2" + } + } + }, + "ipfs-repo-migrations": { + "version": "0.1.1", + "requires": { + "chalk": "^2.4.2", + "datastore-fs": "~0.9.1", + "datastore-level": "~0.12.1", + "debug": "^4.1.0", + "interface-datastore": "~0.8.0", + "proper-lockfile": "^4.1.1", + "yargs": "^14.2.0", + "yargs-promise": "^1.1.0" + }, + "dependencies": { + "datastore-level": { + "version": "0.12.1", + "requires": { + "datastore-core": "~0.7.0", + "interface-datastore": "~0.7.0", + "level": "^5.0.1" + }, + "dependencies": { + "err-code": { + "version": "1.1.2" + }, + "interface-datastore": { + "version": "0.7.0", + "requires": { + "class-is": "^1.1.0", + "err-code": "^1.1.2", + "uuid": "^3.2.2" + } + } + } + }, + "interface-datastore": { + "version": "0.8.0", + "requires": { + "class-is": "^1.1.0", + "err-code": "^2.0.0", + "uuid": "^3.2.2" + } + }, + "yargs": { + "version": "14.2.2", + "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": "^15.0.0" + } + }, + "yargs-parser": { + "version": "15.0.0", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "ipfs-unixfs": { + "version": "0.1.16", + "requires": { + "protons": "^1.0.1" + } + }, + "ipfs-unixfs-exporter": { + "version": "0.38.0", + "requires": { + "async-iterator-last": "^1.0.0", + "cids": "~0.7.1", + "err-code": "^2.0.0", + "hamt-sharding": "~0.0.2", + "ipfs-unixfs": "~0.1.16", + "ipfs-unixfs-importer": "~0.40.0" + } + }, + "ipfs-unixfs-importer": { + "version": "0.40.0", + "requires": { + "async-iterator-all": "^1.0.0", + "async-iterator-batch": "~0.0.1", + "async-iterator-first": "^1.0.0", + "bl": "^3.0.0", + "deep-extend": "~0.6.0", + "err-code": "^2.0.0", + "hamt-sharding": "~0.0.2", + "ipfs-unixfs": "~0.1.16", + "ipld-dag-pb": "^0.18.0", + "multicodec": "~0.5.1", + "multihashing-async": "~0.7.0", + "rabin-wasm": "~0.0.8", + "superstruct": "~0.6.1" + }, + "dependencies": { + "bl": { + "version": "3.0.0", + "requires": { + "readable-stream": "^3.0.1" + } + }, + "multicodec": { + "version": "0.5.7", + "requires": { + "varint": "^5.0.0" + } + }, + "multihashing-async": { + "version": "0.7.0", + "requires": { + "blakejs": "^1.1.0", + "buffer": "^5.2.1", + "err-code": "^1.1.2", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js-revisited": "^3.0.0" + }, + "dependencies": { + "err-code": { + "version": "1.1.2" + } + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "ipfs-utils": { + "version": "0.6.0", + "requires": { + "buffer": "^5.2.1", + "err-code": "^2.0.0", + "fs-extra": "^8.1.0", + "is-electron": "^2.2.0", + "it-glob": "0.0.7", + "ky": "^0.16.1", + "ky-universal": "^0.3.0", + "stream-to-it": "^0.2.0" + }, + "dependencies": { + "ky": { + "version": "0.16.2" + } + } + }, + "ipfsd-ctl": { + "version": "1.0.6", + "requires": { + "@hapi/boom": "^8.0.1", + "@hapi/hapi": "^18.3.2", + "@hapi/joi": "^16.1.8", + "debug": "^4.1.1", + "execa": "^4.0.0", + "fs-extra": "^8.1.0", + "go-ipfs-dep": "~0.4.22", + "ipfs": "0.40.0", + "ipfs-http-client": "^41.0.0", + "ipfs-utils": "^0.6.0", + "ky": "^0.16.1", + "ky-universal": "^0.3.0", + "merge-options": "^2.0.0", + "multiaddr": "^6.1.1", + "nanoid": "^2.1.9", + "resolve-cwd": "^3.0.0", + "temp-write": "^4.0.0" + }, + "dependencies": { + "@hapi/boom": { + "version": "8.0.1", + "requires": { + "@hapi/hoek": "8.x.x" + } + }, + "cross-spawn": { + "version": "7.0.1", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "4.0.0", + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "ipfs-http-client": { + "version": "41.0.0", + "requires": { + "abort-controller": "^3.0.0", + "async-iterator-to-pull-stream": "^1.3.0", + "bignumber.js": "^9.0.0", + "bl": "^4.0.0", + "bs58": "^4.0.1", + "buffer": "^5.4.2", + "callbackify": "^1.1.0", + "cids": "~0.7.1", + "debug": "^4.1.0", + "err-code": "^2.0.0", + "explain-error": "^1.0.4", + "form-data": "^3.0.0", + "ipfs-block": "~0.8.1", + "ipfs-utils": "^0.4.2", + "ipld-dag-cbor": "~0.15.0", + "ipld-dag-pb": "^0.18.1", + "ipld-raw": "^4.0.0", + "is-ipfs": "~0.6.1", + "it-all": "^1.0.1", + "it-glob": "0.0.7", + "it-tar": "^1.1.1", + "it-to-stream": "^0.1.1", + "iterable-ndjson": "^1.1.0", + "ky": "^0.15.0", + "ky-universal": "^0.3.0", + "merge-options": "^2.0.0", + "multiaddr": "^6.0.6", + "multiaddr-to-uri": "^5.0.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.14", + "parse-duration": "^0.1.1", + "peer-id": "~0.12.3", + "peer-info": "~0.15.1", + "promise-nodeify": "^3.0.1" + }, + "dependencies": { + "ipfs-utils": { + "version": "0.4.2", + "requires": { + "buffer": "^5.2.1", + "err-code": "^2.0.0", + "fs-extra": "^8.1.0", + "is-buffer": "^2.0.3", + "is-electron": "^2.2.0", + "is-pull-stream": "0.0.0", + "is-stream": "^2.0.0", + "it-glob": "0.0.7", + "kind-of": "^6.0.2", + "pull-stream-to-async-iterator": "^1.0.2", + "readable-stream": "^3.4.0" + } + }, + "ky": { + "version": "0.15.0" + } + } + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "ky": { + "version": "0.16.2" + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1" + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0" + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "which": { + "version": "2.0.2", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "ipld": { + "version": "0.25.3", + "requires": { + "cids": "~0.7.1", + "ipfs-block": "~0.8.1", + "ipld-dag-cbor": "~0.15.0", + "ipld-dag-pb": "~0.18.1", + "ipld-raw": "^4.0.0", + "merge-options": "^2.0.0", + "multicodec": "^1.0.0", + "typical": "^6.0.0" + } + }, + "ipld-bitcoin": { + "version": "0.3.1", + "requires": { + "bitcoinjs-lib": "^5.0.0", + "cids": "~0.7.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.14", + "multihashing-async": "~0.8.0" + } + }, + "ipld-dag-cbor": { + "version": "0.15.1", + "requires": { + "borc": "^2.1.0", + "cids": "~0.7.0", + "is-circular": "^1.0.2", + "multicodec": "^1.0.0", + "multihashing-async": "~0.8.0" + } + }, + "ipld-dag-pb": { + "version": "0.18.2", + "requires": { + "cids": "~0.7.1", + "class-is": "^1.1.0", + "multicodec": "^1.0.0", + "multihashing-async": "~0.8.0", + "protons": "^1.0.1", + "stable": "~0.1.8" + } + }, + "ipld-ethereum": { + "version": "4.0.1", + "requires": { + "cids": "~0.7.0", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.1", + "ethereumjs-tx": "^2.1.1", + "merkle-patricia-tree": "^3.0.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15", + "multihashing-async": "~0.8.0", + "rlp": "^2.2.4" + } + }, + "ipld-git": { + "version": "0.5.1", + "requires": { + "cids": "~0.7.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.14", + "multihashing-async": "~0.8.0", + "smart-buffer": "^4.0.2", + "strftime": "~0.10.0" + } + }, + "ipld-raw": { + "version": "4.0.1", + "requires": { + "cids": "~0.7.0", + "multicodec": "^1.0.0", + "multihashing-async": "~0.8.0" + } + }, + "ipld-zcash": { + "version": "0.4.1", + "requires": { + "cids": "~0.7.1", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15", + "multihashing-async": "~0.8.0", + "zcash-block": "^2.0.0" + } + }, + "ipns": { + "version": "0.6.1", + "requires": { + "base32-encode": "^1.1.0", + "debug": "^4.1.1", + "err-code": "^2.0.0", + "interface-datastore": "~0.7.0", + "left-pad": "^1.3.0", + "libp2p-crypto": "^0.16.2", + "multihashes": "~0.4.14", + "peer-id": "^0.12.2", + "promisify-es6": "^1.0.3", + "protons": "^1.0.1", + "timestamp-nano": "^1.0.0" + } + }, + "irregular-plurals": { + "version": "2.0.0" + }, + "is-absolute": { + "version": "1.0.0", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-alphabetical": { + "version": "1.0.3" + }, + "is-alphanumeric": { + "version": "1.0.0" + }, + "is-alphanumerical": { + "version": "1.0.3", + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1" + }, + "is-binary-path": { + "version": "2.1.0", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.4" + }, + "is-callable": { + "version": "1.1.5" + }, + "is-ci": { + "version": "2.0.0", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-circular": { + "version": "1.0.2" + }, + "is-data-descriptor": { + "version": "1.0.0", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.2" + }, + "is-decimal": { + "version": "1.0.3" + }, + "is-deflate": { + "version": "1.0.0" + }, + "is-descriptor": { + "version": "1.0.2", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-directory": { + "version": "0.3.1" + }, + "is-domain-name": { + "version": "1.0.1" + }, + "is-electron": { + "version": "2.2.0" + }, + "is-electron-renderer": { + "version": "2.0.1" + }, + "is-extendable": { + "version": "0.1.1" + }, + "is-extglob": { + "version": "2.1.1" + }, + "is-finite": { + "version": "1.0.2", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fn": { + "version": "1.0.0" + }, + "is-fullwidth-code-point": { + "version": "2.0.0" + }, + "is-glob": { + "version": "4.0.1", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-gzip": { + "version": "1.0.0" + }, + "is-hex-prefixed": { + "version": "1.0.0" + }, + "is-hexadecimal": { + "version": "1.0.3" + }, + "is-installed-globally": { + "version": "0.1.0", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "dependencies": { + "is-path-inside": { + "version": "1.0.1", + "requires": { + "path-is-inside": "^1.0.1" + } + } + } + }, + "is-ip": { + "version": "3.1.0", + "requires": { + "ip-regex": "^4.0.0" + } + }, + "is-ipfs": { + "version": "0.6.3", + "requires": { + "bs58": "^4.0.1", + "cids": "~0.7.0", + "mafmt": "^7.0.0", + "multiaddr": "^7.2.1", + "multibase": "~0.6.0", + "multihashes": "~0.4.13" + }, + "dependencies": { + "mafmt": { + "version": "7.0.0", + "requires": { + "multiaddr": "^7.0.0" + } + } + } + }, + "is-negated-glob": { + "version": "1.0.0" + }, + "is-npm": { + "version": "3.0.0" + }, + "is-number": { + "version": "3.0.0", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + }, + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1" + }, + "is-object": { + "version": "1.0.1" + }, + "is-observable": { + "version": "1.1.0", + "requires": { + "symbol-observable": "^1.1.0" + } + }, + "is-path-cwd": { + "version": "2.2.0" + }, + "is-path-inside": { + "version": "3.0.2" + }, + "is-plain-obj": { + "version": "1.1.0" + }, + "is-plain-object": { + "version": "2.0.4", + "requires": { + "isobject": "^3.0.1" + } + }, + "is-promise": { + "version": "1.0.1" + }, + "is-pull-stream": { + "version": "0.0.0" + }, + "is-regex": { + "version": "1.0.5", + "requires": { + "has": "^1.0.3" + } + }, + "is-relative": { + "version": "1.0.0", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-retry-allowed": { + "version": "1.2.0" + }, + "is-ssh": { + "version": "1.3.1", + "requires": { + "protocols": "^1.1.0" + } + }, + "is-stream": { + "version": "2.0.0" + }, + "is-string": { + "version": "1.0.5" + }, + "is-symbol": { + "version": "1.0.3", + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-text-path": { + "version": "1.0.1", + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0" + }, + "is-unc-path": { + "version": "1.0.0", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1" + }, + "is-valid-glob": { + "version": "1.0.0" + }, + "is-whitespace-character": { + "version": "1.0.3" + }, + "is-windows": { + "version": "1.0.2" + }, + "is-word-character": { + "version": "1.0.3" + }, + "is-wsl": { + "version": "2.1.1" + }, + "is-yarn-global": { + "version": "0.3.0" + }, + "isarray": { + "version": "1.0.0" + }, + "isbinaryfile": { + "version": "3.0.3", + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0" + }, + "iso-random-stream": { + "version": "1.1.1", + "requires": { + "buffer": "^5.4.3", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "iso-stream-http": { + "version": "0.1.2", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "iso-url": { + "version": "0.4.6" + }, + "isobject": { + "version": "3.0.1" + }, + "isstream": { + "version": "0.1.2" + }, + "istanbul-lib-coverage": { + "version": "2.0.5" + }, + "istanbul-lib-hook": { + "version": "2.0.7", + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0" + } + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "2.2.7", + "requires": { + "html-escaper": "^2.0.0" + } + }, + "isurl": { + "version": "1.0.0", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "it-all": { + "version": "1.0.1" + }, + "it-concat": { + "version": "1.0.0", + "requires": { + "bl": "^4.0.0" + } + }, + "it-glob": { + "version": "0.0.7", + "requires": { + "fs-extra": "^8.1.0", + "minimatch": "^3.0.4" + } + }, + "it-last": { + "version": "1.0.1" + }, + "it-multipart": { + "version": "0.0.2", + "requires": { + "buffer-indexof": "^1.1.1", + "parse-headers": "^2.0.2" + } + }, + "it-pipe": { + "version": "1.1.0" + }, + "it-pushable": { + "version": "1.4.0", + "requires": { + "fast-fifo": "^1.0.0" + } + }, + "it-reader": { + "version": "2.1.0", + "requires": { + "bl": "^4.0.0" + } + }, + "it-tar": { + "version": "1.1.1", + "requires": { + "bl": "^4.0.0", + "buffer": "^5.4.3", + "it-reader": "^2.0.0", + "p-defer": "^3.0.0" + } + }, + "it-to-stream": { + "version": "0.1.1", + "requires": { + "buffer": "^5.2.1", + "fast-fifo": "^1.0.0", + "get-iterator": "^1.0.2", + "p-defer": "^3.0.0", + "p-fifo": "^1.0.0", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "iterable-ndjson": { + "version": "1.1.0", + "requires": { + "string_decoder": "^1.2.0" + }, + "dependencies": { + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "jest-worker": { + "version": "24.9.0", + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "jmespath": { + "version": "0.15.0" + }, + "joi-browser": { + "version": "13.4.0" + }, + "joycon": { + "version": "2.2.5" + }, + "js-sha3": { + "version": "0.8.0" + }, + "js-tokens": { + "version": "4.0.0" + }, + "js-yaml": { + "version": "3.13.1", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1" + }, + "jsesc": { + "version": "2.5.2" + }, + "json-buffer": { + "version": "3.0.0" + }, + "json-loader": { + "version": "0.5.7" + }, + "json-parse-better-errors": { + "version": "1.0.2" + }, + "json-schema": { + "version": "0.2.3" + }, + "json-schema-traverse": { + "version": "0.4.1" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1" + }, + "json-stringify-safe": { + "version": "5.0.1" + }, + "json-text-sequence": { + "version": "0.1.1", + "requires": { + "delimit-stream": "0.1.0" + } + }, + "json5": { + "version": "2.1.1", + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonbird": { + "version": "2.2.2", + "requires": { + "jsonparse": "^1.2.0", + "readable-stream": "^2.1.4", + "shortid": "^2.2.6" + } + }, + "jsonc-parser": { + "version": "2.2.0" + }, + "jsondiffpatch": { + "version": "0.3.11", + "requires": { + "chalk": "^2.3.0", + "diff-match-patch": "^1.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1" + }, + "jsprim": { + "version": "1.4.1", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-debounce-it": { + "version": "1.1.0" + }, + "just-extend": { + "version": "4.0.2" + }, + "just-kebab-case": { + "version": "1.1.0" + }, + "just-map-keys": { + "version": "1.1.0" + }, + "just-safe-get": { + "version": "1.3.3" + }, + "just-safe-set": { + "version": "2.1.0" + }, + "k-bucket": { + "version": "5.0.0", + "requires": { + "randombytes": "^2.0.3" + } + }, + "karma": { + "version": "4.4.1", + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.1.0", + "connect": "^3.6.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.14", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "chokidar": { + "version": "3.3.1", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" + } + }, + "readdirp": { + "version": "3.3.0", + "requires": { + "picomatch": "^2.0.7" + } + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "requires": { + "which": "^1.2.1" + } + }, + "karma-cli": { + "version": "2.0.0", + "requires": { + "resolve": "^1.3.3" + } + }, + "karma-edge-launcher": { + "version": "0.4.2", + "requires": { + "edge-launcher": "1.2.2" + } + }, + "karma-firefox-launcher": { + "version": "1.3.0", + "requires": { + "is-wsl": "^2.1.0" + } + }, + "karma-junit-reporter": { + "version": "2.0.1", + "requires": { + "path-is-absolute": "^1.0.0", + "xmlbuilder": "12.0.0" + } + }, + "karma-mocha": { + "version": "1.3.0", + "requires": { + "minimist": "1.2.0" + } + }, + "karma-mocha-reporter": { + "version": "2.2.5", + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0" + }, + "strip-ansi": { + "version": "4.0.0", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "karma-mocha-webworker": { + "version": "1.3.0", + "requires": { + "jsonbird": "^2.0.0", + "minimatch": "^3.0.3" + } + }, + "karma-sourcemap-loader": { + "version": "0.3.7", + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "karma-webpack": { + "version": "4.0.2", + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.1.0", + "neo-async": "^2.6.1", + "schema-utils": "^1.0.0", + "source-map": "^0.7.3", + "webpack-dev-middleware": "^3.7.0" + }, + "dependencies": { + "source-map": { + "version": "0.7.3" + } + } + }, + "keccak": { + "version": "1.4.0", + "requires": { + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" + } + }, + "keypair": { + "version": "1.0.1" + }, + "keypress": { + "version": "0.2.1" + }, + "keyv": { + "version": "3.0.0", + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3" + }, + "ky": { + "version": "0.15.0" + }, + "ky-universal": { + "version": "0.3.0", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "^2.6.0" + } + }, + "latency-monitor": { + "version": "0.2.1", + "requires": { + "debug": "^2.6.0", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "latest-version": { + "version": "5.1.0", + "requires": { + "package-json": "^6.3.0" + } + }, + "lazystream": { + "version": "1.0.0", + "requires": { + "readable-stream": "^2.0.5" + } + }, + "lcid": { + "version": "2.0.0", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "lead": { + "version": "1.0.0", + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "left-pad": { + "version": "1.3.0" + }, + "length-prefixed-stream": { + "version": "2.0.0", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "varint": "^5.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "level": { + "version": "5.0.1", + "requires": { + "level-js": "^4.0.0", + "level-packager": "^5.0.0", + "leveldown": "^5.0.0", + "opencollective-postinstall": "^2.0.0" + } + }, + "level-codec": { + "version": "9.0.1" + }, + "level-concat-iterator": { + "version": "2.0.1" + }, + "level-errors": { + "version": "2.0.1", + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1" + }, + "level-errors": { + "version": "1.1.2", + "requires": { + "errno": "~0.1.1" + } + }, + "readable-stream": { + "version": "1.1.14", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-js": { + "version": "4.0.2", + "requires": { + "abstract-leveldown": "~6.0.1", + "immediate": "~3.2.3", + "inherits": "^2.0.3", + "ltgt": "^2.1.2", + "typedarray-to-buffer": "~3.1.5" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.0.3", + "requires": { + "level-concat-iterator": "~2.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "level-mem": { + "version": "3.0.1", + "requires": { + "level-packager": "~4.0.0", + "memdown": "~3.0.0" + }, + "dependencies": { + "deferred-leveldown": { + "version": "4.0.2", + "requires": { + "abstract-leveldown": "~5.0.0", + "inherits": "^2.0.3" + } + }, + "encoding-down": { + "version": "5.0.4", + "requires": { + "abstract-leveldown": "^5.0.0", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "level-iterator-stream": { + "version": "3.0.1", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "xtend": "^4.0.0" + } + }, + "level-packager": { + "version": "4.0.1", + "requires": { + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" + } + }, + "levelup": { + "version": "3.1.1", + "requires": { + "deferred-leveldown": "~4.0.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~3.0.0", + "xtend": "~4.0.0" + } + }, + "memdown": { + "version": "3.0.0", + "requires": { + "abstract-leveldown": "~5.0.0", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "level-packager": { + "version": "5.1.1", + "requires": { + "encoding-down": "^6.3.0", + "levelup": "^4.3.2" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.2", + "requires": { + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "5.3.0", + "requires": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + } + }, + "level-iterator-stream": { + "version": "4.0.2", + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + } + }, + "levelup": { + "version": "4.3.2", + "requires": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "level-supports": { + "version": "1.0.1", + "requires": { + "xtend": "^4.0.2" + } + }, + "level-ws": { + "version": "1.0.0", + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.8", + "xtend": "^4.0.1" + } + }, + "leveldown": { + "version": "5.4.1", + "requires": { + "abstract-leveldown": "~6.2.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "~4.1.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.2", + "requires": { + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + }, + "dependencies": { + "level-codec": { + "version": "7.0.1" + }, + "level-errors": { + "version": "1.0.5", + "requires": { + "errno": "~0.1.1" + } + }, + "semver": { + "version": "5.4.1" + } + } + }, + "leven": { + "version": "3.1.0" + }, + "levenary": { + "version": "1.1.0", + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "libp2p": { + "version": "0.26.2", + "requires": { + "async": "^2.6.2", + "bignumber.js": "^9.0.0", + "class-is": "^1.1.0", + "debug": "^4.1.1", + "err-code": "^1.1.2", + "fsm-event": "^2.1.0", + "hashlru": "^2.3.0", + "interface-connection": "~0.3.3", + "latency-monitor": "~0.2.1", + "libp2p-crypto": "~0.16.1", + "libp2p-websockets": "^0.12.2", + "mafmt": "^6.0.7", + "merge-options": "^1.0.1", + "moving-average": "^1.0.0", + "multiaddr": "^6.1.0", + "multistream-select": "~0.14.6", + "once": "^1.4.0", + "peer-book": "^0.9.1", + "peer-id": "^0.12.2", + "peer-info": "~0.15.1", + "promisify-es6": "^1.0.3", + "protons": "^1.0.1", + "pull-cat": "^1.1.11", + "pull-defer": "~0.2.3", + "pull-handshake": "^1.1.4", + "pull-reader": "^1.3.1", + "pull-stream": "^3.6.9", + "retimer": "^2.0.0", + "superstruct": "^0.6.0", + "xsalsa20": "^1.0.2" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "err-code": { + "version": "1.1.2" + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "merge-options": { + "version": "1.0.1", + "requires": { + "is-plain-obj": "^1.1" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-bootstrap": { + "version": "0.9.7", + "requires": { + "async": "^2.6.1", + "debug": "^4.1.1", + "mafmt": "^6.0.4", + "multiaddr": "^6.0.3", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-crypto": { + "version": "0.16.3", + "requires": { + "asmcrypto.js": "^2.3.2", + "asn1.js": "^5.0.1", + "async": "^2.6.1", + "bn.js": "^4.11.8", + "browserify-aes": "^1.2.0", + "bs58": "^4.0.1", + "iso-random-stream": "^1.1.0", + "keypair": "^1.0.1", + "libp2p-crypto-secp256k1": "~0.3.0", + "multihashing-async": "~0.5.1", + "node-forge": "~0.9.1", + "pem-jwk": "^2.0.0", + "protons": "^1.0.1", + "rsa-pem-to-jwk": "^1.1.3", + "tweetnacl": "^1.0.0", + "ursa-optional": "~0.10.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "multihashing-async": { + "version": "0.5.2", + "requires": { + "blakejs": "^1.1.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + }, + "tweetnacl": { + "version": "1.0.2" + } + } + }, + "libp2p-crypto-secp256k1": { + "version": "0.3.1", + "requires": { + "async": "^2.6.2", + "bs58": "^4.0.1", + "multihashing-async": "~0.6.0", + "nodeify": "^1.0.1", + "safe-buffer": "^5.1.2", + "secp256k1": "^3.6.2" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "multihashing-async": { + "version": "0.6.0", + "requires": { + "blakejs": "^1.1.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + } + } + }, + "libp2p-delegated-content-routing": { + "version": "0.3.1", + "requires": { + "debug": "^4.1.1", + "multiaddr": "^6.1.0", + "p-queue": "^6.1.0" + }, + "dependencies": { + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-delegated-peer-routing": { + "version": "0.3.1", + "requires": { + "debug": "^4.1.1", + "p-queue": "^6.1.0", + "peer-id": "~0.12.2" + } + }, + "libp2p-floodsub": { + "version": "0.18.0", + "requires": { + "async": "^2.6.2", + "bs58": "^4.0.1", + "debug": "^4.1.1", + "length-prefixed-stream": "^2.0.0", + "libp2p-crypto": "~0.16.1", + "libp2p-pubsub": "~0.2.0", + "protons": "^1.0.1", + "pull-length-prefixed": "^1.3.2", + "pull-pushable": "^2.2.0", + "pull-stream": "^3.6.9" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "libp2p-gossipsub": { + "version": "0.0.5", + "requires": { + "async": "^2.6.2", + "err-code": "^1.1.2", + "libp2p-floodsub": "~0.17.1", + "libp2p-pubsub": "~0.2.0", + "multistream-select": "~0.14.6", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1", + "protons": "^1.0.1", + "pull-length-prefixed": "^1.3.3", + "pull-stream": "^3.6.13" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "err-code": { + "version": "1.1.2" + }, + "libp2p-floodsub": { + "version": "0.17.2", + "requires": { + "async": "^2.6.2", + "bs58": "^4.0.1", + "debug": "^4.1.1", + "length-prefixed-stream": "^2.0.0", + "libp2p-crypto": "~0.16.1", + "libp2p-pubsub": "~0.2.0", + "protons": "^1.0.1", + "pull-length-prefixed": "^1.3.2", + "pull-pushable": "^2.2.0", + "pull-stream": "^3.6.9" + } + } + } + }, + "libp2p-kad-dht": { + "version": "0.16.1", + "requires": { + "abort-controller": "^3.0.0", + "async": "^2.6.2", + "base32.js": "~0.1.0", + "chai-checkmark": "^1.0.1", + "cids": "~0.7.0", + "debug": "^4.1.1", + "err-code": "^1.1.2", + "hashlru": "^2.3.0", + "heap": "~0.2.6", + "interface-datastore": "~0.7.0", + "k-bucket": "^5.0.0", + "libp2p-crypto": "~0.16.1", + "libp2p-record": "~0.6.2", + "multihashes": "~0.4.14", + "multihashing-async": "~0.5.2", + "p-queue": "^6.0.0", + "p-times": "^2.1.0", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1", + "promise-to-callback": "^1.0.0", + "promisify-es6": "^1.0.3", + "protons": "^1.0.1", + "pull-length-prefixed": "^1.3.2", + "pull-stream": "^3.6.9", + "varint": "^5.0.0", + "xor-distance": "^2.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "err-code": { + "version": "1.1.2" + }, + "libp2p-record": { + "version": "0.6.3", + "requires": { + "async": "^2.6.2", + "buffer-split": "^1.0.0", + "err-code": "^1.1.2", + "multihashes": "~0.4.14", + "multihashing-async": "~0.6.0", + "protons": "^1.0.1" + }, + "dependencies": { + "multihashing-async": { + "version": "0.6.0", + "requires": { + "blakejs": "^1.1.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + } + } + }, + "multihashing-async": { + "version": "0.5.2", + "requires": { + "blakejs": "^1.1.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + } + } + }, + "libp2p-keychain": { + "version": "0.5.5", + "requires": { + "err-code": "^2.0.0", + "interface-datastore": "^0.7.0", + "libp2p-crypto": "^0.16.2", + "merge-options": "^1.0.1", + "node-forge": "^0.9.1", + "promisify-es6": "^1.0.3", + "sanitize-filename": "^1.6.1" + }, + "dependencies": { + "merge-options": { + "version": "1.0.1", + "requires": { + "is-plain-obj": "^1.1" + } + } + } + }, + "libp2p-mdns": { + "version": "0.12.3", + "requires": { + "async": "^2.6.2", + "debug": "^4.1.1", + "libp2p-tcp": "~0.13.0", + "multiaddr": "^6.0.6", + "multicast-dns": "^7.2.0", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-pubsub": { + "version": "0.2.1", + "requires": { + "async": "^2.6.2", + "bs58": "^4.0.1", + "debug": "^4.1.1", + "err-code": "^1.1.2", + "length-prefixed-stream": "^2.0.0", + "libp2p-crypto": "~0.16.1", + "protons": "^1.0.1", + "pull-length-prefixed": "^1.3.1", + "pull-pushable": "^2.2.0", + "pull-stream": "^3.6.9", + "sinon": "^7.3.2", + "time-cache": "~0.3.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "err-code": { + "version": "1.1.2" + } + } + }, + "libp2p-record": { + "version": "0.7.1", + "requires": { + "buffer-split": "^1.0.0", + "err-code": "^2.0.0", + "multihashes": "~0.4.15", + "multihashing-async": "^0.8.0", + "protons": "^1.0.1" + } + }, + "libp2p-secio": { + "version": "0.11.1", + "requires": { + "async": "^2.6.1", + "debug": "^4.1.1", + "interface-connection": "~0.3.2", + "libp2p-crypto": "~0.16.0", + "multihashing-async": "~0.5.2", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1", + "protons": "^1.0.1", + "pull-defer": "~0.2.3", + "pull-handshake": "^1.1.4", + "pull-length-prefixed": "^1.3.1", + "pull-stream": "^3.6.9" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "multihashing-async": { + "version": "0.5.2", + "requires": { + "blakejs": "^1.1.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.13", + "murmurhash3js": "^3.0.1", + "nodeify": "^1.0.1" + } + } + } + }, + "libp2p-tcp": { + "version": "0.13.2", + "requires": { + "class-is": "^1.1.0", + "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.7", + "multiaddr": "^6.1.0", + "once": "^1.4.0", + "stream-to-pull-stream": "^1.7.3" + }, + "dependencies": { + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-webrtc-star": { + "version": "0.16.1", + "requires": { + "@hapi/hapi": "^18.3.1", + "@hapi/inert": "^5.2.0", + "async": "^2.6.2", + "class-is": "^1.1.0", + "debug": "^4.1.1", + "epimetheus": "^1.0.92", + "interface-connection": "~0.3.3", + "mafmt": "^6.0.7", + "minimist": "^1.2.0", + "multiaddr": "^6.0.6", + "once": "^1.4.0", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1", + "pull-stream": "^3.6.9", + "simple-peer": "^9.3.0", + "socket.io": "^2.1.1", + "socket.io-client": "^2.1.1", + "stream-to-pull-stream": "^1.7.3" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "base64id": { + "version": "2.0.0" + }, + "engine.io": { + "version": "3.4.0", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "0.3.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" + } + }, + "engine.io-parser": { + "version": "2.2.0", + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "isarray": { + "version": "2.0.1" + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + }, + "socket.io": { + "version": "2.3.0", + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.4.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" + } + }, + "socket.io-parser": { + "version": "3.4.0", + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + } + }, + "ws": { + "version": "7.2.1" + } + } + }, + "libp2p-websocket-star": { + "version": "0.10.2", + "requires": { + "async": "^2.6.1", + "class-is": "^1.1.0", + "debug": "^4.1.1", + "interface-connection": "~0.3.2", + "libp2p-crypto": "~0.16.0", + "mafmt": "^6.0.4", + "multiaddr": "^6.0.3", + "nanoid": "^2.0.0", + "once": "^1.4.0", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1", + "pull-stream": "^3.6.9", + "socket.io-client": "^2.1.1", + "socket.io-pull-stream": "~0.1.5" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-websocket-star-multi": { + "version": "0.4.4", + "requires": { + "async": "^2.6.2", + "debug": "^4.1.1", + "libp2p-websocket-star": "~0.10.2", + "mafmt": "^6.0.7", + "multiaddr": "^6.0.6", + "once": "^1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "libp2p-websockets": { + "version": "0.12.4", + "requires": { + "class-is": "^1.1.0", + "debug": "^4.1.1", + "interface-connection": "~0.3.3", + "mafmt": "^6.0.7", + "multiaddr-to-uri": "^5.0.0" + } + }, + "lines-and-columns": { + "version": "1.1.6" + }, + "listr": { + "version": "0.14.3", + "requires": { + "@samverschueren/stream-to-observable": "^0.3.0", + "is-observable": "^1.1.0", + "is-promise": "^2.1.0", + "is-stream": "^1.1.0", + "listr-silent-renderer": "^1.1.1", + "listr-update-renderer": "^0.5.0", + "listr-verbose-renderer": "^0.5.0", + "p-map": "^2.0.0", + "rxjs": "^6.3.3" + }, + "dependencies": { + "date-fns": { + "version": "1.30.1" + }, + "is-promise": { + "version": "2.1.0" + }, + "is-stream": { + "version": "1.1.0" + }, + "listr-verbose-renderer": { + "version": "0.5.0", + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^1.27.2", + "figures": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0" + } + } + }, + "listr-silent-renderer": { + "version": "1.1.1" + }, + "listr-update-renderer": { + "version": "0.5.0", + "requires": { + "chalk": "^1.1.3", + "cli-truncate": "^0.2.1", + "elegant-spinner": "^1.0.1", + "figures": "^1.7.0", + "indent-string": "^3.0.0", + "log-symbols": "^1.0.2", + "log-update": "^2.3.0", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1" + }, + "chalk": { + "version": "1.1.3", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "figures": { + "version": "1.7.0", + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "requires": { + "chalk": "^1.0.0" + } + }, + "supports-color": { + "version": "2.0.0" + } + } + }, + "listr-verbose-renderer": { + "version": "0.6.0", + "requires": { + "chalk": "^2.4.1", + "cli-cursor": "^2.1.0", + "date-fns": "^2.0.1", + "figures": "^2.0.0" + } + }, + "livereload-js": { + "version": "2.4.0" + }, + "load-json-file": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0" + } + } + }, + "loader-runner": { + "version": "2.4.0" + }, + "loader-utils": { + "version": "1.2.3", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "3.0.0", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15" + }, + "lodash._reinterpolate": { + "version": "3.0.0" + }, + "lodash.find": { + "version": "4.6.0" + }, + "lodash.flatten": { + "version": "4.4.0" + }, + "lodash.flattendeep": { + "version": "4.4.0" + }, + "lodash.has": { + "version": "4.5.2" + }, + "lodash.includes": { + "version": "4.3.0" + }, + "lodash.isfunction": { + "version": "3.0.9" + }, + "lodash.ismatch": { + "version": "4.4.0" + }, + "lodash.max": { + "version": "4.0.1" + }, + "lodash.merge": { + "version": "4.6.2" + }, + "lodash.padstart": { + "version": "4.6.1" + }, + "lodash.repeat": { + "version": "4.1.0" + }, + "lodash.template": { + "version": "4.5.0", + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.throttle": { + "version": "4.1.1" + }, + "log-symbols": { + "version": "2.2.0", + "requires": { + "chalk": "^2.0.1" + } + }, + "log-update": { + "version": "2.3.0", + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0" + }, + "ansi-regex": { + "version": "3.0.0" + }, + "string-width": { + "version": "2.1.1", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "4.5.1", + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.6" + } + }, + "lolex": { + "version": "4.2.0" + }, + "long": { + "version": "4.0.0" + }, + "longest-streak": { + "version": "2.0.3" + }, + "looper": { + "version": "3.0.0" + }, + "loose-envify": { + "version": "1.4.0", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1" + }, + "lru-cache": { + "version": "4.1.5", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + }, + "dependencies": { + "yallist": { + "version": "2.1.2" + } + } + }, + "ltgt": { + "version": "2.2.1" + }, + "mafmt": { + "version": "6.0.10", + "requires": { + "multiaddr": "^6.1.0" + }, + "dependencies": { + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "make-dir": { + "version": "2.1.0", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mamacro": { + "version": "0.0.3" + }, + "map-age-cleaner": { + "version": "0.1.3", + "requires": { + "p-defer": "^1.0.0" + }, + "dependencies": { + "p-defer": { + "version": "1.0.0" + } + } + }, + "map-cache": { + "version": "0.2.2" + }, + "map-obj": { + "version": "1.0.1" + }, + "map-visit": { + "version": "1.0.0", + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-escapes": { + "version": "1.0.3" + }, + "markdown-table": { + "version": "1.1.3" + }, + "md5.js": { + "version": "1.3.5", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdast-util-compact": { + "version": "1.0.4", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "mdast-util-definitions": { + "version": "1.2.5", + "requires": { + "unist-util-visit": "^1.0.0" + } + }, + "mdast-util-inject": { + "version": "1.1.0", + "requires": { + "mdast-util-to-string": "^1.0.0" + } + }, + "mdast-util-to-hast": { + "version": "3.0.4", + "requires": { + "collapse-white-space": "^1.0.0", + "detab": "^2.0.0", + "mdast-util-definitions": "^1.2.0", + "mdurl": "^1.0.1", + "trim": "0.0.1", + "trim-lines": "^1.0.0", + "unist-builder": "^1.0.1", + "unist-util-generated": "^1.1.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^1.1.0", + "xtend": "^4.0.1" + } + }, + "mdast-util-to-string": { + "version": "1.0.7" + }, + "mdast-util-toc": { + "version": "3.1.0", + "requires": { + "github-slugger": "^1.2.1", + "mdast-util-to-string": "^1.0.5", + "unist-util-is": "^2.1.2", + "unist-util-visit": "^1.1.0" + } + }, + "mdurl": { + "version": "1.0.1" + }, + "media-typer": { + "version": "0.3.0" + }, + "mem": { + "version": "4.3.0", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "p-is-promise": { + "version": "2.1.0" + } + } + }, + "memdown": { + "version": "1.4.1", + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "requires": { + "xtend": "~4.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "memory-fs": { + "version": "0.4.1", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "5.0.0", + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "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", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0" + }, + "yargs-parser": { + "version": "10.1.0", + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "merge-descriptors": { + "version": "1.0.1" + }, + "merge-options": { + "version": "2.0.0", + "requires": { + "is-plain-obj": "^2.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0" + } + } + }, + "merge-source-map": { + "version": "1.1.0", + "requires": { + "source-map": "^0.6.1" + } + }, + "merge-stream": { + "version": "2.0.0" + }, + "merge2": { + "version": "1.3.0" + }, + "merkle-lib": { + "version": "2.0.10" + }, + "merkle-patricia-tree": { + "version": "3.0.0", + "requires": { + "async": "^2.6.1", + "ethereumjs-util": "^5.2.0", + "level-mem": "^3.0.1", + "level-ws": "^1.0.0", + "readable-stream": "^3.0.6", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "methods": { + "version": "1.1.2" + }, + "micromatch": { + "version": "3.1.10", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1" + } + } + }, + "define-property": { + "version": "2.0.2", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1" + } + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "to-regex-range": { + "version": "2.1.1", + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "2.4.4" + }, + "mime-db": { + "version": "1.43.0" + }, + "mime-types": { + "version": "2.1.26", + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "2.1.0" + }, + "mimic-response": { + "version": "1.0.1" + }, + "min-indent": { + "version": "1.0.0" + }, + "minimalistic-assert": { + "version": "1.0.1" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1" + }, + "minimatch": { + "version": "3.0.4", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0" + }, + "minimist-options": { + "version": "3.0.2", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "minipass": { + "version": "3.1.1", + "requires": { + "yallist": "^4.0.0" + }, + "dependencies": { + "yallist": { + "version": "4.0.0" + } + } + }, + "minipass-collect": { + "version": "1.0.2", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.2", + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "mississippi": { + "version": "3.0.0", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8" + } + } + }, + "mkdirp": { + "version": "0.5.1", + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8" + } + } + }, + "mocha": { + "version": "6.2.2", + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2" + } + } + }, + "glob": { + "version": "7.1.3", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "supports-color": { + "version": "6.0.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "modify-values": { + "version": "1.0.1" + }, + "module-deps-sortable": { + "version": "5.0.0", + "requires": { + "JSONStream": "^1.0.3", + "browser-resolve": "^1.7.0", + "cached-path-relative": "^1.0.0", + "concat-stream": "~1.5.0", + "defined": "^1.0.0", + "detective": "^4.0.0", + "duplexer2": "^0.1.2", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2", + "resolve": "^1.1.3", + "stream-combiner2": "^1.1.1", + "subarg": "^1.0.0", + "through2": "^2.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.3" + }, + "concat-stream": { + "version": "1.5.2", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "~2.0.0", + "typedarray": "~0.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + } + } + }, + "detective": { + "version": "4.7.1", + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + } + } + } + }, + "mortice": { + "version": "2.0.0", + "requires": { + "globalthis": "^1.0.0", + "observable-webworkers": "^1.0.0", + "p-queue": "^6.0.0", + "promise-timeout": "^1.3.0", + "shortid": "^2.2.8" + } + }, + "move-concurrently": { + "version": "1.0.1", + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "moving-average": { + "version": "1.0.0" + }, + "mri": { + "version": "1.1.4" + }, + "ms": { + "version": "2.1.1" + }, + "multiaddr": { + "version": "7.2.1", + "requires": { + "bs58": "^4.0.1", + "cids": "~0.7.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^3.1.0", + "varint": "^5.0.0" + } + }, + "multiaddr-to-uri": { + "version": "5.1.0", + "requires": { + "multiaddr": "^7.2.1" + } + }, + "multibase": { + "version": "0.6.0", + "requires": { + "base-x": "3.0.4" + } + }, + "multicast-dns": { + "version": "7.2.0", + "requires": { + "dns-packet": "^4.0.0", + "thunky": "^1.0.2" + } + }, + "multicodec": { + "version": "1.0.0", + "requires": { + "varint": "^5.0.0" + } + }, + "multihashes": { + "version": "0.4.15", + "requires": { + "bs58": "^4.0.1", + "varint": "^5.0.0" + } + }, + "multihashing": { + "version": "0.3.3", + "requires": { + "blakejs": "^1.1.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.14", + "webcrypto": "~0.1.1" + } + }, + "multihashing-async": { + "version": "0.8.0", + "requires": { + "blakejs": "^1.1.0", + "buffer": "^5.4.3", + "err-code": "^2.0.0", + "js-sha3": "~0.8.0", + "multihashes": "~0.4.15", + "murmurhash3js-revisited": "^3.0.0" + } + }, + "multistream-select": { + "version": "0.14.6", + "requires": { + "async": "^2.6.3", + "debug": "^4.1.1", + "err-code": "^1.1.2", + "interface-connection": "~0.3.3", + "once": "^1.4.0", + "pull-handshake": "^1.1.4", + "pull-length-prefixed": "^1.3.3", + "pull-stream": "^3.6.13", + "semver": "^6.2.0", + "varint": "^5.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "err-code": { + "version": "1.1.2" + }, + "semver": { + "version": "6.3.0" + } + } + }, + "murmurhash3js": { + "version": "3.0.1" + }, + "murmurhash3js-revisited": { + "version": "3.0.0" + }, + "mute-stream": { + "version": "0.0.8" + }, + "nan": { + "version": "2.14.0" + }, + "nanoid": { + "version": "2.1.9" + }, + "nanomatch": { + "version": "1.2.13", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "napi-build-utils": { + "version": "1.0.1" + }, + "napi-macros": { + "version": "2.0.0" + }, + "native-or-another": { + "version": "2.0.0", + "requires": { + "native-or-bluebird": "^1.1.2" + } + }, + "native-or-bluebird": { + "version": "1.2.0" + }, + "natural-compare": { + "version": "1.4.0" + }, + "ndjson": { + "version": "1.5.0", + "requires": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.0", + "split2": "^3.1.0", + "through2": "^3.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "split2": { + "version": "3.1.1", + "requires": { + "readable-stream": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "through2": { + "version": "3.0.1", + "requires": { + "readable-stream": "2 || 3" + } + } + } + }, + "needle": { + "version": "2.4.0", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "negotiator": { + "version": "0.6.2" + }, + "neo-async": { + "version": "2.6.1" + }, + "nested-error-stacks": { + "version": "2.1.0" + }, + "nice-try": { + "version": "1.0.5" + }, + "nise": { + "version": "1.5.3", + "requires": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1" + }, + "lolex": { + "version": "5.1.2", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "path-to-regexp": { + "version": "1.8.0", + "requires": { + "isarray": "0.0.1" + } + } + } + }, + "nock": { + "version": "11.7.2", + "requires": { + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.13", + "mkdirp": "^0.5.0", + "propagate": "^2.0.0" + } + }, + "node-abi": { + "version": "2.13.0", + "requires": { + "semver": "^5.4.1" + } + }, + "node-environment-flags": { + "version": "1.0.5", + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node-fetch": { + "version": "2.6.0" + }, + "node-forge": { + "version": "0.9.1" + }, + "node-gyp-build": { + "version": "4.1.1" + }, + "node-libs-browser": { + "version": "2.2.1", + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0" + }, + "node-pre-gyp": { + "version": "0.14.0", + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "node-releases": { + "version": "1.1.46", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0" + } + } + }, + "nodeify": { + "version": "1.0.1", + "requires": { + "is-promise": "~1.0.0", + "promise": "~1.3.0" + } + }, + "noop-logger": { + "version": "0.1.1" + }, + "nopt": { + "version": "4.0.1", + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0" + }, + "normalize-url": { + "version": "1.9.1", + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + }, + "dependencies": { + "prepend-http": { + "version": "1.0.4" + }, + "sort-keys": { + "version": "1.1.2", + "requires": { + "is-plain-obj": "^1.0.0" + } + } + } + }, + "now-and-later": { + "version": "2.0.1", + "requires": { + "once": "^1.3.2" + } + }, + "npm-bundled": { + "version": "1.1.1", + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1" + }, + "npm-package-json-lint": { + "version": "4.5.0", + "requires": { + "ajv": "^6.10.2", + "ajv-errors": "^1.0.1", + "chalk": "^3.0.0", + "cosmiconfig": "^5.2.1", + "debug": "^4.1.1", + "globby": "^10.0.1", + "ignore": "^5.1.4", + "is-plain-obj": "^2.0.0", + "jsonc-parser": "^2.2.0", + "log-symbols": "^3.0.0", + "meow": "^6.0.0", + "plur": "^3.1.1", + "semver": "^7.0.0", + "strip-json-comments": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "camelcase-keys": { + "version": "6.1.1", + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4" + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0" + }, + "indent-string": { + "version": "4.0.0" + }, + "is-plain-obj": { + "version": "2.1.0" + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "log-symbols": { + "version": "3.0.0", + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3" + }, + "has-flag": { + "version": "3.0.0" + }, + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "map-obj": { + "version": "4.1.0" + }, + "meow": { + "version": "6.0.0", + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.1.1", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.0.0", + "minimist-options": "^4.0.1", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.0", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.8.1", + "yargs-parser": "^16.1.0" + } + }, + "minimist-options": { + "version": "4.0.2", + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "1.1.0" + } + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.0.0", + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "quick-lru": { + "version": "4.0.1" + }, + "read-pkg": { + "version": "5.2.0", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0" + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "redent": { + "version": "3.0.0", + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "semver": { + "version": "7.1.1" + }, + "strip-indent": { + "version": "3.0.0", + "requires": { + "min-indent": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "3.0.1" + }, + "supports-color": { + "version": "7.1.0", + "requires": { + "has-flag": "^4.0.0" + } + }, + "trim-newlines": { + "version": "3.0.0" + }, + "yargs-parser": { + "version": "16.1.0", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "npm-packlist": { + "version": "1.4.7", + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npm-path": { + "version": "2.0.4", + "requires": { + "which": "^1.2.10" + } + }, + "npm-run-path": { + "version": "2.0.2", + "requires": { + "path-key": "^2.0.0" + } + }, + "npm-which": { + "version": "3.0.1", + "requires": { + "commander": "^2.9.0", + "npm-path": "^2.0.2", + "which": "^1.2.10" + } + }, + "npmlog": { + "version": "4.1.2", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nugget": { + "version": "2.0.1", + "requires": { + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", + "throttleit": "0.0.2" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1" + }, + "camelcase-keys": { + "version": "2.1.0", + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "indent-string": { + "version": "2.1.0", + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "meow": { + "version": "3.7.0", + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "parse-json": { + "version": "2.2.0", + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0" + }, + "pretty-bytes": { + "version": "1.0.4", + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0" + } + } + }, + "number-is-nan": { + "version": "1.0.1" + }, + "nyc": { + "version": "14.1.1", + "requires": { + "archy": "^1.0.0", + "caching-transform": "^3.0.2", + "convert-source-map": "^1.6.0", + "cp-file": "^6.2.0", + "find-cache-dir": "^2.1.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.5", + "istanbul-lib-hook": "^2.0.7", + "istanbul-lib-instrument": "^3.3.0", + "istanbul-lib-report": "^2.0.8", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^2.2.4", + "js-yaml": "^3.13.1", + "make-dir": "^2.1.0", + "merge-source-map": "^1.1.0", + "resolve-from": "^4.0.0", + "rimraf": "^2.6.3", + "signal-exit": "^3.0.2", + "spawn-wrap": "^1.4.2", + "test-exclude": "^5.2.3", + "uuid": "^3.3.2", + "yargs": "^13.2.2", + "yargs-parser": "^13.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0" + } + } + }, + "oauth-sign": { + "version": "0.9.0" + }, + "object-assign": { + "version": "4.1.1" + }, + "object-component": { + "version": "0.0.3" + }, + "object-copy": { + "version": "0.1.0", + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + }, + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0" + }, + "object-keys": { + "version": "1.1.1" + }, + "object-visit": { + "version": "1.0.1", + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "observable-webworkers": { + "version": "1.0.0" + }, + "on-finished": { + "version": "2.3.0", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "opencollective-postinstall": { + "version": "2.0.2" + }, + "opener": { + "version": "1.5.1" + }, + "optimist": { + "version": "0.6.1", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10" + } + } + }, + "optional": { + "version": "0.1.4", + "optional": true + }, + "optionator": { + "version": "0.8.3", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "options": { + "version": "0.0.6" + }, + "ordered-read-streams": { + "version": "1.0.1", + "requires": { + "readable-stream": "^2.0.1" + } + }, + "os-browserify": { + "version": "0.3.0" + }, + "os-homedir": { + "version": "1.0.2" + }, + "os-locale": { + "version": "3.1.0", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2" + }, + "osenv": { + "version": "0.1.5", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-cancelable": { + "version": "0.4.1" + }, + "p-defer": { + "version": "3.0.0" + }, + "p-fifo": { + "version": "1.0.0", + "requires": { + "fast-fifo": "^1.0.0", + "p-defer": "^3.0.0" + } + }, + "p-finally": { + "version": "1.0.0" + }, + "p-is-promise": { + "version": "1.1.0" + }, + "p-iteration": { + "version": "1.1.8" + }, + "p-limit": { + "version": "2.2.2", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "3.0.0", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-queue": { + "version": "6.2.1", + "requires": { + "eventemitter3": "^4.0.0", + "p-timeout": "^3.1.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-times": { + "version": "2.1.0", + "requires": { + "p-map": "^2.0.0" + }, + "dependencies": { + "p-map": { + "version": "2.1.0" + } + } + }, + "p-try": { + "version": "2.2.0" + }, + "p-try-each": { + "version": "1.0.1" + }, + "package-hash": { + "version": "3.0.0", + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "package-json": { + "version": "6.5.0", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0" + }, + "cacheable-request": { + "version": "6.1.0", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0" + } + } + }, + "get-stream": { + "version": "4.1.0", + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "http-cache-semantics": { + "version": "4.0.3" + }, + "keyv": { + "version": "3.1.0", + "requires": { + "json-buffer": "3.0.0" + } + }, + "normalize-url": { + "version": "4.5.0" + }, + "p-cancelable": { + "version": "1.1.0" + }, + "semver": { + "version": "6.3.0" + } + } + }, + "pako": { + "version": "1.0.10" + }, + "parallel-transform": { + "version": "1.2.0", + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "asn1.js": { + "version": "4.10.1", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + } + } + }, + "parse-duration": { + "version": "0.1.2" + }, + "parse-entities": { + "version": "1.2.2", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-github-repo-url": { + "version": "1.4.1" + }, + "parse-headers": { + "version": "2.0.3" + }, + "parse-json": { + "version": "4.0.0", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0" + }, + "parse-path": { + "version": "4.0.1", + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0" + } + }, + "parse-url": { + "version": "5.0.1", + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^3.3.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0" + } + } + }, + "parseqs": { + "version": "0.0.5", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3" + }, + "pascalcase": { + "version": "0.1.1" + }, + "path-browserify": { + "version": "0.0.1" + }, + "path-dirname": { + "version": "1.0.2" + }, + "path-exists": { + "version": "3.0.0" + }, + "path-is-absolute": { + "version": "1.0.1" + }, + "path-is-inside": { + "version": "1.0.2" + }, + "path-key": { + "version": "2.0.1" + }, + "path-parse": { + "version": "1.0.6" + }, + "path-root": { + "version": "0.1.1", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2" + }, + "path-to-regexp": { + "version": "0.1.7" + }, + "path-type": { + "version": "3.0.0", + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0" + } + } + }, + "pathval": { + "version": "1.1.0" + }, + "pbkdf2": { + "version": "3.0.17", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "peek-stream": { + "version": "1.1.3", + "requires": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, + "peer-book": { + "version": "0.9.2", + "requires": { + "bs58": "^4.0.1", + "peer-id": "~0.12.2", + "peer-info": "~0.15.1" + } + }, + "peer-id": { + "version": "0.12.5", + "requires": { + "async": "^2.6.3", + "class-is": "^1.1.0", + "libp2p-crypto": "~0.16.1", + "multihashes": "~0.4.15" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + } + } + }, + "peer-info": { + "version": "0.15.1", + "requires": { + "mafmt": "^6.0.2", + "multiaddr": "^6.0.3", + "peer-id": "~0.12.2", + "unique-by": "^1.0.0" + }, + "dependencies": { + "ip-regex": { + "version": "2.1.0" + }, + "is-ip": { + "version": "2.0.0", + "requires": { + "ip-regex": "^2.0.0" + } + }, + "multiaddr": { + "version": "6.1.1", + "requires": { + "bs58": "^4.0.1", + "class-is": "^1.1.0", + "hi-base32": "~0.5.0", + "ip": "^1.1.5", + "is-ip": "^2.0.0", + "varint": "^5.0.0" + } + } + } + }, + "pem-jwk": { + "version": "2.0.0", + "requires": { + "asn1.js": "^5.0.1" + } + }, + "pend": { + "version": "1.2.0" + }, + "performance-now": { + "version": "2.1.0" + }, + "picomatch": { + "version": "2.2.1" + }, + "pify": { + "version": "4.0.1" + }, + "pinkie": { + "version": "2.0.4" + }, + "pinkie-promise": { + "version": "2.0.1", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pino": { + "version": "5.16.0", + "requires": { + "fast-redact": "^2.0.0", + "fast-safe-stringify": "^2.0.7", + "flatstr": "^1.0.12", + "pino-std-serializers": "^2.4.2", + "quick-format-unescaped": "^3.0.3", + "sonic-boom": "^0.7.5" + } + }, + "pino-pretty": { + "version": "3.5.0", + "requires": { + "@hapi/bourne": "^1.3.2", + "args": "^5.0.1", + "chalk": "^2.4.2", + "dateformat": "^3.0.3", + "fast-safe-stringify": "^2.0.7", + "jmespath": "^0.15.0", + "joycon": "^2.2.5", + "pump": "^3.0.0", + "readable-stream": "^3.4.0", + "split2": "^3.1.1", + "strip-json-comments": "^3.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "split2": { + "version": "3.1.1", + "requires": { + "readable-stream": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-json-comments": { + "version": "3.0.1" + } + } + }, + "pino-std-serializers": { + "version": "2.4.2" + }, + "pirates": { + "version": "4.0.1", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-conf": { + "version": "3.1.0", + "requires": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "dependencies": { + "load-json-file": { + "version": "5.3.0", + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "type-fest": { + "version": "0.3.1" + } + } + }, + "pkg-dir": { + "version": "3.0.0", + "requires": { + "find-up": "^3.0.0" + } + }, + "pkg-up": { + "version": "3.1.0", + "requires": { + "find-up": "^3.0.0" + } + }, + "plur": { + "version": "3.1.1", + "requires": { + "irregular-plurals": "^2.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1" + }, + "prebuild-install": { + "version": "5.3.3", + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^3.0.3", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + } + }, + "prelude-ls": { + "version": "1.1.2" + }, + "prepend-http": { + "version": "2.0.0" + }, + "pretty-bytes": { + "version": "5.3.0" + }, + "pretty-hrtime": { + "version": "1.0.3" + }, + "prettycli": { + "version": "1.4.3", + "requires": { + "chalk": "2.1.0" + }, + "dependencies": { + "chalk": { + "version": "2.1.0", + "requires": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + } + }, + "has-flag": { + "version": "2.0.0" + }, + "supports-color": { + "version": "4.5.0", + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "private": { + "version": "0.1.8" + }, + "process": { + "version": "0.11.10" + }, + "process-nextick-args": { + "version": "1.0.7" + }, + "progress": { + "version": "2.0.3" + }, + "progress-stream": { + "version": "1.2.0", + "requires": { + "speedometer": "~0.1.2", + "through2": "~0.2.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1" + }, + "object-keys": { + "version": "0.4.0" + }, + "readable-stream": { + "version": "1.1.14", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "through2": { + "version": "0.2.3", + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "xtend": { + "version": "2.1.2", + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "prom-client": { + "version": "11.5.3", + "optional": true, + "requires": { + "tdigest": "^0.1.1" + } + }, + "prometheus-gc-stats": { + "version": "0.6.2", + "optional": true, + "requires": { + "gc-stats": "^1.2.1", + "optional": "^0.1.3" + } + }, + "promise": { + "version": "1.3.0", + "requires": { + "is-promise": "~1" + } + }, + "promise-inflight": { + "version": "1.0.1" + }, + "promise-nodeify": { + "version": "3.0.1" + }, + "promise-timeout": { + "version": "1.3.0" + }, + "promise-to-callback": { + "version": "1.0.0", + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "promisify-es6": { + "version": "1.0.3" + }, + "prompt-promise": { + "version": "1.0.3", + "requires": { + "keypress": "~0.2.1", + "native-or-another": "~2.0.0" + } + }, + "propagate": { + "version": "2.0.1" + }, + "proper-lockfile": { + "version": "4.1.1", + "requires": { + "graceful-fs": "^4.1.11", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "property-information": { + "version": "4.2.0", + "requires": { + "xtend": "^4.0.1" + } + }, + "protocol-buffers-schema": { + "version": "3.3.3" + }, + "protocols": { + "version": "1.4.7" + }, + "protons": { + "version": "1.1.0", + "requires": { + "protocol-buffers-schema": "^3.3.1", + "safe-buffer": "^5.1.1", + "signed-varint": "^2.0.1", + "varint": "^5.0.0" + } + }, + "proxy-addr": { + "version": "2.0.5", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1" + }, + "pseudomap": { + "version": "1.0.2" + }, + "psl": { + "version": "1.7.0" + }, + "public-encrypt": { + "version": "4.0.3", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pull-abortable": { + "version": "4.1.1" + }, + "pull-cat": { + "version": "1.1.11" + }, + "pull-defer": { + "version": "0.2.3" + }, + "pull-file": { + "version": "1.1.0", + "requires": { + "pull-utf8-decoder": "^1.0.2" + } + }, + "pull-handshake": { + "version": "1.1.4", + "requires": { + "pull-cat": "^1.1.9", + "pull-pair": "~1.1.0", + "pull-pushable": "^2.0.0", + "pull-reader": "^1.2.3" + } + }, + "pull-length-prefixed": { + "version": "1.3.3", + "requires": { + "pull-pushable": "^2.2.0", + "pull-reader": "^1.3.1", + "safe-buffer": "^5.1.2", + "varint": "^5.0.0" + } + }, + "pull-mplex": { + "version": "0.1.2", + "requires": { + "async": "^2.6.1", + "buffer-reuse-pool": "^1.0.0", + "debug": "^4.1.1", + "interface-connection": "~0.3.3", + "looper": "^4.0.0", + "pull-offset-limit": "^1.1.1", + "pull-pair": "^1.1.0", + "pull-pushable": "^2.2.0", + "pull-stream": "^3.6.9", + "pull-through": "^1.0.18", + "varint": "^5.0.0" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "looper": { + "version": "4.0.0" + } + } + }, + "pull-ndjson": { + "version": "0.2.0", + "requires": { + "pull-split": "^0.2.0", + "pull-stream": "^3.4.5", + "pull-stringify": "^2.0.0" + } + }, + "pull-offset-limit": { + "version": "1.1.1", + "requires": { + "pull-abortable": "^4.1.0", + "pull-stream": "^3.5.0" + } + }, + "pull-pair": { + "version": "1.1.0" + }, + "pull-pushable": { + "version": "2.2.0" + }, + "pull-reader": { + "version": "1.3.1" + }, + "pull-sort": { + "version": "1.0.2", + "requires": { + "pull-defer": "^0.2.3", + "pull-stream": "^3.6.9" + } + }, + "pull-split": { + "version": "0.2.1", + "requires": { + "pull-through": "~1.0.6" + } + }, + "pull-stream": { + "version": "3.6.14" + }, + "pull-stream-to-async-iterator": { + "version": "1.0.2", + "requires": { + "pull-stream": "^3.6.9" + } + }, + "pull-stream-to-stream": { + "version": "2.0.0" + }, + "pull-stringify": { + "version": "2.0.0", + "requires": { + "defined": "^1.0.0" + } + }, + "pull-through": { + "version": "1.0.18", + "requires": { + "looper": "~3.0.0" + } + }, + "pull-to-stream": { + "version": "0.1.1", + "requires": { + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "pull-traverse": { + "version": "1.0.3" + }, + "pull-utf8-decoder": { + "version": "1.0.2" + }, + "pull-ws": { + "version": "3.3.1", + "requires": { + "iso-url": "^0.4.4", + "relative-url": "^1.0.2", + "safe-buffer": "^5.1.1", + "ws": "^1.1.0" + }, + "dependencies": { + "ultron": { + "version": "1.0.2" + }, + "ws": { + "version": "1.1.5", + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + } + } + }, + "pump": { + "version": "3.0.0", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "1.4.1" + }, + "pushdata-bitcoin": { + "version": "1.0.1", + "requires": { + "bitcoin-ops": "^1.3.0" + } + }, + "q": { + "version": "1.5.1" + }, + "qjobs": { + "version": "1.2.0" + }, + "qs": { + "version": "6.9.1" + }, + "query-string": { + "version": "4.3.4", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0" + }, + "querystring-es3": { + "version": "0.2.1" + }, + "queue-microtask": { + "version": "1.1.2" + }, + "quick-format-unescaped": { + "version": "3.0.3" + }, + "quick-lru": { + "version": "1.1.0" + }, + "rabin-wasm": { + "version": "0.0.8", + "requires": { + "bl": "^1.0.0", + "debug": "^4.1.1", + "minimist": "^1.2.0", + "node-fetch": "^2.6.0", + "readable-stream": "^2.0.4" + }, + "dependencies": { + "bl": { + "version": "1.2.2", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + } + } + }, + "randombytes": { + "version": "2.1.0", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1" + }, + "raw-body": { + "version": "2.4.0", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "rc": { + "version": "1.2.8", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "read-package-json": { + "version": "2.1.1", + "requires": { + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "json-parse-better-errors": "^1.0.1", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0" + } + } + }, + "readable-stream": { + "version": "2.3.7", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.1" + }, + "safe-buffer": { + "version": "5.1.2" + }, + "string_decoder": { + "version": "1.1.1", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "receptacle": { + "version": "1.3.2", + "requires": { + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.2" + } + } + }, + "redent": { + "version": "2.0.0", + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regenerate": { + "version": "1.4.0" + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.3" + }, + "regenerator-transform": { + "version": "0.14.1", + "requires": { + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "regexpp": { + "version": "2.0.1" + }, + "regexpu-core": { + "version": "4.6.0", + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "registry-auth-token": { + "version": "4.1.0", + "requires": { + "rc": "^1.2.8", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "5.1.0", + "requires": { + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.5.1" + }, + "regjsparser": { + "version": "0.6.2", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0" + } + } + }, + "relative-url": { + "version": "1.0.2" + }, + "release-zalgo": { + "version": "1.0.0", + "requires": { + "es6-error": "^4.0.1" + } + }, + "remark": { + "version": "9.0.0", + "requires": { + "remark-parse": "^5.0.0", + "remark-stringify": "^5.0.0", + "unified": "^6.0.0" + } + }, + "remark-html": { + "version": "8.0.0", + "requires": { + "hast-util-sanitize": "^1.0.0", + "hast-util-to-html": "^4.0.0", + "mdast-util-to-hast": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-parse": { + "version": "5.0.0", + "requires": { + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^1.1.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^1.0.0", + "vfile-location": "^2.0.0", + "xtend": "^4.0.1" + } + }, + "remark-reference-links": { + "version": "4.0.4", + "requires": { + "unist-util-visit": "^1.0.0" + } + }, + "remark-slug": { + "version": "5.1.2", + "requires": { + "github-slugger": "^1.0.0", + "mdast-util-to-string": "^1.0.0", + "unist-util-visit": "^1.0.0" + } + }, + "remark-stringify": { + "version": "5.0.0", + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "remark-toc": { + "version": "5.1.1", + "requires": { + "mdast-util-toc": "^3.0.0", + "remark-slug": "^5.0.0" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + } + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0" + }, + "repeat-element": { + "version": "1.1.3" + }, + "repeat-string": { + "version": "1.6.1" + }, + "repeating": { + "version": "2.0.1", + "requires": { + "is-finite": "^1.0.0" + } + }, + "replace-ext": { + "version": "1.0.0" + }, + "request": { + "version": "2.88.0", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.2" + } + } + }, + "require-directory": { + "version": "2.1.1" + }, + "require-main-filename": { + "version": "2.0.0" + }, + "requires-port": { + "version": "1.0.0" + }, + "resolve": { + "version": "1.14.2", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-bin": { + "version": "0.4.0", + "requires": { + "find-parent-dir": "~0.3.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + } + } + }, + "resolve-from": { + "version": "5.0.0" + }, + "resolve-global": { + "version": "1.0.0", + "requires": { + "global-dirs": "^0.1.1" + } + }, + "resolve-options": { + "version": "1.1.0", + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1" + }, + "responselike": { + "version": "1.0.2", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0" + }, + "onetime": { + "version": "2.0.1", + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, + "ret": { + "version": "0.1.15" + }, + "retimer": { + "version": "2.0.0" + }, + "retry": { + "version": "0.12.0" + }, + "reusify": { + "version": "1.0.4" + }, + "rfdc": { + "version": "1.1.4" + }, + "rimraf": { + "version": "2.7.1", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.4", + "requires": { + "bn.js": "^4.11.1" + } + }, + "rsa-pem-to-jwk": { + "version": "1.1.3", + "requires": { + "object-assign": "^2.0.0", + "rsa-unpack": "0.0.6" + }, + "dependencies": { + "object-assign": { + "version": "2.1.1" + } + } + }, + "rsa-unpack": { + "version": "0.0.6", + "requires": { + "optimist": "~0.3.5" + }, + "dependencies": { + "optimist": { + "version": "0.3.7", + "requires": { + "wordwrap": "~0.0.2" + } + } + } + }, + "run-async": { + "version": "2.3.0", + "requires": { + "is-promise": "^2.1.0" + }, + "dependencies": { + "is-promise": { + "version": "2.1.0" + } + } + }, + "run-parallel": { + "version": "1.1.9" + }, + "run-queue": { + "version": "1.0.3", + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.4", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.0" + }, + "safe-json-parse": { + "version": "1.0.1" + }, + "safe-regex": { + "version": "1.1.0", + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2" + }, + "sanitize-filename": { + "version": "1.6.3", + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sax": { + "version": "1.2.4" + }, + "schema-utils": { + "version": "1.0.0", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "secp256k1": { + "version": "3.8.0", + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.5.2", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + } + }, + "semaphore": { + "version": "1.1.0" + }, + "semver": { + "version": "5.7.1" + }, + "semver-diff": { + "version": "2.1.0", + "requires": { + "semver": "^5.0.3" + } + }, + "semver-regex": { + "version": "2.0.0" + }, + "send": { + "version": "0.17.1", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0" + } + } + }, + "http-errors": { + "version": "1.7.3", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "mime": { + "version": "1.6.0" + } + } + }, + "serialize-javascript": { + "version": "2.1.2" + }, + "serve-static": { + "version": "1.14.1", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0" + }, + "set-immediate-shim": { + "version": "1.0.1" + }, + "set-value": { + "version": "2.0.1", + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + } + }, + "setimmediate": { + "version": "1.0.5" + }, + "setprototypeof": { + "version": "1.1.1" + }, + "sha.js": { + "version": "2.4.11", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "1.2.0", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0" + }, + "shortid": { + "version": "2.2.15", + "requires": { + "nanoid": "^2.1.0" + } + }, + "signal-exit": { + "version": "3.0.2" + }, + "signed-varint": { + "version": "2.0.1", + "requires": { + "varint": "~5.0.0" + } + }, + "simple-concat": { + "version": "1.0.0" + }, + "simple-get": { + "version": "3.1.0", + "requires": { + "decompress-response": "^4.2.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + }, + "dependencies": { + "decompress-response": { + "version": "4.2.1", + "requires": { + "mimic-response": "^2.0.0" + } + }, + "mimic-response": { + "version": "2.0.0" + } + } + }, + "simple-git": { + "version": "1.130.0", + "requires": { + "debug": "^4.0.1" + } + }, + "simple-peer": { + "version": "9.6.2", + "requires": { + "debug": "^4.0.1", + "get-browser-rtc": "^1.0.0", + "queue-microtask": "^1.1.0", + "randombytes": "^2.0.3", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "single-line-log": { + "version": "1.1.2", + "requires": { + "string-width": "^1.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "sinon": { + "version": "7.5.0", + "requires": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "slash": { + "version": "3.0.0" + }, + "slice-ansi": { + "version": "2.1.0", + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "smart-buffer": { + "version": "4.1.0" + }, + "snapdragon": { + "version": "0.8.2", + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + }, + "source-map": { + "version": "0.5.7" + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + }, + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "2.1.1", + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "requires": { + "ms": "2.0.0" + } + }, + "engine.io-client": { + "version": "3.2.1", + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + } + }, + "ms": { + "version": "2.0.0" + }, + "socket.io-client": { + "version": "2.1.1", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.2" + }, + "socket.io-client": { + "version": "2.3.0", + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "isarray": { + "version": "2.0.1" + }, + "ms": { + "version": "2.0.0" + }, + "socket.io-parser": { + "version": "3.3.0", + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "requires": { + "ms": "2.0.0" + } + } + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "requires": { + "ms": "2.0.0" + } + }, + "isarray": { + "version": "2.0.1" + }, + "ms": { + "version": "2.0.0" + } + } + }, + "socket.io-pull-stream": { + "version": "0.1.5", + "requires": { + "data-queue": "0.0.3", + "debug": "^3.1.0", + "pull-stream": "^3.6.2", + "uuid": "^3.2.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "sonic-boom": { + "version": "0.7.6", + "requires": { + "flatstr": "^1.0.12" + } + }, + "sort-keys": { + "version": "3.0.0", + "requires": { + "is-plain-obj": "^2.0.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0" + } + } + }, + "source-list-map": { + "version": "2.0.1" + }, + "source-map": { + "version": "0.6.1" + }, + "source-map-resolve": { + "version": "0.5.3", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.0" + }, + "space-separated-tokens": { + "version": "1.1.4" + }, + "sparse-array": { + "version": "1.3.2" + }, + "spawn-wrap": { + "version": "1.4.3", + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.1.0", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5" + }, + "speedometer": { + "version": "0.1.4" + }, + "split": { + "version": "1.0.1", + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "requires": { + "extend-shallow": "^3.0.0" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "split2": { + "version": "2.2.0", + "requires": { + "through2": "^2.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3" + }, + "sshpk": { + "version": "1.16.1", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8" + }, + "state-toggle": { + "version": "1.0.2" + }, + "static-extend": { + "version": "0.1.2", + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + } + }, + "stats-webpack-plugin": { + "version": "0.7.0", + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "1.5.0" + }, + "stream-array": { + "version": "1.1.2", + "requires": { + "readable-stream": "~2.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.1.5", + "requires": { + "buffer-shims": "^1.0.0", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + } + } + }, + "stream-browserify": { + "version": "2.0.2", + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "requires": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "3.1.0", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^3.0.6", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1" + }, + "stream-to-blob": { + "version": "2.0.0" + }, + "stream-to-it": { + "version": "0.2.0", + "requires": { + "get-iterator": "^1.0.2", + "p-defer": "^3.0.0" + } + }, + "stream-to-pull-stream": { + "version": "1.7.3", + "requires": { + "looper": "^3.0.0", + "pull-stream": "^3.2.3" + } + }, + "streaming-iterables": { + "version": "4.1.2" + }, + "streamroller": { + "version": "1.0.6", + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.14" + }, + "dependencies": { + "async": { + "version": "2.6.3", + "requires": { + "lodash": "^4.17.14" + } + }, + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "strftime": { + "version": "0.10.0" + }, + "strict-uri-encode": { + "version": "1.1.0" + }, + "string-template": { + "version": "0.2.1" + }, + "string-width": { + "version": "3.1.0", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "emoji-regex": { + "version": "7.0.3" + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "0.10.31" + }, + "stringify-entities": { + "version": "1.3.2", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0" + }, + "strip-eof": { + "version": "1.0.0" + }, + "strip-final-newline": { + "version": "2.0.0" + }, + "strip-hex-prefix": { + "version": "1.0.0", + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-indent": { + "version": "2.0.0" + }, + "strip-json-comments": { + "version": "2.0.1" + }, + "strip-outer": { + "version": "1.0.1", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "strip-url-auth": { + "version": "1.0.1" + }, + "subarg": { + "version": "1.0.0", + "requires": { + "minimist": "^1.1.0" + } + }, + "sumchecker": { + "version": "2.0.2", + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0" + } + } + }, + "superstruct": { + "version": "0.6.2", + "requires": { + "clone-deep": "^2.0.1", + "kind-of": "^6.0.1" + }, + "dependencies": { + "clone-deep": { + "version": "2.0.2", + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "shallow-clone": { + "version": "1.0.0", + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0" + } + } + } + } + }, + "supports-color": { + "version": "6.1.0", + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0" + }, + "table": { + "version": "5.4.6", + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "tapable": { + "version": "1.1.3" + }, + "tar": { + "version": "4.4.13", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "tar-fs": { + "version": "2.0.0", + "requires": { + "chownr": "^1.1.1", + "mkdirp": "^0.5.1", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "tar-stream": { + "version": "2.1.0", + "requires": { + "bl": "^3.0.0", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "bl": { + "version": "3.0.0", + "requires": { + "readable-stream": "^3.0.1" + } + }, + "readable-stream": { + "version": "3.5.0", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "tdigest": { + "version": "0.1.1", + "requires": { + "bintrees": "1.0.1" + } + }, + "teeny-request": { + "version": "3.11.3", + "requires": { + "https-proxy-agent": "^2.2.1", + "node-fetch": "^2.2.0", + "uuid": "^3.3.2" + } + }, + "temp": { + "version": "0.9.1", + "requires": { + "rimraf": "~2.6.2" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "temp-dir": { + "version": "1.0.0" + }, + "temp-write": { + "version": "4.0.0", + "requires": { + "graceful-fs": "^4.1.15", + "is-stream": "^2.0.0", + "make-dir": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "make-dir": { + "version": "3.0.0", + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0" + } + } + }, + "term-size": { + "version": "1.2.0", + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "cross-spawn": { + "version": "5.1.0", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0" + } + } + }, + "terser": { + "version": "4.6.3", + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "2.3.2", + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^24.9.0", + "schema-utils": "^2.6.1", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.2.0", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.0.0", + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0" + }, + "pkg-dir": { + "version": "4.2.0", + "requires": { + "find-up": "^4.0.0" + } + }, + "schema-utils": { + "version": "2.6.4", + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + }, + "semver": { + "version": "6.3.0" + } + } + }, + "test-exclude": { + "version": "5.2.3", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + }, + "dependencies": { + "read-pkg-up": { + "version": "4.0.0", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "text-extensions": { + "version": "1.9.0" + }, + "text-table": { + "version": "0.2.0" + }, + "throttleit": { + "version": "0.0.2" + }, + "through": { + "version": "2.3.8" + }, + "through2": { + "version": "2.0.5", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "3.0.0", + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "thunky": { + "version": "1.1.0" + }, + "time-cache": { + "version": "0.3.0", + "requires": { + "lodash.throttle": "^4.1.1" + } + }, + "timed-out": { + "version": "4.0.1" + }, + "timers-browserify": { + "version": "2.0.11", + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timestamp-nano": { + "version": "1.0.0" + }, + "tiny-each-async": { + "version": "2.0.3" + }, + "tiny-lr": { + "version": "1.1.1", + "requires": { + "body": "^5.1.0", + "debug": "^3.1.0", + "faye-websocket": "~0.10.0", + "livereload-js": "^2.3.0", + "object-assign": "^4.1.0", + "qs": "^6.4.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2" + } + } + }, + "tiny-secp256k1": { + "version": "1.1.3", + "requires": { + "bindings": "^1.3.0", + "bn.js": "^4.11.8", + "create-hmac": "^1.1.7", + "elliptic": "^6.4.0", + "nan": "^2.13.2" + } + }, + "tmp": { + "version": "0.0.33", + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-absolute-glob": { + "version": "2.0.2", + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-array": { + "version": "0.1.4" + }, + "to-arraybuffer": { + "version": "1.0.1" + }, + "to-fast-properties": { + "version": "2.0.0" + }, + "to-object-path": { + "version": "0.3.0", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + }, + "kind-of": { + "version": "3.2.2", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0" + }, + "to-regex": { + "version": "3.0.2", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "define-property": { + "version": "2.0.2", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "extend-shallow": { + "version": "3.0.2", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "requires": { + "is-number": "^7.0.0" + }, + "dependencies": { + "is-number": { + "version": "7.0.0" + } + } + }, + "to-through": { + "version": "2.0.0", + "requires": { + "through2": "^2.0.3" + } + }, + "toidentifier": { + "version": "1.0.0" + }, + "tough-cookie": { + "version": "2.4.3", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + }, + "transform-loader": { + "version": "0.2.4", + "requires": { + "loader-utils": "^1.0.2" + } + }, + "traverse": { + "version": "0.3.9" + }, + "trim": { + "version": "0.0.1" + }, + "trim-lines": { + "version": "1.1.2" + }, + "trim-newlines": { + "version": "2.0.0" + }, + "trim-off-newlines": { + "version": "1.0.1" + }, + "trim-repeated": { + "version": "1.0.0", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, + "trim-trailing-lines": { + "version": "1.1.2" + }, + "trough": { + "version": "1.0.4" + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "tryer": { + "version": "1.0.1" + }, + "tslib": { + "version": "1.10.0" + }, + "tty-browserify": { + "version": "0.0.0" + }, + "tunnel-agent": { + "version": "0.6.0", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5" + }, + "type-check": { + "version": "0.3.2", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8" + }, + "type-fest": { + "version": "0.8.1" + }, + "type-is": { + "version": "1.6.18", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typeforce": { + "version": "1.18.0" + }, + "typical": { + "version": "6.0.0" + }, + "uglify-js": { + "version": "3.7.6", + "optional": true, + "requires": { + "commander": "~2.20.3", + "source-map": "~0.6.1" + } + }, + "ultron": { + "version": "1.1.1" + }, + "unc-path-regex": { + "version": "0.1.2" + }, + "unherit": { + "version": "1.1.2", + "requires": { + "inherits": "^2.0.1", + "xtend": "^4.0.1" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4" + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.1.0" + }, + "unicode-property-aliases-ecmascript": { + "version": "1.0.5" + }, + "unified": { + "version": "6.2.0", + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^1.1.0", + "trough": "^1.0.0", + "vfile": "^2.0.0", + "x-is-string": "^0.1.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6" + }, + "unist-util-stringify-position": { + "version": "1.1.2" + }, + "vfile": { + "version": "2.3.0", + "requires": { + "is-buffer": "^1.1.4", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^1.0.0", + "vfile-message": "^1.0.0" + } + }, + "vfile-message": { + "version": "1.1.1", + "requires": { + "unist-util-stringify-position": "^1.1.1" + } + } + } + }, + "union-value": { + "version": "1.0.1", + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-by": { + "version": "1.0.0" + }, + "unique-filename": { + "version": "1.1.1", + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unique-stream": { + "version": "2.3.1", + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unique-string": { + "version": "1.0.0", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unist-builder": { + "version": "1.0.4", + "requires": { + "object-assign": "^4.1.0" + } + }, + "unist-util-generated": { + "version": "1.1.5" + }, + "unist-util-is": { + "version": "2.1.3" + }, + "unist-util-position": { + "version": "3.0.4" + }, + "unist-util-remove-position": { + "version": "1.1.4", + "requires": { + "unist-util-visit": "^1.1.0" + } + }, + "unist-util-stringify-position": { + "version": "2.0.2", + "requires": { + "@types/unist": "^2.0.2" + } + }, + "unist-util-visit": { + "version": "1.4.1", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "requires": { + "unist-util-is": "^3.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "3.0.0" + } + } + }, + "universalify": { + "version": "0.1.2" + }, + "unpipe": { + "version": "1.0.0" + }, + "unset-value": { + "version": "1.0.0", + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4" + } + } + }, + "unzip-stream": { + "version": "0.3.0", + "requires": { + "binary": "^0.3.0", + "mkdirp": "^0.5.1" + } + }, + "upath": { + "version": "1.2.0" + }, + "update-notifier": { + "version": "3.0.1", + "requires": { + "boxen": "^3.0.0", + "chalk": "^2.0.1", + "configstore": "^4.0.0", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^3.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "uri-js": { + "version": "4.2.2", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1" + } + } + }, + "uri-to-multiaddr": { + "version": "3.0.2", + "requires": { + "is-ip": "^3.1.0", + "multiaddr": "^7.2.1" + } + }, + "urix": { + "version": "0.1.0" + }, + "url": { + "version": "0.11.0", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2" + } + } + }, + "url-parse-lax": { + "version": "3.0.0", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-to-options": { + "version": "1.0.1" + }, + "urlgrey": { + "version": "0.4.4" + }, + "ursa-optional": { + "version": "0.10.1", + "requires": { + "bindings": "^1.5.0", + "nan": "^2.14.0" + } + }, + "use": { + "version": "3.1.1" + }, + "useragent": { + "version": "2.3.0", + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "utf8-byte-length": { + "version": "1.0.4" + }, + "util": { + "version": "0.11.1", + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3" + } + } + }, + "util-deprecate": { + "version": "1.0.2" + }, + "utils-merge": { + "version": "1.0.1" + }, + "uuid": { + "version": "3.4.0" + }, + "v8-compile-cache": { + "version": "2.0.3" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0" + }, + "varint": { + "version": "5.0.0" + }, + "varint-decoder": { + "version": "0.1.1", + "requires": { + "varint": "^5.0.0" + } + }, + "varuint-bitcoin": { + "version": "1.1.2", + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "vary": { + "version": "1.1.2" + }, + "verror": { + "version": "1.10.0", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0" + } + } + }, + "vfile": { + "version": "4.0.2", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "replace-ext": "1.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + } + }, + "vfile-location": { + "version": "2.0.6" + }, + "vfile-message": { + "version": "2.0.2", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + } + }, + "vfile-reporter": { + "version": "6.0.0", + "requires": { + "repeat-string": "^1.5.0", + "string-width": "^4.0.0", + "supports-color": "^6.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-sort": "^2.1.2", + "vfile-statistics": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0" + }, + "emoji-regex": { + "version": "8.0.0" + }, + "is-fullwidth-code-point": { + "version": "3.0.0" + }, + "string-width": { + "version": "4.2.0", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "vfile-sort": { + "version": "2.2.1" + }, + "vfile-statistics": { + "version": "1.1.3" + }, + "vinyl": { + "version": "2.2.0", + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vm-browserify": { + "version": "1.1.2" + }, + "void-elements": { + "version": "2.0.1" + }, + "vue-template-compiler": { + "version": "2.6.11", + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "watchpack": { + "version": "1.6.0", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "webcrypto": { + "version": "0.1.1", + "requires": { + "crypto-browserify": "^3.10.0", + "detect-node": "^2.0.3" + } + }, + "webpack": { + "version": "4.41.5", + "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.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.3", + "json-parse-better-errors": "^1.0.2", + "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.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0" + }, + "cacache": { + "version": "12.0.3", + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "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", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "is-wsl": { + "version": "1.1.0" + }, + "lru-cache": { + "version": "5.1.1", + "requires": { + "yallist": "^3.0.2" + } + }, + "ssri": { + "version": "6.0.1", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "3.6.0", + "requires": { + "acorn": "^6.0.7", + "acorn-walk": "^6.1.1", + "bfj": "^6.1.1", + "chalk": "^2.4.1", + "commander": "^2.18.0", + "ejs": "^2.6.1", + "express": "^4.16.3", + "filesize": "^3.6.1", + "gzip-size": "^5.0.0", + "lodash": "^4.17.15", + "mkdirp": "^0.5.1", + "opener": "^1.5.1", + "ws": "^6.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.0" + }, + "gzip-size": { + "version": "5.1.1", + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + } + }, + "ws": { + "version": "6.2.1", + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "webpack-cli": { + "version": "3.3.10", + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "findup-sync": { + "version": "3.0.0", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "yargs": { + "version": "13.2.4", + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "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.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-log": { + "version": "2.0.0", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.4" + } + } + }, + "webpack-merge": { + "version": "4.2.2", + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "webrtcsupport": { + "version": "2.2.0" + }, + "websocket-driver": { + "version": "0.7.3", + "requires": { + "http-parser-js": ">=0.4.0 <0.4.11", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3" + }, + "which": { + "version": "1.3.1", + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0" + }, + "which-pm-runs": { + "version": "1.0.0" + }, + "wide-align": { + "version": "1.1.3", + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0" + }, + "string-width": { + "version": "2.1.1", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "widest-line": { + "version": "2.0.1", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0" + }, + "string-width": { + "version": "2.1.1", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "wif": { + "version": "2.0.6", + "requires": { + "bs58check": "<3.0.0" + } + }, + "word-wrap": { + "version": "1.2.3" + }, + "wordwrap": { + "version": "0.0.3" + }, + "worker-farm": { + "version": "1.7.0", + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0" + }, + "strip-ansi": { + "version": "5.2.0", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2" + }, + "write": { + "version": "1.0.3", + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "3.3.3", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } + } + }, + "x-is-string": { + "version": "0.1.0" + }, + "xdg-basedir": { + "version": "3.0.0" + }, + "xmlbuilder": { + "version": "12.0.0" + }, + "xmlhttprequest-ssl": { + "version": "1.5.5" + }, + "xor-distance": { + "version": "2.0.0" + }, + "xsalsa20": { + "version": "1.1.0" + }, + "xtend": { + "version": "4.0.2" + }, + "y18n": { + "version": "4.0.0" + }, + "yallist": { + "version": "3.1.1" + }, + "yargs": { + "version": "13.3.0", + "requires": { + "cliui": "^5.0.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" + } + }, + "yargs-parser": { + "version": "13.1.1", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-promise": { + "version": "1.1.0" + }, + "yargs-unparser": { + "version": "1.6.0", + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + }, + "yauzl": { + "version": "2.4.1", + "requires": { + "fd-slicer": "~1.0.1" + } + }, + "yeast": { + "version": "0.1.2" + }, + "zcash-block": { + "version": "2.0.0", + "requires": { + "multihashing": "~0.3.3" + } + } + } + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "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-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dev": true, + "requires": { + "html-tags": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "escodegen": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz", + "integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.0.tgz", + "integrity": "sha512-VHcwhO0UTpUW7rLPN2/OiWJdgA1e9BqEDALhrgCe/F+uUJnep6CoUsTzMeP8Rh0NGr9uKquXxqe7lwLZo509nQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "dev": true, + "requires": { + "mime-db": "1.43.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "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 + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==", + "dev": true + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "timers-browserify": { + "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" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-releases": { + "version": "1.1.46", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.46.tgz", + "integrity": "sha512-YOjdx+Uoh9FbRO7yVYbnbt1puRWPQMemR3SutLeyv2XfxKs1ihpe0OLAUwBPEP2ImNH/PZC7SEiC6j32dwRZ7g==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "normalize-html-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", + "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parcel-bundler": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.4.tgz", + "integrity": "sha512-G+iZGGiPEXcRzw0fiRxWYCKxdt/F7l9a0xkiU4XbcVRJCSlBnioWEwJMutOCCpoQmaQtjB4RBHDGIHN85AIhLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", + "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "dev": true, + "requires": { + "css-unit-converter": "^1.1.1", + "postcss": "^7.0.5", + "postcss-selector-parser": "^5.0.0-rc.4", + "postcss-value-parser": "^3.3.1" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + } + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + } + }, + "posthtml-render": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.1.5.tgz", + "integrity": "sha512-yvt54j0zCBHQVEFAuR+yHld8CZrCa/E1Z/OcFNCV1IEWTLVxT8O7nYnM4IIw1CD4r8kaRd3lc42+0lgCKgm87w==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "psl": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "purgecss": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", + "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.0", + "yargs": "^14.0.0" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "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.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" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.1.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.1.0" + } + }, + "regjsgen": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", + "dev": true + }, + "regjsparser": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", + "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "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 + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "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" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-to-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.0.2.tgz", + "integrity": "sha512-o5FqeMyxGx1wkp8p14q9QqGXh1JjXtIDYTr15N/B4ThM5ULqlpXdtOO84m950jFGvBkeRD1utW+WyNKvao2ybQ==", + "dev": true + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-eval": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.3.tgz", + "integrity": "sha512-zsxDGucfAh8T339sSKgpFbvg15Fms2IVaJGC+jqp0bVsxhcpM+iMeAI8weNo8dmf4OblgifTBUoyk1vGVtYw2w==", + "dev": true, + "requires": { + "escodegen": "^1.11.1" + }, + "dependencies": { + "escodegen": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz", + "integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + }, + "dependencies": { + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "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" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz", + "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "shasum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", - "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { - "json-stable-stringify": "~0.0.0", - "sha.js": "~2.4.4" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, - "simple-concat": { + "toidentifier": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", - "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, - "stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" + "safe-buffer": "^5.0.1" } }, - "stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "prelude-ls": "~1.1.2" } }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uncss": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.2.tgz", + "integrity": "sha512-hu2HquwDItuGDem4YsJROdAD8SknmWtM24zwhQax6J1se8tPjV1cnwPKhtjodzBaUhaL8Zb3hlGdZ2WAUpbAOg==", "dev": true, "requires": { - "safe-buffer": "~5.1.0" + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" }, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } } } }, - "subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", - "dev": true, - "requires": { - "minimist": "^1.1.0" - } + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true }, - "syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "dev": true, "requires": { - "acorn-node": "^1.2.0" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "unicode-match-property-value-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz", + "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==", "dev": true }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "unicode-property-aliases-ecmascript": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz", + "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==", + "dev": true + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", "dev": true, "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + } } }, - "timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { - "process": "~0.11.0" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" } }, - "to-arraybuffer": { + "uniq": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", "dev": true }, - "tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", "dev": true }, - "umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true }, - "undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -1292,52 +24576,248 @@ } } }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "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 + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, "vm-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==", "dev": true }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "dev": true, + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "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" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yargs": { + "version": "14.2.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.2.tgz", + "integrity": "sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA==", + "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": "^15.0.0" + } + }, + "yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-xLTUnCMc4JhxrPEPUYD5IBR1mWCK/aT6+RJ/K29JY2y1vD+FhtgKK0AXRWvI262q3QSffAQuTouFIKUuHX89wQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } } diff --git a/examples/name-api/package.json b/examples/name-api/package.json index 143e733d2..3929830dc 100644 --- a/examples/name-api/package.json +++ b/examples/name-api/package.json @@ -4,12 +4,17 @@ "description": "", "main": "index.js", "scripts": { - "start": "browserify index.js > bundle.js && extatic --host 127.0.0.1 -p 8888" + "start": "parcel index.html" }, "author": "Tara Vancil ", "license": "MIT", "devDependencies": { - "browserify": "^16.2.3", - "extatic": "^4.1.3" - } + "parcel-bundler": "^1.12.4" + }, + "dependencies": { + "ipfs-http-client": "../.." + }, + "browserslist": [ + "last 2 versions and not dead and > 2%" + ] } diff --git a/examples/upload-file-via-browser/README.md b/examples/upload-file-via-browser/README.md index ee0e04d1c..e05452b03 100644 --- a/examples/upload-file-via-browser/README.md +++ b/examples/upload-file-via-browser/README.md @@ -26,9 +26,6 @@ Once the daemon is on, run the following commands within this folder: > npm install > npm start ``` - -Now open your browser at `http://localhost:3000` - After uploading a file (left screen), and opening the uploaded file (right screen), you should see something like: > ![App Screenshot](https://github.com/ipfs/js-ipfs-http-client/raw/master/examples/upload-file-via-browser/screenshot.png) diff --git a/examples/upload-file-via-browser/index.html b/examples/upload-file-via-browser/index.html index c4d9c4902..172aecc6e 100644 --- a/examples/upload-file-via-browser/index.html +++ b/examples/upload-file-via-browser/index.html @@ -5,6 +5,6 @@
- + diff --git a/examples/upload-file-via-browser/package.json b/examples/upload-file-via-browser/package.json index 8827052ca..80b19a536 100644 --- a/examples/upload-file-via-browser/package.json +++ b/examples/upload-file-via-browser/package.json @@ -3,33 +3,22 @@ "version": "1.0.0", "description": "Upload file to IPFS via browser using js-ipfs-http-client with Webpack", "scripts": { - "start": "webpack-dev-server" + "start": "parcel index.html" }, "author": "Harlan T Wood ", "contributors": [ "Victor Bjelkholm " ], "license": "MIT", + "dependencies": { + "ipfs-http-client": "../.." + }, "devDependencies": { - "@babel/core": "^7.4.3", - "@babel/preset-env": "^7.3.1", - "@babel/preset-react": "^7.0.0", - "eslint": "^5.16.0", - "eslint-plugin-react": "^7.11.1", "react": "~16.6.3", "react-dom": "~16.6.3", - "webpack": "~4.30.0", - "webpack-dev-server": "~3.3.1" + "parcel-bundler": "^1.12.4" }, - "eslintConfig" : { - "extends": "standard", - "rules": { - "react/jsx-uses-react": 2, - "react/jsx-uses-vars": 2, - "react/react-in-jsx-scope": 2 - }, - "plugins": [ - "react" - ] - } + "browserslist": [ + "last 2 versions and not dead and > 2%" + ] } diff --git a/examples/upload-file-via-browser/src/App.js b/examples/upload-file-via-browser/src/App.js index 258dc53ed..16e48ef43 100644 --- a/examples/upload-file-via-browser/src/App.js +++ b/examples/upload-file-via-browser/src/App.js @@ -1,6 +1,7 @@ +/* eslint-disable no-console */ 'use strict' const React = require('react') -const ipfsClient = require('../../../src') +const ipfsClient = require('ipfs-http-client') class App extends React.Component { constructor () { @@ -8,7 +9,7 @@ class App extends React.Component { this.state = { added_file_hash: null } - this.ipfs = ipfsClient('localhost', '58041') + this.ipfs = ipfsClient('/ip4/127.0.0.1/tcp/5001') // bind methods this.captureFile = this.captureFile.bind(this) @@ -28,24 +29,27 @@ class App extends React.Component { // Example #1 // Add file to IPFS and return a CID - saveToIpfs (files) { - let ipfsId - this.ipfs.add([...files], { progress: (prog) => console.log(`received: ${prog}`) }) - .then((response) => { - console.log(response) - ipfsId = response[0].hash - console.log(ipfsId) - this.setState({ added_file_hash: ipfsId }) - }).catch((err) => { - console.error(err) - }) + async saveToIpfs (files) { + const source = this.ipfs.add( + [...files], + { + progress: (prog) => console.log(`received: ${prog}`) + } + ) + try { + for await (const file of source) { + console.log(file) + this.setState({ added_file_hash: file.path }) + } + } catch (err) { + console.error(err) + } } // Example #2 // Add file to IPFS and wrap it in a directory to keep the original filename - saveToIpfsWithFilename (files) { + async saveToIpfsWithFilename (files) { const file = [...files][0] - let ipfsId const fileDetails = { path: file.name, content: file @@ -54,16 +58,16 @@ class App extends React.Component { wrapWithDirectory: true, progress: (prog) => console.log(`received: ${prog}`) } - this.ipfs.add(fileDetails, options) - .then((response) => { - console.log(response) - // CID of wrapping directory is returned last - ipfsId = response[response.length - 1].hash - console.log(ipfsId) - this.setState({ added_file_hash: ipfsId }) - }).catch((err) => { - console.error(err) - }) + + const source = this.ipfs.add(fileDetails, options) + try { + for await (const file of source) { + console.log(file) + this.setState({ added_file_hash: file.cid.toString() }) + } + } catch (err) { + console.error(err) + } } handleSubmit (event) { diff --git a/examples/upload-file-via-browser/src/index.js b/examples/upload-file-via-browser/src/index.js index 6d9d7badf..2bd77c1df 100644 --- a/examples/upload-file-via-browser/src/index.js +++ b/examples/upload-file-via-browser/src/index.js @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ 'use strict' const React = require('react') const ReactDOM = require('react-dom') diff --git a/examples/upload-file-via-browser/webpack.config.js b/examples/upload-file-via-browser/webpack.config.js deleted file mode 100644 index c28ec1168..000000000 --- a/examples/upload-file-via-browser/webpack.config.js +++ /dev/null @@ -1,37 +0,0 @@ -'use strict' - -const path = require('path') - -module.exports = { - mode: 'development', - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'bundle.js', - publicPath: '/static/' - }, - module: { - rules: [ - { - test: /\.js$/, - include: path.join(__dirname, 'src'), - use: [ - { - loader: 'babel-loader', - options: { - presets: ['@babel/preset-env', '@babel/preset-react'] - } - } - ] - } - ] - }, - node: { - fs: 'empty', - net: 'empty', - tls: 'empty' - } -} From 2e9dd9e8495c275fb0970659fb65cb94615e1c9f Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Tue, 4 Feb 2020 11:57:37 +0000 Subject: [PATCH 39/43] chore: update contributors --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index ccc412bcb..07ad807db 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ipfs-http-client", - "version": "42.0.0-pre.2", + "version": "42.0.0", "description": "A client library for the IPFS HTTP API", "keywords": [ "ipfs" @@ -83,6 +83,7 @@ "Alan Shaw ", "Alan Shaw ", "Alex Mingoia ", + "Alex Potsides ", "Antonio Tenorio-Fornés ", "Bruno Barbieri ", "Clemo ", @@ -160,7 +161,6 @@ "Victor Bjelkholm ", "Volker Mische ", "Zhiyuan Lin ", - "achingbrain ", "dirkmc ", "dmitriy ryajov ", "elsehow ", From c20a568979c7a3872ecb81e3972c3a545fd3d0c2 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Tue, 4 Feb 2020 11:57:37 +0000 Subject: [PATCH 40/43] chore: release version v42.0.0 --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 709438c6b..e47157acd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ + +# [42.0.0](https://github.com/ipfs/js-ipfs-http-client/compare/v42.0.0-pre.2...v42.0.0) (2020-02-04) + + +### Bug Fixes + +* interface tests ([#1233](https://github.com/ipfs/js-ipfs-http-client/issues/1233)) ([d3eee0d](https://github.com/ipfs/js-ipfs-http-client/commit/d3eee0d)) + + + # [42.0.0-pre.0](https://github.com/ipfs/js-ipfs-http-client/compare/v41.0.1...v42.0.0-pre.0) (2020-01-23) From 69b93cc58a7a8562e6ef6aaf22ce52745041468d Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Tue, 4 Feb 2020 12:11:02 +0000 Subject: [PATCH 41/43] docs: add missing changelog --- CHANGELOG.md | 110 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e47157acd..a40976f0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,121 @@ # [42.0.0](https://github.com/ipfs/js-ipfs-http-client/compare/v42.0.0-pre.2...v42.0.0) (2020-02-04) +There are significant and breaking API changes in this release. Please see the [migration guide](https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26). ### Bug Fixes * interface tests ([#1233](https://github.com/ipfs/js-ipfs-http-client/issues/1233)) ([d3eee0d](https://github.com/ipfs/js-ipfs-http-client/commit/d3eee0d)) +### Features + +* `add` results now include `mode` and `mtime` properties if they were set. + +* `files.chmod` has been added. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#fileschmod) for info. + +* `files.flush` now returns the root CID for the path that was flushed (`/` by default) + +* `files.ls` results now include `mode` and `mtime` properties if they were set. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#ls) for more info. + +* `files.mkdir` now accepts `mode` and `mtime` options to allow setting mode and mtime metadata. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#filesmkdir) for more info. + +* `files.stat` result now includes `mode` and `mtime` properties if they were set. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#filesstat) for more info. + +* `files.touch` has been added. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#filestouch) for info. + +* `files.write` now accepts `mode` and `mtime` options to allow setting mode and mtime metadata. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#fileswrite) for more info. + +* `object.get` now accepts a `timeout` option. It will cause the method to throw with a `TimeoutError` if no data is received within the timeout window. It can be passed as a `number` or a `string`. If a `number` is passed it is interpreted as milliseconds, if a string is passed it is interpreted as a [human readable duration](https://www.npmjs.com/package/parse-duration). + +* `pin.add` now accepts a `timeout` option. It will cause the method to throw with a `TimeoutError` if no data is received within the timeout window. It can be passed as a `number` or a `string`. If a `number` is passed it is interpreted as milliseconds, if a string is passed it is interpreted as a [human readable duration](https://www.npmjs.com/package/parse-duration). + +* `refs` now accepts a `timeout` option. It will cause the method to throw with a `TimeoutError` if no data is received within the timeout window. It can be passed as a `number` or a `string`. If a `number` is passed it is interpreted as milliseconds, if a string is passed it is interpreted as a [human readable duration](https://www.npmjs.com/package/parse-duration). + +### BREAKING CHANGES + +* Callbacks are no longer supported on any API methods. Please use a utility such as [`callbackify`](https://www.npmjs.com/package/callbackify) on API methods that return Promises to emulate previous behaviour. See the [migration guide](https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26#migrating-from-callbacks) for more info. + +* `add` now returns an async iterable. + +* `add` now accepts `mode` and `mtime` options on inputs to allow setting mode and mtime metadata for added files. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#add) for more info. + +* `add` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. + +* `addReadableStream`, `addPullStream` have been removed. Please see the [migration guide](https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26#migrating-to-async-iterables) for more info. + +* `addFromStream` has been removed. Use `add` instead. + +* `addFromFs` has been removed. Please use the exported `globSource` utility and pass the result to `add`. See the [glob source documentation](https://github.com/ipfs/js-ipfs-http-client#glob-source) for more details and an example. + +* `addFromURL` has been removed. Please use the exported `urlSource` utility and pass the result to `add`. See the [URL source documentation](https://github.com/ipfs/js-ipfs-http-client#url-source) for more details and an example. + +* `bitswap.stat` result has changed - `wantlist` and values are now an array of [CID](https://github.com/multiformats/js-cid) instances and `peers` is now a `string[]` of peer IDs. + +* `bitswap.wantlist` now returns an array of [CID](https://github.com/multiformats/js-cid) instances. + +* `block.rm` now returns an async iterable. + +* `block.rm` now yields objects of `{ cid: CID, error: Error }`. + +* `block.stat` result now contains a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `key` property. + +* `dht.findProvs`, `dht.provide`, `dht.put` and `dht.query` now all return an async iterable. + +* `dht.findPeer`, `dht.findProvs`, `dht.provide`, `dht.put` and `dht.query` now yield/return an object `{ id: string, addrs: Multiaddr[] }` instead of a `PeerInfo` instance(s). + +* `files.lsPullStream` and `files.lsReadableStream` have been removed. Please see the [migration guide](https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26#migrating-to-async-iterables) for more info. + +* `files.ls` now returns an async iterable. + +* `files.ls` results now contain a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `hash` property. + +* `files.ls` no longer takes a `long` option (in core) - you will receive all data by default. + +* `files.readPullStream` and `files.readReadableStream` have been removed. Please see the [migration guide](https://gist.github.com/alanshaw/04b2ddc35a6fff25c040c011ac6acf26#migrating-to-async-iterables) for more info. + +* `files.read` now returns an async iterable. + +* `files.stat` result now contains a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `hash` property. + +* `get` now returns an async iterable. The `content` property value for objects yielded from the iterator is now an async iterable that yields [`BufferList`](https://github.com/rvagg/bl) objects. + +* `id` result has changed, the `addresses` property is now a `Multiaddr[]` + +* `name.resolve` now returns an async iterable. It yields increasingly more accurate resolved values as they are discovered until the best value is selected from the quorum of 16. The "best" resolved value is the last item yielded from the iterator. If you are interested only in this best value you could use `it-last` to extract it like so: + + ```js + const last = require('it-last') + await last(ipfs.name.resolve('/ipns/QmHash')) + ``` + +* `ls` now returns an async iterable. + +* `ls` results now contain a `cid` property (whose value is a [CID instance](https://github.com/multiformats/js-cid)) instead of a `hash` property. + +* `ls` results now include `mode` and `mtime` properties if they were set. See the [core interface docs](https://github.com/ipfs/interface-js-ipfs-core/blob/master/SPEC/FILES.md#ls) for more info. + +* `pin.add` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. + +* `pin.ls` now returns an async iterable. + +* `pin.ls` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. + +* `pin.rm` results now contain a `cid` property (a [CID instance](https://github.com/multiformats/js-cid)) instead of a string `hash` property. + +* `ping` now returns an async iterable. + +* `refs` and `refs.local` now return an async iterable. + +* `repo.gc` now returns an async iterable. + +* `stats.bw` now returns an async iterable. + +* `swarm.peers` now returns an array of objects with a `peer` property that is a `string`, instead of a `PeerId` instance. + +* `swarm.addrs` now returns an array of objects `{ id: string, addrs: Multiaddr[] }` instead of `PeerInfo` instances. + +* The protocol _name_ for peer IDs in multiaddrs has changed from 'ipfs' to 'p2p'. There's no changes to data on the wire but this change is seen when multiaddrs are converted to strings. + From e9ce88d2523663b9730a0ffa28c6791f45976549 Mon Sep 17 00:00:00 2001 From: Alex Potsides Date: Tue, 11 Feb 2020 15:42:02 +0100 Subject: [PATCH 42/43] chore: update ipfsd-ctl to latest version (#1237) * chore: update ipfsd-ctl to latest version Also uses the same ipfsd factory for all tests. * chore: remove gh dep version --- .aegir.js | 9 ++++++++- package.json | 4 ++-- test/commands.spec.js | 2 +- test/constructor.spec.js | 2 +- test/dag.spec.js | 2 +- test/diag.spec.js | 2 +- test/files-mfs.spec.js | 2 +- test/get.spec.js | 2 +- test/interface.spec.js | 28 +++++++--------------------- test/key.spec.js | 2 +- test/log.spec.js | 2 +- test/ping.spec.js | 2 +- test/repo.spec.js | 2 +- test/stats.spec.js | 2 +- test/utils/factory.js | 23 ++++++++++++++++------- 15 files changed, 44 insertions(+), 42 deletions(-) diff --git a/.aegir.js b/.aegir.js index 2e5fb64db..793c4eb13 100644 --- a/.aegir.js +++ b/.aegir.js @@ -2,7 +2,14 @@ const createServer = require('ipfsd-ctl').createServer const EchoServer = require('interface-ipfs-core/src/utils/echo-http-server') -const server = createServer() +const server = createServer({ + host: '127.0.0.1', + port: 43134 +}, { + type: 'go', + ipfsHttpModule: require('./'), + ipfsBin: require('go-ipfs-dep').path() +}) const echoServer = EchoServer.createServer() module.exports = { diff --git a/package.json b/package.json index 07ad807db..a7a635e9a 100644 --- a/package.json +++ b/package.json @@ -67,9 +67,9 @@ "aegir": "^20.4.1", "async": "^3.1.0", "browser-process-platform": "~0.1.1", - "go-ipfs-dep": "^0.4.23", + "go-ipfs-dep": "^0.4.23-3", "interface-ipfs-core": "^0.131.7", - "ipfsd-ctl": "^2.1.0", + "ipfsd-ctl": "^3.0.0", "it-all": "^1.0.1", "it-concat": "^1.0.0", "it-pipe": "^1.1.0", diff --git a/test/commands.spec.js b/test/commands.spec.js index 9e68a1e01..96f932b92 100644 --- a/test/commands.spec.js +++ b/test/commands.spec.js @@ -2,7 +2,7 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('.commands', function () { this.timeout(60 * 1000) diff --git a/test/constructor.spec.js b/test/constructor.spec.js index a1a000c84..acffb11e7 100644 --- a/test/constructor.spec.js +++ b/test/constructor.spec.js @@ -3,7 +3,7 @@ const multiaddr = require('multiaddr') const { expect } = require('interface-ipfs-core/src/utils/mocha') -const f = require('./utils/factory') +const f = require('./utils/factory')() const ipfsClient = require('../src/index.js') describe('ipfs-http-client constructor tests', () => { diff --git a/test/dag.spec.js b/test/dag.spec.js index de9217d13..fec5229f6 100644 --- a/test/dag.spec.js +++ b/test/dag.spec.js @@ -6,7 +6,7 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const { DAGNode } = require('ipld-dag-pb') const CID = require('cids') -const f = require('./utils/factory') +const f = require('./utils/factory')() let ipfs diff --git a/test/diag.spec.js b/test/diag.spec.js index 37a1911e7..9f16d6932 100644 --- a/test/diag.spec.js +++ b/test/diag.spec.js @@ -3,7 +3,7 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const platform = require('browser-process-platform') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('.diag', function () { this.timeout(50 * 1000) diff --git a/test/files-mfs.spec.js b/test/files-mfs.spec.js index edc7698e1..4d7e0ea83 100644 --- a/test/files-mfs.spec.js +++ b/test/files-mfs.spec.js @@ -9,7 +9,7 @@ const all = require('it-all') const pipe = require('it-pipe') const { TimeoutError } = require('ky-universal') -const f = require('./utils/factory') +const f = require('./utils/factory')() const testfile = loadFixture('test/fixtures/testfile.txt') diff --git a/test/get.spec.js b/test/get.spec.js index c303179c8..5c64e3bf2 100644 --- a/test/get.spec.js +++ b/test/get.spec.js @@ -8,7 +8,7 @@ const loadFixture = require('aegir/fixtures') const all = require('it-all') const concat = require('it-concat') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('.get (specific go-ipfs features)', function () { this.timeout(60 * 1000) diff --git a/test/interface.spec.js b/test/interface.spec.js index ebec1b0e9..72cc86cfb 100644 --- a/test/interface.spec.js +++ b/test/interface.spec.js @@ -2,27 +2,13 @@ 'use strict' const tests = require('interface-ipfs-core') -const merge = require('merge-options') -const { createFactory } = require('ipfsd-ctl') -const { findBin } = require('ipfsd-ctl/src/utils') +const factory = require('./utils/factory') const isWindows = process.platform && process.platform === 'win32' /** @typedef {import("ipfsd-ctl").ControllerOptions} ControllerOptions */ describe('interface-ipfs-core tests', () => { - /** @type ControllerOptions */ - const commonOptions = { - test: true, - ipfsHttpModule: { - path: require.resolve('../src'), - ref: require('../src') - }, - ipfsOptions: { - pass: 'ipfs-is-awesome-software' - }, - ipfsBin: findBin('go') - } - const commonFactory = createFactory(commonOptions) + const commonFactory = factory() tests.root(commonFactory, { skip: [ @@ -320,13 +306,13 @@ describe('interface-ipfs-core tests', () => { tests.miscellaneous(commonFactory) - tests.name(createFactory(merge(commonOptions, + tests.name(factory( { ipfsOptions: { offline: true } } - )), { + ), { skip: [ { name: 'should resolve a record from peerid as cidv1 in base32', @@ -335,7 +321,7 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.namePubsub(createFactory(merge(commonOptions, + tests.namePubsub(factory( { ipfsOptions: { EXPERIMENTAL: { @@ -343,7 +329,7 @@ describe('interface-ipfs-core tests', () => { } } } - )), { + ), { skip: [ // name.pubsub.cancel { @@ -371,7 +357,7 @@ describe('interface-ipfs-core tests', () => { ] }) - tests.pubsub(createFactory(commonOptions, { + tests.pubsub(factory({}, { go: { args: ['--enable-pubsub-experiment'] } diff --git a/test/key.spec.js b/test/key.spec.js index 180cb795b..eb53b8293 100644 --- a/test/key.spec.js +++ b/test/key.spec.js @@ -2,7 +2,7 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('.key', function () { this.timeout(50 * 1000) diff --git a/test/log.spec.js b/test/log.spec.js index c56660d07..cfa18582c 100644 --- a/test/log.spec.js +++ b/test/log.spec.js @@ -4,7 +4,7 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const all = require('it-all') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('.log', function () { this.timeout(100 * 1000) diff --git a/test/ping.spec.js b/test/ping.spec.js index 7076f208b..b464062bb 100644 --- a/test/ping.spec.js +++ b/test/ping.spec.js @@ -4,7 +4,7 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const all = require('it-all') -const f = require('./utils/factory') +const f = require('./utils/factory')() // Determine if a ping response object is a pong, or something else, like a status message function isPong (pingResponse) { diff --git a/test/repo.spec.js b/test/repo.spec.js index 21482135d..7a1b643d7 100644 --- a/test/repo.spec.js +++ b/test/repo.spec.js @@ -2,7 +2,7 @@ 'use strict' const { expect } = require('interface-ipfs-core/src/utils/mocha') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('.repo', function () { this.timeout(50 * 1000) // slow CI diff --git a/test/stats.spec.js b/test/stats.spec.js index 1e5d7da25..6b1530bee 100644 --- a/test/stats.spec.js +++ b/test/stats.spec.js @@ -3,7 +3,7 @@ const { expect } = require('interface-ipfs-core/src/utils/mocha') const all = require('it-all') -const f = require('./utils/factory') +const f = require('./utils/factory')() describe('stats', function () { this.timeout(50 * 1000) // slow CI diff --git a/test/utils/factory.js b/test/utils/factory.js index d6ac161ea..70f4e151c 100644 --- a/test/utils/factory.js +++ b/test/utils/factory.js @@ -1,15 +1,24 @@ 'use strict' + const { createFactory } = require('ipfsd-ctl') -const { findBin } = require('ipfsd-ctl/src/utils') +const merge = require('merge-options') +const { isNode } = require('ipfs-utils/src/env') -const factory = createFactory({ +const commonOptions = { test: 'true', type: 'go', - ipfsBin: findBin('go'), - ipfsHttpModule: { - path: require.resolve('../../src'), - ref: require('../../src') + ipfsHttpModule: require('../../src') +} + +const commonOverrides = { + go: { + ipfsBin: isNode ? require('go-ipfs-dep').path() : undefined } -}) +} + +const factory = (options = {}, overrides = {}) => createFactory( + merge(commonOptions, options), + merge(commonOverrides, overrides) +) module.exports = factory From 995abb41b83c8345b16cba67151e9ccb9cbea4de Mon Sep 17 00:00:00 2001 From: achingbrain Date: Fri, 6 Mar 2020 17:51:23 +0000 Subject: [PATCH 43/43] docs: add notice of archival --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 88ed592f8..bd40851aa 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +# 🔒 Archived + +The contents of this repo have been merged into [ipfs/js-ipfs](https://github.com/ipfs/js-ipfs). + +Please open [issues](https://github.com/ipfs/js-ipfs/issues) or submit [PRs](https://github.com/ipfs/js-ipfs/pulls) there. +

IPFS http client lib logo

@@ -54,7 +60,11 @@ - [Instance Utils](#instance-utils) - [Static Types and Utils](#static-types-and-utils) - [Glob source](#glob-source) + - [`globSource(path, [options])`](#globsourcepath-options) + - [Example](#example) - [URL source](#url-source) + - [`urlSource(url)`](#urlsourceurl) + - [Example](#example-1) - [Development](#development) - [Testing](#testing) - [Contribute](#contribute)