pax_global_header00006660000000000000000000000064132166311360014514gustar00rootroot0000000000000052 comment=e10e489a9d7a41b52dccacb39bb22e078835ebed minizlib-1.1.0/000077500000000000000000000000001321663113600133305ustar00rootroot00000000000000minizlib-1.1.0/.gitignore000066400000000000000000000000611321663113600153150ustar00rootroot00000000000000node_modules/ coverage/ .nyc_output/ nyc_output/ minizlib-1.1.0/.travis.yml000066400000000000000000000001501321663113600154350ustar00rootroot00000000000000language: node_js sudo: false node_js: - 6 - 8 - 9 cache: directories: - /Users/isaacs/.npm minizlib-1.1.0/LICENSE000066400000000000000000000024211321663113600143340ustar00rootroot00000000000000Minizlib was created by Isaac Z. Schlueter. It is a derivative work of the Node.js project. """ Copyright Isaac Z. Schlueter and Contributors Copyright Node.js contributors. All rights reserved. Copyright Joyent, Inc. and other Node contributors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ minizlib-1.1.0/README.md000066400000000000000000000035121321663113600146100ustar00rootroot00000000000000# minizlib A tiny fast zlib stream built on [minipass](http://npm.im/minipass) and Node.js's zlib binding. This module was created to serve the needs of [node-tar](http://npm.im/tar) v2. If your needs are different, then it may not be for you. ## How does this differ from the streams in `require('zlib')`? First, there are no convenience methods to compress or decompress a buffer. If you want those, use the built-in `zlib` module. This is only streams. This module compresses and decompresses the data as fast as you feed it in. It is synchronous, and runs on the main process thread. Zlib operations can be high CPU, but they're very fast, and doing it this way means much less bookkeeping and artificial deferral. Node's built in zlib streams are built on top of `stream.Transform`. They do the maximally safe thing with respect to consistent asynchrony, buffering, and backpressure. This module _does_ support backpressure, and will buffer output chunks that are not consumed, but is less of a mediator between the input and output. There is no high or low watermarks, no state objects, and so artificial async deferrals. It will not protect you from Zalgo. If you write, data will be emitted right away. If you write everything synchronously in one tick, and you are listening to the `data` event to consume it, then it'll all be emitted right away in that same tick. If you want data to be emitted in the next tick, then write it in the next tick. It is thus the responsibility of the reader and writer to manage their own consumption and process execution flow. The goal is to compress and decompress as fast as possible, even for files that are too large to store all in one buffer. The API is very similar to the built-in zlib module. There are classes that you instantiate with `new` and they are streams that can be piped together. minizlib-1.1.0/constants.js000066400000000000000000000015631321663113600157070ustar00rootroot00000000000000module.exports = Object.freeze({ Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_MEM_ERROR: -4, Z_BUF_ERROR: -5, Z_VERSION_ERROR: -6, Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, ZLIB_VERNUM: 4736, DEFLATE: 1, INFLATE: 2, GZIP: 3, GUNZIP: 4, DEFLATERAW: 5, INFLATERAW: 6, UNZIP: 7, Z_MIN_WINDOWBITS: 8, Z_MAX_WINDOWBITS: 15, Z_DEFAULT_WINDOWBITS: 15, Z_MIN_CHUNK: 64, Z_MAX_CHUNK: Infinity, Z_DEFAULT_CHUNK: 16384, Z_MIN_MEMLEVEL: 1, Z_MAX_MEMLEVEL: 9, Z_DEFAULT_MEMLEVEL: 8, Z_MIN_LEVEL: -1, Z_MAX_LEVEL: 9, Z_DEFAULT_LEVEL: -1 }) minizlib-1.1.0/index.js000066400000000000000000000231651321663113600150040ustar00rootroot00000000000000'use strict' const assert = require('assert') const Buffer = require('buffer').Buffer const binding = process.binding('zlib') const constants = exports.constants = require('./constants.js') const MiniPass = require('minipass') class ZlibError extends Error { constructor (msg, errno) { super('zlib: ' + msg) this.errno = errno this.code = codes.get(errno) } get name () { return 'ZlibError' } } // translation table for return codes. const codes = new Map([ [constants.Z_OK, 'Z_OK'], [constants.Z_STREAM_END, 'Z_STREAM_END'], [constants.Z_NEED_DICT, 'Z_NEED_DICT'], [constants.Z_ERRNO, 'Z_ERRNO'], [constants.Z_STREAM_ERROR, 'Z_STREAM_ERROR'], [constants.Z_DATA_ERROR, 'Z_DATA_ERROR'], [constants.Z_MEM_ERROR, 'Z_MEM_ERROR'], [constants.Z_BUF_ERROR, 'Z_BUF_ERROR'], [constants.Z_VERSION_ERROR, 'Z_VERSION_ERROR'] ]) const validFlushFlags = new Set([ constants.Z_NO_FLUSH, constants.Z_PARTIAL_FLUSH, constants.Z_SYNC_FLUSH, constants.Z_FULL_FLUSH, constants.Z_FINISH, constants.Z_BLOCK ]) const strategies = new Set([ constants.Z_FILTERED, constants.Z_HUFFMAN_ONLY, constants.Z_RLE, constants.Z_FIXED, constants.Z_DEFAULT_STRATEGY ]) // the Zlib class they all inherit from // This thing manages the queue of requests, and returns // true or false if there is anything in the queue when // you call the .write() method. const _opts = Symbol('opts') const _chunkSize = Symbol('chunkSize') const _flushFlag = Symbol('flushFlag') const _finishFlush = Symbol('finishFlush') const _handle = Symbol('handle') const _hadError = Symbol('hadError') const _buffer = Symbol('buffer') const _offset = Symbol('offset') const _level = Symbol('level') const _strategy = Symbol('strategy') const _ended = Symbol('ended') const _writeState = Symbol('writeState') class Zlib extends MiniPass { constructor (opts, mode) { super(opts) this[_ended] = false this[_opts] = opts = opts || {} this[_chunkSize] = opts.chunkSize || constants.Z_DEFAULT_CHUNK if (opts.flush && !validFlushFlags.has(opts.flush)) { throw new TypeError('Invalid flush flag: ' + opts.flush) } if (opts.finishFlush && !validFlushFlags.has(opts.finishFlush)) { throw new TypeError('Invalid flush flag: ' + opts.finishFlush) } this[_flushFlag] = opts.flush || constants.Z_NO_FLUSH this[_finishFlush] = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : constants.Z_FINISH if (opts.chunkSize) { if (opts.chunkSize < constants.Z_MIN_CHUNK) { throw new RangeError('Invalid chunk size: ' + opts.chunkSize) } } if (opts.windowBits) { if (opts.windowBits < constants.Z_MIN_WINDOWBITS || opts.windowBits > constants.Z_MAX_WINDOWBITS) { throw new RangeError('Invalid windowBits: ' + opts.windowBits) } } if (opts.level) { if (opts.level < constants.Z_MIN_LEVEL || opts.level > constants.Z_MAX_LEVEL) { throw new RangeError('Invalid compression level: ' + opts.level) } } if (opts.memLevel) { if (opts.memLevel < constants.Z_MIN_MEMLEVEL || opts.memLevel > constants.Z_MAX_MEMLEVEL) { throw new RangeError('Invalid memLevel: ' + opts.memLevel) } } if (opts.strategy && !(strategies.has(opts.strategy))) throw new TypeError('Invalid strategy: ' + opts.strategy) if (opts.dictionary) { if (!(opts.dictionary instanceof Buffer)) { throw new TypeError('Invalid dictionary: it should be a Buffer instance') } } this[_handle] = new binding.Zlib(mode) this[_hadError] = false this[_handle].onerror = (message, errno) => { // there is no way to cleanly recover. // continuing only obscures problems. this.close() this[_hadError] = true const error = new ZlibError(message, errno) this.emit('error', error) } const level = typeof opts.level === 'number' ? opts.level : constants.Z_DEFAULT_COMPRESSION var strategy = typeof opts.strategy === 'number' ? opts.strategy : constants.Z_DEFAULT_STRATEGY this[_writeState] = new Uint32Array(2); const window = opts.windowBits || constants.Z_DEFAULT_WINDOWBITS const memLevel = opts.memLevel || constants.Z_DEFAULT_MEMLEVEL // API changed in node v9 /* istanbul ignore next */ if (/^v[0-8]\./.test(process.version)) { this[_handle].init(window, level, memLevel, strategy, opts.dictionary) } else { this[_handle].init(window, level, memLevel, strategy, this[_writeState], () => {}, opts.dictionary) } this[_buffer] = Buffer.allocUnsafe(this[_chunkSize]) this[_offset] = 0 this[_level] = level this[_strategy] = strategy this.once('end', this.close) } close () { if (this[_handle]) { this[_handle].close() this[_handle] = null this.emit('close') } } params (level, strategy) { if (!this[_handle]) throw new Error('cannot switch params when binding is closed') // no way to test this without also not supporting params at all /* istanbul ignore if */ if (!this[_handle].params) throw new Error('not supported in this implementation') if (level < constants.Z_MIN_LEVEL || level > constants.Z_MAX_LEVEL) { throw new RangeError('Invalid compression level: ' + level) } if (!(strategies.has(strategy))) throw new TypeError('Invalid strategy: ' + strategy) if (this[_level] !== level || this[_strategy] !== strategy) { this.flush(constants.Z_SYNC_FLUSH) assert(this[_handle], 'zlib binding closed') this[_handle].params(level, strategy) /* istanbul ignore else */ if (!this[_hadError]) { this[_level] = level this[_strategy] = strategy } } } reset () { assert(this[_handle], 'zlib binding closed') return this[_handle].reset() } flush (kind) { if (kind === undefined) kind = constants.Z_FULL_FLUSH if (this.ended) return const flushFlag = this[_flushFlag] this[_flushFlag] = kind this.write(Buffer.alloc(0)) this[_flushFlag] = flushFlag } end (chunk, encoding, cb) { if (chunk) this.write(chunk, encoding) this.flush(this[_finishFlush]) this[_ended] = true return super.end(null, null, cb) } get ended () { return this[_ended] } write (chunk, encoding, cb) { // process the chunk using the sync process // then super.write() all the outputted chunks if (typeof encoding === 'function') cb = encoding, encoding = 'utf8' if (typeof chunk === 'string') chunk = new Buffer(chunk, encoding) let availInBefore = chunk && chunk.length let availOutBefore = this[_chunkSize] - this[_offset] let inOff = 0 // the offset of the input buffer const flushFlag = this[_flushFlag] let writeReturn = true assert(this[_handle], 'zlib binding closed') do { let res = this[_handle].writeSync( flushFlag, chunk, // in inOff, // in_off availInBefore, // in_len this[_buffer], // out this[_offset], //out_off availOutBefore // out_len ) if (this[_hadError]) break // API changed in v9 /* istanbul ignore next */ let availInAfter = res ? res[0] : this[_writeState][1] /* istanbul ignore next */ let availOutAfter = res ? res[1] : this[_writeState][0] const have = availOutBefore - availOutAfter assert(have >= 0, 'have should not go down') if (have > 0) { const out = this[_buffer].slice( this[_offset], this[_offset] + have ) this[_offset] += have // serve some output to the consumer. writeReturn = super.write(out) && writeReturn } // exhausted the output buffer, or used all the input create a new one. if (availOutAfter === 0 || this[_offset] >= this[_chunkSize]) { availOutBefore = this[_chunkSize] this[_offset] = 0 this[_buffer] = Buffer.allocUnsafe(this[_chunkSize]) } if (availOutAfter === 0) { // Not actually done. Need to reprocess. // Also, update the availInBefore to the availInAfter value, // so that if we have to hit it a third (fourth, etc.) time, // it'll have the correct byte counts. inOff += (availInBefore - availInAfter) availInBefore = availInAfter continue } break } while (!this[_hadError]) if (cb) cb() return writeReturn } } // minimal 2-byte header class Deflate extends Zlib { constructor (opts) { super(opts, constants.DEFLATE) } } class Inflate extends Zlib { constructor (opts) { super(opts, constants.INFLATE) } } // gzip - bigger header, same deflate compression class Gzip extends Zlib { constructor (opts) { super(opts, constants.GZIP) } } class Gunzip extends Zlib { constructor (opts) { super(opts, constants.GUNZIP) } } // raw - no header class DeflateRaw extends Zlib { constructor (opts) { super(opts, constants.DEFLATERAW) } } class InflateRaw extends Zlib { constructor (opts) { super(opts, constants.INFLATERAW) } } // auto-detect header. class Unzip extends Zlib { constructor (opts) { super(opts, constants.UNZIP) } } exports.Deflate = Deflate exports.Inflate = Inflate exports.Gzip = Gzip exports.Gunzip = Gunzip exports.DeflateRaw = DeflateRaw exports.InflateRaw = InflateRaw exports.Unzip = Unzip minizlib-1.1.0/package-lock.json000066400000000000000000002233501321663113600165510ustar00rootroot00000000000000{ "name": "minizlib", "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { "sprintf-js": "1.0.3" } }, "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": "0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "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.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, "aws4": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "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.5" } }, "bind-obj-methods": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-1.0.0.tgz", "integrity": "sha1-T1l5ysFXk633DkiBYeRj4gnKUJw=", "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 }, "boom": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { "hoek": "2.16.3" } }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", "has-ansi": "2.0.0", "strip-ansi": "3.0.1", "supports-color": "2.0.0" } }, "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 }, "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.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "dev": true, "requires": { "delayed-stream": "1.0.0" } }, "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "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": "2.13.3", "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", "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" }, "dependencies": { "js-yaml": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", "dev": true, "requires": { "argparse": "1.0.9", "esprima": "2.7.3" } } } }, "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.1.1", "which": "1.3.0" } }, "cryptiles": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { "boom": "2.10.1" } }, "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" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "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.1" } }, "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": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "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 }, "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.0.2", "signal-exit": "3.0.2" } }, "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.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "dev": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.5", "mime-types": "2.1.17" } }, "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 }, "generate-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", "dev": true }, "generate-object-property": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", "dev": true, "requires": { "is-property": "1.0.2" } }, "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" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "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.6", "inherits": "2.0.3", "minimatch": "3.0.4", "once": "1.4.0", "path-is-absolute": "1.0.1" } }, "har-validator": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", "dev": true, "requires": { "chalk": "1.1.3", "commander": "2.11.0", "is-my-json-valid": "2.16.1", "pinkie-promise": "2.0.1" } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "2.1.1" } }, "hawk": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { "boom": "2.10.1", "cryptiles": "2.0.5", "hoek": "2.16.3", "sntp": "1.0.9" } }, "hoek": { "version": "2.16.3", "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", "dev": true }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "dev": true, "requires": { "assert-plus": "0.2.0", "jsprim": "1.4.1", "sshpk": "1.13.1" } }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "is-my-json-valid": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.1.tgz", "integrity": "sha512-ochPsqWS1WXj8ZnMIV0vnNXooaMhp7cyL4FMSIPKTtnV0Ha/T19G2b9kkhcNsabV9bxYkze7/aLZJb/bYuFduQ==", "dev": true, "requires": { "generate-function": "2.0.0", "generate-object-property": "1.2.0", "jsonpointer": "4.0.1", "xtend": "4.0.1" } }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "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.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "dev": true, "requires": { "argparse": "1.0.9", "esprima": "4.0.0" }, "dependencies": { "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", "dev": true } } }, "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-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 }, "jsonpointer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", "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" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "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.5", "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", "dev": true }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "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.30.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", "dev": true }, "mime-types": { "version": "2.1.17", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "dev": true, "requires": { "mime-db": "1.30.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.8" } }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "minipass": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.1.tgz", "integrity": "sha512-u1aUllxPJUI07cOqzR7reGmQxmCqlH88uIIsf6XZFEWgw7gXKpJdR+5R9Y3KEDmWYkdIz9wXZs3C0jOPxejk/Q==", "requires": { "yallist": "3.0.2" } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nyc": { "version": "11.2.1", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.2.1.tgz", "integrity": "sha1-rYUK/p261/SXByi0suR/7Rw4chw=", "dev": true, "requires": { "archy": "1.0.0", "arrify": "1.0.1", "caching-transform": "1.0.1", "convert-source-map": "1.5.0", "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.6", "glob": "7.1.2", "istanbul-lib-coverage": "1.1.1", "istanbul-lib-hook": "1.0.7", "istanbul-lib-instrument": "1.8.0", "istanbul-lib-report": "1.1.1", "istanbul-lib-source-maps": "1.2.1", "istanbul-reports": "1.1.2", "md5-hex": "1.3.0", "merge-source-map": "1.0.4", "micromatch": "2.3.11", "mkdirp": "0.5.1", "resolve-from": "2.0.0", "rimraf": "2.6.1", "signal-exit": "3.0.2", "spawn-wrap": "1.3.8", "test-exclude": "4.1.1", "yargs": "8.0.2", "yargs-parser": "5.0.0" }, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2", "longest": "1.0.1", "repeat-string": "1.6.1" } }, "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": "2.0.0", "bundled": true, "dev": true, "requires": { "arr-flatten": "1.1.0" } }, "arr-flatten": { "version": "1.1.0", "bundled": true, "dev": true }, "array-unique": { "version": "0.2.1", "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", "bundled": true, "dev": true }, "async": { "version": "1.5.2", "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.0", "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.26.0" } }, "babel-runtime": { "version": "6.26.0", "bundled": true, "dev": true, "requires": { "core-js": "2.5.1", "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 }, "brace-expansion": { "version": "1.1.8", "bundled": true, "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" } }, "braces": { "version": "1.8.5", "bundled": true, "dev": true, "requires": { "expand-range": "1.8.2", "preserve": "0.2.0", "repeat-element": "1.1.2" } }, "builtin-modules": { "version": "1.1.1", "bundled": true, "dev": true }, "caching-transform": { "version": "1.0.1", "bundled": true, "dev": true, "requires": { "md5-hex": "1.3.0", "mkdirp": "0.5.1", "write-file-atomic": "1.3.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.4", "lazy-cache": "1.0.4" } }, "chalk": { "version": "1.1.3", "bundled": true, "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", "has-ansi": "2.0.0", "strip-ansi": "3.0.1", "supports-color": "2.0.0" } }, "cliui": { "version": "2.1.0", "bundled": true, "dev": true, "optional": true, "requires": { "center-align": "0.1.3", "right-align": "0.1.3", "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 }, "commondir": { "version": "1.0.1", "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true }, "convert-source-map": { "version": "1.5.0", "bundled": true, "dev": true }, "core-js": { "version": "2.5.1", "bundled": true, "dev": true }, "cross-spawn": { "version": "4.0.2", "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", "which": "1.3.0" } }, "debug": { "version": "2.6.8", "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 }, "default-require-extensions": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "strip-bom": "2.0.0" } }, "detect-indent": { "version": "4.0.0", "bundled": true, "dev": true, "requires": { "repeating": "2.0.1" } }, "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.1.0", "get-stream": "3.0.0", "is-stream": "1.1.0", "npm-run-path": "2.0.2", "p-finally": "1.0.0", "signal-exit": "3.0.2", "strip-eof": "1.0.0" }, "dependencies": { "cross-spawn": { "version": "5.1.0", "bundled": true, "dev": true, "requires": { "lru-cache": "4.1.1", "shebang-command": "1.2.0", "which": "1.3.0" } } } }, "expand-brackets": { "version": "0.1.5", "bundled": true, "dev": true, "requires": { "is-posix-bracket": "0.1.1" } }, "expand-range": { "version": "1.8.2", "bundled": true, "dev": true, "requires": { "fill-range": "2.2.3" } }, "extglob": { "version": "0.3.2", "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" } }, "filename-regex": { "version": "2.0.1", "bundled": true, "dev": true }, "fill-range": { "version": "2.2.3", "bundled": true, "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", "randomatic": "1.1.7", "repeat-element": "1.1.2", "repeat-string": "1.6.1" } }, "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 }, "for-own": { "version": "0.1.5", "bundled": true, "dev": true, "requires": { "for-in": "1.0.2" } }, "foreground-child": { "version": "1.5.6", "bundled": true, "dev": true, "requires": { "cross-spawn": "4.0.2", "signal-exit": "3.0.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 }, "glob": { "version": "7.1.2", "bundled": true, "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", "inherits": "2.0.3", "minimatch": "3.0.4", "once": "1.4.0", "path-is-absolute": "1.0.1" } }, "glob-base": { "version": "0.3.0", "bundled": true, "dev": true, "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" } }, "glob-parent": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "is-glob": "2.0.1" } }, "globals": { "version": "9.18.0", "bundled": true, "dev": true }, "graceful-fs": { "version": "4.1.11", "bundled": true, "dev": true }, "handlebars": { "version": "4.0.10", "bundled": true, "dev": true, "requires": { "async": "1.5.2", "optimist": "0.6.1", "source-map": "0.4.4", "uglify-js": "2.8.29" }, "dependencies": { "source-map": { "version": "0.4.4", "bundled": true, "dev": true, "requires": { "amdefine": "1.0.1" } } } }, "has-ansi": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "ansi-regex": "2.1.1" } }, "has-flag": { "version": "1.0.0", "bundled": true, "dev": true }, "hosted-git-info": { "version": "2.5.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.4.0", "wrappy": "1.0.2" } }, "inherits": { "version": "2.0.3", "bundled": true, "dev": true }, "invariant": { "version": "2.2.2", "bundled": true, "dev": true, "requires": { "loose-envify": "1.3.1" } }, "invert-kv": { "version": "1.0.0", "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", "bundled": true, "dev": true }, "is-buffer": { "version": "1.1.5", "bundled": true, "dev": true }, "is-builtin-module": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "builtin-modules": "1.1.1" } }, "is-dotfile": { "version": "1.0.3", "bundled": true, "dev": true }, "is-equal-shallow": { "version": "0.1.3", "bundled": true, "dev": true, "requires": { "is-primitive": "2.0.0" } }, "is-extendable": { "version": "0.1.1", "bundled": true, "dev": true }, "is-extglob": { "version": "1.0.0", "bundled": true, "dev": true }, "is-finite": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" } }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "number-is-nan": "1.0.1" } }, "is-glob": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "is-extglob": "1.0.0" } }, "is-number": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "kind-of": "3.2.2" } }, "is-posix-bracket": { "version": "0.1.1", "bundled": true, "dev": true }, "is-primitive": { "version": "2.0.0", "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", "bundled": true, "dev": true }, "is-utf8": { "version": "0.2.1", "bundled": true, "dev": true }, "isarray": { "version": "1.0.0", "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", "bundled": true, "dev": true }, "isobject": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "isarray": "1.0.0" } }, "istanbul-lib-coverage": { "version": "1.1.1", "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "1.0.7", "bundled": true, "dev": true, "requires": { "append-transform": "0.4.0" } }, "istanbul-lib-instrument": { "version": "1.8.0", "bundled": true, "dev": true, "requires": { "babel-generator": "6.26.0", "babel-template": "6.26.0", "babel-traverse": "6.26.0", "babel-types": "6.26.0", "babylon": "6.18.0", "istanbul-lib-coverage": "1.1.1", "semver": "5.4.1" } }, "istanbul-lib-report": { "version": "1.1.1", "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", "path-parse": "1.0.5", "supports-color": "3.2.3" }, "dependencies": { "supports-color": { "version": "3.2.3", "bundled": true, "dev": true, "requires": { "has-flag": "1.0.0" } } } }, "istanbul-lib-source-maps": { "version": "1.2.1", "bundled": true, "dev": true, "requires": { "debug": "2.6.8", "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", "rimraf": "2.6.1", "source-map": "0.5.7" } }, "istanbul-reports": { "version": "1.1.2", "bundled": true, "dev": true, "requires": { "handlebars": "4.0.10" } }, "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.11", "parse-json": "2.2.0", "pify": "2.3.0", "pinkie-promise": "2.0.1", "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.4", "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.2" } }, "lru-cache": { "version": "4.1.1", "bundled": true, "dev": true, "requires": { "pseudomap": "1.0.2", "yallist": "2.1.2" } }, "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.1.0" } }, "merge-source-map": { "version": "1.0.4", "bundled": true, "dev": true, "requires": { "source-map": "0.5.7" } }, "micromatch": { "version": "2.3.11", "bundled": true, "dev": true, "requires": { "arr-diff": "2.0.0", "array-unique": "0.2.1", "braces": "1.8.5", "expand-brackets": "0.1.5", "extglob": "0.3.2", "filename-regex": "2.0.1", "is-extglob": "1.0.0", "is-glob": "2.0.1", "kind-of": "3.2.2", "normalize-path": "2.1.1", "object.omit": "2.0.1", "parse-glob": "3.0.4", "regex-cache": "0.4.4" } }, "mimic-fn": { "version": "1.1.0", "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", "bundled": true, "dev": true, "requires": { "brace-expansion": "1.1.8" } }, "minimist": { "version": "0.0.8", "bundled": true, "dev": true }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.0.0", "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.4.0", "bundled": true, "dev": true, "requires": { "hosted-git-info": "2.5.0", "is-builtin-module": "1.0.0", "semver": "5.4.1", "validate-npm-package-license": "3.0.1" } }, "normalize-path": { "version": "2.1.1", "bundled": true, "dev": true, "requires": { "remove-trailing-separator": "1.1.0" } }, "npm-run-path": { "version": "2.0.2", "bundled": true, "dev": true, "requires": { "path-key": "2.0.1" } }, "number-is-nan": { "version": "1.0.1", "bundled": true, "dev": true }, "object-assign": { "version": "4.1.1", "bundled": true, "dev": true }, "object.omit": { "version": "2.0.1", "bundled": true, "dev": true, "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" } }, "once": { "version": "1.4.0", "bundled": true, "dev": true, "requires": { "wrappy": "1.0.2" } }, "optimist": { "version": "0.6.1", "bundled": true, "dev": true, "requires": { "minimist": "0.0.8", "wordwrap": "0.0.3" } }, "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.1.0", "bundled": true, "dev": true }, "p-locate": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "p-limit": "1.1.0" } }, "parse-glob": { "version": "3.0.4", "bundled": true, "dev": true, "requires": { "glob-base": "0.3.0", "is-dotfile": "1.0.3", "is-extglob": "1.0.0", "is-glob": "2.0.1" } }, "parse-json": { "version": "2.2.0", "bundled": true, "dev": true, "requires": { "error-ex": "1.3.1" } }, "path-exists": { "version": "2.1.0", "bundled": true, "dev": true, "requires": { "pinkie-promise": "2.0.1" } }, "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.11", "pify": "2.3.0", "pinkie-promise": "2.0.1" } }, "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.4" } }, "pkg-dir": { "version": "1.0.0", "bundled": true, "dev": true, "requires": { "find-up": "1.1.2" }, "dependencies": { "find-up": { "version": "1.1.2", "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", "pinkie-promise": "2.0.1" } } } }, "preserve": { "version": "0.2.0", "bundled": true, "dev": true }, "pseudomap": { "version": "1.0.2", "bundled": true, "dev": true }, "randomatic": { "version": "1.1.7", "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.2.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" } } } }, "read-pkg": { "version": "1.1.0", "bundled": true, "dev": true, "requires": { "load-json-file": "1.1.0", "normalize-package-data": "2.4.0", "path-type": "1.1.0" } }, "read-pkg-up": { "version": "1.0.1", "bundled": true, "dev": true, "requires": { "find-up": "1.1.2", "read-pkg": "1.1.0" }, "dependencies": { "find-up": { "version": "1.1.2", "bundled": true, "dev": true, "requires": { "path-exists": "2.1.0", "pinkie-promise": "2.0.1" } } } }, "regenerator-runtime": { "version": "0.11.0", "bundled": true, "dev": true }, "regex-cache": { "version": "0.4.4", "bundled": true, "dev": true, "requires": { "is-equal-shallow": "0.1.3" } }, "remove-trailing-separator": { "version": "1.1.0", "bundled": true, "dev": true }, "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.2" } }, "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 }, "right-align": { "version": "0.1.3", "bundled": true, "dev": true, "optional": true, "requires": { "align-text": "0.1.4" } }, "rimraf": { "version": "2.6.1", "bundled": true, "dev": true, "requires": { "glob": "7.1.2" } }, "semver": { "version": "5.4.1", "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true }, "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 }, "source-map": { "version": "0.5.7", "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.3.8", "bundled": true, "dev": true, "requires": { "foreground-child": "1.5.6", "mkdirp": "0.5.1", "os-homedir": "1.0.2", "rimraf": "2.6.1", "signal-exit": "3.0.2", "which": "1.3.0" } }, "spdx-correct": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "spdx-license-ids": "1.2.2" } }, "spdx-expression-parse": { "version": "1.0.4", "bundled": true, "dev": true }, "spdx-license-ids": { "version": "1.2.2", "bundled": true, "dev": true }, "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 }, "is-fullwidth-code-point": { "version": "2.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.1.1" } }, "strip-bom": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "is-utf8": "0.2.1" } }, "strip-eof": { "version": "1.0.0", "bundled": true, "dev": true }, "supports-color": { "version": "2.0.0", "bundled": true, "dev": true }, "test-exclude": { "version": "4.1.1", "bundled": true, "dev": true, "requires": { "arrify": "1.0.1", "micromatch": "2.3.11", "object-assign": "4.1.1", "read-pkg-up": "1.0.1", "require-main-filename": "1.0.1" } }, "to-fast-properties": { "version": "1.0.3", "bundled": true, "dev": true }, "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.7", "uglify-to-browserify": "1.0.2", "yargs": "3.10.0" }, "dependencies": { "yargs": { "version": "3.10.0", "bundled": true, "dev": true, "optional": true, "requires": { "camelcase": "1.2.1", "cliui": "2.1.0", "decamelize": "1.2.0", "window-size": "0.1.0" } } } }, "uglify-to-browserify": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "validate-npm-package-license": { "version": "3.0.1", "bundled": true, "dev": true, "requires": { "spdx-correct": "1.0.2", "spdx-expression-parse": "1.0.4" } }, "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.2", "strip-ansi": "3.0.1" }, "dependencies": { "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", "strip-ansi": "3.0.1" } } } }, "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.6" } }, "y18n": { "version": "3.2.1", "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", "bundled": true, "dev": true }, "yargs": { "version": "8.0.2", "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0", "cliui": "3.2.0", "decamelize": "1.2.0", "get-caller-file": "1.0.2", "os-locale": "2.1.0", "read-pkg-up": "2.0.0", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", "yargs-parser": "7.0.0" }, "dependencies": { "camelcase": { "version": "4.1.0", "bundled": true, "dev": true }, "cliui": { "version": "3.2.0", "bundled": true, "dev": true, "requires": { "string-width": "1.0.2", "strip-ansi": "3.0.1", "wrap-ansi": "2.1.0" }, "dependencies": { "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", "strip-ansi": "3.0.1" } } } }, "load-json-file": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "graceful-fs": "4.1.11", "parse-json": "2.2.0", "pify": "2.3.0", "strip-bom": "3.0.0" } }, "path-type": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "pify": "2.3.0" } }, "read-pkg": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "load-json-file": "2.0.0", "normalize-package-data": "2.4.0", "path-type": "2.0.0" } }, "read-pkg-up": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { "find-up": "2.1.0", "read-pkg": "2.0.0" } }, "strip-bom": { "version": "3.0.0", "bundled": true, "dev": true }, "yargs-parser": { "version": "7.0.0", "bundled": true, "dev": true, "requires": { "camelcase": "4.1.0" } } } }, "yargs-parser": { "version": "5.0.0", "bundled": true, "dev": true, "requires": { "camelcase": "3.0.0" }, "dependencies": { "camelcase": { "version": "3.0.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.0.2" } }, "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.0", "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.0.tgz", "integrity": "sha1-nvkg/IHi5jz1nUEQElg2jPT8pPs=", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", "dev": true, "requires": { "pinkie": "2.0.4" } }, "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.3.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", "dev": true }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", "isarray": "1.0.0", "process-nextick-args": "1.0.7", "safe-buffer": "5.1.1", "string_decoder": "1.0.3", "util-deprecate": "1.0.2" } }, "request": { "version": "2.79.0", "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", "dev": true, "requires": { "aws-sign2": "0.6.0", "aws4": "1.6.0", "caseless": "0.11.0", "combined-stream": "1.0.5", "extend": "3.0.1", "forever-agent": "0.6.1", "form-data": "2.1.4", "har-validator": "2.0.6", "hawk": "3.1.3", "http-signature": "1.1.1", "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", "qs": "6.3.2", "stringstream": "0.0.5", "tough-cookie": "2.3.3", "tunnel-agent": "0.4.3", "uuid": "3.1.0" } }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { "hoek": "2.16.3" } }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { "source-map": "0.5.7" } }, "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.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "dev": true, "requires": { "asn1": "0.2.3", "assert-plus": "1.0.0", "bcrypt-pbkdf": "1.0.1", "dashdash": "1.14.1", "ecc-jsbn": "0.1.1", "getpass": "0.1.7", "jsbn": "0.1.1", "tweetnacl": "0.14.5" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "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.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "5.1.1" } }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "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.1.1" } }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "tap": { "version": "10.7.2", "resolved": "https://registry.npmjs.org/tap/-/tap-10.7.2.tgz", "integrity": "sha512-N7z+tqiEvMT+wd79c17FqtL5h/AOObtffVTSfWUogrmFkJ37OfHLl8WuQYpd/YiOzS3k74acPF1F9bX0LzHOKw==", "dev": true, "requires": { "bind-obj-methods": "1.0.0", "bluebird": "3.5.1", "clean-yaml-object": "0.1.0", "color-support": "1.1.3", "coveralls": "2.13.3", "foreground-child": "1.5.6", "fs-exists-cached": "1.0.0", "function-loop": "1.0.1", "glob": "7.1.2", "isexe": "2.0.0", "js-yaml": "3.10.0", "nyc": "11.2.1", "opener": "1.4.3", "os-homedir": "1.0.2", "own-or": "1.0.0", "own-or-env": "1.0.0", "readable-stream": "2.3.3", "signal-exit": "3.0.2", "source-map-support": "0.4.18", "stack-utils": "1.0.1", "tap-mocha-reporter": "3.0.6", "tap-parser": "5.4.0", "tmatch": "3.1.0", "trivial-deferred": "1.0.1", "tsame": "1.1.2", "yapool": "1.0.0" } }, "tap-mocha-reporter": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.6.tgz", "integrity": "sha512-UImgw3etckDQCoqZIAIKcQDt0w1JLVs3v0yxLlmwvGLZl6MGFxF7JME5PElXjAoDklVDU42P3vVu5jgr37P4Yg==", "dev": true, "requires": { "color-support": "1.1.3", "debug": "2.6.9", "diff": "1.4.0", "escape-string-regexp": "1.0.5", "glob": "7.1.2", "js-yaml": "3.10.0", "readable-stream": "2.3.3", "tap-parser": "5.4.0", "unicode-length": "1.0.3" } }, "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.1.2", "js-yaml": "3.10.0", "readable-stream": "2.3.3" } }, "tmatch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-3.1.0.tgz", "integrity": "sha512-W3MSATOCN4pVu2qFxmJLIArSifeSOFqnfx9hiUaVgOmeRoI2NbU7RNga+6G+L8ojlFeQge+ZPCclWyUpQ8UeNQ==", "dev": true }, "tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "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": "1.1.2", "resolved": "https://registry.npmjs.org/tsame/-/tsame-1.1.2.tgz", "integrity": "sha512-ovCs24PGjmByVPr9tSIOs/yjUX9sJl0grEmOsj9dZA/UknQkgPOKcUqM84aSCvt9awHuhc/boMzTg3BHFalxWw==", "dev": true }, "tunnel-agent": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", "dev": true }, "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.4.1", "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.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", "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.3.0" }, "dependencies": { "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true } } }, "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 }, "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 } } } minizlib-1.1.0/package.json000066400000000000000000000015131321663113600156160ustar00rootroot00000000000000{ "name": "minizlib", "version": "1.1.0", "description": "A small fast zlib stream built on [minipass](http://npm.im/minipass) and Node.js's zlib binding.", "main": "index.js", "dependencies": { "minipass": "^2.2.1" }, "scripts": { "test": "tap test/*.js --100 -J", "preversion": "npm test", "postversion": "npm publish", "postpublish": "git push origin --all; git push origin --tags" }, "repository": { "type": "git", "url": "git+https://github.com/isaacs/minizlib.git" }, "keywords": [ "zlib", "gzip", "gunzip", "deflate", "inflate", "compression", "zip", "unzip" ], "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "license": "MIT", "devDependencies": { "tap": "^10.7.2" }, "files": [ "index.js", "constants.js" ] } minizlib-1.1.0/test/000077500000000000000000000000001321663113600143075ustar00rootroot00000000000000minizlib-1.1.0/test/const.js000066400000000000000000000004051321663113600157720ustar00rootroot00000000000000const t = require('tap') const zlib = require('../') t.equal(zlib.constants.Z_OK, 0, 'Z_OK should be 0') zlib.constants.Z_OK = 1 t.equal(zlib.constants.Z_OK, 0, 'Z_OK should still be 0') t.ok(Object.isFrozen(zlib.constants), 'zlib.constants should be frozen') minizlib-1.1.0/test/deflate-constructors.js000066400000000000000000000050571321663113600210260ustar00rootroot00000000000000'use strict' const zlib = require('../') const t = require('tap') // Throws if `opts.chunkSize` is invalid t.throws( _ => new zlib.Deflate({chunkSize: -Infinity}), new Error('Invalid chunk size: -Infinity') ) // Confirm that maximum chunk size cannot be exceeded because it is `Infinity`. t.equal(zlib.constants.Z_MAX_CHUNK, Infinity) // Throws if `opts.windowBits` is invalid t.throws( _ => new zlib.Deflate({windowBits: -Infinity, chunkSize: 12345}), new Error('Invalid windowBits: -Infinity') ) t.throws( _ => new zlib.Deflate({windowBits: Infinity}), new Error('Invalid windowBits: Infinity') ) // Throws if `opts.level` is invalid t.throws( _ => new zlib.Deflate({level: -Infinity}), new Error('Invalid compression level: -Infinity') ) t.throws( _ => new zlib.Deflate({level: Infinity}), new Error('Invalid compression level: Infinity') ) // Throws a RangeError if `level` invalid in `Deflate.prototype.params()` t.throws( _ => new zlib.Deflate().params(-Infinity), new RangeError('Invalid compression level: -Infinity') ) t.throws( _ => new zlib.Deflate().params(Infinity), new RangeError('Invalid compression level: Infinity') ) // Throws if `opts.memLevel` is invalid t.throws( _ => new zlib.Deflate({memLevel: -Infinity}), new Error('Invalid memLevel: -Infinity') ) t.throws( _ => new zlib.Deflate({memLevel: Infinity}), new Error('Invalid memLevel: Infinity') ) // Does not throw if opts.strategy is valid t.doesNotThrow( _ => new zlib.Deflate({strategy: zlib.constants.Z_FILTERED}) ) t.doesNotThrow( _ => new zlib.Deflate({strategy: zlib.constants.Z_HUFFMAN_ONLY}) ) t.doesNotThrow( _ => new zlib.Deflate({strategy: zlib.constants.Z_RLE}) ) t.doesNotThrow( _ => new zlib.Deflate({strategy: zlib.constants.Z_FIXED}) ) t.doesNotThrow( _ => new zlib.Deflate({ strategy: zlib.constants.Z_DEFAULT_STRATEGY}) ) // Throws if opt.strategy is the wrong type. t.throws( _ => new zlib.Deflate({strategy: '' + zlib.constants.Z_RLE }), new Error('Invalid strategy: 3') ) // Throws if opts.strategy is invalid t.throws( _ => new zlib.Deflate({strategy: 'this is a bogus strategy'}), new Error('Invalid strategy: this is a bogus strategy') ) // Throws TypeError if `strategy` is invalid in `Deflate.prototype.params()` t.throws( _ => new zlib.Deflate().params(0, 'I am an invalid strategy'), new TypeError('Invalid strategy: I am an invalid strategy') ) // Throws if opts.dictionary is not a Buffer t.throws( _ => new zlib.Deflate({dictionary: 'not a buffer'}), new Error('Invalid dictionary: it should be a Buffer instance') ) minizlib-1.1.0/test/dictionary-fail.js000066400000000000000000000014521321663113600177250ustar00rootroot00000000000000'use strict' const t = require('tap') const zlib = require('../') // String "test" encoded with dictionary "dict". const input = Buffer.from([0x78, 0xBB, 0x04, 0x09, 0x01, 0xA5]) { const stream = new zlib.Inflate() stream.on('error', err => t.match(err, { name: 'ZlibError', message: /Missing dictionary/ })) stream.write(input) } { const stream = new zlib.Inflate({ dictionary: Buffer.from('fail') }) stream.on('error', err => t.match(err, { name: 'ZlibError', message: /Bad dictionary/ })) stream.write(input) } { const stream = new zlib.InflateRaw({ dictionary: Buffer.from('fail') }) // It's not possible to separate invalid dict and invalid data when // using the raw format stream.on('error', err => t.match(err, { message: /invalid/ })) stream.write(input) } minizlib-1.1.0/test/dictionary.js000066400000000000000000000064441321663113600170220ustar00rootroot00000000000000'use strict' // test compression/decompression with dictionary const t = require('tap') const zlib = require('../') const spdyDict = Buffer.from([ 'optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-', 'languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi', 'f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser', '-agent10010120020120220320420520630030130230330430530630740040140240340440', '5406407408409410411412413414415416417500501502503504505accept-rangesageeta', 'glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic', 'ateallowcontent-basecontent-encodingcache-controlconnectiondatetrailertran', 'sfer-encodingupgradeviawarningcontent-languagecontent-lengthcontent-locati', 'oncontent-md5content-rangecontent-typeetagexpireslast-modifiedset-cookieMo', 'ndayTuesdayWednesdayThursdayFridaySaturdaySundayJanFebMarAprMayJunJulAugSe', 'pOctNovDecchunkedtext/htmlimage/pngimage/jpgimage/gifapplication/xmlapplic', 'ation/xhtmltext/plainpublicmax-agecharset=iso-8859-1utf-8gzipdeflateHTTP/1', '.1statusversionurl\0' ].join('')) const input = [ 'HTTP/1.1 200 Ok', 'Server: node.js', 'Content-Length: 0', '' ].join('\r\n') t.test('basic dictionary test', t => { t.plan(1) let output = '' const deflate = new zlib.Deflate({ dictionary: spdyDict }) const inflate = new zlib.Inflate({ dictionary: spdyDict }) inflate.setEncoding('utf-8') deflate.on('data', chunk => inflate.write(chunk)) inflate.on('data', chunk => output += chunk) deflate.on('end', _ => inflate.end()) inflate.on('end', _ => t.equal(input, output)) deflate.write(input) deflate.end() }) t.test('deflate reset dictionary test', t => { t.plan(1) let doneReset = false let output = '' const deflate = new zlib.Deflate({ dictionary: spdyDict }) const inflate = new zlib.Inflate({ dictionary: spdyDict }) inflate.setEncoding('utf-8') deflate.on('data', chunk => { if (doneReset) inflate.write(chunk) }) inflate.on('data', chunk => output += chunk) deflate.on('end', _ => inflate.end()) inflate.on('end', _ => t.equal(input, output)) deflate.write(input) deflate.flush() deflate.reset() doneReset = true deflate.write(input) deflate.end() }) t.test('raw dictionary test', t => { t.plan(1) let output = '' const deflate = new zlib.DeflateRaw({ dictionary: spdyDict }) const inflate = new zlib.InflateRaw({ dictionary: spdyDict }) inflate.setEncoding('utf-8') deflate.on('data', chunk => inflate.write(chunk)) inflate.on('data', chunk => output += chunk) deflate.on('end', _ => inflate.end()) inflate.on('end', _ => t.equal(input, output)) deflate.write(input) deflate.end() }) t.test('deflate raw reset dictionary test', t => { t.plan(1) let doneReset = false let output = '' const deflate = new zlib.DeflateRaw({ dictionary: spdyDict }) const inflate = new zlib.InflateRaw({ dictionary: spdyDict }) inflate.setEncoding('utf-8') deflate.on('data', chunk => { if (doneReset) inflate.write(chunk) }) inflate.on('data', chunk => output += chunk) deflate.on('end', _ => inflate.end()) inflate.on('end', _ => t.equal(input, output)) deflate.write(input) deflate.flush() deflate.reset() doneReset = true deflate.write(input) deflate.end() }) minizlib-1.1.0/test/fixtures/000077500000000000000000000000001321663113600161605ustar00rootroot00000000000000minizlib-1.1.0/test/fixtures/elipses.txt000066400000000000000000000724601321663113600203760ustar00rootroot00000000000000…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………minizlib-1.1.0/test/fixtures/empty.txt000066400000000000000000000000001321663113600200450ustar00rootroot00000000000000minizlib-1.1.0/test/fixtures/person.jpg000066400000000000000000001311321321663113600201710ustar00rootroot00000000000000JFIFHHJPhotoshop 3.08BIMHH8BIM\action conference copenhagencphdenmarkrebootreboot118BIM I@@IAdobed           s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?~X,a7UXWMpAH_56I:h4}b]G҂ʓBrs^,5h9rHCpˈ$xI*R.ՖKWbX癧~|?}2\d~OyNllPt~=Օ%TV(׋) śD%<']^o/LSޡ&HEۯ')HR:HP[I!*e#!oY?RE=4}$O5<~Y8l?(-5E$H9D=GrJr,7Y93wޢNL9A/GgY+.<јڭ^_Z.JebTJӝY,oC;f(9/RI7V u VT/.ekՙCr?"j >.e l T 4$#SP+ïd&dOI/?ycN^KRCEi#9 %WYo"owPޓ|KQ^$ l1zc6]ZSnq`{ qkS%CFs"3c @AZRmV,q[G+L#t=0(n$tߙEdHMKޤckH S_eZs,X3? iKz}z Mdz6.x[퀁i-o\R\J'IQHj8ـT#c--|$f89g~QWn9L0XɢkW24[=|UQ1,BPqU1Rlp @U4OK0ᏤZ@_Vgbhb}/ qrO$ԭRoSd(DQnMO[C^>IW_>\KZsYu7RQx.(J7=˫l9 c.t2Hz]<*i_# kҔAjQi~kmq2&]yEVl8ɐZ=-}EL( Gs.RRU;e eG^!腙ܗ(3!6Y5Vcp}Vi#U(P8帀<(ϾL KQ ~뗎I,D+,b/_-i:MjrDзU?@ !~n׬g{T 095݉fAHE~^mKΔMH(欫&Eh^~Ω\B V̜w+O3H!`*Ȩ"hH8fJ`Wb]私|9f{NNՃlJI &Y5orIBÊ!PBb?S)5}= 6kIm>kJ$`5pC8ɫ]F/hCxʫ<)|U_˚4y9 }k}RX[]Io_?VVG8̃t̄,㶺ēړ#5կLHEknY9"?Rm=2#2NmgKU? c(q'bƿ<Mwډa2q2NyYΞgм{uF-~ JbX=I4SFbGrHA6+t(YVrDDC|(gq_v-mIDb<PbH(=u.FP%AW8evȖ Uت;RbzPx* c#C4 8M94? W0@&_7wV ު伆b3Cӧ4ÿ6|k}UZ+%QVj>ڡ<[K1;FO{<ϡy.d6ڟG*7f cIGă: LXbNU{표E7F #}SWMjA$-_$~'~_HO>-O.qYWd}T#kj` $O$/7i,׏IqlՆwS{/\TR"n &.əD;ْivҖWCF80XS Rv< @5h-4 k_B _:d|!2k}ŲxO\ҷ= RVnbʴZ g#5,cZY _yScrq@7C w$9l1U1%-4ŞQRFޝ~ُ7aSu,i\^sPҊ&`@ve qg]}mRFp^=v*UkaCӹEԢY(p(^9 j|9-= bR@4)@v,(\l SAǞ UfVF ܿt@YW \ 2,reeDj=VYfy1YLTԴ1<њt[KH9#SʽlƕX~ޅ%G7Rnזw/۰;5b*QYUxN\Sy"&At5kgcl-ܑna^4J=0%*yp̿g'@ y ٧4>KB-r=.@ S@qe>~,#oEm:]H%@yF*ՙke Aoyѣi"x kVlX'LIZثz0\BK)o6MrA&=D0zUi~ B; &;~h򧔭/A;gMReeЏ?gY8,4#xu1ۿڷ S#GS PUثPRJ'a+[X[m1 bO&ZȂ60@Dw5?g98ryw夫l$i$'Mۊ?pjG)r<ɃkGoC]Jo,b(%: jD7jPBJB< bnը?#'Z~:"X~Qژg^Bwu :u ; կ}a_P֔AnX;\C#FԲ H9|G`f"#>FwIG7fƈ@h˕EY"x=Krzۉ\8y|M醮cS/q,uk(~||䫩UE@U e;d+z%Z\r0P‹[^"N]Z֥C'O_MV 9Zih)\i:q o2*(䢵.'c̶eT$/܌ Ioh]K5ᗚ9iAcwa 3D,v:c1%/$0mMlyw,+:vzc r, ȳ{}LQfбzaXaIG[6Isnx9N)݆2K B eʮAwO[Lڏ$7c_Wzqk`?D;W9Elyjߚ6~RY$E+ȫ͔ %\Da5ҵ'v.մ)$"7d^TUUkaCI懐el/NQ*殄2IE≈T)/kheԍmG,LGd4R>ҷl2dknYe|qM>WǕٵ%X>!#bjn(H_tK-mPQ"Q (Mk_Z,$'d)5[#sl[ SqZ+5PhWbc/h/RViI%d5@5OִIt)lRz&;e6C˼mך!8eqrLK2IZX]-ȷRYh<rK-厥p'&f(ԃ}Aחq? ꥀ^fE'qf|ȞiBmy g>*> 2rLҠiڄ7vs"9G:+s"O~HclPc.;b"M>귶zd% my b7_>$?g1BdiE[M}|~UEP0*e%[(o\žDAkE;q Yq-՜?WoL eF`+Z6eės@ȴq? >1k) ]4d.\[F!P+L>ն<:$p?.mb:I-̆IX3*n)ZŨF1YcP+ѾUz'")rr^6n4o@@#Ăr>^-H#qB~S^2VcCLmõ$*Yf+~GԄC 'Pef< ^ k&OZEf]_$?$*> mޙ~Ͷc嗎l$9& vVU@b ݾ VTE+OJ2D7e \8{np^7#~1~g 'LQA@zm4f_$ߘ]?چsg:ު1̆(~k˖aGF{EEvVYc:\LqHb!a}IWyq8 +A^yg:ƣrj`ĄIh_2ju*1p~9!vS6yMTyZS^DuHX8&)d+ܷ0oԮN5{D9}һͯ䊶јd(ݨƤSlE≭= R:[b7 k1dE/י.l!cY$|4')XZ}5&mtAS:)z嵦5:ipx3uF~Dps##yy^@巈L>j(Oˣ+.4H\=5[3=v֣w/֭!a;dx[8=[$ThI Ei琕G41#N !F+]{l2oW6CZZZA9y?-y~d@NaHH\t%0ݖ ˽9P~ pl\#b8ZWb&;mʿN)Kw$}4.uJ}$dK zsI;&hZƝMkn=j@iUNAkK>$'&[c jiAYiȞȶ*M#*L O_dwԅeЩ1O(0aV f&C\WkI)x`SYqx9~$Lʆ^#դN Kh8Ud+ /qP*ZɒHڳ[7zLVyUJ^r+rW -A}KZ0oM9@z ̈ fH&xeROPA+A+dH.uwPG=UI^3L(gzKN R/dHmi% RHbo4$x/?͐'2cO}RIo Dɽ+@Os'f>J u[DhcKj#u4R~_S +هZ UE7 = PN {v-Y^I}?֭b) /NURzwRyuY9g@HӿE-:^B vCMTPl~|x7~njܲ%ߖ+`K$N,QpMՂZ~ce\ǫ~?ʞ1ˤ:l\z\&+y#wػ'1!z-3+E9Eo59XHȺwTC&*fK,J;lQŅټKo beG_k9-054PPݖdO+1.-R~Eyl6DіFI4UB)>7&1FuI&# e#5vSsY>BisH[%.K: 08r]~ňypN9AOb-!դd)bQTEBkzrf\x8fW"Q4O)GȺvՒZgKk |Xp,>^"mMCt[ߣC|ۢc^/Ͷ!~"-R:kƠq .(* ɱQ^m P@eEZ #0yޮ?QĤ#lŔ"̈TĊ(WpA\l`'ɵiN@+Cܡ 6esLO cb5%;{;Hu)g5G6*Yx߷~cfG(bV7 *)vsX̂?g15z_Xq0۪k˩]OWFÍ#v+deQl5 8h03U~zҎο𿵌J[#tux8sFGqnFs,aXxmNGS@A}SLk~>ۺ銀 >GE^3E]I#%a<^;T/HpoOķl'1[}b$dWNUE߷Ԭ֒I؅K˳ $Wq[gvf мf?g9D3qْU5ϥϤd ]QV6n_.2;.Ey4f+sw¥I٤Os&#Qdۗ1:q<q749"L_ %R')t6nG-]qHq+7_>fds>Y<$}V;F{\#Q(m/% SE* rڃ $̭lOUF9,;|'jq2I4eeUUN$azev$#Y@Pn+L^|kZlcV41 !$Qѿ [^p/&6+ ŀ,֊@o.^(l_:yR֢ңKDJb`U%Qg*AFQE ny ҹ␫J#G+3/NMl‘@$tp5ֈ+Aq?K Dx< )Ɔq ݄J-.PC rժ.} &Y4KBfJWiF#dɖ*7,H|0%cP]ojP)tOJn6:}ɶ#UQɏ2it*YcG{K1<I8myKI]joHZd+ܚ(?r-)ᄆrvPv_a/׀j=i(b |AQ Zka-ID[4qo1FBL;nͳ/(&}?_L߈e 15o&ԋs0HJ v0y6F4[tit>KQ)xg+1ɶo&ƴYkTZIHÒG7_-_Z~aoy61HU R߂er}\Ώ$ߚ_OelO"aQ݃ Qkx=YV0BOUOcg)Qj708,tb;6`!N6oUnREGÈfJ|-G%O|j2$G-C~h37aʳDzFbޢZx c">jͩ[SԪ||[f?YՇN?0f4F`HP?yHZq`jnsCUe sp{?4<]=, `WySf, G{fMO6N)fN ,B~URk<#TriSj+K)DQٕKS]P%is٠=)( 8&%^N#ETׯcC"n:V(i=+{԰ #<2reUbpӥJկb',Gs i@v r8Q8;w-: #Msx']9#?zJO$&P7ѨnD̨PycTwZc_{4SGnT*| ~ʧrn5}r $SZ&l5JQӞ0,㘼v\Oj2=TBvWgl9cYf1* u܃R ?! y{:?(G^.GN^*je~uf40<|lc/"ҿ,|}`ywx]/JQj7j(rXdIهw_Z*W97,ai F/J#@j0KC4B ^εn%Csi}U0 cD2coz M&2/evE(8!ɸ ٛ٠뉡e埘Λc7,j๱88|fE 9LEیБ =K?j73ԲHGj>O}4FLi(TBH(0kSF 0Y)60;LԡEg-AVSrɮQ_-͵4a>̈Jd4ziW3j5VqQ`\rݜ2ʛ R*pnJ*0|\f1e6i%S#Rĉ}䜈6NV,WicS*M?7%J:U̐i-ܩ8ѩeN_QciI=o$(u)!dYWu}f"NJmڽ+(b{d6):aOѓ?oÂOf~uMFtzwSMu5;#W_S-l9Sl󮝡YJa)xz: -."";qVBG&5e_H%ұ4&->;daH 18'.i;Db*H9, fqq6hfakIu*A#sU*Kpfٜ 4j^kQO<ͪS\䆐t;a֊Q-w1·7MK߄Y]R-[4ab&gg%`yWx5KDd/: fɫж$S _ַHOG'@y_PLoĖ\ IR*4"e-Vwj UN]:bBFM؆i2ES+4c$_ʚ{hqq$.ȪOel]`X䖝~y5-ޢNB脅%KL Kxоdkܾi6uYXbu|Y)x̭CʼoyaPT^t㔯ٌ1z;͞~뚼MЁ/Zb6_K#t__QVŜWo N R fոU-5󞯭 J JiD?RWfAG IsDyXF45Oo724<2r*wf݆j'in9H(__҉EeL8_5ifX^$Ct>;MsFw%ݸ viգ+4E]% gDD05$Tצ=8$@zuU呝`FM6e>Ɖv d|ѨXKf[*y1c.jY Umi_jJwma;$-:n薒>«5 U8!@ְ45~Y `ZFpt6W짗&~ȷ& yn-!,5՟ԥW1C8K7#9FBtow;-3ȗ#[iEdk#om=dߝ>s:ot[sѼלv%Q*>6L@'/x_Gԯ7GT0x䏡~`"܎Qܓ-ń9yF(7։iYx&#4 "G 2<Õ-̟D)VsfxbKh՗byM/Ooo,DRʹuߑ\6%B `z1R`2ӑl Բ{OYdk۵7{d*A0,kZ6Lo_YRX' ZML~h. Қ"H0O*i${ĨF*ȊTec>Q&REE6I6FMZSքS!m Eb݇UU#aۆT%z^ ȱzxOJP  9іUZ>PӭŧO gRĵ*vC~tn-例QzpijEI$,e Mw,`Do_Խ9yp) 31fS9?Iw3pՖGsA3Q')`2tXՈ/}i(_t$kf%n%A+Սw 'E[D-Z*~wluY4{CStHWooU5;eA1}WS]}k!Nӓ" U#om#Tt+l*Wd[T|Wb@z_$w'l? Ad~Um⽈Y45 FL AjZ#04go3@k 1WU<֭z`]co$CP)hL~tV5gcC̗, ĂX+M1[\%̲s ‹gEƬŒ(k~!JSVk2'2lQlQl,rURxOn4[5\@K5G\xS|\f <(C5?gٍ,D6!L~Wv2N24f&@PdCK,}SDe}VYe Pw=&c/V;w";YazV"4ʹ:sCM7gTM(.82}3m1djqRj&&$(rYίiZ՜Gc +}i#xf$HۄYھh9gYݞS7P7lOk$8o8PI, fhP( 5T05oLX,=TՓz7}& # 2vad-^G@8 zUc}T2>{WUaokSAFe)T8rv8~m$\:fϫڄj~"J@sysB0L-΃uhTIa2h&#;f;r$aҢ֭#`2C ̭.2j4BYcYYI}<4c2QSYe{numK dQŠ:( `X{Fif eπĤAg(iz %/?,uпKN 9"Er FRlUQ%hd>d|qTMW2mHUV8Pcڎ|K+ȤOq/Hᒐe@; i\|~=E:HaG[a&OqJZ='7 p+7&kG'm->[XUw#n y ՠLYZj7IU_-K{I6wa2Ft+y)NA[B7Ե4kW:yhijPgf)ȯ 9LzokwyF4C˧|izpM,U22?a(%8*=BioL78dP>C<l1D~+fc+_ nhܢV('C2pq3sd:Vfkؠ4-"7HضJ?Eʼ%/-RzYד䳱zC-rA3pU0?# 8tl j{qbZ* P=7,?Bo-F"(>u1a7[߾'@<% B`Mﰠ {{b_ -{Zx[q.B1*SJlGWĞLRּw/嶉SDѕH)trN[| *P*N"+|Zj^f]B6L}D-(aK5~)n%^DHwa+B*x }OfPjR -9jK$8RP8X_*_OoYjLU3 ETu*r' 65LK2=j=Fe[=L֬/FEYn.E5vOcQQaڀ1TTOlj _"0\yX!(iYz3XX "OS jǿт3 {ԝ#2;2}CN Ddb222FQ&goUxVrGH 7ˀk%럗?q.$"#yI6*hJٗP6e$RM[ӖLԜ^*Fy 2(89y[v֒#G,kv j9&@P49dm8B |30}. Ȝ]J.YðOP1 TgDZp]EE,7"Ey@* Ɵ^26TײVYI\((X_g+Yumߚt;KZ ة}tXոD BFfiv|,n$UUJemW,@MtIU4ԕt37j>󟚊C*#ۃ0ٗIIrW1dEJt#!4ESIySr07ׂv5coqp,c%ʻGo†Ah D%2E?wӊ@Jߗ!„-Ő ݱT{9#bzPR'Ÿ,. =A"W--5 y.eq) |1rJzYel]̕!3pKzXPSr0ٛILZoD b7־?X!UvqBN*P]G4eBQ[.x$&^NH8z/LI;v0W[uQN* ޫ}Jr>B丕[sKfr֞'W'4&P\VsE+T ƕ4sIKWҀC<+K$ʪ~U>z Gu3'O%=f -،}..Q8BIM%jCW6K<*GC     C     J !1"AQa2q #BR$3Cbr%Ss񃄔5!1AQaq"2#3BR$C ?{Zi> u*$Gb0]PI ʷTpôXrHq q#g8O&5%l=-;ŚbE,Ӵ2HNIf$u'fsJ.n@$A:qQ:eJ1q Ar1't,qzu % %IsVsBʏWu'z[UM,6ɥA8 ˎ4D`>9*v MWjsNK醨mG_WܤI1RGX0IHsهG]"syqh"1+jz0+ !]Ӱʝðqi՗-.+=GqU-ETy"Yf9P`s 1*W`<#Jo:SjjWvۛ1&=A0>Oep|Gx= k 5 r&_QfSe8FqӋuN䙱|a굤 -%gYh R:NP~|CKWv{Ll ^l ;!eQwEP]Xz?tB)Ąn;H-=r`? gvs=ؐ,5E!y6F4op]lIXi*1>fY#dnbBFqOi; @#)7"grvt$:oHbHf:uƑC P*8GAOғCK'$₢mE,$ VW]G@1܂T oUc.֧?u$sqà&1[znTjZ-EjEUeD˲U!PFg%8:%uYU4|`S5!}COdt|m@䴨|(=@غR6q!H'ފs~rإu9o]W]SY5ӥmt],#4UKI dϨM*oָuQr`Ya[.T:i(TM`8"\UH=OXR2fm鮞PsIiZIRΐ5v33 `9@썎 ;X t9J.V|:KnoKm4tԔ(b(EC g;o5J(o1nk[" wB|Ǝ=mXAxATR`tGYՋO\^Qb oL6Z5MYlV*y)Xf*@ђ )W եQ{$D:c0`e6+mxۓZjqD~( `6yQbzd\e!Oc:}#Mf\F*ni 5ɹTTl$NI8pυm>H[(ef5# J(ĉBv )AUc1T>'`\mV2G@3[Q#oFon*dC y?i9[ ThU7j'zJ42n :ۉ$ę͹LR44B kj!& [-Xp0r8u^x΂u1Nrz^^Nurg\cU*α10bn{^bR ^Bm} ^䖒YjMڦ!"1Py@16.4A}{c]U#rj+JaH!i`ގ{蝸V*GzX0Uƕ*KUHSy7pDQO}E,BzoIHeh͗S<3}zatGMYm jj\%AqPAYEd,'4i$dU#wqΊtEqQ"ֈuN ̭vH-|ç]ֆO5GBX$qN˖~CzqSQ7&Kf.Ujt\VJ`*LI !ٟF;R'؂4"lp vvEdPZy)ᢚZy0U3Hx,E akms~g~=lR^o]+afƋSm⏺v&V.W[*:u]I]0觩B 1x-C+z&4 SFk -Ŗ)>GIFH6U\]nTWHU3(+Q$#`G_nYMxjr?ZRT2M.dv 8 [;_Z?CcJ6I"6s|ln%̛Ư+v㫤xHT7hSnÈ'^p^ZcFf2Oˆ&8ܡc,GˌcipSx`ya 2iN -* ߄{]\]jTsAD%Ȩgkqrjhl̟N/4&/6P`>4` $%CbG~tN-G"Ou:c@c_SMv޽{VF"9Z39Ft/!egK%C@% >c˧j+U0.Lcù|q0z(HD/_+ѭ 1 'Vdw珯̬^[S.M O%k=jih1"/>z3"/1lxD"@u@CߢQzZ-W FMSizx$OE3b' Gux٨fۉ"LͶuaԭGlPU$fHsBaYfo^'xb@2I݅=NF``d m#ƩKޮl4W[i -O4-3'd>a>% ^\Ri7}ZخauBS#n{ʦ %rGӍSMkђF=GFwtAt_te!-]oZ@OU%"*x^tFUUN ='LuaE͡'x}\8?E[YSpqn\m o@% n|p gLv#8 OE;$SO+o"!튇>K?cZE_@5`E3KУp[}}}DQ#Tk$fZa"mتzSJNAT9%Y]E4RrzV,=3,0|`)o),ԊU"N q 0G̶=Ikk4oc#zaGG2"<!$cK$BZÓOݬ zmH*&dz0Sՙ< #`BivP/.\M!Kh]DZ$q:̲!1|ħ#muEWCXtl3~_IDI/P+=5sKԌ'G7S4;fSHx peljh?GP!2}ď6ؖw aIDzL,myFjI>-Ƴ(HAP.8H ):J*Z;m5G)eeFZV.Sbȫ͂tRGl~)}PGvLi ,r~ǿN@P b[qoƒl_I=1$sSyHT( g<1ðcF"$nMnTk{QU+K#")g,@Ubp@?T IA5j꪿WCQRkej#`GݹՀ$s \ܪ]lj+m=wPKwk ].U>t#H#mUDbT41ߍ<#adiޭDDV"jKVt⪆3AuR# 2ջnv2jXjQ1[ن|tI:3P٬5uEVt)c)e_ %1r˙QM7PH$Jø8 oʥ0K-&8$tpxטhs꥜p2h®pz'^GѪkS"$tWh(%w?I<\rR,Z /qiRlбO5RFz$fcd<}OOawuAj~v4փc٧y _'gͣ8GKAZTQ qijQ֥4*`A$xDb+0:4{-|'}= V]t!yhWo3?49\[gM!U]W=R҇İSҭ0ӫs!cS媝W:R$Yh>ǒ6]oj.+X4TԷ)'3%!RJ&Y@Sve*'>=Mp7[QXs{B->9[A ,'mU_ qJg;yFbZ8tu۩-W;Toq?^C#H YH;j=٤HgKu1P݇M d7iUiLc}:eH9Q4.b#|JKͷPYi)]ZZl!CC:`@nk(ڕ&2݂[ImoD_f+8% AwEJk'$䑎(~ؒFutK45E< KP`mzaߎcuJߩ/7GI0XBܮexC5/,mKQ4QO1^wG[4#F@pA=6洚/ }yWOqWADpvt'zqB u** & C~'uhH 13uD,Yujq&ex/uedg7>],]7$X*ב'hlf@OUUei"ƻP. ٵ͂E,0GR03߆ e =u_+Rꥦ TZPF@ `0~\<((Iz<:0VFxI%֚ŷ\io&@@{ DNep*A)h%:w< XZdY*+L3tt<Z@̣=^p&m:dخxI羝aɹ[ uR-szb[#Niہ/XV|T(N1#x9febˡ$zRuRp*|#9q'ujnq#M9k6H? a˛/q"}(3p`T]PTr z'+ߌNjZu ։58WIP2~Xܡ YOL*ٮqʝ@'~g_f+9j Z?07`:;Rj7"Ueq:^W^ xPN.$g5 J闡L}`xlڲ@9:|qjeMKmCw7qU2yd`*p@b3=Cc^jKD;3wE7G k*&ifPG9q2Nj-D)MAEoX+"}dvt꾜96S2V* eCliuw9ӈEsif*WQɍpRZmWg sU,S#j;vc9N: pLorX-y龉^\x6ܣ4u[#!s'T&8ivb^^pNLrh+M5DZELn8rOQߧ5b7E:CwN˛nx2`8+eq'7p$ 1ZJ\cA8ϹV=~H-Ko-XHY$ 2@?^4'0v*K59IB1 ppVoJX)t;L~S[ 5il1n' Sa᭹OW%%m?TK6Țܓ Ufʜ7Z+ !I%W]_M]W="#U[ťs`IౠX2L*MKwۅMRfTD˻{0}i]X5.\ǯzI>"Gs+ɒ|9$ @ /R?/ꯖEMb sc!e~l)S9\,7t6tV mV誺T,)MeKUzA`[.8lC N~,x-ZA]5(jZۺ+HĆ,&^9Sk8R[$2}O_V-~S b\tUį/m|V%W[rLi^u@֕AcBg)#TG!FTJ(իMv]dtO8Pf 6 n-h[uc]!g˖8$=a%D];U$q' 'Lux?DU[Վ4DщM䝲 @\I$vw?.hUB;EtIAz ڨ( rHE!,A c5h+ꎼ=3E+BS3#! YP{sss3,g6`û$߻-tZfPAEctXK8Ui#8v`G|. GvYԌB$aC[bVjݫ$bݴRg*='&Gm?I53dH KGbQ7A%ܣ|@^wfjA-!$I/9\x[ i%e,t,imgZ:5eILUprr f ~Z?MHh\Yrsn(b3>XNv#x[*ĕU1;TV` ?8ZjP=h)v"FAHERzvE`ZXYOc3Zuv8x餥㖒H7iυqzU@?g$~$9aqi-A"cxDG@=ݬi])GdDo+,u(2˩e+#1cqu?SsM&pI Avu4! hdi;Ha>=1ۈLj.—=2&Js3O+FclϿ9|utPjZKWP0;@8vFZI4/SS5%"yvβ5# ˿rGqx_hx8$ZLb"X߸ Aqs40R%M=PV$[DS>dRg'a{6#88."MH xt;ʵurng?6M\ې'k DmiVHdo$'b]v,Q4`qj,>aQ\:?V֛ݪKU4qeAJzcS*\88]F S>w,P<mQ-M^棳u{EE RFWƎGpt I&ҦHsaCb9B X ߙc1;O $)nzM ̭)MYIlj=Fs"V"פ$&(`Jgxą{]&[~hK,:߼w\6 cNJtDTi=hL%y`D?vD̝G`#U;*_k%LTASM(*"~aLa;YE| eF\X]GܵUtIk*aBdR :F!pA:Daf2D^yUKu-KYgELCu{ꚖhUe k g!iURkSTfmG Ɨ埮z~ mפZͪLWcdMñd; H=3 FrIXok[`6ξ^h-Y%%eU}u-ZV9Ӳ ǨQZNi$#xB@jJ szI sWP5<#3S!P6r384Æ6 { Jydv'E $ewgTۀxk4H>UvX,/5kSd\tX]uث+։i6p]ޫ"<Pk]jžᦄʴt6AaD^D:#A ?uI`DAf%{e}`$&.V#qߋnts4)UoEicg"$\(#ۊ;CEՂźO,-?3nYWOT]jOj&G$(%W(v} -f []U&^!ڶW*iI4!z jF2GbPg&~Ϸe̘A!p}תj^[MI\'Tp%eu< y #@AoSmtUcd^[7Y7mUhjtj%ގϕoHPGxB/O1:P#O~YA_ \ISRR^[T5.H.j6`w8YeOH$E YrĎMl-Q&B=8o5|Sb#iӱ?^Nކa.cuo.uZ9#3)\vޤe@e\K>VgMUKVC$BGMqJzHD2B Yݸxi? F xO6@<5t貮QRQY:RTR$QW$3T"n|;W\@yK봽颩Z=p\Smͼ{t<{,'ϒԨ=Ow_͊ [o+o+jYQ>84ޠ@Vs՚xZPI:[K'rkg!Fk+MnxQj8*Bk6 q Ǯ~\n,, j  uj=ޕ%0'H g$?xrC#U5óO*G]*$H$PxVuHep0>dܹFU#;KX,z"^OO!4S" AP6^]6yqG-d%4UvcbIwS:u e:~\lz#1gVú_݃êeGYWSIZ=\[PT(9JmHEoT52i C 0Eţ]_@ȊO@^BʭWM9[ R$$Ol l e]iWt/ۧ p)O^?NV^s<5),q2$/bhT -b7NaM«@;=[tW̽KFfiG,&!P(rw1t?/uDC@cY^5F }U}!g M榤İb r^01IfTjԫw8mZgSw!5r eOoD-g%|O@Y!cE+?äҤANӌoзثQ0"#>žh d l˷DY8 Q=~F ꣢cŮikA)UO7ozBr db+c0I${=0])tQ^d5Et[^ʾb˃ $%V PmWAp,ռɶ硍㩊,T#4Ԥ*pDmy,pc0­rCIDo?[m$FꦖkUjW[jo (6e澎V[%MN1lӱÑ#6v2*8MTGQ~h6[sԮW-/䢺[Wˍ*wU cD*8R $."0k71GՐ1/ 㯿|qeڤea_>sɔmrp6Q%AEe.۪i:FnYoqSb[tʻ1Nszӯ\L5kHVOxUкM!zU9tmU@Htkȩ p}%31ۍB Gi  mm*^(~)( 鑲:B`xԧ #L0O~ۡGTT5#BʶEֶQ fSm47![O^nT,RU3(W*H= M:,Իd7aNOp%Ee/d9׼L;y:.֠TSИɚxR"G_p/}lc;hU*g ZF$=3_dx"/.945$v[gU馾=kҜ#ţ Q805Qmf0zoVqʻ9* 7x*i˓ː{}3]X|lS*pQTnkv䦎))ؓxa ?䦺OV7Niķ\h59VTLc{ GRhujI &M% 6Yܣ╈Tz='reF+LuS9(nX\^5-7jN=Sׄ qJt ~iMn5-0VF'92mB)%߁Fǧ WK 6 2`ԭ0jT,}%\|O!Rpy!9=ON U/OLuI)'.c}UNG~\(fـ}U[#( "wlpuR!|,tM-z%էUa"QyN* sd֫X|#}VZZ`|_OT.Ri;V_d@30DUHB8ȭQ,O%7 wln˩9nUj˔bVUH0Fwqs]K s?V--^BG˾Si+cڨJ'p)Ice;,@x`6ӫUXQ::"bm(PyŪsۭ5-AUXyӂ@FL3{&8;? ^ckmrɮ95QWR,:'VA !iѴk\ix:Q}U<̼&;̐?o*]SK[U54 ;#$x,%X6 .qd|$FvK-dH%Jet=B?0߯!<)0Hi!'}GS9e'܂V|<'b QąRP4ᙶInrn[QfG" UD${!Eλcm'N $C*HapRQAA"Likd2H<ɇh;H$ q?e_l9h?ߺbp5asTmw80D,QṶܱTowp K3x\:S$kV :MQ^C-;Wςpeho^diGu2;EGe7422asS/$c6l5~|m|KdBR;eό2W mV &ntoތpfjSI|u@[K(sZ[y*Lp{}%_mszdZ ew`njך) ޭL:cL]l}=ƶ-=,~`.2z@鸎ṕc:%rˡM, \F L@?SMjyJU$3$aqvC\vh[U#0p"' ֹ7U)؈y׭{ܿ9=g̰܈_i~jvQB$%!B>p1IqC6(Gy!It6a$4),#c8ǿ7VH+ ]=tZTZH>q߉"[MZ5Ѭ?WDCE]3TthJȨ*ɻSCRJb$?D4՗JdyDb|ՕN:uQӁի?n$RM< Jk8l7a"&8=&Ͽ 42Np r"0M !CmH+ipুb)'xEn]OJ@0#GBKd^1'NLVKsJ(Mvel,)&Ҷ^^S]@Rl?R@K,0$SZFqk4LJ03EuqqIJͧa D~FT d1@~VXaԞ ɦ"GK쨭SSVI&\:|>sK].i24%3FRW_Uq;)+lsh*#t V[~H&zHTQfx,aX_|b'PX_)\<;?O_`Wg䪵W329+Iʑ8 o(C۵pv'{LTɔ'_-iBHupGIXԤuqeiRm9~ ]GN$Z9;X}H׉Ҋc\%Z[[u'`6Dz{s~({#p6[uUbQUa) k.>xzuK4C}Q+mjf0+.0W#?\p̭$쭩@ TYJ( pV]ͬ|NUIB|H |}D.K "hu.g Â$(?t8v'.] SgJz@WN#s{P,sJ0Y`H ?.NAcs cH5[NM$weWlSOߺ^gVQTyd!,JBGl>rOF,]j}#׀Q %buEUA)%s.N=c:~Rs*K]⅏,]w~x=}8 ?w~CcOOk̍E\-ZQ$$T9M '{:@t\4*H[u$%=Dҁq;~r ] !W:$Aч^cH%j)&}q-+ u]M!^%E@Cbl֗ gGbm]z{=TOCoE,0VI]ZNյAwV`[EMpsRtU<^ MVUUbb;X~^9q)-bPURO7%zNӏ2D1O.\{ pҴ2)F;aIp}4:-ЫMQR{ !u.jb:1Ny {g2`\.[L[Z)jC@H tG`QRS*GF '߅Zz$Opgۣ!:a\֫Jɰn-~GWN Bv!〞B'GumMB=l9Lp1rvlqnC?)h]Uj\p/6_&?-; SS-4UmEmpF\ S. |RlZiI zvE +'Xݹpcb\ڰ uG I= B~&yQλݭiꛓ=2>$F-Żu41\CAe~9-JRPȿ׎{_UC% c#S35uLh Mnwٌ{Bʱ|ǐ~PP[)KupIT7P鸂pOO~-%=(O %]¢]@ TQ=MPF9%TaWAR*] N1e1K }Pk-rUUaGoBthtTP@‰S;$Ad.?>&+i(v Nν6OϦ=J[IWqXFJ}X%6RtAi]K;}}@Zj-1A9IbbR=,~`t,_U il:S5:ZZYDN»8 :}8vi&=ey j%sJ`XV*:u@U&]aSvv*)C-ΑILY\Ն㓓QO4 ~/v%#~4Q;<_%je')Hc-J'z}z /6uQhҮU*2ԈhN-wZul {uBjثºx'150icPy=zOovIE*n$^ !`Ͼ1F!rL./c [m_I9ZAg&XOԩ_I-?YBGCa) ԫӴ35De$UsশB.]рS K6B:~\ 斜LD90Xᔖd$ j* }WI-G p[YkƢ}7e b{ gRvg¦($*x'dw  %{x1UV#}XEa%߯?p 4D_UGo.br'…o:WzUHZd|cot%UA3Y#E<(k}YfKnk,\yN]NӁ<`.SzN5,h2$| w$UR[T H'xLpN:ڊG{`$SO(iRԼ9 T*Y,ɇn$۫@VLsI8(yF :ߌ˷ LDÅkROMp~j$DV^frF^QEU=ڢWltTy vބ@Z iF*cR}X8=G=ǣiu-V ggRQ2[ F: 0̀pw|p˔xl'C\faS۷\QdjZoTt4E`I2I'roJS|9>Y#88dƂ M/冖٪7;^%gbg)U;doP44PkkI]u W4IHemlA|;DY/;OZ:Hjk!-O[n&4N; IL)ĩĂ{c24ShqյWMW[)M/#=qY I+ke+eL@&#orG("jzX[{ U@Ql\t'>v +i5Bx7y<*5z fB66;$=[fuJ7)Wy{SY x'(b:6Z F[Zk 1#I#UY!O\n:yA6yuꅎ9Ï˷۩.PSBrˤi$ȍ 'pOBq?T8 h2QuB9s"5,M䎋cq}{?znU5󬰫Hw|tW-yܪj3M+;sqɀKt=ޅ $2hLR  %yWVRNIjT~?^ T[(2$Fc߄wK^1#g˪YvHNCJCUS Lt˶b{.:I.vɃ[VnFEE-`v*O:8 Z0n6)[zRR'gI6m S8d)t=wjUN%zn]IdvXM)={c<@H.OE\)䙈Y%\'d|DfkBd%nd WʂIztn u%n"!*K5w:jie6ŒȦU"-8FXmUv]Q'P`>$ZHYh ɩGiW&?,^S 4y3c_ $d#yY+G6ͽ{$|IZt_*S蠦 VIbqDbOxvѯA ]U{*(o-ωP3(euBTmPS U#bq\p%LBGCdFp~CJ >rvc#8iq\en<.ji[ܰcbBe%D!\`L~uQ*-M,YeB~|1)Bdɉ1dg9+!jڎ=/\( ScR)eF3T^15m/g5tq@^tx: ȺrBGGe#q,M`R.-]kySz٘,ORz~.a,v9lUI-EՖ7Ѻ%Jr1cH`7Q!襵׺c[P",Ȯ@;?%T㙲#J|9 _?>QBr8 p_d)*R=8I'¢^+N6J_<$u/I8Sު)qN;?Ca< Q?#>ᒕqt[N=+UnK!I끜 kDS*SMmdfH38Ϩ~_sBt Gi[VTvdQWI=?džTRz_G  new zlib.Gzip({ flush: zlib.constants.Z_SYNC_FLUSH })) t.throws( _ => new zlib.Gzip({ flush: 'foobar' }), new Error('Invalid flush flag: foobar')) t.throws( _ => new zlib.Gzip({ flush: 10000 }), new Error('Invalid flush flag: 10000')) t.doesNotThrow(_ => new zlib.Gzip({ finishFlush: zlib.constants.Z_SYNC_FLUSH })) t.throws( _ => new zlib.Gzip({ finishFlush: 'foobar' }), new Error('Invalid flush flag: foobar')) t.throws( _ => new zlib.Gzip({ finishFlush: 10000 }), new Error('Invalid flush flag: 10000')) minizlib-1.1.0/test/flush.js000066400000000000000000000020271321663113600157670ustar00rootroot00000000000000'use strict' const t = require('tap') const zlib = require('../') const path = require('path') const fixtures = path.resolve(__dirname, 'fixtures') const fs = require('fs') const file = fs.readFileSync(path.resolve(fixtures, 'person.jpg')) const chunkSize = 16 const opts = { level: 0 } const deflater = new zlib.Deflate(opts) const chunk = file.slice(0, chunkSize) const expectedNone = Buffer.from([0x78, 0x01]) const blkhdr = Buffer.from([0x00, 0x10, 0x00, 0xef, 0xff]) const adler32 = Buffer.from([0x00, 0x00, 0x00, 0xff, 0xff]) const expectedFull = Buffer.concat([blkhdr, chunk, adler32]) let actualNone let actualFull deflater.write(chunk) deflater.flush(zlib.constants.Z_NO_FLUSH) actualNone = deflater.read() deflater.flush() const bufs = [] let buf while (buf = deflater.read()) { bufs.push(buf) } actualFull = Buffer.concat(bufs) t.same(actualNone, expectedNone) t.same(actualFull, expectedFull) deflater.end() deflater.flush() t.notEqual(deflater.read(), null) t.ok(deflater.ended) deflater.flush() t.equal(deflater.read(), null) minizlib-1.1.0/test/from-concatenated-gzip.js000066400000000000000000000052131321663113600212060ustar00rootroot00000000000000'use strict' // Test unzipping a gzip file that contains multiple concatenated "members" const t = require('tap') if (process.version.match(/^v4/)) { return t.plan(0, 'concatenated zlib members not supported in node v4') } const zlib = require('../') const corez = require('zlib') const path = require('path') const fs = require('fs') const fixtures = path.resolve(__dirname, 'fixtures') const method = Type => data => { const res = [] const z = new Type() z.on('data', chunk => res.push(chunk)) z.end(data) return Buffer.concat(res) } const gzip = method(zlib.Gzip) const gunz = method(zlib.Gunzip) const unzip = method(zlib.Unzip) const deflate = method(zlib.Deflate) const inflate = method(zlib.Inflate) const abcEncoded = gzip('abc') t.same(abcEncoded, corez.gzipSync('abc')) const defEncoded = gzip('def') t.same(defEncoded, corez.gzipSync('def')) const data = Buffer.concat([ abcEncoded, defEncoded ]) t.equal(gunz(data).toString(), 'abcdef') t.equal(unzip(data).toString(), 'abcdef') // Multi-member support does not apply to zlib inflate/deflate. t.equal(unzip(Buffer.concat([ deflate('abc'), deflate('def') ])).toString(), 'abc', 'result should match contents of first "member"') // files that have the "right" magic bytes for starting a new gzip member // in the middle of themselves, even if they are part of a single // regularly compressed member const pmmFileZlib = path.join(fixtures, 'pseudo-multimember-gzip.z') const pmmFileGz = path.join(fixtures, 'pseudo-multimember-gzip.gz') const pmmExpected = inflate(fs.readFileSync(pmmFileZlib)) const pmmResultBuffers = [] fs.createReadStream(pmmFileGz) .pipe(new zlib.Gunzip()) .on('data', data => pmmResultBuffers.push(data)) .on('end', _ => t.same(Buffer.concat(pmmResultBuffers), pmmExpected, 'result should match original random garbage')) // test that the next gzip member can wrap around the input buffer boundary const offs = [0, 1, 2, 3, 4, defEncoded.length] offs.forEach(offset => { t.test('wraparound offset = ' + offset, t => { t.plan(1) const resultBuffers = [] const unzip = new zlib.Gunzip() .on('error', (err) => { assert.ifError(err) }) .on('data', (data) => resultBuffers.push(data)) .on('end', _ => { t.equal( Buffer.concat(resultBuffers).toString(), 'abcdef', 'result should match original input', { offset: offset } ) }) // first write: write "abc" + the first bytes of "def" unzip.write(Buffer.concat([ abcEncoded, defEncoded.slice(0, offset) ])) // write remaining bytes of "def" unzip.end(defEncoded.slice(offset)) }) }) minizlib-1.1.0/test/params.js000066400000000000000000000026271321663113600161370ustar00rootroot00000000000000'use strict'; const t = require('tap') const assert = require('assert'); const zlib = require('../'); const path = require('path'); const fixtures = path.resolve(__dirname, 'fixtures') const fs = require('fs'); const file = fs.readFileSync(path.resolve(fixtures, 'person.jpg')); const chunkSize = 12 * 1024; const opts = { level: 9, strategy: zlib.constants.Z_DEFAULT_STRATEGY }; const deflater = new zlib.DeflateRaw(opts); const chunk1 = file.slice(0, chunkSize); const chunk2 = file.slice(chunkSize); const blkhdr = Buffer.from([0x00, 0x5a, 0x82, 0xa5, 0x7d]); const expected = Buffer.concat([blkhdr, chunk2]); let actual; deflater.write(chunk1) do {} while (deflater.read()) // twice should be no-op deflater.params(0, zlib.constants.Z_DEFAULT_STRATEGY) deflater.params(0, zlib.constants.Z_DEFAULT_STRATEGY) do {} while (deflater.read()) deflater.write(chunk2) const bufs = []; for (let buf; buf = deflater.read(); bufs.push(buf)); actual = Buffer.concat(bufs); t.same(actual, expected) t.throws('invalid level', _ => deflater.params(Infinity), new Error('Invalid compression level: Infinity')) t.throws('invalid strategy', _ => deflater.params(0, 'nope'), new Error('Invalid strategy: nope')) deflater.end() deflater.read() deflater.close() deflater.close() deflater.close() t.throws('params after end;', _ => deflater.params(0, 0), new Error('cannot switch params when binding is closed')) minizlib-1.1.0/test/zero-byte.js000066400000000000000000000005011321663113600165610ustar00rootroot00000000000000'use strict' const t = require('tap') const zlib = require('../') const gz = new zlib.Gzip() const emptyBuffer = Buffer.alloc(0) let received = 0 gz.on('data', function(c) { received += c.length }) t.plan(2) gz.on('end', _ => { t.equal(received, 20) }) gz.write(emptyBuffer, _ => t.pass('called write cb')) gz.end() minizlib-1.1.0/test/zlib.js000066400000000000000000000130451321663113600156100ustar00rootroot00000000000000'use strict' const t = require('tap') const zlib = require('../') const path = require('path') const fs = require('fs') const util = require('util') const stream = require('stream') const EE = require('events').EventEmitter const fixtures = path.resolve(__dirname, 'fixtures') let zlibPairs = [ [zlib.Deflate, zlib.Inflate], [zlib.Gzip, zlib.Gunzip], [zlib.Deflate, zlib.Unzip], [zlib.Gzip, zlib.Unzip], [zlib.DeflateRaw, zlib.InflateRaw] ] // how fast to trickle through the slowstream let trickle = [128, 1024, 1024 * 1024] // tunable options for zlib classes. // several different chunk sizes let chunkSize = [128, 1024, 1024 * 16, 1024 * 1024] // this is every possible value. let level = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] let windowBits = [8, 9, 10, 11, 12, 13, 14, 15] let memLevel = [1, 2, 3, 4, 5, 6, 7, 8, 9] let strategy = [0, 1, 2, 3, 4] // it's nice in theory to test every combination, but it // takes WAY too long. Maybe a pummel test could do this? if (!process.env.PUMMEL) { trickle = [1024] chunkSize = [1024 * 16] windowBits = [9] level = [6] memLevel = [8] strategy = [0] } let testFiles = ['person.jpg', 'elipses.txt', 'empty.txt'] if (process.env.FAST) { zlibPairs = [[zlib.Gzip, zlib.Unzip]] testFiles = ['person.jpg'] } const tests = {} testFiles.forEach(function(file) { tests[file] = fs.readFileSync(path.resolve(fixtures, file)) }) // stream that saves everything class BufferStream extends EE { constructor () { super() this.chunks = [] this.length = 0 this.writable = true this.readable = true } write (c) { this.chunks.push(c) this.length += c.length return true } end (c) { if (c) this.write(c) // flatten const buf = Buffer.allocUnsafe(this.length) let i = 0 this.chunks.forEach(c => { c.copy(buf, i) i += c.length }) this.emit('data', buf) this.emit('end') return true } } class SlowStream extends stream.Stream { constructor (trickle) { super() this.trickle = trickle this.offset = 0 this.readable = this.writable = true this.paused = false } write () { throw new Error('not implemented, just call ss.end(chunk)') } pause () { this.paused = true this.emit('pause') } resume () { const emit = () => { if (this.paused) return if (this.offset >= this.length) { this.ended = true return this.emit('end') } const end = Math.min(this.offset + this.trickle, this.length) const c = this.chunk.slice(this.offset, end) this.offset += c.length this.emit('data', c) process.nextTick(emit) } if (this.ended) return this.emit('resume') if (!this.chunk) return this.paused = false emit() } end (chunk) { // walk over the chunk in blocks. this.chunk = chunk this.length = chunk.length this.resume() return this.ended } } // for each of the files, make sure that compressing and // decompressing results in the same data, for every combination // of the options set above. let failures = 0 let total = 0 let done = 0 const runTest = ( t, file, chunkSize, trickle, windowBits, level, memLevel, strategy, pair ) => { const test = tests[file] const Def = pair[0] const Inf = pair[1] const opts = { level: level, windowBits: windowBits, memLevel: memLevel, strategy: strategy } const def = new Def(opts) const inf = new Inf(opts) const ss = new SlowStream(trickle) const buf = new BufferStream() // verify that the same exact buffer comes out the other end. buf.on('data', function(c) { const msg = file let ok = true const testNum = ++done let i for (i = 0; i < Math.max(c.length, test.length); i++) { if (c[i] !== test[i]) { ok = false break } } t.ok(ok, msg, { testfile: file, type: Def.name + ' -> ' + Inf.name, position: i, options: opts, expect: test[i], actual: c[i], chunkSize: chunkSize }) t.end() }) // the magic happens here. // ss.pipe(def).pipe(inf).pipe(buf) ss.pipe(def) def.pipe(inf) inf.pipe(buf) ss.end(test) } Object.keys(tests).forEach(file => { t.test('file=' + file, t => { chunkSize.forEach(chunkSize => { t.test('chunkSize=' + chunkSize, t => { trickle.forEach(trickle => { t.test('trickle=' + trickle, t => { windowBits.forEach(windowBits => { t.test('windowBits=' + windowBits, t => { level.forEach(level => { t.test('level=' + level, t => { memLevel.forEach(memLevel => { t.test('memLevel=' + memLevel, t => { strategy.forEach(strategy => { t.test('strategy=' + strategy, t => { zlibPairs.forEach((pair, pairIndex) => { t.test('pair=' + pairIndex, t => { runTest(t, file, chunkSize, trickle, windowBits, level, memLevel, strategy, pair) }) }) t.end() }) }) t.end() }) }) t.end() }) }) t.end() }) }) t.end() }) }) t.end() }) }) t.end() }) })