├── .gitignore
├── .travis.yml
├── LICENSE
├── bin.js
├── collaborators.md
├── index.js
├── multiple.png
├── package-lock.json
├── package.json
├── readme.md
├── test
├── cli.js
├── resume.html
├── resume.js
└── test.js
└── usage.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 |
3 | node_js:
4 | - 6
5 | - 4
6 |
7 | cache:
8 | directories:
9 | - node_modules
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2019 Max Ogden
2 |
3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4 |
5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6 |
7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8 |
9 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
10 |
11 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12 |
--------------------------------------------------------------------------------
/bin.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | var fs = require('fs')
4 | var path = require('path')
5 | var nugget = require('./')
6 | var args = require('minimist')(process.argv.slice(2))
7 |
8 | var urls = args._
9 | if (urls.length === 0) {
10 | console.log(fs.readFileSync(path.join(__dirname, 'usage.txt')).toString())
11 | process.exit(1)
12 | }
13 |
14 | var opts = {
15 | target: args.o || args.O || args.out,
16 | dir: args.d || args.dir,
17 | resume: args.c || args.continue,
18 | force: args.f || args.force,
19 | sockets: args.s || args.sockets,
20 | quiet: args.q || args.quiet,
21 | frequency: args.frequency ? +args.frequency : null,
22 | proxy: args.proxy ? args.proxy : null,
23 | tmpfile: args.t || args.tmpfile,
24 | strictSSL: args['strict-ssl']
25 | }
26 |
27 | nugget(urls, opts, function (err) {
28 | if (err) {
29 | console.error('Error:', err)
30 | process.exit(1)
31 | }
32 | process.exit(0)
33 | })
34 |
--------------------------------------------------------------------------------
/collaborators.md:
--------------------------------------------------------------------------------
1 | ## Collaborators
2 |
3 | nugget is only possible due to the excellent work of the following collaborators:
4 |
5 |
10 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | var request = require('request')
2 | var fs = require('fs')
3 | var path = require('path')
4 | var log = require('single-line-log').stdout
5 | var progress = require('progress-stream')
6 | var prettyBytes = require('pretty-bytes')
7 | var throttle = require('throttleit')
8 | var EventEmitter = require('events').EventEmitter
9 | var debug = require('debug')('nugget')
10 |
11 | function noop () {}
12 |
13 | module.exports = function (urls, opts, cb) {
14 | if (!Array.isArray(urls)) urls = [urls]
15 | if (urls.length === 1) opts.singleTarget = true
16 |
17 | var defaultProps = {}
18 |
19 | if (opts.sockets) {
20 | var sockets = +opts.sockets
21 | defaultProps.pool = {maxSockets: sockets}
22 | }
23 |
24 | if (opts.proxy) {
25 | defaultProps.proxy = opts.proxy
26 | }
27 |
28 | if (opts.strictSSL !== null) {
29 | defaultProps.strictSSL = opts.strictSSL
30 | }
31 |
32 | if (Object.keys(defaultProps).length > 0) {
33 | request = request.defaults(defaultProps)
34 | }
35 |
36 | var downloads = []
37 | var errors = []
38 | var pending = 0
39 | var truncated = urls.length * 2 >= (process.stdout.rows - 15)
40 |
41 | urls.forEach(function (url) {
42 | debug('start dl', url)
43 | pending++
44 | var dl = startDownload(url, opts, function done (err) {
45 | debug('done dl', url, pending)
46 | if (err) {
47 | debug('error dl', url, err)
48 | errors.push(err)
49 | dl.error = err.message
50 | }
51 | if (truncated) {
52 | var i = downloads.indexOf(dl)
53 | downloads.splice(i, 1)
54 | downloads.push(dl)
55 | }
56 | if (--pending === 0) {
57 | render()
58 | cb(errors.length ? errors : undefined)
59 | }
60 | })
61 |
62 | downloads.push(dl)
63 |
64 | dl.on('start', function (progressStream) {
65 | throttledRender()
66 | })
67 |
68 | dl.on('progress', function (data) {
69 | debug('progress', url, data.percentage)
70 |
71 | dl.speed = data.speed
72 | if (dl.percentage === 100) render()
73 | else throttledRender()
74 | })
75 | })
76 |
77 | var _log = opts.quiet ? noop : log
78 | render()
79 | var throttledRender = throttle(render, opts.frequency || 250)
80 |
81 | if (opts.singleTarget) return downloads[0]
82 | else return downloads
83 |
84 | function render () {
85 | var height = process.stdout.rows
86 | var rendered = 0
87 | var output = ''
88 | var totalSpeed = 0
89 | downloads.forEach(function (dl) {
90 | if (2 * rendered >= height - 15) return
91 | rendered++
92 | if (dl.error) {
93 | output += 'Downloading ' + path.basename(dl.target) + '\n'
94 | output += 'Error: ' + dl.error + '\n'
95 | return
96 | }
97 | var pct = dl.percentage
98 | var speed = dl.speed || 0
99 | var total = dl.fileSize
100 | totalSpeed += speed
101 | var bar = Array(Math.floor(45 * pct / 100)).join('=') + '>'
102 | while (bar.length < 45) bar += ' '
103 | output += 'Downloading ' + path.basename(dl.target) + '\n' +
104 | '[' + bar + '] ' + pct.toFixed(1) + '%'
105 | if (total) output += ' of ' + prettyBytes(total)
106 | output += ' (' + prettyBytes(speed) + '/s)\n'
107 | })
108 | if (rendered < downloads.length) output += '\n... and ' + (downloads.length - rendered) + ' more\n'
109 | if (downloads.length > 1) output += '\nCombined Speed: ' + prettyBytes(totalSpeed) + '/s\n'
110 | _log(output)
111 | }
112 |
113 | function startDownload (url, opts, cb) {
114 | var targetName = path.basename(url).split('?')[0]
115 | if (opts.singleTarget && opts.target) targetName = opts.target
116 | var target = path.resolve(opts.dir || process.cwd(), targetName)
117 | var origTarget = target
118 | if (opts.tmpfile) {
119 | target = target + '.tmp'
120 | }
121 | if (opts.resume) {
122 | resume(url, opts, cb)
123 | } else {
124 | download(url, opts, cb)
125 | }
126 |
127 | var progressEmitter = new EventEmitter()
128 | progressEmitter.target = target
129 | progressEmitter.speed = 0
130 | progressEmitter.percentage = 0
131 |
132 | function onprogress (p) {
133 | var pct = p.percentage
134 | progressEmitter.progress = p
135 | progressEmitter.percentage = pct
136 | progressEmitter.emit('progress', p)
137 | }
138 |
139 | return progressEmitter
140 |
141 | function resume (url, opts, cb) {
142 | var onStat = function (err, stats) {
143 | if (err && err.code === 'ENOENT') {
144 | return download(url, opts, cb)
145 | }
146 | if (err) {
147 | return cb(err)
148 | }
149 | var offset = stats.size
150 | var req = request.get(url)
151 |
152 | req.on('error', cb)
153 | req.on('response', function (resp) {
154 | resp.destroy()
155 |
156 | var length = parseInt(resp.headers['content-length'], 10)
157 |
158 | // file is already downloaded.
159 | if (length === offset) {
160 | onprogress({percentage: 100})
161 | return cb()
162 | }
163 |
164 | if (!isNaN(length) && length > offset && /bytes/.test(resp.headers['accept-ranges'])) {
165 | opts.range = [offset, length]
166 | }
167 |
168 | download(url, opts, cb)
169 | })
170 | }
171 | if (opts.tmpfile) {
172 | fs.stat(origTarget, function (err, origStats) {
173 | if (err && err.code === 'ENOENT') {
174 | fs.stat(target, onStat)
175 | } else {
176 | // file is already downloaded
177 | onprogress({percentage: 100})
178 | cb()
179 | }
180 | })
181 | } else {
182 | fs.stat(target, onStat)
183 | }
184 |
185 | }
186 |
187 | function download (url, opts, cb) {
188 | var headers = opts.headers || {}
189 | if (opts.range) {
190 | headers.Range = 'bytes=' + opts.range[0] + '-' + opts.range[1]
191 | }
192 | var read = request(url, { headers: headers })
193 |
194 | read.on('error', cb)
195 | read.on('response', function (resp) {
196 | debug('response', url, resp.statusCode)
197 | if (resp.statusCode > 299 && !opts.force) return cb(new Error('GET ' + url + ' returned ' + resp.statusCode))
198 | var write = fs.createWriteStream(target, {flags: opts.resume ? 'a' : 'w'})
199 | write.on('error', cb)
200 | write.on('finish', async () => {
201 | if (opts.tmpfile) {
202 | fs.rename(target, origTarget, cb)
203 | } else {
204 | process.nextTick(cb)
205 | }
206 | })
207 |
208 | var fullLen
209 | var contentLen = Number(resp.headers['content-length'])
210 | var range = resp.headers['content-range']
211 | if (range) {
212 | fullLen = Number(range.split('/')[1])
213 | } else {
214 | fullLen = contentLen
215 | }
216 |
217 | progressEmitter.fileSize = fullLen
218 | if (range) {
219 | var downloaded = fullLen - contentLen
220 | }
221 | var progressStream = progress({ length: fullLen, transferred: downloaded }, onprogress)
222 | progressEmitter.emit('start', progressStream)
223 |
224 | resp
225 | .pipe(progressStream)
226 | .pipe(write)
227 | })
228 | }
229 | }
230 | }
231 |
--------------------------------------------------------------------------------
/multiple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/max-mapper/nugget/0211f66754012bd13f8f6ab64290c46a75f5f5a7/multiple.png
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nugget",
3 | "version": "2.2.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "acorn": {
8 | "version": "5.7.4",
9 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
10 | "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
11 | "dev": true
12 | },
13 | "acorn-jsx": {
14 | "version": "3.0.1",
15 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
16 | "integrity": "sha512-AU7pnZkguthwBjKgCg6998ByQNIMjbuDQZ8bb78QAFZwPfmKia8AIzgY/gWgqCjnht8JLdXmB4YxA0KaV60ncQ==",
17 | "dev": true,
18 | "requires": {
19 | "acorn": "^3.0.4"
20 | },
21 | "dependencies": {
22 | "acorn": {
23 | "version": "3.3.0",
24 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
25 | "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==",
26 | "dev": true
27 | }
28 | }
29 | },
30 | "ajv": {
31 | "version": "6.12.6",
32 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
33 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
34 | "requires": {
35 | "fast-deep-equal": "^3.1.1",
36 | "fast-json-stable-stringify": "^2.0.0",
37 | "json-schema-traverse": "^0.4.1",
38 | "uri-js": "^4.2.2"
39 | }
40 | },
41 | "ajv-keywords": {
42 | "version": "1.5.1",
43 | "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
44 | "integrity": "sha512-vuBv+fm2s6cqUyey2A7qYcvsik+GMDJsw8BARP2sDE76cqmaZVarsvHf7Vx6VJ0Xk8gLl+u3MoAPf6gKzJefeA==",
45 | "dev": true
46 | },
47 | "ansi-escapes": {
48 | "version": "1.4.0",
49 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
50 | "integrity": "sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw==",
51 | "dev": true
52 | },
53 | "ansi-regex": {
54 | "version": "2.1.1",
55 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
56 | "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="
57 | },
58 | "ansi-styles": {
59 | "version": "2.2.1",
60 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
61 | "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
62 | "dev": true
63 | },
64 | "argparse": {
65 | "version": "1.0.10",
66 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
67 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
68 | "dev": true,
69 | "requires": {
70 | "sprintf-js": "~1.0.2"
71 | }
72 | },
73 | "asn1": {
74 | "version": "0.2.6",
75 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
76 | "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
77 | "requires": {
78 | "safer-buffer": "~2.1.0"
79 | }
80 | },
81 | "assert-plus": {
82 | "version": "1.0.0",
83 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
84 | "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
85 | },
86 | "asynckit": {
87 | "version": "0.4.0",
88 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
89 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
90 | },
91 | "aws-sign2": {
92 | "version": "0.7.0",
93 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
94 | "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
95 | },
96 | "aws4": {
97 | "version": "1.11.0",
98 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
99 | "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
100 | },
101 | "balanced-match": {
102 | "version": "1.0.2",
103 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
104 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
105 | "dev": true
106 | },
107 | "bcrypt-pbkdf": {
108 | "version": "1.0.2",
109 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
110 | "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
111 | "requires": {
112 | "tweetnacl": "^0.14.3"
113 | }
114 | },
115 | "brace-expansion": {
116 | "version": "1.1.11",
117 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
118 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
119 | "dev": true,
120 | "requires": {
121 | "balanced-match": "^1.0.0",
122 | "concat-map": "0.0.1"
123 | }
124 | },
125 | "buffer-from": {
126 | "version": "1.1.2",
127 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
128 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
129 | "dev": true
130 | },
131 | "caller-path": {
132 | "version": "0.1.0",
133 | "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
134 | "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==",
135 | "dev": true,
136 | "requires": {
137 | "callsites": "^0.2.0"
138 | }
139 | },
140 | "callsites": {
141 | "version": "0.2.0",
142 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
143 | "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==",
144 | "dev": true
145 | },
146 | "caseless": {
147 | "version": "0.12.0",
148 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
149 | "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
150 | },
151 | "chalk": {
152 | "version": "1.1.3",
153 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
154 | "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
155 | "dev": true,
156 | "requires": {
157 | "ansi-styles": "^2.2.1",
158 | "escape-string-regexp": "^1.0.2",
159 | "has-ansi": "^2.0.0",
160 | "strip-ansi": "^3.0.0",
161 | "supports-color": "^2.0.0"
162 | }
163 | },
164 | "circular-json": {
165 | "version": "0.3.3",
166 | "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
167 | "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
168 | "dev": true
169 | },
170 | "cli-cursor": {
171 | "version": "1.0.2",
172 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
173 | "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==",
174 | "dev": true,
175 | "requires": {
176 | "restore-cursor": "^1.0.1"
177 | }
178 | },
179 | "cli-width": {
180 | "version": "2.2.1",
181 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
182 | "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
183 | "dev": true
184 | },
185 | "clone": {
186 | "version": "1.0.4",
187 | "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
188 | "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
189 | "dev": true
190 | },
191 | "co": {
192 | "version": "4.6.0",
193 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
194 | "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
195 | "dev": true
196 | },
197 | "code-point-at": {
198 | "version": "1.1.0",
199 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
200 | "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA=="
201 | },
202 | "combined-stream": {
203 | "version": "1.0.8",
204 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
205 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
206 | "requires": {
207 | "delayed-stream": "~1.0.0"
208 | }
209 | },
210 | "concat-map": {
211 | "version": "0.0.1",
212 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
213 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
214 | "dev": true
215 | },
216 | "concat-stream": {
217 | "version": "1.6.2",
218 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
219 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
220 | "dev": true,
221 | "requires": {
222 | "buffer-from": "^1.0.0",
223 | "inherits": "^2.0.3",
224 | "readable-stream": "^2.2.2",
225 | "typedarray": "^0.0.6"
226 | },
227 | "dependencies": {
228 | "isarray": {
229 | "version": "1.0.0",
230 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
231 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
232 | "dev": true
233 | },
234 | "readable-stream": {
235 | "version": "2.3.7",
236 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
237 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
238 | "dev": true,
239 | "requires": {
240 | "core-util-is": "~1.0.0",
241 | "inherits": "~2.0.3",
242 | "isarray": "~1.0.0",
243 | "process-nextick-args": "~2.0.0",
244 | "safe-buffer": "~5.1.1",
245 | "string_decoder": "~1.1.1",
246 | "util-deprecate": "~1.0.1"
247 | }
248 | },
249 | "safe-buffer": {
250 | "version": "5.1.2",
251 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
252 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
253 | "dev": true
254 | },
255 | "string_decoder": {
256 | "version": "1.1.1",
257 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
258 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
259 | "dev": true,
260 | "requires": {
261 | "safe-buffer": "~5.1.0"
262 | }
263 | }
264 | }
265 | },
266 | "core-util-is": {
267 | "version": "1.0.3",
268 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
269 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
270 | },
271 | "d": {
272 | "version": "1.0.1",
273 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
274 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
275 | "dev": true,
276 | "requires": {
277 | "es5-ext": "^0.10.50",
278 | "type": "^1.0.1"
279 | }
280 | },
281 | "dashdash": {
282 | "version": "1.14.1",
283 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
284 | "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
285 | "requires": {
286 | "assert-plus": "^1.0.0"
287 | }
288 | },
289 | "debug": {
290 | "version": "2.6.9",
291 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
292 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
293 | "requires": {
294 | "ms": "2.0.0"
295 | }
296 | },
297 | "debug-log": {
298 | "version": "1.0.1",
299 | "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
300 | "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==",
301 | "dev": true
302 | },
303 | "deep-equal": {
304 | "version": "0.2.2",
305 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-0.2.2.tgz",
306 | "integrity": "sha512-FXgye2Jr6oEk01S7gmSrHrPEQ1ontR7wwl+nYiZ8h4SXlHVm0DYda74BIPcHz2s2qPz4+375IcAz1vsWLwddgQ==",
307 | "dev": true
308 | },
309 | "deep-is": {
310 | "version": "0.1.4",
311 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
312 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
313 | "dev": true
314 | },
315 | "defaults": {
316 | "version": "1.0.3",
317 | "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
318 | "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==",
319 | "dev": true,
320 | "requires": {
321 | "clone": "^1.0.2"
322 | }
323 | },
324 | "defined": {
325 | "version": "0.0.0",
326 | "resolved": "https://registry.npmjs.org/defined/-/defined-0.0.0.tgz",
327 | "integrity": "sha512-zpqiCT8bODLu3QSmLLic8xJnYWBFjOSu/fBCm189oAiTtPq/PSanNACKZDS7kgSyCJY7P+IcODzlIogBK/9RBg==",
328 | "dev": true
329 | },
330 | "deglob": {
331 | "version": "1.1.2",
332 | "resolved": "https://registry.npmjs.org/deglob/-/deglob-1.1.2.tgz",
333 | "integrity": "sha512-CACtLHJwEHEgrs2aShBEV4B318fGmUlYMzZgxut1h/R6k2vyusxwVAJJU+1IiPFgNuOPOfH1rBHrtJ2hwEElLw==",
334 | "dev": true,
335 | "requires": {
336 | "find-root": "^1.0.0",
337 | "glob": "^7.0.5",
338 | "ignore": "^3.0.9",
339 | "pkg-config": "^1.1.0",
340 | "run-parallel": "^1.1.2",
341 | "uniq": "^1.0.1",
342 | "xtend": "^4.0.0"
343 | },
344 | "dependencies": {
345 | "glob": {
346 | "version": "7.2.3",
347 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
348 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
349 | "dev": true,
350 | "requires": {
351 | "fs.realpath": "^1.0.0",
352 | "inflight": "^1.0.4",
353 | "inherits": "2",
354 | "minimatch": "^3.1.1",
355 | "once": "^1.3.0",
356 | "path-is-absolute": "^1.0.0"
357 | }
358 | },
359 | "ignore": {
360 | "version": "3.3.10",
361 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
362 | "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
363 | "dev": true
364 | },
365 | "xtend": {
366 | "version": "4.0.2",
367 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
368 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
369 | "dev": true
370 | }
371 | }
372 | },
373 | "delayed-stream": {
374 | "version": "1.0.0",
375 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
376 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
377 | },
378 | "doctrine": {
379 | "version": "1.5.0",
380 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
381 | "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==",
382 | "dev": true,
383 | "requires": {
384 | "esutils": "^2.0.2",
385 | "isarray": "^1.0.0"
386 | },
387 | "dependencies": {
388 | "isarray": {
389 | "version": "1.0.0",
390 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
391 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
392 | "dev": true
393 | }
394 | }
395 | },
396 | "ecc-jsbn": {
397 | "version": "0.1.2",
398 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
399 | "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
400 | "requires": {
401 | "jsbn": "~0.1.0",
402 | "safer-buffer": "^2.1.0"
403 | }
404 | },
405 | "es5-ext": {
406 | "version": "0.10.62",
407 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
408 | "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
409 | "dev": true,
410 | "requires": {
411 | "es6-iterator": "^2.0.3",
412 | "es6-symbol": "^3.1.3",
413 | "next-tick": "^1.1.0"
414 | }
415 | },
416 | "es6-iterator": {
417 | "version": "2.0.3",
418 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
419 | "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
420 | "dev": true,
421 | "requires": {
422 | "d": "1",
423 | "es5-ext": "^0.10.35",
424 | "es6-symbol": "^3.1.1"
425 | }
426 | },
427 | "es6-map": {
428 | "version": "0.1.5",
429 | "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
430 | "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
431 | "dev": true,
432 | "requires": {
433 | "d": "1",
434 | "es5-ext": "~0.10.14",
435 | "es6-iterator": "~2.0.1",
436 | "es6-set": "~0.1.5",
437 | "es6-symbol": "~3.1.1",
438 | "event-emitter": "~0.3.5"
439 | }
440 | },
441 | "es6-set": {
442 | "version": "0.1.6",
443 | "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz",
444 | "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
445 | "dev": true,
446 | "requires": {
447 | "d": "^1.0.1",
448 | "es5-ext": "^0.10.62",
449 | "es6-iterator": "~2.0.3",
450 | "es6-symbol": "^3.1.3",
451 | "event-emitter": "^0.3.5",
452 | "type": "^2.7.2"
453 | },
454 | "dependencies": {
455 | "type": {
456 | "version": "2.7.2",
457 | "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
458 | "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
459 | "dev": true
460 | }
461 | }
462 | },
463 | "es6-symbol": {
464 | "version": "3.1.3",
465 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
466 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
467 | "dev": true,
468 | "requires": {
469 | "d": "^1.0.1",
470 | "ext": "^1.1.2"
471 | }
472 | },
473 | "es6-weak-map": {
474 | "version": "2.0.3",
475 | "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
476 | "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
477 | "dev": true,
478 | "requires": {
479 | "d": "1",
480 | "es5-ext": "^0.10.46",
481 | "es6-iterator": "^2.0.3",
482 | "es6-symbol": "^3.1.1"
483 | }
484 | },
485 | "escape-string-regexp": {
486 | "version": "1.0.5",
487 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
488 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
489 | "dev": true
490 | },
491 | "escope": {
492 | "version": "3.6.0",
493 | "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
494 | "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==",
495 | "dev": true,
496 | "requires": {
497 | "es6-map": "^0.1.3",
498 | "es6-weak-map": "^2.0.1",
499 | "esrecurse": "^4.1.0",
500 | "estraverse": "^4.1.1"
501 | }
502 | },
503 | "eslint": {
504 | "version": "2.2.0",
505 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.2.0.tgz",
506 | "integrity": "sha512-Ay1ThESRUQUlI3JnWrVjAecu+v2sm9ldq95IPe4LyrC8fG3SSZs5f2l4xRfB3kW9UOACeBsx0Na8uJ1ckgeBrg==",
507 | "dev": true,
508 | "requires": {
509 | "chalk": "^1.0.0",
510 | "concat-stream": "^1.4.6",
511 | "debug": "^2.1.1",
512 | "doctrine": "^1.1.0",
513 | "es6-map": "^0.1.3",
514 | "escope": "^3.4.0",
515 | "espree": "^3.0.0",
516 | "estraverse": "^4.1.1",
517 | "estraverse-fb": "^1.3.1",
518 | "esutils": "^2.0.2",
519 | "file-entry-cache": "^1.1.1",
520 | "glob": "^6.0.4",
521 | "globals": "^8.18.0",
522 | "ignore": "^2.2.19",
523 | "inquirer": "^0.12.0",
524 | "is-my-json-valid": "^2.10.0",
525 | "is-resolvable": "^1.0.0",
526 | "js-yaml": "^3.5.1",
527 | "json-stable-stringify": "^1.0.0",
528 | "lodash": "^4.0.0",
529 | "mkdirp": "^0.5.0",
530 | "optionator": "^0.8.1",
531 | "path-is-absolute": "^1.0.0",
532 | "path-is-inside": "^1.0.1",
533 | "pluralize": "^1.2.1",
534 | "progress": "^1.1.8",
535 | "require-uncached": "^1.0.2",
536 | "resolve": "^1.1.6",
537 | "shelljs": "^0.5.3",
538 | "strip-json-comments": "~1.0.1",
539 | "table": "^3.7.8",
540 | "text-table": "~0.2.0",
541 | "user-home": "^2.0.0"
542 | }
543 | },
544 | "eslint-config-standard": {
545 | "version": "5.1.0",
546 | "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-5.1.0.tgz",
547 | "integrity": "sha512-mDjsN6Hk4W3rJe2w9G6W2H3RIrUcKUeXtDWL6orlNcik8Q2w4oZvBOhHtDZGuB7uXTL5DKLOBnPVO9NVopLb2Q==",
548 | "dev": true
549 | },
550 | "eslint-config-standard-jsx": {
551 | "version": "1.1.1",
552 | "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-1.1.1.tgz",
553 | "integrity": "sha512-AWUuX0M2BbnSQHNGTObfdfW7LtB+imuoqXdVrK74u+eMK3Astu8PFoHd8+kTUMqWR5WosrxxRtOY+IgBUs8ZYw==",
554 | "dev": true
555 | },
556 | "eslint-plugin-promise": {
557 | "version": "1.3.2",
558 | "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-1.3.2.tgz",
559 | "integrity": "sha512-0u7miAO2rYoIt3xhSoajdZSQdCvkyAu0JFXY5la1PW/xcgSyaBxQz91Rnm4zN084YSwYB6dc+HId2ByMS7jImw==",
560 | "dev": true
561 | },
562 | "eslint-plugin-react": {
563 | "version": "4.3.0",
564 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-4.3.0.tgz",
565 | "integrity": "sha512-ajQ9S74FUln2GcwgpPUQqRLcT6UFDhvAMIiDX4F68tDnuihNXcAA7LI19MmRGGOuJnpMVDXugJg+wf9K+bf6kg==",
566 | "dev": true
567 | },
568 | "eslint-plugin-standard": {
569 | "version": "1.3.3",
570 | "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-1.3.3.tgz",
571 | "integrity": "sha512-LjMgISU4D6qdCmyGDzowQm5bINHpzkGiem1zhcm+Qa/FyZHsccZDU13cGYiEvF6iYl0ZazXAvPSPxbpD6/aEOg==",
572 | "dev": true
573 | },
574 | "espree": {
575 | "version": "3.5.4",
576 | "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
577 | "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
578 | "dev": true,
579 | "requires": {
580 | "acorn": "^5.5.0",
581 | "acorn-jsx": "^3.0.0"
582 | }
583 | },
584 | "esprima": {
585 | "version": "4.0.1",
586 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
587 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
588 | "dev": true
589 | },
590 | "esrecurse": {
591 | "version": "4.3.0",
592 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
593 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
594 | "dev": true,
595 | "requires": {
596 | "estraverse": "^5.2.0"
597 | },
598 | "dependencies": {
599 | "estraverse": {
600 | "version": "5.3.0",
601 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
602 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
603 | "dev": true
604 | }
605 | }
606 | },
607 | "estraverse": {
608 | "version": "4.3.0",
609 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
610 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
611 | "dev": true
612 | },
613 | "estraverse-fb": {
614 | "version": "1.3.2",
615 | "resolved": "https://registry.npmjs.org/estraverse-fb/-/estraverse-fb-1.3.2.tgz",
616 | "integrity": "sha512-wp3lfRrWy5EQD9TqesuYM1SKVP4ERT0cUatb4e8Vznf4K5IOpREhuyXZxGj3a9s9mvX5vGZKNHA4R9D4kp9Q9A==",
617 | "dev": true
618 | },
619 | "esutils": {
620 | "version": "2.0.3",
621 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
622 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
623 | "dev": true
624 | },
625 | "event-emitter": {
626 | "version": "0.3.5",
627 | "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
628 | "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
629 | "dev": true,
630 | "requires": {
631 | "d": "1",
632 | "es5-ext": "~0.10.14"
633 | }
634 | },
635 | "execspawn": {
636 | "version": "1.0.1",
637 | "resolved": "https://registry.npmjs.org/execspawn/-/execspawn-1.0.1.tgz",
638 | "integrity": "sha512-s2k06Jy9i8CUkYe0+DxRlvtkZoOkwwfhB+Xxo5HGUtrISVW2m98jO2tr67DGRFxZwkjQqloA3v/tNtjhBRBieg==",
639 | "dev": true,
640 | "requires": {
641 | "util-extend": "^1.0.1"
642 | }
643 | },
644 | "exit-hook": {
645 | "version": "1.1.1",
646 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
647 | "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==",
648 | "dev": true
649 | },
650 | "ext": {
651 | "version": "1.6.0",
652 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz",
653 | "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==",
654 | "dev": true,
655 | "requires": {
656 | "type": "^2.5.0"
657 | },
658 | "dependencies": {
659 | "type": {
660 | "version": "2.7.2",
661 | "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
662 | "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
663 | "dev": true
664 | }
665 | }
666 | },
667 | "extend": {
668 | "version": "3.0.2",
669 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
670 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
671 | },
672 | "extsprintf": {
673 | "version": "1.3.0",
674 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
675 | "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
676 | },
677 | "fast-deep-equal": {
678 | "version": "3.1.3",
679 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
680 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
681 | },
682 | "fast-json-stable-stringify": {
683 | "version": "2.1.0",
684 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
685 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
686 | },
687 | "fast-levenshtein": {
688 | "version": "2.0.6",
689 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
690 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
691 | "dev": true
692 | },
693 | "figures": {
694 | "version": "1.7.0",
695 | "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
696 | "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
697 | "dev": true,
698 | "requires": {
699 | "escape-string-regexp": "^1.0.5",
700 | "object-assign": "^4.1.0"
701 | }
702 | },
703 | "file-entry-cache": {
704 | "version": "1.3.1",
705 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz",
706 | "integrity": "sha512-JyVk7P0Hvw6uEAwH4Y0j+rZMvaMWvLBYRmRGAF2S6jKTycf0mMDcC7d21Y2KyrKJk3XI8YghSsk5KmRdbvg0VQ==",
707 | "dev": true,
708 | "requires": {
709 | "flat-cache": "^1.2.1",
710 | "object-assign": "^4.0.1"
711 | }
712 | },
713 | "find-root": {
714 | "version": "1.1.0",
715 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
716 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
717 | "dev": true
718 | },
719 | "flat-cache": {
720 | "version": "1.3.4",
721 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
722 | "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==",
723 | "dev": true,
724 | "requires": {
725 | "circular-json": "^0.3.1",
726 | "graceful-fs": "^4.1.2",
727 | "rimraf": "~2.6.2",
728 | "write": "^0.2.1"
729 | }
730 | },
731 | "forever-agent": {
732 | "version": "0.6.1",
733 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
734 | "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
735 | },
736 | "form-data": {
737 | "version": "2.3.3",
738 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
739 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
740 | "requires": {
741 | "asynckit": "^0.4.0",
742 | "combined-stream": "^1.0.6",
743 | "mime-types": "^2.1.12"
744 | }
745 | },
746 | "fs.realpath": {
747 | "version": "1.0.0",
748 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
749 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
750 | "dev": true
751 | },
752 | "function-bind": {
753 | "version": "1.1.1",
754 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
755 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
756 | "dev": true
757 | },
758 | "generate-function": {
759 | "version": "2.3.1",
760 | "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
761 | "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
762 | "dev": true,
763 | "requires": {
764 | "is-property": "^1.0.2"
765 | }
766 | },
767 | "generate-object-property": {
768 | "version": "1.2.0",
769 | "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
770 | "integrity": "sha512-TuOwZWgJ2VAMEGJvAyPWvpqxSANF0LDpmyHauMjFYzaACvn+QTT/AZomvPCzVBV7yDN3OmwHQ5OvHaeLKre3JQ==",
771 | "dev": true,
772 | "requires": {
773 | "is-property": "^1.0.0"
774 | }
775 | },
776 | "get-stdin": {
777 | "version": "5.0.1",
778 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
779 | "integrity": "sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==",
780 | "dev": true
781 | },
782 | "getpass": {
783 | "version": "0.1.7",
784 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
785 | "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
786 | "requires": {
787 | "assert-plus": "^1.0.0"
788 | }
789 | },
790 | "glob": {
791 | "version": "6.0.4",
792 | "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
793 | "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==",
794 | "dev": true,
795 | "requires": {
796 | "inflight": "^1.0.4",
797 | "inherits": "2",
798 | "minimatch": "2 || 3",
799 | "once": "^1.3.0",
800 | "path-is-absolute": "^1.0.0"
801 | }
802 | },
803 | "globals": {
804 | "version": "8.18.0",
805 | "resolved": "https://registry.npmjs.org/globals/-/globals-8.18.0.tgz",
806 | "integrity": "sha512-IHCTKEGo42ICEkTZBADyl4HX06hVdFF4qdJdqOgaBe5X8RE1/MrvubetsEtGTcwjs46djFq0Gc3+5RgTsc3UoQ==",
807 | "dev": true
808 | },
809 | "graceful-fs": {
810 | "version": "4.2.10",
811 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
812 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
813 | "dev": true
814 | },
815 | "har-schema": {
816 | "version": "2.0.0",
817 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
818 | "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q=="
819 | },
820 | "har-validator": {
821 | "version": "5.1.5",
822 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
823 | "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
824 | "requires": {
825 | "ajv": "^6.12.3",
826 | "har-schema": "^2.0.0"
827 | }
828 | },
829 | "has": {
830 | "version": "1.0.3",
831 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
832 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
833 | "dev": true,
834 | "requires": {
835 | "function-bind": "^1.1.1"
836 | }
837 | },
838 | "has-ansi": {
839 | "version": "2.0.0",
840 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
841 | "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
842 | "dev": true,
843 | "requires": {
844 | "ansi-regex": "^2.0.0"
845 | }
846 | },
847 | "http-signature": {
848 | "version": "1.2.0",
849 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
850 | "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
851 | "requires": {
852 | "assert-plus": "^1.0.0",
853 | "jsprim": "^1.2.2",
854 | "sshpk": "^1.7.0"
855 | }
856 | },
857 | "ignore": {
858 | "version": "2.2.19",
859 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-2.2.19.tgz",
860 | "integrity": "sha512-Mq1FKJDxSky/AR+Goatl1RmCzWbAHE4fNvgkmJu9Ln8T8A8JbKAd/BHHZQaqknHSFCBe0zQJg7akDpI57pKTlQ==",
861 | "dev": true
862 | },
863 | "inflight": {
864 | "version": "1.0.6",
865 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
866 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
867 | "dev": true,
868 | "requires": {
869 | "once": "^1.3.0",
870 | "wrappy": "1"
871 | }
872 | },
873 | "inherits": {
874 | "version": "2.0.4",
875 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
876 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
877 | },
878 | "inquirer": {
879 | "version": "0.12.0",
880 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
881 | "integrity": "sha512-bOetEz5+/WpgaW4D1NYOk1aD+JCqRjqu/FwRFgnIfiP7FC/zinsrfyO1vlS3nyH/R7S0IH3BIHBu4DBIDSqiGQ==",
882 | "dev": true,
883 | "requires": {
884 | "ansi-escapes": "^1.1.0",
885 | "ansi-regex": "^2.0.0",
886 | "chalk": "^1.0.0",
887 | "cli-cursor": "^1.0.1",
888 | "cli-width": "^2.0.0",
889 | "figures": "^1.3.5",
890 | "lodash": "^4.3.0",
891 | "readline2": "^1.0.1",
892 | "run-async": "^0.1.0",
893 | "rx-lite": "^3.1.2",
894 | "string-width": "^1.0.1",
895 | "strip-ansi": "^3.0.0",
896 | "through": "^2.3.6"
897 | }
898 | },
899 | "is-core-module": {
900 | "version": "2.10.0",
901 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
902 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
903 | "dev": true,
904 | "requires": {
905 | "has": "^1.0.3"
906 | }
907 | },
908 | "is-fullwidth-code-point": {
909 | "version": "1.0.0",
910 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
911 | "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
912 | "requires": {
913 | "number-is-nan": "^1.0.0"
914 | }
915 | },
916 | "is-my-ip-valid": {
917 | "version": "1.0.1",
918 | "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.1.tgz",
919 | "integrity": "sha512-jxc8cBcOWbNK2i2aTkCZP6i7wkHF1bqKFrwEHuN5Jtg5BSaZHUZQ/JTOJwoV41YvHnOaRyWWh72T/KvfNz9DJg==",
920 | "dev": true
921 | },
922 | "is-my-json-valid": {
923 | "version": "2.20.6",
924 | "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.6.tgz",
925 | "integrity": "sha512-1JQwulVNjx8UqkPE/bqDaxtH4PXCe/2VRh/y3p99heOV87HG4Id5/VfDswd+YiAfHcRTfDlWgISycnHuhZq1aw==",
926 | "dev": true,
927 | "requires": {
928 | "generate-function": "^2.0.0",
929 | "generate-object-property": "^1.1.0",
930 | "is-my-ip-valid": "^1.0.0",
931 | "jsonpointer": "^5.0.0",
932 | "xtend": "^4.0.0"
933 | },
934 | "dependencies": {
935 | "xtend": {
936 | "version": "4.0.2",
937 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
938 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
939 | "dev": true
940 | }
941 | }
942 | },
943 | "is-property": {
944 | "version": "1.0.2",
945 | "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
946 | "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
947 | "dev": true
948 | },
949 | "is-resolvable": {
950 | "version": "1.1.0",
951 | "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
952 | "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
953 | "dev": true
954 | },
955 | "is-typedarray": {
956 | "version": "1.0.0",
957 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
958 | "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
959 | },
960 | "isarray": {
961 | "version": "0.0.1",
962 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
963 | "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
964 | },
965 | "isstream": {
966 | "version": "0.1.2",
967 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
968 | "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
969 | },
970 | "js-yaml": {
971 | "version": "3.14.1",
972 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
973 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
974 | "dev": true,
975 | "requires": {
976 | "argparse": "^1.0.7",
977 | "esprima": "^4.0.0"
978 | }
979 | },
980 | "jsbn": {
981 | "version": "0.1.1",
982 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
983 | "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
984 | },
985 | "json-schema": {
986 | "version": "0.4.0",
987 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
988 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
989 | },
990 | "json-schema-traverse": {
991 | "version": "0.4.1",
992 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
993 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
994 | },
995 | "json-stable-stringify": {
996 | "version": "1.0.1",
997 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
998 | "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==",
999 | "dev": true,
1000 | "requires": {
1001 | "jsonify": "~0.0.0"
1002 | }
1003 | },
1004 | "json-stringify-safe": {
1005 | "version": "5.0.1",
1006 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1007 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
1008 | },
1009 | "jsonify": {
1010 | "version": "0.0.0",
1011 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
1012 | "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==",
1013 | "dev": true
1014 | },
1015 | "jsonpointer": {
1016 | "version": "5.0.1",
1017 | "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
1018 | "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
1019 | "dev": true
1020 | },
1021 | "jsprim": {
1022 | "version": "1.4.2",
1023 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
1024 | "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
1025 | "requires": {
1026 | "assert-plus": "1.0.0",
1027 | "extsprintf": "1.3.0",
1028 | "json-schema": "0.4.0",
1029 | "verror": "1.10.0"
1030 | }
1031 | },
1032 | "levn": {
1033 | "version": "0.3.0",
1034 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
1035 | "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
1036 | "dev": true,
1037 | "requires": {
1038 | "prelude-ls": "~1.1.2",
1039 | "type-check": "~0.3.2"
1040 | }
1041 | },
1042 | "lodash": {
1043 | "version": "4.17.21",
1044 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
1045 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
1046 | "dev": true
1047 | },
1048 | "lru-cache": {
1049 | "version": "2.7.3",
1050 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
1051 | "integrity": "sha512-WpibWJ60c3AgAz8a2iYErDrcT2C7OmKnsWhIcHOjkUHFjkXncJhtLxNSqUmxRxRunpb5I8Vprd7aNSd2NtksJQ==",
1052 | "dev": true
1053 | },
1054 | "mime-db": {
1055 | "version": "1.52.0",
1056 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1057 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
1058 | },
1059 | "mime-types": {
1060 | "version": "2.1.35",
1061 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1062 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1063 | "requires": {
1064 | "mime-db": "1.52.0"
1065 | }
1066 | },
1067 | "minimatch": {
1068 | "version": "3.1.2",
1069 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1070 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1071 | "dev": true,
1072 | "requires": {
1073 | "brace-expansion": "^1.1.7"
1074 | }
1075 | },
1076 | "minimist": {
1077 | "version": "1.2.6",
1078 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
1079 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
1080 | },
1081 | "mkdirp": {
1082 | "version": "0.5.6",
1083 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
1084 | "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
1085 | "dev": true,
1086 | "requires": {
1087 | "minimist": "^1.2.6"
1088 | }
1089 | },
1090 | "ms": {
1091 | "version": "2.0.0",
1092 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1093 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1094 | },
1095 | "multiline": {
1096 | "version": "1.0.2",
1097 | "resolved": "https://registry.npmjs.org/multiline/-/multiline-1.0.2.tgz",
1098 | "integrity": "sha512-DGpmDIZKKQ+EVx0sh0757V6qlb+ouuByoC5CWH7J0bOd6KRM6ka6l9LGHWfe17OKxm+4AsLs1tgiK4vZIx66RQ==",
1099 | "dev": true,
1100 | "requires": {
1101 | "strip-indent": "^1.0.0"
1102 | }
1103 | },
1104 | "mute-stream": {
1105 | "version": "0.0.5",
1106 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
1107 | "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==",
1108 | "dev": true
1109 | },
1110 | "next-tick": {
1111 | "version": "1.1.0",
1112 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
1113 | "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
1114 | "dev": true
1115 | },
1116 | "npm-execspawn": {
1117 | "version": "1.3.0",
1118 | "resolved": "https://registry.npmjs.org/npm-execspawn/-/npm-execspawn-1.3.0.tgz",
1119 | "integrity": "sha512-hnezAOsF4PMRlcwq6g5N/P25Vwa3XpVOQ5ZFc+5C9FTDQhLWXwzvwLYKH81ET0lGs3612nvQ0Kzt7LuHXPswUw==",
1120 | "dev": true,
1121 | "requires": {
1122 | "debug": "^2.1.3",
1123 | "execspawn": "^1.0.0",
1124 | "shell-quote": "^1.5.0",
1125 | "xtend": "^3.0.0"
1126 | },
1127 | "dependencies": {
1128 | "xtend": {
1129 | "version": "3.0.0",
1130 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz",
1131 | "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==",
1132 | "dev": true
1133 | }
1134 | }
1135 | },
1136 | "number-is-nan": {
1137 | "version": "1.0.1",
1138 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
1139 | "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ=="
1140 | },
1141 | "oauth-sign": {
1142 | "version": "0.9.0",
1143 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
1144 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
1145 | },
1146 | "object-assign": {
1147 | "version": "4.1.1",
1148 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1149 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1150 | "dev": true
1151 | },
1152 | "object-inspect": {
1153 | "version": "0.4.0",
1154 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-0.4.0.tgz",
1155 | "integrity": "sha512-8WvkvUZiKAjjsy/63rJjA7jw9uyF0CLVLjBKEfnPHE3Jxvs1LgwqL2OmJN+LliIX1vrzKW+AAu02Cc+xv27ncQ==",
1156 | "dev": true
1157 | },
1158 | "object-keys": {
1159 | "version": "0.4.0",
1160 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
1161 | "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw=="
1162 | },
1163 | "once": {
1164 | "version": "1.4.0",
1165 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1166 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
1167 | "dev": true,
1168 | "requires": {
1169 | "wrappy": "1"
1170 | }
1171 | },
1172 | "onetime": {
1173 | "version": "1.1.0",
1174 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
1175 | "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==",
1176 | "dev": true
1177 | },
1178 | "optionator": {
1179 | "version": "0.8.3",
1180 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
1181 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
1182 | "dev": true,
1183 | "requires": {
1184 | "deep-is": "~0.1.3",
1185 | "fast-levenshtein": "~2.0.6",
1186 | "levn": "~0.3.0",
1187 | "prelude-ls": "~1.1.2",
1188 | "type-check": "~0.3.2",
1189 | "word-wrap": "~1.2.3"
1190 | }
1191 | },
1192 | "os-homedir": {
1193 | "version": "1.0.2",
1194 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
1195 | "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
1196 | "dev": true
1197 | },
1198 | "path-is-absolute": {
1199 | "version": "1.0.1",
1200 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1201 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
1202 | "dev": true
1203 | },
1204 | "path-is-inside": {
1205 | "version": "1.0.2",
1206 | "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
1207 | "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
1208 | "dev": true
1209 | },
1210 | "path-parse": {
1211 | "version": "1.0.7",
1212 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1213 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1214 | "dev": true
1215 | },
1216 | "performance-now": {
1217 | "version": "2.1.0",
1218 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
1219 | "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
1220 | },
1221 | "pkg-config": {
1222 | "version": "1.1.1",
1223 | "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
1224 | "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==",
1225 | "dev": true,
1226 | "requires": {
1227 | "debug-log": "^1.0.0",
1228 | "find-root": "^1.0.0",
1229 | "xtend": "^4.0.1"
1230 | },
1231 | "dependencies": {
1232 | "xtend": {
1233 | "version": "4.0.2",
1234 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1235 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1236 | "dev": true
1237 | }
1238 | }
1239 | },
1240 | "pluralize": {
1241 | "version": "1.2.1",
1242 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
1243 | "integrity": "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ==",
1244 | "dev": true
1245 | },
1246 | "prelude-ls": {
1247 | "version": "1.1.2",
1248 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
1249 | "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
1250 | "dev": true
1251 | },
1252 | "pretty-bytes": {
1253 | "version": "4.0.2",
1254 | "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-4.0.2.tgz",
1255 | "integrity": "sha512-yJAF+AjbHKlxQ8eezMd/34Mnj/YTQ3i6kLzvVsH4l/BfIFtp444n0wVbnsn66JimZ9uBofv815aRp1zCppxlWw=="
1256 | },
1257 | "process-nextick-args": {
1258 | "version": "2.0.1",
1259 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
1260 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
1261 | "dev": true
1262 | },
1263 | "progress": {
1264 | "version": "1.1.8",
1265 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
1266 | "integrity": "sha512-UdA8mJ4weIkUBO224tIarHzuHs4HuYiJvsuGT7j/SPQiUJVjYvNDBIPa0hAorduOfjGohB/qHWRa/lrrWX/mXw==",
1267 | "dev": true
1268 | },
1269 | "progress-stream": {
1270 | "version": "1.2.0",
1271 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
1272 | "integrity": "sha512-MIBPjZz6oGNSw5rn2mSp+nP9FGoaVo6QsPyPVEaD4puilz5hZNa3kfnrlqRNYFsugslbU3An4mnkLLtZOaWvrA==",
1273 | "requires": {
1274 | "speedometer": "~0.1.2",
1275 | "through2": "~0.2.3"
1276 | }
1277 | },
1278 | "psl": {
1279 | "version": "1.9.0",
1280 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
1281 | "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
1282 | },
1283 | "punycode": {
1284 | "version": "2.1.1",
1285 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1286 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
1287 | },
1288 | "qs": {
1289 | "version": "6.5.3",
1290 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
1291 | "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
1292 | },
1293 | "queue-microtask": {
1294 | "version": "1.2.3",
1295 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1296 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1297 | "dev": true
1298 | },
1299 | "readable-stream": {
1300 | "version": "1.1.14",
1301 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
1302 | "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
1303 | "requires": {
1304 | "core-util-is": "~1.0.0",
1305 | "inherits": "~2.0.1",
1306 | "isarray": "0.0.1",
1307 | "string_decoder": "~0.10.x"
1308 | }
1309 | },
1310 | "readline2": {
1311 | "version": "1.0.1",
1312 | "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
1313 | "integrity": "sha512-8/td4MmwUB6PkZUbV25uKz7dfrmjYWxsW8DVfibWdlHRk/l/DfHKn4pU+dfcoGLFgWOdyGCzINRQD7jn+Bv+/g==",
1314 | "dev": true,
1315 | "requires": {
1316 | "code-point-at": "^1.0.0",
1317 | "is-fullwidth-code-point": "^1.0.0",
1318 | "mute-stream": "0.0.5"
1319 | }
1320 | },
1321 | "request": {
1322 | "version": "2.88.2",
1323 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
1324 | "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
1325 | "requires": {
1326 | "aws-sign2": "~0.7.0",
1327 | "aws4": "^1.8.0",
1328 | "caseless": "~0.12.0",
1329 | "combined-stream": "~1.0.6",
1330 | "extend": "~3.0.2",
1331 | "forever-agent": "~0.6.1",
1332 | "form-data": "~2.3.2",
1333 | "har-validator": "~5.1.3",
1334 | "http-signature": "~1.2.0",
1335 | "is-typedarray": "~1.0.0",
1336 | "isstream": "~0.1.2",
1337 | "json-stringify-safe": "~5.0.1",
1338 | "mime-types": "~2.1.19",
1339 | "oauth-sign": "~0.9.0",
1340 | "performance-now": "^2.1.0",
1341 | "qs": "~6.5.2",
1342 | "safe-buffer": "^5.1.2",
1343 | "tough-cookie": "~2.5.0",
1344 | "tunnel-agent": "^0.6.0",
1345 | "uuid": "^3.3.2"
1346 | }
1347 | },
1348 | "require-uncached": {
1349 | "version": "1.0.3",
1350 | "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
1351 | "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==",
1352 | "dev": true,
1353 | "requires": {
1354 | "caller-path": "^0.1.0",
1355 | "resolve-from": "^1.0.0"
1356 | }
1357 | },
1358 | "resolve": {
1359 | "version": "1.22.1",
1360 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1361 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1362 | "dev": true,
1363 | "requires": {
1364 | "is-core-module": "^2.9.0",
1365 | "path-parse": "^1.0.7",
1366 | "supports-preserve-symlinks-flag": "^1.0.0"
1367 | }
1368 | },
1369 | "resolve-from": {
1370 | "version": "1.0.1",
1371 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
1372 | "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==",
1373 | "dev": true
1374 | },
1375 | "restore-cursor": {
1376 | "version": "1.0.1",
1377 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
1378 | "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==",
1379 | "dev": true,
1380 | "requires": {
1381 | "exit-hook": "^1.0.0",
1382 | "onetime": "^1.0.0"
1383 | }
1384 | },
1385 | "resumer": {
1386 | "version": "0.0.0",
1387 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
1388 | "integrity": "sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==",
1389 | "dev": true,
1390 | "requires": {
1391 | "through": "~2.3.4"
1392 | }
1393 | },
1394 | "rimraf": {
1395 | "version": "2.6.3",
1396 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
1397 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
1398 | "dev": true,
1399 | "requires": {
1400 | "glob": "^7.1.3"
1401 | },
1402 | "dependencies": {
1403 | "glob": {
1404 | "version": "7.2.3",
1405 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
1406 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
1407 | "dev": true,
1408 | "requires": {
1409 | "fs.realpath": "^1.0.0",
1410 | "inflight": "^1.0.4",
1411 | "inherits": "2",
1412 | "minimatch": "^3.1.1",
1413 | "once": "^1.3.0",
1414 | "path-is-absolute": "^1.0.0"
1415 | }
1416 | }
1417 | }
1418 | },
1419 | "run-async": {
1420 | "version": "0.1.0",
1421 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
1422 | "integrity": "sha512-qOX+w+IxFgpUpJfkv2oGN0+ExPs68F4sZHfaRRx4dDexAQkG83atugKVEylyT5ARees3HBbfmuvnjbrd8j9Wjw==",
1423 | "dev": true,
1424 | "requires": {
1425 | "once": "^1.3.0"
1426 | }
1427 | },
1428 | "run-parallel": {
1429 | "version": "1.2.0",
1430 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1431 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1432 | "dev": true,
1433 | "requires": {
1434 | "queue-microtask": "^1.2.2"
1435 | }
1436 | },
1437 | "rx-lite": {
1438 | "version": "3.1.2",
1439 | "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
1440 | "integrity": "sha512-1I1+G2gteLB8Tkt8YI1sJvSIfa0lWuRtC8GjvtyPBcLSF5jBCCJJqKrpER5JU5r6Bhe+i9/pK3VMuUcXu0kdwQ==",
1441 | "dev": true
1442 | },
1443 | "safe-buffer": {
1444 | "version": "5.2.1",
1445 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1446 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1447 | },
1448 | "safer-buffer": {
1449 | "version": "2.1.2",
1450 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1451 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1452 | },
1453 | "shell-quote": {
1454 | "version": "1.7.3",
1455 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
1456 | "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
1457 | "dev": true
1458 | },
1459 | "shelljs": {
1460 | "version": "0.5.3",
1461 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz",
1462 | "integrity": "sha512-C2FisSSW8S6TIYHHiMHN0NqzdjWfTekdMpA2FJTbRWnQMLO1RRIXEB9eVZYOlofYmjZA7fY3ChoFu09MeI3wlQ==",
1463 | "dev": true
1464 | },
1465 | "sigmund": {
1466 | "version": "1.0.1",
1467 | "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
1468 | "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==",
1469 | "dev": true
1470 | },
1471 | "single-line-log": {
1472 | "version": "1.1.2",
1473 | "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
1474 | "integrity": "sha512-awzaaIPtYFdexLr6TBpcZSGPB6D1RInNO/qNetgaJloPDF/D0GkVtLvGEp8InfmLV7CyLyQ5fIRP+tVN/JmWQA==",
1475 | "requires": {
1476 | "string-width": "^1.0.1"
1477 | }
1478 | },
1479 | "slice-ansi": {
1480 | "version": "0.0.4",
1481 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
1482 | "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==",
1483 | "dev": true
1484 | },
1485 | "speedometer": {
1486 | "version": "0.1.4",
1487 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
1488 | "integrity": "sha512-phdEoDlA6EUIVtzwq1UiNMXDUogczp204aYF/yfOhjNePWFfIpBJ1k5wLMuXQhEOOMjuTJEcc4vdZa+vuP+n/Q=="
1489 | },
1490 | "sprintf-js": {
1491 | "version": "1.0.3",
1492 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
1493 | "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
1494 | "dev": true
1495 | },
1496 | "sshpk": {
1497 | "version": "1.17.0",
1498 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
1499 | "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
1500 | "requires": {
1501 | "asn1": "~0.2.3",
1502 | "assert-plus": "^1.0.0",
1503 | "bcrypt-pbkdf": "^1.0.0",
1504 | "dashdash": "^1.12.0",
1505 | "ecc-jsbn": "~0.1.1",
1506 | "getpass": "^0.1.1",
1507 | "jsbn": "~0.1.0",
1508 | "safer-buffer": "^2.0.2",
1509 | "tweetnacl": "~0.14.0"
1510 | }
1511 | },
1512 | "standard": {
1513 | "version": "6.0.8",
1514 | "resolved": "https://registry.npmjs.org/standard/-/standard-6.0.8.tgz",
1515 | "integrity": "sha512-qvzyrbsMBqapl7BAAQUmxhUvZW+sN5Ok4Mj+ZEsqABrjOY88a1rE5IFybXnXUdvD7KN/8fjqRubHW5NgT4bJhw==",
1516 | "dev": true,
1517 | "requires": {
1518 | "eslint": "~2.2.0",
1519 | "eslint-config-standard": "5.1.0",
1520 | "eslint-config-standard-jsx": "1.1.1",
1521 | "eslint-plugin-promise": "^1.0.8",
1522 | "eslint-plugin-react": "^4.0.0",
1523 | "eslint-plugin-standard": "^1.3.1",
1524 | "standard-engine": "^3.3.0",
1525 | "xtend": "^4.0.1"
1526 | },
1527 | "dependencies": {
1528 | "xtend": {
1529 | "version": "4.0.2",
1530 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1531 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1532 | "dev": true
1533 | }
1534 | }
1535 | },
1536 | "standard-engine": {
1537 | "version": "3.3.1",
1538 | "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-3.3.1.tgz",
1539 | "integrity": "sha512-Y1k4p/k0e3BGk/xnyr3T2ybnYEm7b3Jdr2NtjW74RV6bzlxHTZPQAJdaQUKlmhKSdauWleUuTo4Xn9nTvS3A5g==",
1540 | "dev": true,
1541 | "requires": {
1542 | "defaults": "^1.0.2",
1543 | "deglob": "^1.0.0",
1544 | "find-root": "^1.0.0",
1545 | "get-stdin": "^5.0.1",
1546 | "minimist": "^1.1.0",
1547 | "multiline": "^1.0.2",
1548 | "pkg-config": "^1.0.1",
1549 | "xtend": "^4.0.0"
1550 | },
1551 | "dependencies": {
1552 | "xtend": {
1553 | "version": "4.0.2",
1554 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
1555 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
1556 | "dev": true
1557 | }
1558 | }
1559 | },
1560 | "string-width": {
1561 | "version": "1.0.2",
1562 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
1563 | "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
1564 | "requires": {
1565 | "code-point-at": "^1.0.0",
1566 | "is-fullwidth-code-point": "^1.0.0",
1567 | "strip-ansi": "^3.0.0"
1568 | }
1569 | },
1570 | "string_decoder": {
1571 | "version": "0.10.31",
1572 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
1573 | "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
1574 | },
1575 | "strip-ansi": {
1576 | "version": "3.0.1",
1577 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1578 | "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
1579 | "requires": {
1580 | "ansi-regex": "^2.0.0"
1581 | }
1582 | },
1583 | "strip-indent": {
1584 | "version": "1.0.1",
1585 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
1586 | "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
1587 | "dev": true,
1588 | "requires": {
1589 | "get-stdin": "^4.0.1"
1590 | },
1591 | "dependencies": {
1592 | "get-stdin": {
1593 | "version": "4.0.1",
1594 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
1595 | "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
1596 | "dev": true
1597 | }
1598 | }
1599 | },
1600 | "strip-json-comments": {
1601 | "version": "1.0.4",
1602 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
1603 | "integrity": "sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg==",
1604 | "dev": true
1605 | },
1606 | "supports-color": {
1607 | "version": "2.0.0",
1608 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
1609 | "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
1610 | "dev": true
1611 | },
1612 | "supports-preserve-symlinks-flag": {
1613 | "version": "1.0.0",
1614 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1615 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1616 | "dev": true
1617 | },
1618 | "table": {
1619 | "version": "3.8.3",
1620 | "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
1621 | "integrity": "sha512-RZuzIOtzFbprLCE0AXhkI0Xi42ZJLZhCC+qkwuMLf/Vjz3maWpA8gz1qMdbmNoI9cOROT2Am/DxeRyXenrL11g==",
1622 | "dev": true,
1623 | "requires": {
1624 | "ajv": "^4.7.0",
1625 | "ajv-keywords": "^1.0.0",
1626 | "chalk": "^1.1.1",
1627 | "lodash": "^4.0.0",
1628 | "slice-ansi": "0.0.4",
1629 | "string-width": "^2.0.0"
1630 | },
1631 | "dependencies": {
1632 | "ajv": {
1633 | "version": "4.11.8",
1634 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
1635 | "integrity": "sha512-I/bSHSNEcFFqXLf91nchoNB9D1Kie3QKcWdchYUaoIg1+1bdWDkdfdlvdIOJbi9U8xR0y+MWc5D+won9v95WlQ==",
1636 | "dev": true,
1637 | "requires": {
1638 | "co": "^4.6.0",
1639 | "json-stable-stringify": "^1.0.1"
1640 | }
1641 | },
1642 | "ansi-regex": {
1643 | "version": "3.0.1",
1644 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
1645 | "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
1646 | "dev": true
1647 | },
1648 | "is-fullwidth-code-point": {
1649 | "version": "2.0.0",
1650 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
1651 | "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
1652 | "dev": true
1653 | },
1654 | "string-width": {
1655 | "version": "2.1.1",
1656 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
1657 | "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
1658 | "dev": true,
1659 | "requires": {
1660 | "is-fullwidth-code-point": "^2.0.0",
1661 | "strip-ansi": "^4.0.0"
1662 | }
1663 | },
1664 | "strip-ansi": {
1665 | "version": "4.0.0",
1666 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
1667 | "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
1668 | "dev": true,
1669 | "requires": {
1670 | "ansi-regex": "^3.0.0"
1671 | }
1672 | }
1673 | }
1674 | },
1675 | "tape": {
1676 | "version": "3.6.1",
1677 | "resolved": "https://registry.npmjs.org/tape/-/tape-3.6.1.tgz",
1678 | "integrity": "sha512-Qy+shSMwr+bg5NwJhrdCKNOS7BEoo/SEjE+dF4a2OYR73f6ocH5ioLIHE6TuttjONmR3HYlOXwSqFTxUDFJtGg==",
1679 | "dev": true,
1680 | "requires": {
1681 | "deep-equal": "~0.2.0",
1682 | "defined": "~0.0.0",
1683 | "glob": "~3.2.9",
1684 | "inherits": "~2.0.1",
1685 | "object-inspect": "~0.4.0",
1686 | "resumer": "~0.0.0",
1687 | "through": "~2.3.4"
1688 | },
1689 | "dependencies": {
1690 | "glob": {
1691 | "version": "3.2.11",
1692 | "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
1693 | "integrity": "sha512-hVb0zwEZwC1FXSKRPFTeOtN7AArJcJlI6ULGLtrstaswKNlrTJqAA+1lYlSUop4vjA423xlBzqfVS3iWGlqJ+g==",
1694 | "dev": true,
1695 | "requires": {
1696 | "inherits": "2",
1697 | "minimatch": "0.3"
1698 | }
1699 | },
1700 | "minimatch": {
1701 | "version": "0.3.0",
1702 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
1703 | "integrity": "sha512-WFX1jI1AaxNTZVOHLBVazwTWKaQjoykSzCBNXB72vDTCzopQGtyP91tKdFK5cv1+qMwPyiTu1HqUriqplI8pcA==",
1704 | "dev": true,
1705 | "requires": {
1706 | "lru-cache": "2",
1707 | "sigmund": "~1.0.0"
1708 | }
1709 | }
1710 | }
1711 | },
1712 | "tape-spawn": {
1713 | "version": "1.4.2",
1714 | "resolved": "https://registry.npmjs.org/tape-spawn/-/tape-spawn-1.4.2.tgz",
1715 | "integrity": "sha512-nNLqmRwC6ZE3JRcEGvOC8F03Xs1Y6+7hF39A3i9dIyWKsEkEZ+5FCWCXJYRTc1noGZuSwxuPiumabu30e0vaRA==",
1716 | "dev": true,
1717 | "requires": {
1718 | "defined": "^1.0.0",
1719 | "npm-execspawn": "^1.3.0",
1720 | "strip-ansi": "^2.0.1"
1721 | },
1722 | "dependencies": {
1723 | "ansi-regex": {
1724 | "version": "1.1.1",
1725 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz",
1726 | "integrity": "sha512-q5i8bFLg2wDfsuR56c1NzlJFPzVD+9mxhDrhqOGigEFa87OZHlF+9dWeGWzVTP/0ECiA/JUGzfzRr2t3eYORRw==",
1727 | "dev": true
1728 | },
1729 | "defined": {
1730 | "version": "1.0.0",
1731 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1732 | "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==",
1733 | "dev": true
1734 | },
1735 | "strip-ansi": {
1736 | "version": "2.0.1",
1737 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
1738 | "integrity": "sha512-2h8q2CP3EeOhDJ+jd932PRMpa3/pOJFGoF22J1U/DNbEK2gSW2DqeF46VjCXsSQXhC+k/l8/gaaRBQKL6hUPfQ==",
1739 | "dev": true,
1740 | "requires": {
1741 | "ansi-regex": "^1.0.0"
1742 | }
1743 | }
1744 | }
1745 | },
1746 | "text-table": {
1747 | "version": "0.2.0",
1748 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1749 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
1750 | "dev": true
1751 | },
1752 | "throttleit": {
1753 | "version": "0.0.2",
1754 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
1755 | "integrity": "sha512-HtlTFeyYs1elDM2txiIGsdXHaq8kffVaZH/QEBRbo95zQqzlsBx5ELKhkPOZVad9OK9oxzwx6UrQN8Vfh/+yag=="
1756 | },
1757 | "through": {
1758 | "version": "2.3.8",
1759 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1760 | "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
1761 | "dev": true
1762 | },
1763 | "through2": {
1764 | "version": "0.2.3",
1765 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
1766 | "integrity": "sha512-mLa8Bn2mZurjyomGKWRu3Bo2mvoQojFks9NvOK8H+k4kDJNkdEqG522KFZsEFBEl6rKkxTgFbE5+OPcgfvPEHA==",
1767 | "requires": {
1768 | "readable-stream": "~1.1.9",
1769 | "xtend": "~2.1.1"
1770 | }
1771 | },
1772 | "tough-cookie": {
1773 | "version": "2.5.0",
1774 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1775 | "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1776 | "requires": {
1777 | "psl": "^1.1.28",
1778 | "punycode": "^2.1.1"
1779 | }
1780 | },
1781 | "tunnel-agent": {
1782 | "version": "0.6.0",
1783 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1784 | "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
1785 | "requires": {
1786 | "safe-buffer": "^5.0.1"
1787 | }
1788 | },
1789 | "tweetnacl": {
1790 | "version": "0.14.5",
1791 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1792 | "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
1793 | },
1794 | "type": {
1795 | "version": "1.2.0",
1796 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
1797 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
1798 | "dev": true
1799 | },
1800 | "type-check": {
1801 | "version": "0.3.2",
1802 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
1803 | "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
1804 | "dev": true,
1805 | "requires": {
1806 | "prelude-ls": "~1.1.2"
1807 | }
1808 | },
1809 | "typedarray": {
1810 | "version": "0.0.6",
1811 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1812 | "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
1813 | "dev": true
1814 | },
1815 | "uniq": {
1816 | "version": "1.0.1",
1817 | "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
1818 | "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
1819 | "dev": true
1820 | },
1821 | "uri-js": {
1822 | "version": "4.4.1",
1823 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1824 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1825 | "requires": {
1826 | "punycode": "^2.1.0"
1827 | }
1828 | },
1829 | "user-home": {
1830 | "version": "2.0.0",
1831 | "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
1832 | "integrity": "sha512-KMWqdlOcjCYdtIJpicDSFBQ8nFwS2i9sslAd6f4+CBGcU4gist2REnr2fxj2YocvJFxSF3ZOHLYLVZnUxv4BZQ==",
1833 | "dev": true,
1834 | "requires": {
1835 | "os-homedir": "^1.0.0"
1836 | }
1837 | },
1838 | "util-deprecate": {
1839 | "version": "1.0.2",
1840 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1841 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1842 | "dev": true
1843 | },
1844 | "util-extend": {
1845 | "version": "1.0.3",
1846 | "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz",
1847 | "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==",
1848 | "dev": true
1849 | },
1850 | "uuid": {
1851 | "version": "3.4.0",
1852 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1853 | "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
1854 | },
1855 | "verror": {
1856 | "version": "1.10.0",
1857 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1858 | "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
1859 | "requires": {
1860 | "assert-plus": "^1.0.0",
1861 | "core-util-is": "1.0.2",
1862 | "extsprintf": "^1.2.0"
1863 | },
1864 | "dependencies": {
1865 | "core-util-is": {
1866 | "version": "1.0.2",
1867 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
1868 | "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
1869 | }
1870 | }
1871 | },
1872 | "word-wrap": {
1873 | "version": "1.2.3",
1874 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1875 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1876 | "dev": true
1877 | },
1878 | "wrappy": {
1879 | "version": "1.0.2",
1880 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1881 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
1882 | "dev": true
1883 | },
1884 | "write": {
1885 | "version": "0.2.1",
1886 | "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
1887 | "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==",
1888 | "dev": true,
1889 | "requires": {
1890 | "mkdirp": "^0.5.1"
1891 | }
1892 | },
1893 | "xtend": {
1894 | "version": "2.1.2",
1895 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
1896 | "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==",
1897 | "requires": {
1898 | "object-keys": "~0.4.0"
1899 | }
1900 | }
1901 | }
1902 | }
1903 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "nugget",
3 | "version": "2.2.0",
4 | "description": "minimalist wget clone written in node. HTTP GETs a file and saves it to the current working directory",
5 | "main": "index.js",
6 | "bin": {
7 | "nugget": "bin.js"
8 | },
9 | "scripts": {
10 | "test": "standard && tape test/*.js"
11 | },
12 | "author": "max ogden",
13 | "license": "BSD",
14 | "dependencies": {
15 | "debug": "^2.1.3",
16 | "minimist": "^1.1.0",
17 | "pretty-bytes": "^4.0.2",
18 | "progress-stream": "^1.1.0",
19 | "request": "^2.45.0",
20 | "single-line-log": "^1.1.2",
21 | "throttleit": "0.0.2"
22 | },
23 | "devDependencies": {
24 | "standard": "^6.0.5",
25 | "tape": "^3.0.1",
26 | "tape-spawn": "^1.4.2"
27 | },
28 | "directories": {
29 | "test": "test"
30 | },
31 | "repository": {
32 | "type": "git",
33 | "url": "git://github.com/maxogden/nugget.git"
34 | },
35 | "bugs": {
36 | "url": "https://github.com/maxogden/nugget/issues"
37 | },
38 | "homepage": "https://github.com/maxogden/nugget"
39 | }
40 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | # nugget
2 |
3 | Minimalist command line downloader written in node, inspired by wget. HTTP GETs a file and streams it into a file in the current working directory. Specializes at downloading many files in parallel.
4 |
5 | [](https://nodei.co/npm/nugget/)
6 | 
7 | [](https://travis-ci.org/maxogden/nugget)
8 |
9 | ## installation
10 |
11 | ```
12 | npm install nugget -g
13 | ```
14 |
15 | ## usage
16 |
17 | ```
18 | Usage: nugget [options]
19 | -o, --output output filename
20 | -d, --dir output parent directory
21 | -c, --continue resume aborted download
22 | -f, --force ignore response codes > 299
23 | -s, --sockets concurrent socket limit (default infinity)
24 | -q, --quiet disable logging
25 | -t, --tmpfile write files to .tmp while downloading
26 | --proxy specify a proxy to use
27 | --no-strict-ssl disable strict SSL cehcking
28 | ```
29 |
30 | ### examples
31 |
32 | ```
33 | nugget http://foo.com/bar.jpg
34 | # downloads bar.jpg and stores it in the current directory
35 | ```
36 |
37 | or
38 |
39 | ```
40 | nugget http://foo.com/bar.jpg -O baz.jpg
41 | # saves it as baz.jpg. you can also do lowercase -o
42 | ```
43 |
44 | if you get a statusCode of 300 or greater nugget will stop. you can force it to stream the response into a file anyway by doing `nugget http://404link.com/file.html -f` or `--force` works too
45 |
46 | you can also download multiple files, just pass multiple urls:
47 |
48 | 
49 |
50 | ## options
51 |
52 | The following options are recognized by nugget:
53 |
54 | - `-o|-O|--out` - specify the filename to write to. this only works if you are downloading a single file
55 | - `-d|--dir` - save files in a directory other than the current one.
56 | - `-c|--continue` - resume downloads if a partially complete target file already exists. If the target file exists and is the same size as the remote file, nothing will be done.
57 | - `-f|--force` - force the server response to be saved to the target file, even if it's a non-successful status code.
58 | - `-s|--sockets` - default Infinity. specify the number of http sockets to use at once (this controls concurrency)
59 | - `-q|--quiet` - disable logging
60 | - `-t, --tmpfile` - write files to .tmp while downloading
61 | - `--proxy` - specify a proxy to use
62 | - `--no-strict-ssl` - disable strict ssl
63 |
--------------------------------------------------------------------------------
/test/cli.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs')
2 | var path = require('path')
3 | var spawn = require('tape-spawn')
4 | var test = require('tape')
5 |
6 | test('usage', function (t) {
7 | var child = spawn(t, path.join(__dirname, '..', 'bin.js'))
8 | child.stdout.match(fs.readFileSync(path.join(__dirname, '..', 'usage.txt')).toString() + '\n')
9 | child.stderr.empty()
10 | child.end()
11 | })
12 |
--------------------------------------------------------------------------------
/test/resume.html:
--------------------------------------------------------------------------------
1 | hello
--------------------------------------------------------------------------------
/test/resume.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs')
2 | var http = require('http')
3 | var nugget = require('../')
4 | var path = require('path')
5 | var test = require('tape')
6 |
7 | var data = new Buffer('hello everybody I am the data')
8 |
9 | var testServer = http.createServer(function (req, res) {
10 | if (!req.headers['range']) {
11 | res.setHeader('content-length', data.length)
12 | res.setHeader('accept-ranges', 'bytes')
13 | res.end(data)
14 | } else {
15 | var range = req.headers['range'].split('=').pop().split('-').map(function (s) {
16 | return parseInt(s, 10)
17 | })
18 | res.setHeader('content-length', range[1] - range[0])
19 | res.setHeader('content-range', range[0] + '-' + range[1] + '/' + data.length)
20 | res.end(data.slice(range[0], range[1]))
21 | }
22 | })
23 |
24 | var target = path.join(__dirname, 'foobar.html')
25 | if (fs.existsSync(target)) fs.unlinkSync(target)
26 |
27 | fs.writeFileSync(target, data.slice(0, 10))
28 |
29 | testServer.listen(0, function () {
30 | var port = this.address().port
31 | test('fetches rest of file', function (t) {
32 | nugget('http://localhost:' + port + '/foobar.html', {dir: __dirname, resume: true, quiet: true}, function (err) {
33 | if (err) t.ifErr(err)
34 | t.ok(fs.existsSync(target), 'downloaded file')
35 | t.equal(fs.statSync(target).size, data.length, 'file is complete')
36 | if (fs.existsSync(target)) fs.unlinkSync(target)
37 | t.end()
38 | testServer.close()
39 | })
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/test/test.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs')
2 | var http = require('http')
3 | var nugget = require('../')
4 | var path = require('path')
5 | var test = require('tape')
6 |
7 | var testServer = http.createServer(function (req, res) {
8 | res.end('hello')
9 | })
10 |
11 | var target = path.join(__dirname, 'resume.html')
12 | if (fs.existsSync(target)) fs.unlinkSync(target)
13 |
14 | testServer.listen(0, function () {
15 | var port = this.address().port
16 | test('fetches file', function (t) {
17 | nugget('http://localhost:' + port + '/resume.html', {dir: __dirname, quiet: true}, function (err) {
18 | if (err) t.ifErr(err)
19 | t.ok(fs.existsSync(target), 'downloaded file')
20 | if (fs.existsSync(target)) fs.unlinkSync(target)
21 | t.end()
22 | })
23 | })
24 |
25 | test('has progress events', function (t) {
26 | var gotProgress = false
27 | var dl = nugget('http://localhost:' + port + '/resume.html', {dir: __dirname, quiet: true}, function (err) {
28 | t.notOk(err, 'no error')
29 | t.ok(gotProgress, 'got progress event')
30 | t.end()
31 | testServer.close()
32 | })
33 | dl.once('progress', function (data) {
34 | t.ok(data.hasOwnProperty('percentage'), 'has percentage')
35 | gotProgress = true
36 | })
37 | })
38 | })
39 |
--------------------------------------------------------------------------------
/usage.txt:
--------------------------------------------------------------------------------
1 | Usage: nugget [options]
2 | -o, --output output filename
3 | -d, --dir output parent directory
4 | -c, --continue resume aborted download
5 | -f, --force ignore response codes > 299
6 | -s, --sockets concurrent socket limit (default infinity)
7 | -q, --quiet disable logging
8 | -t, --tmpfile write files to .tmp while downloading
9 | --proxy specify a proxy to use
10 | --no-strict-ssl disable strict SSL cehcking
11 |
--------------------------------------------------------------------------------