pax_global_header00006660000000000000000000000064133637132370014522gustar00rootroot0000000000000052 comment=d362cb255c2b2ad24b0b6bf8cef35c522ba29019
minipass-2.3.5/000077500000000000000000000000001336371323700133545ustar00rootroot00000000000000minipass-2.3.5/.gitignore000066400000000000000000000000531336371323700153420ustar00rootroot00000000000000.*.swp
node_modules
.nyc_output/
coverage/
minipass-2.3.5/.travis.yml000066400000000000000000000001351336371323700154640ustar00rootroot00000000000000language: node_js
sudo: false
node_js:
- 10
cache:
directories:
- /Users/isaacs/.npm
minipass-2.3.5/LICENSE000066400000000000000000000013641336371323700143650ustar00rootroot00000000000000The ISC License
Copyright (c) npm, Inc. and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
minipass-2.3.5/README.md000066400000000000000000000067231336371323700146430ustar00rootroot00000000000000# minipass
A _very_ minimal implementation of a [PassThrough
stream](https://nodejs.org/api/stream.html#stream_class_stream_passthrough)
[It's very
fast](https://docs.google.com/spreadsheets/d/1oObKSrVwLX_7Ut4Z6g3fZW-AX1j1-k6w-cDsrkaSbHM/edit#gid=0)
for objects, strings, and buffers.
Supports pipe()ing (including multi-pipe() and backpressure
transmission), buffering data until either a `data` event handler or
`pipe()` is added (so you don't lose the first chunk), and most other
cases where PassThrough is a good idea.
There is a `read()` method, but it's much more efficient to consume
data from this stream via `'data'` events or by calling `pipe()` into
some other stream. Calling `read()` requires the buffer to be
flattened in some cases, which requires copying memory.
There is also no `unpipe()` method. Once you start piping, there is
no stopping it!
If you set `objectMode: true` in the options, then whatever is written
will be emitted. Otherwise, it'll do a minimal amount of Buffer
copying to ensure proper Streams semantics when `read(n)` is called.
This is not a `through` or `through2` stream. It doesn't transform
the data, it just passes it right through. If you want to transform
the data, extend the class, and override the `write()` method. Once
you're done transforming the data however you want, call
`super.write()` with the transform output.
For an example of a stream that extends MiniPass to provide transform
capabilities, check out [minizlib](http://npm.im/minizlib).
## USAGE
```js
const MiniPass = require('minipass')
const mp = new MiniPass(options) // optional: { encoding }
mp.write('foo')
mp.pipe(someOtherStream)
mp.end('bar')
```
### collecting
```js
mp.collect().then(all => {
// all is an array of all the data emitted
// encoding is supported in this case, so
// so the result will be a collection of strings if
// an encoding is specified, or buffers/objects if not.
//
// In an async function, you may do
// const data = await stream.collect()
})
```
### iteration
You can iterate over streams synchronously or asynchronously in
platforms that support it.
Synchronous iteration will end when the currently available data is
consumed, even if the `end` event has not been reached. In string and
buffer mode, the data is concatenated, so unless multiple writes are
occurring in the same tick as the `read()`, sync iteration loops will
generally only have a single iteration.
To consume chunks in this way exactly as they have been written, with
no flattening, create the stream with the `{ objectMode: true }`
option.
```js
const mp = new Minipass({ objectMode: true })
mp.write('a')
mp.write('b')
for (let letter of mp) {
console.log(letter) // a, b
}
mp.write('c')
mp.write('d')
for (let letter of mp) {
console.log(letter) // c, d
}
mp.write('e')
mp.end()
for (let letter of mp) {
console.log(letter) // e
}
for (let letter of mp) {
console.log(letter) // nothing
}
```
Asynchronous iteration will continue until the end event is reached,
consuming all of the data.
```js
const mp = new Minipass({ encoding: 'utf8' })
// some source of some data
let i = 5
const inter = setInterval(() => {
if (i --> 0)
mp.write(Buffer.from('foo\n', 'utf8'))
else {
mp.end()
clearInterval(inter)
}
}, 100)
// consume the data with asynchronous iteration
async function consume () {
for await (let chunk of mp) {
console.log(chunk)
}
return 'ok'
}
consume().then(res => console.log(res))
// logs `foo\n` 5 times, and then `ok`
```
minipass-2.3.5/bench/000077500000000000000000000000001336371323700144335ustar00rootroot00000000000000minipass-2.3.5/bench/lib/000077500000000000000000000000001336371323700152015ustar00rootroot00000000000000minipass-2.3.5/bench/lib/extend-minipass.js000066400000000000000000000003341336371323700206470ustar00rootroot00000000000000'use strict'
const MiniPass = require('../..')
module.exports = class ExtendMiniPass extends MiniPass {
constructor (opts) {
super(opts)
}
write (data, encoding) {
return super.write(data, encoding)
}
}
minipass-2.3.5/bench/lib/extend-through2.js000066400000000000000000000003511336371323700205650ustar00rootroot00000000000000'use strict'
const through2 = require('through2')
module.exports = function (opt) {
return opt.objectMode
? through2.obj(func)
: through2(func)
function func (data, enc, done) {
this.push(data, enc)
done()
}
}
minipass-2.3.5/bench/lib/extend-transform.js000066400000000000000000000003461336371323700210420ustar00rootroot00000000000000'use strict'
const stream = require('stream')
module.exports = class ExtendTransform extends stream.Transform {
constructor (opts) {
super(opts)
}
_transform (data, enc, done) {
this.push(data, enc)
done()
}
}
minipass-2.3.5/bench/lib/nullsink.js000066400000000000000000000003301336371323700173720ustar00rootroot00000000000000'use strict'
const EE = require('events').EventEmitter
module.exports = class NullSink extends EE {
write (data, encoding, next) {
if (next) next()
return true
}
end () {
this.emit('finish')
}
}
minipass-2.3.5/bench/lib/numbers.js000066400000000000000000000016001336371323700172070ustar00rootroot00000000000000'use strict'
const stream = require('stream')
const numbers = new Array(1000).join(',').split(',').map((v, k) => k)
let acc = ''
const strings = numbers.map(n => acc += n)
const bufs = strings.map(s => new Buffer(s))
const objs = strings.map(s => ({ str: s }))
module.exports = class Numbers {
constructor (opt) {
this.objectMode = opt.objectMode
this.encoding = opt.encoding
this.ii = 0
this.done = false
}
pipe (dest) {
this.dest = dest
this.go()
return dest
}
go () {
let flowing = true
while (flowing) {
if (this.ii >= 1000) {
this.dest.end()
this.done = true
flowing = false
} else {
flowing = this.dest.write(
(this.objectMode ? objs
: this.encoding ? strings
: bufs)[this.ii++])
}
}
if (!this.done)
this.dest.once('drain', _ => this.go())
}
}
minipass-2.3.5/bench/lib/timer.js000066400000000000000000000006031336371323700166560ustar00rootroot00000000000000'use strict'
module.exports = _ => {
const start = process.hrtime()
return _ => {
const end = process.hrtime(start)
const ms = Math.round(end[0]*1e6 + end[1]/1e3)/1e3
if (!process.env.isTTY)
console.log(ms)
else {
const s = Math.round(end[0]*10 + end[1]/1e8)/10
const ss = s <= 1 ? '' : ' (' + s + 's)'
console.log('%d%s', ms, ss)
}
}
}
minipass-2.3.5/bench/test.js000066400000000000000000000103021336371323700157440ustar00rootroot00000000000000'use strict'
const iterations = +process.env.BENCH_TEST_ITERATION || 100
const testCount = +process.env.BENCH_TEST_COUNT || 20
const tests = [
'baseline',
'minipass',
'extend-minipass',
'through2',
'extend-through2',
'passthrough',
'extend-transform'
]
const manyOpts = [ 'many', 'single' ]
const typeOpts = [ 'buffer', 'string', 'object' ]
const main = () => {
const spawn = require('child_process').spawn
const node = process.execPath
const results = {}
const testSet = []
tests.forEach(t =>
manyOpts.forEach(many =>
typeOpts.forEach(type =>
new Array(testCount).join(',').split(',').forEach(() =>
t !== 'baseline' || (many === 'single' && type === 'object')
? testSet.push([t, many, type]) : null))))
let didFirst = false
const mainRunTest = t => {
if (!t)
return afterMain(results)
const k = t.join('\t')
if (!results[k]) {
results[k] = []
if (!didFirst)
didFirst = true
else
process.stderr.write('\n')
process.stderr.write(k + ' #')
} else {
process.stderr.write('#')
}
const c = spawn(node, [__filename].concat(t), {
stdio: [ 'ignore', 'pipe', 2 ]
})
let out = ''
c.stdout.on('data', c => out += c)
c.on('close', (code, signal) => {
if (code || signal)
throw new Error('failed: ' + code + ' ' + signal)
results[k].push(+out)
mainRunTest(testSet.shift())
})
}
mainRunTest(testSet.shift())
}
const afterMain = results => {
console.log('test\tmany\ttype\tops/s\tmean\tmedian\tmax\tmin' +
'\tstdev\trange\traw')
// get the mean, median, stddev, and range of each test
Object.keys(results).forEach(test => {
const k = results[test].sort((a, b) => a - b)
const min = k[0]
const max = k[ k.length - 1 ]
const range = max - min
const sum = k.reduce((a,b) => a + b, 0)
const mean = sum / k.length
const ops = iterations / mean * 1000
const devs = k.map(n => n - mean).map(n => n * n)
const avgdev = devs.reduce((a,b) => a + b, 0) / k.length
const stdev = Math.pow(avgdev, 0.5)
const median = k.length % 2 ? k[Math.floor(k.length / 2)] :
(k[k.length/2] + k[k.length/2+1])/2
console.log(
'%s\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s', test, round(ops),
round(mean), round(median),
max, min, round(stdev), round(range),
k.join('\t'))
})
}
const round = num => Math.round(num * 1000)/1000
const test = (testname, many, type) => {
const timer = require('./lib/timer.js')
const Class = getClass(testname)
const done = timer()
runTest(Class, many, type, iterations, done)
}
// don't blow up the stack! loop unless deferred
const runTest = (Class, many, type, iterations, done) => {
const Nullsink = require('./lib/nullsink.js')
const Numbers = require('./lib/numbers.js')
const opt = {}
if (type === 'string')
opt.encoding = 'utf8'
else if (type === 'object')
opt.objectMode = true
while (iterations--) {
let finished = false
let inloop = true
const after = iterations === 0 ? done
: () => {
if (iterations === 0)
done()
else if (inloop)
finished = true
else
runTest(Class, many, type, iterations, done)
}
const out = new Nullsink().on('finish', after)
let sink = Class ? new Class(opt) : out
if (many && Class)
sink = sink
.pipe(new Class(opt))
.pipe(new Class(opt))
.pipe(new Class(opt))
.pipe(new Class(opt))
if (sink !== out)
sink.pipe(out)
new Numbers(opt).pipe(sink)
// keep tight-looping if the stream is done already
if (!finished) {
inloop = false
break
}
}
}
const getClass = testname =>
testname === 'through2' ? require('through2').obj
: testname === 'extend-through2' ? require('./lib/extend-through2.js')
: testname === 'minipass' ? require('../')
: testname === 'extend-minipass' ? require('./lib/extend-minipass.js')
: testname === 'passthrough' ? require('stream').PassThrough
: testname === 'extend-transform' ? require('./lib/extend-transform.js')
: null
if (!process.argv[2])
main()
else
test(process.argv[2], process.argv[3] === 'many', process.argv[4])
minipass-2.3.5/index.js000066400000000000000000000221421336371323700150220ustar00rootroot00000000000000'use strict'
const EE = require('events')
const Yallist = require('yallist')
const EOF = Symbol('EOF')
const MAYBE_EMIT_END = Symbol('maybeEmitEnd')
const EMITTED_END = Symbol('emittedEnd')
const CLOSED = Symbol('closed')
const READ = Symbol('read')
const FLUSH = Symbol('flush')
const doIter = process.env._MP_NO_ITERATOR_SYMBOLS_ !== '1'
const ASYNCITERATOR = doIter && Symbol.asyncIterator || Symbol('asyncIterator not implemented')
const ITERATOR = doIter && Symbol.iterator || Symbol('iterator not implemented')
const FLUSHCHUNK = Symbol('flushChunk')
const SD = require('string_decoder').StringDecoder
const ENCODING = Symbol('encoding')
const DECODER = Symbol('decoder')
const FLOWING = Symbol('flowing')
const RESUME = Symbol('resume')
const BUFFERLENGTH = Symbol('bufferLength')
const BUFFERPUSH = Symbol('bufferPush')
const BUFFERSHIFT = Symbol('bufferShift')
const OBJECTMODE = Symbol('objectMode')
// Buffer in node 4.x < 4.5.0 doesn't have working Buffer.from
// or Buffer.alloc, and Buffer in node 10 deprecated the ctor.
// .M, this is fine .\^/M..
let B = Buffer
/* istanbul ignore next */
if (!B.alloc) {
B = require('safe-buffer').Buffer
}
module.exports = class MiniPass extends EE {
constructor (options) {
super()
this[FLOWING] = false
this.pipes = new Yallist()
this.buffer = new Yallist()
this[OBJECTMODE] = options && options.objectMode || false
if (this[OBJECTMODE])
this[ENCODING] = null
else
this[ENCODING] = options && options.encoding || null
if (this[ENCODING] === 'buffer')
this[ENCODING] = null
this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null
this[EOF] = false
this[EMITTED_END] = false
this[CLOSED] = false
this.writable = true
this.readable = true
this[BUFFERLENGTH] = 0
}
get bufferLength () { return this[BUFFERLENGTH] }
get encoding () { return this[ENCODING] }
set encoding (enc) {
if (this[OBJECTMODE])
throw new Error('cannot set encoding in objectMode')
if (this[ENCODING] && enc !== this[ENCODING] &&
(this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
throw new Error('cannot change encoding')
if (this[ENCODING] !== enc) {
this[DECODER] = enc ? new SD(enc) : null
if (this.buffer.length)
this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))
}
this[ENCODING] = enc
}
setEncoding (enc) {
this.encoding = enc
}
write (chunk, encoding, cb) {
if (this[EOF])
throw new Error('write after end')
if (typeof encoding === 'function')
cb = encoding, encoding = 'utf8'
if (!encoding)
encoding = 'utf8'
// fast-path writing strings of same encoding to a stream with
// an empty buffer, skipping the buffer/decoder dance
if (typeof chunk === 'string' && !this[OBJECTMODE] &&
// unless it is a string already ready for us to use
!(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
chunk = B.from(chunk, encoding)
}
if (B.isBuffer(chunk) && this[ENCODING])
chunk = this[DECODER].write(chunk)
try {
return this.flowing
? (this.emit('data', chunk), this.flowing)
: (this[BUFFERPUSH](chunk), false)
} finally {
this.emit('readable')
if (cb)
cb()
}
}
read (n) {
try {
if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH])
return null
if (this[OBJECTMODE])
n = null
if (this.buffer.length > 1 && !this[OBJECTMODE]) {
if (this.encoding)
this.buffer = new Yallist([
Array.from(this.buffer).join('')
])
else
this.buffer = new Yallist([
B.concat(Array.from(this.buffer), this[BUFFERLENGTH])
])
}
return this[READ](n || null, this.buffer.head.value)
} finally {
this[MAYBE_EMIT_END]()
}
}
[READ] (n, chunk) {
if (n === chunk.length || n === null)
this[BUFFERSHIFT]()
else {
this.buffer.head.value = chunk.slice(n)
chunk = chunk.slice(0, n)
this[BUFFERLENGTH] -= n
}
this.emit('data', chunk)
if (!this.buffer.length && !this[EOF])
this.emit('drain')
return chunk
}
end (chunk, encoding, cb) {
if (typeof chunk === 'function')
cb = chunk, chunk = null
if (typeof encoding === 'function')
cb = encoding, encoding = 'utf8'
if (chunk)
this.write(chunk, encoding)
if (cb)
this.once('end', cb)
this[EOF] = true
this.writable = false
if (this.flowing)
this[MAYBE_EMIT_END]()
}
// don't let the internal resume be overwritten
[RESUME] () {
this[FLOWING] = true
this.emit('resume')
if (this.buffer.length)
this[FLUSH]()
else if (this[EOF])
this[MAYBE_EMIT_END]()
else
this.emit('drain')
}
resume () {
return this[RESUME]()
}
pause () {
this[FLOWING] = false
}
get flowing () {
return this[FLOWING]
}
[BUFFERPUSH] (chunk) {
if (this[OBJECTMODE])
this[BUFFERLENGTH] += 1
else
this[BUFFERLENGTH] += chunk.length
return this.buffer.push(chunk)
}
[BUFFERSHIFT] () {
if (this.buffer.length) {
if (this[OBJECTMODE])
this[BUFFERLENGTH] -= 1
else
this[BUFFERLENGTH] -= this.buffer.head.value.length
}
return this.buffer.shift()
}
[FLUSH] () {
do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))
if (!this.buffer.length && !this[EOF])
this.emit('drain')
}
[FLUSHCHUNK] (chunk) {
return chunk ? (this.emit('data', chunk), this.flowing) : false
}
pipe (dest, opts) {
if (dest === process.stdout || dest === process.stderr)
(opts = opts || {}).end = false
const p = { dest: dest, opts: opts, ondrain: _ => this[RESUME]() }
this.pipes.push(p)
dest.on('drain', p.ondrain)
this[RESUME]()
return dest
}
addListener (ev, fn) {
return this.on(ev, fn)
}
on (ev, fn) {
try {
return super.on(ev, fn)
} finally {
if (ev === 'data' && !this.pipes.length && !this.flowing)
this[RESUME]()
else if (ev === 'end' && this[EMITTED_END]) {
super.emit('end')
this.removeAllListeners('end')
}
}
}
get emittedEnd () {
return this[EMITTED_END]
}
[MAYBE_EMIT_END] () {
if (!this[EMITTED_END] && this.buffer.length === 0 && this[EOF]) {
this.emit('end')
this.emit('prefinish')
this.emit('finish')
if (this[CLOSED])
this.emit('close')
}
}
emit (ev, data) {
if (ev === 'data') {
if (!data)
return
if (this.pipes.length)
this.pipes.forEach(p => p.dest.write(data) || this.pause())
} else if (ev === 'end') {
if (this[EMITTED_END] === true)
return
this[EMITTED_END] = true
this.readable = false
if (this[DECODER]) {
data = this[DECODER].end()
if (data) {
this.pipes.forEach(p => p.dest.write(data))
super.emit('data', data)
}
}
this.pipes.forEach(p => {
p.dest.removeListener('drain', p.ondrain)
if (!p.opts || p.opts.end !== false)
p.dest.end()
})
} else if (ev === 'close') {
this[CLOSED] = true
// don't emit close before 'end' and 'finish'
if (!this[EMITTED_END])
return
}
const args = new Array(arguments.length)
args[0] = ev
args[1] = data
if (arguments.length > 2) {
for (let i = 2; i < arguments.length; i++) {
args[i] = arguments[i]
}
}
try {
return super.emit.apply(this, args)
} finally {
if (ev !== 'end')
this[MAYBE_EMIT_END]()
else
this.removeAllListeners('end')
}
}
// const all = await stream.collect()
collect () {
return new Promise((resolve, reject) => {
const buf = []
this.on('data', c => buf.push(c))
this.on('end', () => resolve(buf))
this.on('error', reject)
})
}
// for await (let chunk of stream)
[ASYNCITERATOR] () {
const next = () => {
const res = this.read()
if (res !== null)
return Promise.resolve({ done: false, value: res })
if (this[EOF])
return Promise.resolve({ done: true })
let resolve = null
let reject = null
const onerr = er => {
this.removeListener('data', ondata)
this.removeListener('end', onend)
reject(er)
}
const ondata = value => {
this.removeListener('error', onerr)
this.removeListener('end', onend)
this.pause()
resolve({ value: value, done: !!this[EOF] })
}
const onend = () => {
this.removeListener('error', onerr)
this.removeListener('data', ondata)
resolve({ done: true })
}
return new Promise((res, rej) => {
reject = rej
resolve = res
this.once('error', onerr)
this.once('end', onend)
this.once('data', ondata)
})
}
return { next }
}
// for (let chunk of stream)
[ITERATOR] () {
const next = () => {
const value = this.read()
const done = value === null
return { value, done }
}
return { next }
}
}
minipass-2.3.5/package-lock.json000066400000000000000000003123411336371323700165740ustar00rootroot00000000000000{
"name": "minipass",
"version": "2.3.5",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"ajv": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
"dev": true,
"requires": {
"co": "^4.6.0",
"fast-deep-equal": "^1.0.0",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.3.0"
}
},
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
"dev": true
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
"dev": true
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
"aws4": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
"integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
"dev": true
},
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
"dev": true,
"optional": true,
"requires": {
"tweetnacl": "^0.14.3"
}
},
"bind-obj-methods": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.0.tgz",
"integrity": "sha512-3/qRXczDi2Cdbz6jE+W3IflJOutRVica8frpBn14de1mBOkzDo+6tY33kNhvkw54Kn3PzRRD2VnGbGPcTAk4sw==",
"dev": true
},
"bluebird": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"buffer-from": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
"integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
"dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"clean-yaml-object": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz",
"integrity": "sha1-Y/sRDcLOGoTcIfbZM0h20BCui2g=",
"dev": true
},
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
"dev": true
},
"color-support": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
"dev": true
},
"combined-stream": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"coveralls": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.1.tgz",
"integrity": "sha512-FAzXwiDOYLGDWH+zgoIA+8GbWv50hlx+kpEJyvzLKOdnIBv9uWoVl4DhqGgyUHpiRjAlF8KYZSipWXYtllWH6Q==",
"dev": true,
"requires": {
"js-yaml": "^3.6.1",
"lcov-parse": "^0.0.10",
"log-driver": "^1.2.5",
"minimist": "^1.2.0",
"request": "^2.79.0"
}
},
"cross-spawn": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
"integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
"which": "^1.2.9"
}
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"diff": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
"integrity": "sha1-fyjS657nsVqX79ic5j3P2qPMur8=",
"dev": true
},
"ecc-jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
"dev": true,
"optional": true,
"requires": {
"jsbn": "~0.1.0"
}
},
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
"integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
"dev": true,
"requires": {
"once": "^1.4.0"
},
"dependencies": {
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
}
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
"esprima": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
"integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
"dev": true
},
"events-to-array": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz",
"integrity": "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=",
"dev": true
},
"extend": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
"dev": true
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
"fast-deep-equal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
"dev": true
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
"dev": true
},
"foreground-child": {
"version": "1.5.6",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
"integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=",
"dev": true,
"requires": {
"cross-spawn": "^4",
"signal-exit": "^3.0.0"
}
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "1.0.6",
"mime-types": "^2.1.12"
}
},
"fs-exists-cached": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz",
"integrity": "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=",
"dev": true
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
"function-loop": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.1.tgz",
"integrity": "sha1-gHa7MF6OajzO7ikgdl8zDRkPNAw=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
"dev": true
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
},
"har-validator": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
"dev": true,
"requires": {
"ajv": "^5.1.0",
"har-schema": "^2.0.0"
}
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
"dev": true
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"js-yaml": {
"version": "3.11.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
"integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
}
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true,
"optional": true
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"dev": true
},
"json-schema-traverse": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
"dev": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
}
},
"lcov-parse": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz",
"integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=",
"dev": true
},
"log-driver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
"integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==",
"dev": true
},
"lru-cache": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
"integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
},
"dependencies": {
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
}
}
},
"mime-db": {
"version": "1.33.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
"integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
"dev": true
},
"mime-types": {
"version": "2.1.18",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
"integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
"dev": true,
"requires": {
"mime-db": "~1.33.0"
}
},
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"minipass": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.2.tgz",
"integrity": "sha512-4AwVB38b0GIVYTfI3+Y9A1yynJkUHA3SGH+nx4YSzjwKXIOeJ9GVdvN88Rl7bivL0DaFkYng6hAC7vbb6+eZ5w==",
"dev": true,
"requires": {
"safe-buffer": "^5.1.1",
"yallist": "^3.0.0"
}
},
"mkdirp": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
"dev": true,
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
"dev": true
}
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"nyc": {
"version": "11.8.0",
"resolved": "https://registry.npmjs.org/nyc/-/nyc-11.8.0.tgz",
"integrity": "sha512-PUFq1PSsx5OinSk5g5aaZygcDdI3QQT5XUlbR9QRMihtMS6w0Gm8xj4BxmKeeAlpQXC5M2DIhH16Y+KejceivQ==",
"dev": true,
"requires": {
"archy": "^1.0.0",
"arrify": "^1.0.1",
"caching-transform": "^1.0.0",
"convert-source-map": "^1.5.1",
"debug-log": "^1.0.1",
"default-require-extensions": "^1.0.0",
"find-cache-dir": "^0.1.1",
"find-up": "^2.1.0",
"foreground-child": "^1.5.3",
"glob": "^7.0.6",
"istanbul-lib-coverage": "^1.1.2",
"istanbul-lib-hook": "^1.1.0",
"istanbul-lib-instrument": "^1.10.0",
"istanbul-lib-report": "^1.1.3",
"istanbul-lib-source-maps": "^1.2.3",
"istanbul-reports": "^1.4.0",
"md5-hex": "^1.2.0",
"merge-source-map": "^1.1.0",
"micromatch": "^3.1.10",
"mkdirp": "^0.5.0",
"resolve-from": "^2.0.0",
"rimraf": "^2.6.2",
"signal-exit": "^3.0.1",
"spawn-wrap": "^1.4.2",
"test-exclude": "^4.2.0",
"yargs": "11.1.0",
"yargs-parser": "^8.0.0"
},
"dependencies": {
"align-text": {
"version": "0.1.4",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2",
"longest": "^1.0.1",
"repeat-string": "^1.5.2"
}
},
"amdefine": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true,
"dev": true
},
"ansi-styles": {
"version": "2.2.1",
"bundled": true,
"dev": true
},
"append-transform": {
"version": "0.4.0",
"bundled": true,
"dev": true,
"requires": {
"default-require-extensions": "^1.0.0"
}
},
"archy": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"arr-diff": {
"version": "4.0.0",
"bundled": true,
"dev": true
},
"arr-flatten": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"arr-union": {
"version": "3.1.0",
"bundled": true,
"dev": true
},
"array-unique": {
"version": "0.3.2",
"bundled": true,
"dev": true
},
"arrify": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"assign-symbols": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"async": {
"version": "1.5.2",
"bundled": true,
"dev": true
},
"atob": {
"version": "2.1.1",
"bundled": true,
"dev": true
},
"babel-code-frame": {
"version": "6.26.0",
"bundled": true,
"dev": true,
"requires": {
"chalk": "^1.1.3",
"esutils": "^2.0.2",
"js-tokens": "^3.0.2"
}
},
"babel-generator": {
"version": "6.26.1",
"bundled": true,
"dev": true,
"requires": {
"babel-messages": "^6.23.0",
"babel-runtime": "^6.26.0",
"babel-types": "^6.26.0",
"detect-indent": "^4.0.0",
"jsesc": "^1.3.0",
"lodash": "^4.17.4",
"source-map": "^0.5.7",
"trim-right": "^1.0.1"
}
},
"babel-messages": {
"version": "6.23.0",
"bundled": true,
"dev": true,
"requires": {
"babel-runtime": "^6.22.0"
}
},
"babel-runtime": {
"version": "6.26.0",
"bundled": true,
"dev": true,
"requires": {
"core-js": "^2.4.0",
"regenerator-runtime": "^0.11.0"
}
},
"babel-template": {
"version": "6.26.0",
"bundled": true,
"dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"babel-traverse": "^6.26.0",
"babel-types": "^6.26.0",
"babylon": "^6.18.0",
"lodash": "^4.17.4"
}
},
"babel-traverse": {
"version": "6.26.0",
"bundled": true,
"dev": true,
"requires": {
"babel-code-frame": "^6.26.0",
"babel-messages": "^6.23.0",
"babel-runtime": "^6.26.0",
"babel-types": "^6.26.0",
"babylon": "^6.18.0",
"debug": "^2.6.8",
"globals": "^9.18.0",
"invariant": "^2.2.2",
"lodash": "^4.17.4"
}
},
"babel-types": {
"version": "6.26.0",
"bundled": true,
"dev": true,
"requires": {
"babel-runtime": "^6.26.0",
"esutils": "^2.0.2",
"lodash": "^4.17.4",
"to-fast-properties": "^1.0.3"
}
},
"babylon": {
"version": "6.18.0",
"bundled": true,
"dev": true
},
"balanced-match": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"base": {
"version": "0.11.2",
"bundled": true,
"dev": true,
"requires": {
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
"component-emitter": "^1.2.1",
"define-property": "^1.0.0",
"isobject": "^3.0.1",
"mixin-deep": "^1.2.0",
"pascalcase": "^0.1.1"
},
"dependencies": {
"define-property": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
},
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"braces": {
"version": "2.3.2",
"bundled": true,
"dev": true,
"requires": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
"extend-shallow": "^2.0.1",
"fill-range": "^4.0.0",
"isobject": "^3.0.1",
"repeat-element": "^1.1.2",
"snapdragon": "^0.8.1",
"snapdragon-node": "^2.0.1",
"split-string": "^3.0.2",
"to-regex": "^3.0.1"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"builtin-modules": {
"version": "1.1.1",
"bundled": true,
"dev": true
},
"cache-base": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
"get-value": "^2.0.6",
"has-value": "^1.0.0",
"isobject": "^3.0.1",
"set-value": "^2.0.0",
"to-object-path": "^0.3.0",
"union-value": "^1.0.0",
"unset-value": "^1.0.0"
},
"dependencies": {
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"caching-transform": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"md5-hex": "^1.2.0",
"mkdirp": "^0.5.1",
"write-file-atomic": "^1.1.4"
}
},
"camelcase": {
"version": "1.2.1",
"bundled": true,
"dev": true,
"optional": true
},
"center-align": {
"version": "0.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"align-text": "^0.1.3",
"lazy-cache": "^1.0.3"
}
},
"chalk": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"class-utils": {
"version": "0.3.6",
"bundled": true,
"dev": true,
"requires": {
"arr-union": "^3.1.0",
"define-property": "^0.2.5",
"isobject": "^3.0.0",
"static-extend": "^0.1.1"
},
"dependencies": {
"define-property": {
"version": "0.2.5",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"cliui": {
"version": "2.1.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"center-align": "^0.1.1",
"right-align": "^0.1.1",
"wordwrap": "0.0.2"
},
"dependencies": {
"wordwrap": {
"version": "0.0.2",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"code-point-at": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"collection-visit": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"map-visit": "^1.0.0",
"object-visit": "^1.0.0"
}
},
"commondir": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"component-emitter": {
"version": "1.2.1",
"bundled": true,
"dev": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true,
"dev": true
},
"convert-source-map": {
"version": "1.5.1",
"bundled": true,
"dev": true
},
"copy-descriptor": {
"version": "0.1.1",
"bundled": true,
"dev": true
},
"core-js": {
"version": "2.5.6",
"bundled": true,
"dev": true
},
"cross-spawn": {
"version": "4.0.2",
"bundled": true,
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
"which": "^1.2.9"
}
},
"debug": {
"version": "2.6.9",
"bundled": true,
"dev": true,
"requires": {
"ms": "2.0.0"
}
},
"debug-log": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"decamelize": {
"version": "1.2.0",
"bundled": true,
"dev": true
},
"decode-uri-component": {
"version": "0.2.0",
"bundled": true,
"dev": true
},
"default-require-extensions": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"strip-bom": "^2.0.0"
}
},
"define-property": {
"version": "2.0.2",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^1.0.2",
"isobject": "^3.0.1"
},
"dependencies": {
"is-accessor-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
},
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"detect-indent": {
"version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
"repeating": "^2.0.0"
}
},
"error-ex": {
"version": "1.3.1",
"bundled": true,
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true,
"dev": true
},
"esutils": {
"version": "2.0.2",
"bundled": true,
"dev": true
},
"execa": {
"version": "0.7.0",
"bundled": true,
"dev": true,
"requires": {
"cross-spawn": "^5.0.1",
"get-stream": "^3.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
},
"dependencies": {
"cross-spawn": {
"version": "5.1.0",
"bundled": true,
"dev": true,
"requires": {
"lru-cache": "^4.0.1",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
}
}
},
"expand-brackets": {
"version": "2.1.4",
"bundled": true,
"dev": true,
"requires": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
"extend-shallow": "^2.0.1",
"posix-character-classes": "^0.1.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"define-property": {
"version": "0.2.5",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
},
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"extend-shallow": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"requires": {
"assign-symbols": "^1.0.0",
"is-extendable": "^1.0.1"
},
"dependencies": {
"is-extendable": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
}
}
},
"extglob": {
"version": "2.0.4",
"bundled": true,
"dev": true,
"requires": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
"expand-brackets": "^2.1.4",
"extend-shallow": "^2.0.1",
"fragment-cache": "^0.2.1",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"define-property": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
},
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
},
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"fill-range": {
"version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
"repeat-string": "^1.6.1",
"to-regex-range": "^2.1.0"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"find-cache-dir": {
"version": "0.1.1",
"bundled": true,
"dev": true,
"requires": {
"commondir": "^1.0.1",
"mkdirp": "^0.5.1",
"pkg-dir": "^1.0.0"
}
},
"find-up": {
"version": "2.1.0",
"bundled": true,
"dev": true,
"requires": {
"locate-path": "^2.0.0"
}
},
"for-in": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"foreground-child": {
"version": "1.5.6",
"bundled": true,
"dev": true,
"requires": {
"cross-spawn": "^4",
"signal-exit": "^3.0.0"
}
},
"fragment-cache": {
"version": "0.2.1",
"bundled": true,
"dev": true,
"requires": {
"map-cache": "^0.2.2"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"get-caller-file": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"get-stream": {
"version": "3.0.0",
"bundled": true,
"dev": true
},
"get-value": {
"version": "2.0.6",
"bundled": true,
"dev": true
},
"glob": {
"version": "7.1.2",
"bundled": true,
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"globals": {
"version": "9.18.0",
"bundled": true,
"dev": true
},
"graceful-fs": {
"version": "4.1.11",
"bundled": true,
"dev": true
},
"handlebars": {
"version": "4.0.11",
"bundled": true,
"dev": true,
"requires": {
"async": "^1.4.0",
"optimist": "^0.6.1",
"source-map": "^0.4.4",
"uglify-js": "^2.6"
},
"dependencies": {
"source-map": {
"version": "0.4.4",
"bundled": true,
"dev": true,
"requires": {
"amdefine": ">=0.0.4"
}
}
}
},
"has-ansi": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"has-flag": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"has-value": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"get-value": "^2.0.6",
"has-values": "^1.0.0",
"isobject": "^3.0.0"
},
"dependencies": {
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"has-values": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-number": "^3.0.0",
"kind-of": "^4.0.0"
},
"dependencies": {
"is-number": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"bundled": true,
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"kind-of": {
"version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"hosted-git-info": {
"version": "2.6.0",
"bundled": true,
"dev": true
},
"imurmurhash": {
"version": "0.1.4",
"bundled": true,
"dev": true
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true,
"dev": true
},
"invariant": {
"version": "2.2.4",
"bundled": true,
"dev": true,
"requires": {
"loose-envify": "^1.0.0"
}
},
"invert-kv": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"is-accessor-descriptor": {
"version": "0.1.6",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"is-arrayish": {
"version": "0.2.1",
"bundled": true,
"dev": true
},
"is-buffer": {
"version": "1.1.6",
"bundled": true,
"dev": true
},
"is-builtin-module": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"builtin-modules": "^1.0.0"
}
},
"is-data-descriptor": {
"version": "0.1.4",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"is-descriptor": {
"version": "0.1.6",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
},
"dependencies": {
"kind-of": {
"version": "5.1.0",
"bundled": true,
"dev": true
}
}
},
"is-extendable": {
"version": "0.1.1",
"bundled": true,
"dev": true
},
"is-finite": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-fullwidth-code-point": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"is-number": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"is-odd": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-number": "^4.0.0"
},
"dependencies": {
"is-number": {
"version": "4.0.0",
"bundled": true,
"dev": true
}
}
},
"is-plain-object": {
"version": "2.0.4",
"bundled": true,
"dev": true,
"requires": {
"isobject": "^3.0.1"
},
"dependencies": {
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"is-stream": {
"version": "1.1.0",
"bundled": true,
"dev": true
},
"is-utf8": {
"version": "0.2.1",
"bundled": true,
"dev": true
},
"is-windows": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"isarray": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"isexe": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
},
"istanbul-lib-coverage": {
"version": "1.2.0",
"bundled": true,
"dev": true
},
"istanbul-lib-hook": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"append-transform": "^0.4.0"
}
},
"istanbul-lib-instrument": {
"version": "1.10.1",
"bundled": true,
"dev": true,
"requires": {
"babel-generator": "^6.18.0",
"babel-template": "^6.16.0",
"babel-traverse": "^6.18.0",
"babel-types": "^6.18.0",
"babylon": "^6.18.0",
"istanbul-lib-coverage": "^1.2.0",
"semver": "^5.3.0"
}
},
"istanbul-lib-report": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"requires": {
"istanbul-lib-coverage": "^1.1.2",
"mkdirp": "^0.5.1",
"path-parse": "^1.0.5",
"supports-color": "^3.1.2"
},
"dependencies": {
"supports-color": {
"version": "3.2.3",
"bundled": true,
"dev": true,
"requires": {
"has-flag": "^1.0.0"
}
}
}
},
"istanbul-lib-source-maps": {
"version": "1.2.3",
"bundled": true,
"dev": true,
"requires": {
"debug": "^3.1.0",
"istanbul-lib-coverage": "^1.1.2",
"mkdirp": "^0.5.1",
"rimraf": "^2.6.1",
"source-map": "^0.5.3"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"bundled": true,
"dev": true,
"requires": {
"ms": "2.0.0"
}
}
}
},
"istanbul-reports": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"requires": {
"handlebars": "^4.0.3"
}
},
"js-tokens": {
"version": "3.0.2",
"bundled": true,
"dev": true
},
"jsesc": {
"version": "1.3.0",
"bundled": true,
"dev": true
},
"kind-of": {
"version": "3.2.2",
"bundled": true,
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
},
"lazy-cache": {
"version": "1.0.4",
"bundled": true,
"dev": true,
"optional": true
},
"lcid": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"invert-kv": "^1.0.0"
}
},
"load-json-file": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
"strip-bom": "^2.0.0"
}
},
"locate-path": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
"p-locate": "^2.0.0",
"path-exists": "^3.0.0"
},
"dependencies": {
"path-exists": {
"version": "3.0.0",
"bundled": true,
"dev": true
}
}
},
"lodash": {
"version": "4.17.10",
"bundled": true,
"dev": true
},
"longest": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"loose-envify": {
"version": "1.3.1",
"bundled": true,
"dev": true,
"requires": {
"js-tokens": "^3.0.0"
}
},
"lru-cache": {
"version": "4.1.3",
"bundled": true,
"dev": true,
"requires": {
"pseudomap": "^1.0.2",
"yallist": "^2.1.2"
}
},
"map-cache": {
"version": "0.2.2",
"bundled": true,
"dev": true
},
"map-visit": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"object-visit": "^1.0.0"
}
},
"md5-hex": {
"version": "1.3.0",
"bundled": true,
"dev": true,
"requires": {
"md5-o-matic": "^0.1.1"
}
},
"md5-o-matic": {
"version": "0.1.1",
"bundled": true,
"dev": true
},
"mem": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"mimic-fn": "^1.0.0"
}
},
"merge-source-map": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"source-map": "^0.6.1"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"bundled": true,
"dev": true
}
}
},
"micromatch": {
"version": "3.1.10",
"bundled": true,
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"braces": "^2.3.1",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"extglob": "^2.0.4",
"fragment-cache": "^0.2.1",
"kind-of": "^6.0.2",
"nanomatch": "^1.2.9",
"object.pick": "^1.3.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"mimic-fn": {
"version": "1.2.0",
"bundled": true,
"dev": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "0.0.8",
"bundled": true,
"dev": true
},
"mixin-deep": {
"version": "1.3.1",
"bundled": true,
"dev": true,
"requires": {
"for-in": "^1.0.2",
"is-extendable": "^1.0.1"
},
"dependencies": {
"is-extendable": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-plain-object": "^2.0.4"
}
}
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"requires": {
"minimist": "0.0.8"
}
},
"ms": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"nanomatch": {
"version": "1.2.9",
"bundled": true,
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"fragment-cache": "^0.2.1",
"is-odd": "^2.0.0",
"is-windows": "^1.0.2",
"kind-of": "^6.0.2",
"object.pick": "^1.3.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"arr-diff": {
"version": "4.0.0",
"bundled": true,
"dev": true
},
"array-unique": {
"version": "0.3.2",
"bundled": true,
"dev": true
},
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"normalize-package-data": {
"version": "2.4.0",
"bundled": true,
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
"is-builtin-module": "^1.0.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"npm-run-path": {
"version": "2.0.2",
"bundled": true,
"dev": true,
"requires": {
"path-key": "^2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"dev": true
},
"object-copy": {
"version": "0.1.0",
"bundled": true,
"dev": true,
"requires": {
"copy-descriptor": "^0.1.0",
"define-property": "^0.2.5",
"kind-of": "^3.0.3"
},
"dependencies": {
"define-property": {
"version": "0.2.5",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
}
}
},
"object-visit": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"isobject": "^3.0.0"
},
"dependencies": {
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"object.pick": {
"version": "1.3.0",
"bundled": true,
"dev": true,
"requires": {
"isobject": "^3.0.1"
},
"dependencies": {
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"once": {
"version": "1.4.0",
"bundled": true,
"dev": true,
"requires": {
"wrappy": "1"
}
},
"optimist": {
"version": "0.6.1",
"bundled": true,
"dev": true,
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"os-locale": {
"version": "2.1.0",
"bundled": true,
"dev": true,
"requires": {
"execa": "^0.7.0",
"lcid": "^1.0.0",
"mem": "^1.1.0"
}
},
"p-finally": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"p-limit": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"requires": {
"p-try": "^1.0.0"
}
},
"p-locate": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
"p-limit": "^1.1.0"
}
},
"p-try": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"parse-json": {
"version": "2.2.0",
"bundled": true,
"dev": true,
"requires": {
"error-ex": "^1.2.0"
}
},
"pascalcase": {
"version": "0.1.1",
"bundled": true,
"dev": true
},
"path-exists": {
"version": "2.1.0",
"bundled": true,
"dev": true,
"requires": {
"pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"path-key": {
"version": "2.0.1",
"bundled": true,
"dev": true
},
"path-parse": {
"version": "1.0.5",
"bundled": true,
"dev": true
},
"path-type": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"pify": {
"version": "2.3.0",
"bundled": true,
"dev": true
},
"pinkie": {
"version": "2.0.4",
"bundled": true,
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"pinkie": "^2.0.0"
}
},
"pkg-dir": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"find-up": "^1.0.0"
},
"dependencies": {
"find-up": {
"version": "1.1.2",
"bundled": true,
"dev": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
}
}
},
"posix-character-classes": {
"version": "0.1.1",
"bundled": true,
"dev": true
},
"pseudomap": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"read-pkg": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^1.0.0"
}
},
"read-pkg-up": {
"version": "1.0.1",
"bundled": true,
"dev": true,
"requires": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
},
"dependencies": {
"find-up": {
"version": "1.1.2",
"bundled": true,
"dev": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
}
}
},
"regenerator-runtime": {
"version": "0.11.1",
"bundled": true,
"dev": true
},
"regex-not": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"extend-shallow": "^3.0.2",
"safe-regex": "^1.1.0"
}
},
"repeat-element": {
"version": "1.1.2",
"bundled": true,
"dev": true
},
"repeat-string": {
"version": "1.6.1",
"bundled": true,
"dev": true
},
"repeating": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-finite": "^1.0.0"
}
},
"require-directory": {
"version": "2.1.1",
"bundled": true,
"dev": true
},
"require-main-filename": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"resolve-from": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"resolve-url": {
"version": "0.2.1",
"bundled": true,
"dev": true
},
"ret": {
"version": "0.1.15",
"bundled": true,
"dev": true
},
"right-align": {
"version": "0.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"align-text": "^0.1.1"
}
},
"rimraf": {
"version": "2.6.2",
"bundled": true,
"dev": true,
"requires": {
"glob": "^7.0.5"
}
},
"safe-regex": {
"version": "1.1.0",
"bundled": true,
"dev": true,
"requires": {
"ret": "~0.1.10"
}
},
"semver": {
"version": "5.5.0",
"bundled": true,
"dev": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"set-value": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"is-plain-object": "^2.0.3",
"split-string": "^3.0.1"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"shebang-command": {
"version": "1.2.0",
"bundled": true,
"dev": true,
"requires": {
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true
},
"slide": {
"version": "1.1.6",
"bundled": true,
"dev": true
},
"snapdragon": {
"version": "0.8.2",
"bundled": true,
"dev": true,
"requires": {
"base": "^0.11.1",
"debug": "^2.2.0",
"define-property": "^0.2.5",
"extend-shallow": "^2.0.1",
"map-cache": "^0.2.2",
"source-map": "^0.5.6",
"source-map-resolve": "^0.5.0",
"use": "^3.1.0"
},
"dependencies": {
"define-property": {
"version": "0.2.5",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
},
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"snapdragon-node": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"requires": {
"define-property": "^1.0.0",
"isobject": "^3.0.0",
"snapdragon-util": "^3.0.1"
},
"dependencies": {
"define-property": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
},
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"snapdragon-util": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.2.0"
}
},
"source-map": {
"version": "0.5.7",
"bundled": true,
"dev": true
},
"source-map-resolve": {
"version": "0.5.1",
"bundled": true,
"dev": true,
"requires": {
"atob": "^2.0.0",
"decode-uri-component": "^0.2.0",
"resolve-url": "^0.2.1",
"source-map-url": "^0.4.0",
"urix": "^0.1.0"
}
},
"source-map-url": {
"version": "0.4.0",
"bundled": true,
"dev": true
},
"spawn-wrap": {
"version": "1.4.2",
"bundled": true,
"dev": true,
"requires": {
"foreground-child": "^1.5.6",
"mkdirp": "^0.5.0",
"os-homedir": "^1.0.1",
"rimraf": "^2.6.2",
"signal-exit": "^3.0.2",
"which": "^1.3.0"
}
},
"spdx-correct": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
"version": "2.1.0",
"bundled": true,
"dev": true
},
"spdx-expression-parse": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
"version": "3.0.0",
"bundled": true,
"dev": true
},
"split-string": {
"version": "3.1.0",
"bundled": true,
"dev": true,
"requires": {
"extend-shallow": "^3.0.0"
}
},
"static-extend": {
"version": "0.1.2",
"bundled": true,
"dev": true,
"requires": {
"define-property": "^0.2.5",
"object-copy": "^0.1.0"
},
"dependencies": {
"define-property": {
"version": "0.2.5",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
}
}
},
"string-width": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"requires": {
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^4.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"bundled": true,
"dev": true
},
"strip-ansi": {
"version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "^3.0.0"
}
}
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-bom": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-utf8": "^0.2.0"
}
},
"strip-eof": {
"version": "1.0.0",
"bundled": true,
"dev": true
},
"supports-color": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"test-exclude": {
"version": "4.2.1",
"bundled": true,
"dev": true,
"requires": {
"arrify": "^1.0.1",
"micromatch": "^3.1.8",
"object-assign": "^4.1.0",
"read-pkg-up": "^1.0.1",
"require-main-filename": "^1.0.1"
},
"dependencies": {
"arr-diff": {
"version": "4.0.0",
"bundled": true,
"dev": true
},
"array-unique": {
"version": "0.3.2",
"bundled": true,
"dev": true
},
"braces": {
"version": "2.3.2",
"bundled": true,
"dev": true,
"requires": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
"extend-shallow": "^2.0.1",
"fill-range": "^4.0.0",
"isobject": "^3.0.1",
"repeat-element": "^1.1.2",
"snapdragon": "^0.8.1",
"snapdragon-node": "^2.0.1",
"split-string": "^3.0.2",
"to-regex": "^3.0.1"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"expand-brackets": {
"version": "2.1.4",
"bundled": true,
"dev": true,
"requires": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
"extend-shallow": "^2.0.1",
"posix-character-classes": "^0.1.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"define-property": {
"version": "0.2.5",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
},
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
},
"is-accessor-descriptor": {
"version": "0.1.6",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"bundled": true,
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"is-data-descriptor": {
"version": "0.1.4",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"bundled": true,
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"is-descriptor": {
"version": "0.1.6",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^0.1.6",
"is-data-descriptor": "^0.1.4",
"kind-of": "^5.0.0"
}
},
"kind-of": {
"version": "5.1.0",
"bundled": true,
"dev": true
}
}
},
"extglob": {
"version": "2.0.4",
"bundled": true,
"dev": true,
"requires": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
"expand-brackets": "^2.1.4",
"extend-shallow": "^2.0.1",
"fragment-cache": "^0.2.1",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.1"
},
"dependencies": {
"define-property": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
},
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"fill-range": {
"version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
"repeat-string": "^1.6.1",
"to-regex-range": "^2.1.0"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
}
}
},
"is-accessor-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-data-descriptor": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
},
"is-descriptor": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
"kind-of": "^6.0.2"
}
},
"is-number": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
"version": "3.2.2",
"bundled": true,
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
}
}
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
},
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
},
"micromatch": {
"version": "3.1.10",
"bundled": true,
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
"braces": "^2.3.1",
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"extglob": "^2.0.4",
"fragment-cache": "^0.2.1",
"kind-of": "^6.0.2",
"nanomatch": "^1.2.9",
"object.pick": "^1.3.0",
"regex-not": "^1.0.0",
"snapdragon": "^0.8.1",
"to-regex": "^3.0.2"
}
}
}
},
"to-fast-properties": {
"version": "1.0.3",
"bundled": true,
"dev": true
},
"to-object-path": {
"version": "0.3.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
},
"to-regex": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"requires": {
"define-property": "^2.0.2",
"extend-shallow": "^3.0.2",
"regex-not": "^1.0.2",
"safe-regex": "^1.1.0"
}
},
"to-regex-range": {
"version": "2.1.1",
"bundled": true,
"dev": true,
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
},
"dependencies": {
"is-number": {
"version": "3.0.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^3.0.2"
}
}
}
},
"trim-right": {
"version": "1.0.1",
"bundled": true,
"dev": true
},
"uglify-js": {
"version": "2.8.29",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"source-map": "~0.5.1",
"uglify-to-browserify": "~1.0.0",
"yargs": "~3.10.0"
},
"dependencies": {
"yargs": {
"version": "3.10.0",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"camelcase": "^1.0.2",
"cliui": "^2.1.0",
"decamelize": "^1.0.0",
"window-size": "0.1.0"
}
}
}
},
"uglify-to-browserify": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"union-value": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"arr-union": "^3.1.0",
"get-value": "^2.0.6",
"is-extendable": "^0.1.1",
"set-value": "^0.4.3"
},
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
},
"set-value": {
"version": "0.4.3",
"bundled": true,
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-extendable": "^0.1.1",
"is-plain-object": "^2.0.1",
"to-object-path": "^0.3.0"
}
}
}
},
"unset-value": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"has-value": "^0.3.1",
"isobject": "^3.0.0"
},
"dependencies": {
"has-value": {
"version": "0.3.1",
"bundled": true,
"dev": true,
"requires": {
"get-value": "^2.0.3",
"has-values": "^0.1.4",
"isobject": "^2.0.0"
},
"dependencies": {
"isobject": {
"version": "2.1.0",
"bundled": true,
"dev": true,
"requires": {
"isarray": "1.0.0"
}
}
}
},
"has-values": {
"version": "0.1.4",
"bundled": true,
"dev": true
},
"isobject": {
"version": "3.0.1",
"bundled": true,
"dev": true
}
}
},
"urix": {
"version": "0.1.0",
"bundled": true,
"dev": true
},
"use": {
"version": "3.1.0",
"bundled": true,
"dev": true,
"requires": {
"kind-of": "^6.0.2"
},
"dependencies": {
"kind-of": {
"version": "6.0.2",
"bundled": true,
"dev": true
}
}
},
"validate-npm-package-license": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
}
},
"which": {
"version": "1.3.0",
"bundled": true,
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
},
"which-module": {
"version": "2.0.0",
"bundled": true,
"dev": true
},
"window-size": {
"version": "0.1.0",
"bundled": true,
"dev": true,
"optional": true
},
"wordwrap": {
"version": "0.0.3",
"bundled": true,
"dev": true
},
"wrap-ansi": {
"version": "2.1.0",
"bundled": true,
"dev": true,
"requires": {
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1"
},
"dependencies": {
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"dev": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
}
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true
},
"write-file-atomic": {
"version": "1.3.4",
"bundled": true,
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"slide": "^1.1.5"
}
},
"y18n": {
"version": "3.2.1",
"bundled": true,
"dev": true
},
"yallist": {
"version": "2.1.2",
"bundled": true,
"dev": true
},
"yargs": {
"version": "11.1.0",
"bundled": true,
"dev": true,
"requires": {
"cliui": "^4.0.0",
"decamelize": "^1.1.1",
"find-up": "^2.1.0",
"get-caller-file": "^1.0.1",
"os-locale": "^2.0.0",
"require-directory": "^2.1.1",
"require-main-filename": "^1.0.1",
"set-blocking": "^2.0.0",
"string-width": "^2.0.0",
"which-module": "^2.0.0",
"y18n": "^3.2.1",
"yargs-parser": "^9.0.2"
},
"dependencies": {
"ansi-regex": {
"version": "3.0.0",
"bundled": true,
"dev": true
},
"camelcase": {
"version": "4.1.0",
"bundled": true,
"dev": true
},
"cliui": {
"version": "4.1.0",
"bundled": true,
"dev": true,
"requires": {
"string-width": "^2.1.1",
"strip-ansi": "^4.0.0",
"wrap-ansi": "^2.0.0"
}
},
"strip-ansi": {
"version": "4.0.0",
"bundled": true,
"dev": true,
"requires": {
"ansi-regex": "^3.0.0"
}
},
"yargs-parser": {
"version": "9.0.2",
"bundled": true,
"dev": true,
"requires": {
"camelcase": "^4.1.0"
}
}
}
},
"yargs-parser": {
"version": "8.1.0",
"bundled": true,
"dev": true,
"requires": {
"camelcase": "^4.1.0"
},
"dependencies": {
"camelcase": {
"version": "4.1.0",
"bundled": true,
"dev": true
}
}
}
}
},
"oauth-sign": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"opener": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/opener/-/opener-1.4.3.tgz",
"integrity": "sha1-XG2ixdflgx6P+jlklQ+NZnSskLg=",
"dev": true
},
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
},
"own-or": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz",
"integrity": "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=",
"dev": true
},
"own-or-env": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.1.tgz",
"integrity": "sha512-y8qULRbRAlL6x2+M0vIe7jJbJx/kmUTzYonRAa2ayesR2qWLswninkVyeJe4x3IEXhdgoNodzjQRKAoEs6Fmrw==",
"dev": true,
"requires": {
"own-or": "^1.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
"process-nextick-args": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
"dev": true
},
"pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"punycode": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
},
"readable-stream": {
"version": "2.2.11",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz",
"integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==",
"dev": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.1",
"isarray": "~1.0.0",
"process-nextick-args": "~1.0.6",
"safe-buffer": "~5.0.1",
"string_decoder": "~1.0.0",
"util-deprecate": "~1.0.1"
},
"dependencies": {
"safe-buffer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
"integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=",
"dev": true
}
}
},
"request": {
"version": "2.87.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
"integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.6.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.5",
"extend": "~3.0.1",
"forever-agent": "~0.6.1",
"form-data": "~2.3.1",
"har-validator": "~5.0.3",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.17",
"oauth-sign": "~0.8.2",
"performance-now": "^2.1.0",
"qs": "~6.5.1",
"safe-buffer": "^5.1.1",
"tough-cookie": "~2.3.3",
"tunnel-agent": "^0.6.0",
"uuid": "^3.1.0"
}
},
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"dev": true,
"requires": {
"glob": "^7.0.5"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"signal-exit": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
"integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
"source-map": "^0.6.0"
}
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"sshpk": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
"integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
"dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"tweetnacl": "~0.14.0"
}
},
"stack-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz",
"integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=",
"dev": true
},
"string_decoder": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz",
"integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=",
"dev": true,
"requires": {
"safe-buffer": "~5.0.1"
},
"dependencies": {
"safe-buffer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
"integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=",
"dev": true
}
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"tap": {
"version": "12.0.1",
"resolved": "https://registry.npmjs.org/tap/-/tap-12.0.1.tgz",
"integrity": "sha512-iEJytWaZy8risvfRjuV4+ST+Lrrui/MW2ZCWn01ZaMn0NKFej4+PpBy6bXGOg9+cEGNmI7d3Sdka/zTUZUGidA==",
"dev": true,
"requires": {
"bind-obj-methods": "^2.0.0",
"bluebird": "^3.5.1",
"clean-yaml-object": "^0.1.0",
"color-support": "^1.1.0",
"coveralls": "^3.0.1",
"foreground-child": "^1.3.3",
"fs-exists-cached": "^1.0.0",
"function-loop": "^1.0.1",
"glob": "^7.0.0",
"isexe": "^2.0.0",
"js-yaml": "^3.11.0",
"minipass": "^2.3.0",
"mkdirp": "^0.5.1",
"nyc": "^11.8.0",
"opener": "^1.4.1",
"os-homedir": "^1.0.2",
"own-or": "^1.0.0",
"own-or-env": "^1.0.1",
"rimraf": "^2.6.2",
"signal-exit": "^3.0.0",
"source-map-support": "^0.5.6",
"stack-utils": "^1.0.0",
"tap-mocha-reporter": "^3.0.7",
"tap-parser": "^7.0.0",
"tmatch": "^4.0.0",
"trivial-deferred": "^1.0.1",
"tsame": "^2.0.0",
"write-file-atomic": "^2.3.0",
"yapool": "^1.0.0"
}
},
"tap-mocha-reporter": {
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.7.tgz",
"integrity": "sha512-GHVXJ38C3oPRpM3YUc43JlGdpVZYiKeT1fmAd3HH2+J+ZWwsNAUFvRRdoGsXLw9+gU9o+zXpBqhS/oXyRQYwlA==",
"dev": true,
"requires": {
"color-support": "^1.1.0",
"debug": "^2.1.3",
"diff": "^1.3.2",
"escape-string-regexp": "^1.0.3",
"glob": "^7.0.5",
"js-yaml": "^3.3.1",
"readable-stream": "^2.1.5",
"tap-parser": "^5.1.0",
"unicode-length": "^1.0.0"
},
"dependencies": {
"tap-parser": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz",
"integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==",
"dev": true,
"requires": {
"events-to-array": "^1.0.1",
"js-yaml": "^3.2.7",
"readable-stream": "^2"
}
}
}
},
"tap-parser": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz",
"integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==",
"dev": true,
"requires": {
"events-to-array": "^1.0.1",
"js-yaml": "^3.2.7",
"minipass": "^2.2.0"
}
},
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
"dev": true,
"requires": {
"readable-stream": "^2.1.5",
"xtend": "~4.0.1"
}
},
"tmatch": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz",
"integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==",
"dev": true
},
"tough-cookie": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
"dev": true,
"requires": {
"punycode": "^1.4.1"
}
},
"trivial-deferred": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz",
"integrity": "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=",
"dev": true
},
"tsame": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.0.tgz",
"integrity": "sha512-dAuzcnOPdqZYojylFQzEes95UDjve3HqKrlTCeLZKSDPMTsn3smzHZqsJj/sWD8wOUkg0RD++B11evyLn2+bIw==",
"dev": true
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true,
"optional": true
},
"unicode-length": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz",
"integrity": "sha1-Wtp6f+1RhBpBijKM8UlHisg1irs=",
"dev": true,
"requires": {
"punycode": "^1.3.2",
"strip-ansi": "^3.0.1"
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"uuid": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
"integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
"dev": true
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"which": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
},
"write-file-atomic": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
"integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
"signal-exit": "^3.0.2"
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
},
"yallist": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
"integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
},
"yapool": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz",
"integrity": "sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o=",
"dev": true
}
}
}
minipass-2.3.5/package.json000066400000000000000000000014111336371323700156370ustar00rootroot00000000000000{
"name": "minipass",
"version": "2.3.5",
"description": "minimal implementation of a PassThrough stream",
"main": "index.js",
"dependencies": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
},
"devDependencies": {
"end-of-stream": "^1.4.0",
"tap": "^12.0.1",
"through2": "^2.0.3"
},
"scripts": {
"test": "tap test/*.js --100",
"preversion": "npm test",
"postversion": "npm publish",
"postpublish": "git push origin --all; git push origin --tags"
},
"repository": {
"type": "git",
"url": "git+https://github.com/isaacs/minipass.git"
},
"keywords": [
"passthrough",
"stream"
],
"author": "Isaac Z. Schlueter (http://blog.izs.me/)",
"license": "ISC",
"files": [
"index.js"
]
}
minipass-2.3.5/test/000077500000000000000000000000001336371323700143335ustar00rootroot00000000000000minipass-2.3.5/test/basic.js000066400000000000000000000271651336371323700157650ustar00rootroot00000000000000const MiniPass = require('../')
const t = require('tap')
const EE = require('events').EventEmitter
// Buffer in node 4.x < 4.5.0 doesn't have working Buffer.from
// or Buffer.alloc, and Buffer in node 10 deprecated the ctor.
// .M, this is fine .\^/M..
let B = Buffer
/* istanbul ignore next */
if (!B.alloc) {
B = require('safe-buffer').Buffer
}
t.test('some basic piping and writing', async t => {
let mp = new MiniPass({ encoding: 'base64' })
t.notOk(mp.flowing)
mp.flowing = true
t.notOk(mp.flowing)
t.equal(mp.encoding, 'base64')
mp.encoding = null
t.equal(mp.encoding, null)
t.equal(mp.readable, true)
t.equal(mp.writable, true)
t.equal(mp.write('hello'), false)
let dest = new MiniPass()
let sawDestData = false
dest.once('data', chunk => {
sawDestData = true
t.isa(chunk, B)
})
t.equal(mp.pipe(dest), dest, 'pipe returns dest')
t.ok(sawDestData, 'got data becasue pipe() flushes')
t.equal(mp.write('bye'), true, 'write() returns true when flowing')
dest.pause()
t.equal(mp.write('after pause'), false, 'false when dest is paused')
t.equal(mp.write('after false'), false, 'false when not flowing')
t.equal(dest.buffer.length, 1, '1 item is buffered in dest')
t.equal(mp.buffer.length, 1, '1 item buffered in src')
dest.resume()
t.equal(dest.buffer.length, 0, 'nothing is buffered in dest')
t.equal(mp.buffer.length, 0, 'nothing buffered in src')
})
t.test('unicode splitting', async t => {
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'utf8' })
t.plan(2)
t.equal(mp.encoding, 'utf8')
mp.on('data', chunk => {
t.equal(chunk, butterfly)
})
const butterbuf = B.from([0xf0, 0x9f, 0xa6, 0x8b])
mp.write(butterbuf.slice(0, 1))
mp.write(butterbuf.slice(1, 2))
mp.write(butterbuf.slice(2, 3))
mp.write(butterbuf.slice(3, 4))
mp.end()
})
t.test('unicode splitting with setEncoding', async t => {
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'hex' })
t.plan(4)
t.equal(mp.encoding, 'hex')
mp.setEncoding('hex')
t.equal(mp.encoding, 'hex')
mp.setEncoding('utf8')
t.equal(mp.encoding, 'utf8')
mp.on('data', chunk => {
t.equal(chunk, butterfly)
})
const butterbuf = B.from([0xf0, 0x9f, 0xa6, 0x8b])
mp.write(butterbuf.slice(0, 1))
mp.write(butterbuf.slice(1, 2))
mp.write(butterbuf.slice(2, 3))
mp.write(butterbuf.slice(3, 4))
mp.end()
})
t.test('base64 -> utf8 piping', t => {
t.plan(1)
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'base64' })
const dest = new MiniPass({ encoding: 'utf8' })
mp.pipe(dest)
let out = ''
dest.on('data', c => out += c)
dest.on('end', _ =>
t.equal(B.from(out, 'base64').toString('utf8'), butterfly))
mp.write(butterfly)
mp.end()
})
t.test('utf8 -> base64 piping', t => {
t.plan(1)
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'utf8' })
const dest = new MiniPass({ encoding: 'base64' })
mp.pipe(dest)
let out = ''
dest.on('data', c => out += c)
dest.on('end', _ =>
t.equal(B.from(out, 'base64').toString('utf8'), butterfly))
mp.write(butterfly)
mp.end()
})
t.test('read method', async t => {
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'utf8' })
mp.on('data', c => t.equal(c, butterfly))
mp.pause()
mp.write(B.from(butterfly))
t.equal(mp.read(5), null)
t.equal(mp.read(0), null)
t.same(mp.read(2), butterfly)
})
t.test('read with no args', async t => {
t.test('buffer -> string', async t => {
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'utf8' })
mp.on('data', c => t.equal(c, butterfly))
mp.pause()
const butterbuf = B.from(butterfly)
mp.write(butterbuf.slice(0, 2))
mp.write(butterbuf.slice(2))
t.same(mp.read(), butterfly)
t.equal(mp.read(), null)
})
t.test('buffer -> buffer', async t => {
const butterfly = B.from('🦋')
const mp = new MiniPass()
mp.on('data', c => t.same(c, butterfly))
mp.pause()
mp.write(butterfly.slice(0, 2))
mp.write(butterfly.slice(2))
t.same(mp.read(), butterfly)
t.equal(mp.read(), null)
})
t.test('string -> buffer', async t => {
const butterfly = '🦋'
const butterbuf = B.from(butterfly)
const mp = new MiniPass()
mp.on('data', c => t.same(c, butterbuf))
mp.pause()
mp.write(butterfly)
t.same(mp.read(), butterbuf)
t.equal(mp.read(), null)
})
t.test('string -> string', async t => {
const butterfly = '🦋'
const mp = new MiniPass({ encoding: 'utf8' })
mp.on('data', c => t.equal(c, butterfly))
mp.pause()
mp.write(butterfly[0])
mp.write(butterfly[1])
t.same(mp.read(), butterfly)
t.equal(mp.read(), null)
})
})
t.test('partial read', async t => {
const butterfly = '🦋'
const mp = new MiniPass()
const butterbuf = B.from(butterfly)
mp.write(butterbuf.slice(0, 1))
mp.write(butterbuf.slice(1, 2))
mp.write(butterbuf.slice(2, 3))
mp.write(butterbuf.slice(3, 4))
t.equal(mp.read(5), null)
t.equal(mp.read(0), null)
t.same(mp.read(2), butterbuf.slice(0, 2))
t.same(mp.read(2), butterbuf.slice(2, 4))
})
t.test('write after end', async t => {
const mp = new MiniPass()
let sawEnd = false
mp.on('end', _ => sawEnd = true)
mp.end()
t.throws(_ => mp.write('nope'))
t.notOk(sawEnd, 'should not get end event yet (not flowing)')
mp.resume()
t.ok(sawEnd, 'should get end event after resume()')
})
t.test('write cb', async t => {
const mp = new MiniPass()
let calledCb = false
mp.write('ok', () => calledCb = true)
t.ok(calledCb)
})
t.test('end with chunk', async t => {
let out = ''
const mp = new MiniPass({ encoding: 'utf8' })
let sawEnd = false
mp.prependListener('end', _ => sawEnd = true)
mp.addListener('data', c => out += c)
let endCb = false
mp.end('ok', _ => endCb = true)
t.equal(out, 'ok')
t.ok(sawEnd, 'should see end event')
t.ok(endCb, 'end cb should get called')
})
t.test('no drain if could not entirely drain on resume', async t => {
const mp = new MiniPass()
const dest = new MiniPass({ encoding: 'buffer' })
t.equal(mp.write('foo'), false)
t.equal(mp.write('bar'), false)
t.equal(mp.write('baz'), false)
t.equal(mp.write('qux'), false)
mp.on('drain', _ => t.fail('should not drain'))
mp.pipe(dest)
})
t.test('end with chunk pending', async t => {
const mp = new MiniPass()
t.equal(mp.write('foo'), false)
t.equal(mp.write('626172', 'hex'), false)
t.equal(mp.write('baz'), false)
t.equal(mp.write('qux'), false)
let sawEnd = false
mp.on('end', _ => sawEnd = true)
let endCb = false
mp.end(_ => endCb = true)
t.notOk(endCb, 'endcb should not happen yet')
t.notOk(sawEnd, 'should not see end yet')
let out = ''
mp.on('data', c => out += c)
t.ok(sawEnd, 'see end after flush')
t.ok(endCb, 'end cb after flush')
t.equal(out, 'foobarbazqux')
})
t.test('pipe to stderr does not throw', t => {
const spawn = require('child_process').spawn
const module = JSON.stringify(require.resolve('../'))
const fs = require('fs')
const file = __dirname + '/prog.js'
fs.writeFileSync(file, `
const MP = require(${module})
const mp = new MP()
mp.pipe(process.stderr)
mp.end("hello")
`)
let err = ''
return new Promise(res => {
const child = spawn(process.execPath, [file])
child.stderr.on('data', c => err += c)
child.on('close', (code, signal) => {
t.equal(code, 0)
t.equal(signal, null)
t.equal(err, 'hello')
fs.unlinkSync(file)
res()
})
})
})
t.test('emit works with many args', t => {
const mp = new MiniPass()
t.plan(2)
mp.on('foo', function (a, b, c, d, e, f, g) {
t.same([a,b,c,d,e,f,g], [1,2,3,4,5,6,7])
t.equal(arguments.length, 7)
})
mp.emit('foo', 1, 2, 3, 4, 5, 6, 7)
})
t.test('emit drain on resume, even if no flush', t => {
const mp = new MiniPass()
mp.encoding = 'utf8'
const chunks = []
class SlowStream extends EE {
write (chunk) {
chunks.push(chunk)
setTimeout(_ => this.emit('drain'))
return false
}
end () { return this.write() }
}
const ss = new SlowStream()
mp.pipe(ss)
t.ok(mp.flowing, 'flowing, because piped')
t.equal(mp.write('foo'), false, 'write() returns false, backpressure')
t.equal(mp.buffer.length, 0, 'buffer len is 0')
t.equal(mp.flowing, false, 'flowing false, awaiting drain')
t.same(chunks, ['foo'], 'chunk made it through')
mp.once('drain', _ => {
t.pass('received mp drain event')
t.end()
})
})
t.test('save close for end', t => {
const mp = new MiniPass()
let ended = false
mp.on('close', _ => {
t.equal(ended, true, 'end before close')
t.end()
})
mp.on('end', _ => {
t.equal(ended, false, 'only end once')
ended = true
})
mp.emit('close')
mp.end('foo')
t.equal(ended, false, 'no end until flushed')
mp.resume()
})
t.test('eos works', t => {
const eos = require('end-of-stream')
const mp = new MiniPass()
eos(mp, er => {
if (er)
throw er
t.end()
})
mp.emit('close')
mp.end('foo')
mp.resume()
})
t.test('bufferLength property', t => {
const eos = require('end-of-stream')
const mp = new MiniPass()
mp.write('a')
mp.write('a')
mp.write('a')
mp.write('a')
mp.write('a')
mp.write('a')
t.equal(mp.bufferLength, 6)
t.equal(mp.read(7), null)
t.equal(mp.read(3).toString(), 'aaa')
t.equal(mp.bufferLength, 3)
t.equal(mp.read().toString(), 'aaa')
t.equal(mp.bufferLength, 0)
t.end()
})
t.test('emit resume event on resume', t => {
const mp = new MiniPass()
t.plan(3)
mp.on('resume', _ => t.pass('got resume event'))
mp.end('asdf')
t.equal(mp.flowing, false, 'not flowing yet')
mp.resume()
t.equal(mp.flowing, true, 'flowing after resume')
})
t.test('objectMode', t => {
const mp = new MiniPass({ objectMode: true })
const a = { a: 1 }
const b = { b: 1 }
const out = []
mp.on('data', c => out.push(c))
mp.on('end', _ => {
t.equal(out.length, 2)
t.equal(out[0], a)
t.equal(out[1], b)
t.same(out, [ { a: 1 }, { b: 1 } ], 'objs not munged')
t.end()
})
t.ok(mp.write(a))
t.ok(mp.write(b))
mp.end()
})
t.test('objectMode no encoding', t => {
const mp = new MiniPass({
objectMode: true,
encoding: 'utf8'
})
t.equal(mp.encoding, null)
const a = { a: 1 }
const b = { b: 1 }
const out = []
mp.on('data', c => out.push(c))
mp.on('end', _ => {
t.equal(out.length, 2)
t.equal(out[0], a)
t.equal(out[1], b)
t.same(out, [ { a: 1 }, { b: 1 } ], 'objs not munged')
t.end()
})
t.ok(mp.write(a))
t.ok(mp.write(b))
mp.end()
})
t.test('objectMode read() and buffering', t => {
const mp = new MiniPass({ objectMode: true })
const a = { a: 1 }
const b = { b: 1 }
t.notOk(mp.write(a))
t.notOk(mp.write(b))
t.equal(mp.read(2), a)
t.equal(mp.read(), b)
t.end()
})
t.test('set encoding in object mode throws', async t =>
t.throws(_ => new MiniPass({ objectMode: true }).encoding = 'utf8',
new Error('cannot set encoding in objectMode')))
t.test('set encoding again throws', async t =>
t.throws(_ => {
const mp = new MiniPass({ encoding: 'hex' })
mp.write('ok')
mp.encoding = 'utf8'
}, new Error('cannot change encoding')))
t.test('set encoding with existing buffer', async t => {
const mp = new MiniPass()
const butterfly = '🦋'
const butterbuf = B.from(butterfly)
mp.write(butterbuf.slice(0, 1))
mp.write(butterbuf.slice(1, 2))
mp.setEncoding('utf8')
mp.write(butterbuf.slice(2))
t.equal(mp.read(), butterfly)
})
t.test('end:false', async t => {
t.plan(1)
const mp = new MiniPass({ encoding: 'utf8' })
const d = new MiniPass({ encoding: 'utf8' })
d.end = () => t.threw(new Error('no end no exit no way out'))
d.on('data', c => t.equal(c, 'this is fine'))
mp.pipe(d, { end: false })
mp.end('this is fine')
})
minipass-2.3.5/test/collect.js000066400000000000000000000010721336371323700163160ustar00rootroot00000000000000'use strict'
const t = require('tap')
const MP = require('../index.js')
t.test('basic', async t => {
const mp = new MP()
let i = 5
const interval = setInterval(() => {
if (i --> 0)
mp.write('foo\n')
else {
clearInterval(interval)
mp.end()
}
})
mp.setEncoding('utf8')
const all = await mp.collect()
t.same(all, ['foo\n','foo\n','foo\n','foo\n','foo\n'])
})
t.test('error', async t => {
const mp = new MP()
const poop = new Error('poop')
setTimeout(() => mp.emit('error', poop))
await t.rejects(mp.collect(), poop)
})
minipass-2.3.5/test/empty-end.js000066400000000000000000000016021336371323700165720ustar00rootroot00000000000000const t = require('tap')
const MP = require('../')
t.test('emit end on resume', async t => {
const list = []
const mp = new MP()
mp.on('end', _ => list.push('end'))
mp.end()
t.notOk(mp.emittedEnd)
list.push('called end')
mp.resume()
t.ok(mp.emittedEnd)
list.push('called resume')
t.same(list, ['called end', 'end', 'called resume'])
})
t.test('emit end on read()', async t => {
const list = []
const mp = new MP()
mp.on('end', _ => list.push('end'))
mp.end()
list.push('called end')
mp.read()
list.push('called read()')
t.same(list, ['called end', 'end', 'called read()'])
})
t.test('emit end on data handler', async t => {
const list = []
const mp = new MP()
mp.on('end', _ => list.push('end'))
mp.end()
list.push('called end')
mp.on('data', _=>_)
list.push('added data handler')
t.same(list, ['called end', 'end', 'added data handler'])
})
minipass-2.3.5/test/end-missed.js000066400000000000000000000004121336371323700167160ustar00rootroot00000000000000'use strict'
const t = require('tap')
const MP = require('../')
t.test('end is not missed if listened to after end', t => {
t.plan(1)
const mp = new MP()
mp.end('foo')
let str = ''
mp.on('data', d => str += d)
mp.on('end', () => t.equal(str, 'foo'))
})
minipass-2.3.5/test/end-twice.js000066400000000000000000000016761336371323700165620ustar00rootroot00000000000000'use strict'
const t = require('tap')
const MP = require('../')
t.test('organic', t => {
const butterfly = Buffer.from([0x61, 0xf0, 0x9f, 0xa6, 0x8b, 0xf0])
const mp = new MP({ encoding: 'utf8' })
let sawEnd = 0
mp.on('end', () =>
t.equal(sawEnd++, 0, 'should not have seen the end yet'))
mp.once('data', () => {
mp.once('data', () => {
mp.once('data', () => mp.end())
mp.end()
})
mp.end(butterfly.slice(3))
})
mp.end(butterfly.slice(0, 3))
t.equal(sawEnd, 1, 'should see end exactly once')
t.end()
})
t.test('manufactured', t => {
// *should* already be impossible, but just to be even more
// deliberate, in case that wasn't the only way it could happen
const mp = new MP()
let sawEnd = 0
mp.on('end', () => {
t.equal(sawEnd++, 0, 'should not have seen the end yet')
mp.emit('end')
})
mp.emit('end')
mp.emit('end')
t.equal(sawEnd, 1, 'should see end exactly once')
t.end()
})
minipass-2.3.5/test/iteration-unsupported.js000066400000000000000000000005511336371323700212560ustar00rootroot00000000000000'use strict'
const t = require('tap')
process.env._MP_NO_ITERATOR_SYMBOLS_ = '1'
const MP = require('../index.js')
const mp = new MP
mp.write('foo')
setTimeout(() => mp.end())
t.throws(() => {
for (let x of mp) {
t.fail('should not be iterable')
}
})
t.rejects(async () => {
for await (let x of mp) {
t.fail('should not be async iterable')
}
})
minipass-2.3.5/test/iteration.js000066400000000000000000000137101336371323700166710ustar00rootroot00000000000000'use strict'
const t = require('tap')
const MP = require('../index.js')
t.test('sync iteration', t => {
const cases = {
'buffer': [ null, [
Buffer.from('ab'),
Buffer.from('cd'),
Buffer.from('e')
]],
'string': [ { encoding: 'utf8' }, ['ab', 'cd', 'e']],
'object': [ { objectMode: true }, ['a', 'b', 'c', 'd', 'e']]
}
const runTest = (c, opt, expect) => {
t.test(c, t => {
const result = []
const mp = new MP(opt)
mp.write('a')
mp.write('b')
for (let letter of mp) {
result.push(letter)
}
mp.write('c')
mp.write('d')
result.push.call(result, ...mp)
mp.write('e')
mp.end()
for (let letter of mp) {
result.push(letter) // e
}
for (let letter of mp) {
result.push(letter) // nothing
}
t.match(result, expect)
t.end()
})
}
for (let c in cases) {
runTest(c, cases[c][0], cases[c][1])
}
t.end()
})
t.test('async iteration', t => {
const expect = [
'start\n',
'foo\n',
'foo\n',
'foo\n',
'foo\n',
'foo\n',
'bar\n'
]
t.test('end immediate', async t => {
const mp = new MP({ encoding: 'utf8' })
let i = 5
mp.write('start\n')
const inter = setInterval(() => {
if (i --> 0)
mp.write(Buffer.from('foo\n', 'utf8'))
else {
mp.end('bar\n')
clearInterval(inter)
}
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result, expect)
})
t.test('end later', async t => {
const mp = new MP({ encoding: 'utf8' })
let i = 5
mp.write('start\n')
const inter = setInterval(() => {
if (i --> 0)
mp.write(Buffer.from('foo\n', 'utf8'))
else {
mp.write('bar\n')
setTimeout(() => mp.end())
clearInterval(inter)
}
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result, expect)
})
t.test('multiple chunks at once, asyncly', async t => {
const mp = new MP()
let i = 6
const write = () => {
if (i === 6)
mp.write(Buffer.from('start\n', 'utf8'))
else if (i > 0)
mp.write('foo\n')
else if (i === 0) {
mp.end('bar\n')
clearInterval(inter)
}
i--
}
const inter = setInterval(() => {
write()
write()
write()
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result.map(x => x.toString()).join(''), expect.join(''))
})
t.test('multiple object chunks at once, asyncly', async t => {
const mp = new MP({ objectMode: true })
let i = 6
const write = () => {
if (i === 6)
mp.write(['start\n'])
else if (i > 0)
mp.write(['foo\n'])
else if (i === 0) {
mp.end(['bar\n'])
clearInterval(inter)
}
i--
}
const inter = setInterval(() => {
write()
write()
write()
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result.map(x => x.join('')).join(''), expect.join(''))
})
t.test('all chunks at once, asyncly', async t => {
const mp = new MP()
setTimeout(() => {
mp.write(Buffer.from('start\n', 'utf8'))
for (let i = 0; i < 5; i++) {
mp.write('foo\n')
}
mp.end('bar\n')
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result.map(x => x.toString()).join(''), expect.join(''))
})
t.test('all object chunks at once, asyncly', async t => {
const mp = new MP({ objectMode: true })
setTimeout(() => {
mp.write(['start\n'])
for (let i = 0; i < 5; i++) {
mp.write(['foo\n'])
}
mp.end(['bar\n'])
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result.map(x => x.join('')).join(''), expect.join(''))
})
t.test('all object chunks at once, syncly', async t => {
const mp = new MP({ objectMode: true })
mp.write(['start\n'])
for (let i = 0; i < 5; i++) {
mp.write(['foo\n'])
}
mp.end(['bar\n'])
const result = []
for await (let x of mp)
result.push(x)
t.same(result.map(x => x.join('')).join(''), expect.join(''))
})
t.test('pipe in all at once', async t => {
const inp = new MP({ encoding: 'utf8' })
const mp = new MP({ encoding: 'utf8' })
inp.pipe(mp)
let i = 5
inp.write('start\n')
const inter = setInterval(() => {
if (i --> 0)
inp.write(Buffer.from('foo\n', 'utf8'))
else {
inp.end('bar\n')
clearInterval(inter)
}
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result, expect)
})
t.test('pipe in multiple object chunks at once, asyncly', async t => {
const mp = new MP({ objectMode: true })
const inp = new MP({ objectMode: true })
inp.pipe(mp)
let i = 5
inp.write(['start\n'])
const write = () => {
if (i > 0)
inp.write(['foo\n'])
else if (i === 0) {
inp.end(['bar\n'])
clearInterval(inter)
}
i--
}
const inter = setInterval(() => {
write()
write()
write()
})
const result = []
for await (let x of mp)
result.push(x)
t.same(result.map(x => x.join('')).join(''), expect.join(''))
})
t.test('throw error', async t => {
const mp = new MP()
const poop = new Error('poop')
setTimeout(() => {
mp.read = () => { throw poop }
mp.end('this is fine')
})
const result = []
const run = async () => {
for await (let x of mp) {
result.push(x)
}
}
await t.rejects(run, poop)
})
t.test('emit error', async t => {
const mp = new MP()
const poop = new Error('poop')
setTimeout(() => mp.emit('error', poop))
const result = []
const run = async () => {
for await (let x of mp) {
result.push(x)
}
}
await t.rejects(run, poop)
})
t.end()
})