Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorForrest L Norvell <forrest@npmjs.com>2015-10-15 08:17:03 +0300
committerRebecca Turner <me@re-becca.org>2015-10-16 01:25:33 +0300
commit25a234b4595ee3f1a2c09e2a39e3c238aa642557 (patch)
treedef772e3c15c7bd3d0b05eeeb6069898617cbf23 /node_modules/tar
parent4cd74b0cdc639081fcf292eb9a03dbd93451c7c0 (diff)
src: install npm@3 with npm@2
Restore the ability to do one-shot upgrades from the versions of npm bundled with Node 0.8 to npm@3, which simplifies using Travis with old Node and new npm, for compatibility testing purposes. Older versions of npm repack packages on install, which works poorly with the way npm@3 handles bundledDependencies with flat trees. Fixes: #9668 PR-URL: https://github.com/npm/npm/pull/9981
Diffstat (limited to 'node_modules/tar')
-rw-r--r--node_modules/tar/node_modules/block-stream/LICENCE25
-rw-r--r--node_modules/tar/node_modules/block-stream/LICENSE15
-rw-r--r--node_modules/tar/node_modules/block-stream/README.md14
-rw-r--r--node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js70
-rw-r--r--node_modules/tar/node_modules/block-stream/bench/block-stream.js68
-rw-r--r--node_modules/tar/node_modules/block-stream/bench/dropper-pause.js70
-rw-r--r--node_modules/tar/node_modules/block-stream/bench/dropper.js68
-rw-r--r--node_modules/tar/node_modules/block-stream/block-stream.js209
-rw-r--r--node_modules/tar/node_modules/block-stream/package.json55
-rw-r--r--node_modules/tar/node_modules/block-stream/test/basic.js27
-rw-r--r--node_modules/tar/node_modules/block-stream/test/nopad-thorough.js68
-rw-r--r--node_modules/tar/node_modules/block-stream/test/nopad.js57
-rw-r--r--node_modules/tar/node_modules/block-stream/test/pause-resume.js73
-rw-r--r--node_modules/tar/node_modules/block-stream/test/thorough.js68
-rw-r--r--node_modules/tar/node_modules/block-stream/test/two-stream.js59
-rw-r--r--node_modules/tar/package.json86
16 files changed, 977 insertions, 55 deletions
diff --git a/node_modules/tar/node_modules/block-stream/LICENCE b/node_modules/tar/node_modules/block-stream/LICENCE
new file mode 100644
index 000000000..74489e2e2
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/LICENCE
@@ -0,0 +1,25 @@
+Copyright (c) Isaac Z. Schlueter
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/node_modules/tar/node_modules/block-stream/LICENSE b/node_modules/tar/node_modules/block-stream/LICENSE
new file mode 100644
index 000000000..19129e315
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/tar/node_modules/block-stream/README.md b/node_modules/tar/node_modules/block-stream/README.md
new file mode 100644
index 000000000..c16e9c468
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/README.md
@@ -0,0 +1,14 @@
+# block-stream
+
+A stream of blocks.
+
+Write data into it, and it'll output data in buffer blocks the size you
+specify, padding with zeroes if necessary.
+
+```javascript
+var block = new BlockStream(512)
+fs.createReadStream("some-file").pipe(block)
+block.pipe(fs.createWriteStream("block-file"))
+```
+
+When `.end()` or `.flush()` is called, it'll pad the block with zeroes.
diff --git a/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js b/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js
new file mode 100644
index 000000000..9328844aa
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/bench/block-stream-pause.js
@@ -0,0 +1,70 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16, 25, 1024]
+ , writeSizes = [4, 8, 15, 16, 17, 64, 100]
+ , writeCounts = [1, 10, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize, {nopad: true })
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+
+ f.on("data", function (c) {
+ timeouts ++
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ f.pause()
+ setTimeout(function () {
+ timeouts --
+
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ f.resume()
+ }, 100)
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = writeSize * writeCount * 2
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 100)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/bench/block-stream.js b/node_modules/tar/node_modules/block-stream/bench/block-stream.js
new file mode 100644
index 000000000..1141f3a84
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/bench/block-stream.js
@@ -0,0 +1,68 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16, 25, 1024]
+ , writeSizes = [4, 8, 15, 16, 17, 64, 100]
+ , writeCounts = [1, 10, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize, {nopad: true })
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+
+ f.on("data", function (c) {
+ timeouts ++
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ setTimeout(function () {
+ timeouts --
+
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ }, 100)
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = writeSize * writeCount * 2
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 100)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js b/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js
new file mode 100644
index 000000000..93e4068ee
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/bench/dropper-pause.js
@@ -0,0 +1,70 @@
+var BlockStream = require("dropper")
+
+var blockSizes = [16, 25, 1024]
+ , writeSizes = [4, 8, 15, 16, 17, 64, 100]
+ , writeCounts = [1, 10, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize, {nopad: true })
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+
+ f.on("data", function (c) {
+ timeouts ++
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ f.pause()
+ setTimeout(function () {
+ timeouts --
+
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ f.resume()
+ }, 100)
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = writeSize * writeCount * 2
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 100)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/bench/dropper.js b/node_modules/tar/node_modules/block-stream/bench/dropper.js
new file mode 100644
index 000000000..55fa13305
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/bench/dropper.js
@@ -0,0 +1,68 @@
+var BlockStream = require("dropper")
+
+var blockSizes = [16, 25, 1024]
+ , writeSizes = [4, 8, 15, 16, 17, 64, 100]
+ , writeCounts = [1, 10, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize, {nopad: true })
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+
+ f.on("data", function (c) {
+ timeouts ++
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ setTimeout(function () {
+ timeouts --
+
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ }, 100)
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = writeSize * writeCount * 2
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 100)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/block-stream.js b/node_modules/tar/node_modules/block-stream/block-stream.js
new file mode 100644
index 000000000..008de035c
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/block-stream.js
@@ -0,0 +1,209 @@
+// write data to it, and it'll emit data in 512 byte blocks.
+// if you .end() or .flush(), it'll emit whatever it's got,
+// padded with nulls to 512 bytes.
+
+module.exports = BlockStream
+
+var Stream = require("stream").Stream
+ , inherits = require("inherits")
+ , assert = require("assert").ok
+ , debug = process.env.DEBUG ? console.error : function () {}
+
+function BlockStream (size, opt) {
+ this.writable = this.readable = true
+ this._opt = opt || {}
+ this._chunkSize = size || 512
+ this._offset = 0
+ this._buffer = []
+ this._bufferLength = 0
+ if (this._opt.nopad) this._zeroes = false
+ else {
+ this._zeroes = new Buffer(this._chunkSize)
+ for (var i = 0; i < this._chunkSize; i ++) {
+ this._zeroes[i] = 0
+ }
+ }
+}
+
+inherits(BlockStream, Stream)
+
+BlockStream.prototype.write = function (c) {
+ // debug(" BS write", c)
+ if (this._ended) throw new Error("BlockStream: write after end")
+ if (c && !Buffer.isBuffer(c)) c = new Buffer(c + "")
+ if (c.length) {
+ this._buffer.push(c)
+ this._bufferLength += c.length
+ }
+ // debug("pushed onto buffer", this._bufferLength)
+ if (this._bufferLength >= this._chunkSize) {
+ if (this._paused) {
+ // debug(" BS paused, return false, need drain")
+ this._needDrain = true
+ return false
+ }
+ this._emitChunk()
+ }
+ return true
+}
+
+BlockStream.prototype.pause = function () {
+ // debug(" BS pausing")
+ this._paused = true
+}
+
+BlockStream.prototype.resume = function () {
+ // debug(" BS resume")
+ this._paused = false
+ return this._emitChunk()
+}
+
+BlockStream.prototype.end = function (chunk) {
+ // debug("end", chunk)
+ if (typeof chunk === "function") cb = chunk, chunk = null
+ if (chunk) this.write(chunk)
+ this._ended = true
+ this.flush()
+}
+
+BlockStream.prototype.flush = function () {
+ this._emitChunk(true)
+}
+
+BlockStream.prototype._emitChunk = function (flush) {
+ // debug("emitChunk flush=%j emitting=%j paused=%j", flush, this._emitting, this._paused)
+
+ // emit a <chunkSize> chunk
+ if (flush && this._zeroes) {
+ // debug(" BS push zeroes", this._bufferLength)
+ // push a chunk of zeroes
+ var padBytes = (this._bufferLength % this._chunkSize)
+ if (padBytes !== 0) padBytes = this._chunkSize - padBytes
+ if (padBytes > 0) {
+ // debug("padBytes", padBytes, this._zeroes.slice(0, padBytes))
+ this._buffer.push(this._zeroes.slice(0, padBytes))
+ this._bufferLength += padBytes
+ // debug(this._buffer[this._buffer.length - 1].length, this._bufferLength)
+ }
+ }
+
+ if (this._emitting || this._paused) return
+ this._emitting = true
+
+ // debug(" BS entering loops")
+ var bufferIndex = 0
+ while (this._bufferLength >= this._chunkSize &&
+ (flush || !this._paused)) {
+ // debug(" BS data emission loop", this._bufferLength)
+
+ var out
+ , outOffset = 0
+ , outHas = this._chunkSize
+
+ while (outHas > 0 && (flush || !this._paused) ) {
+ // debug(" BS data inner emit loop", this._bufferLength)
+ var cur = this._buffer[bufferIndex]
+ , curHas = cur.length - this._offset
+ // debug("cur=", cur)
+ // debug("curHas=%j", curHas)
+ // If it's not big enough to fill the whole thing, then we'll need
+ // to copy multiple buffers into one. However, if it is big enough,
+ // then just slice out the part we want, to save unnecessary copying.
+ // Also, need to copy if we've already done some copying, since buffers
+ // can't be joined like cons strings.
+ if (out || curHas < outHas) {
+ out = out || new Buffer(this._chunkSize)
+ cur.copy(out, outOffset,
+ this._offset, this._offset + Math.min(curHas, outHas))
+ } else if (cur.length === outHas && this._offset === 0) {
+ // shortcut -- cur is exactly long enough, and no offset.
+ out = cur
+ } else {
+ // slice out the piece of cur that we need.
+ out = cur.slice(this._offset, this._offset + outHas)
+ }
+
+ if (curHas > outHas) {
+ // means that the current buffer couldn't be completely output
+ // update this._offset to reflect how much WAS written
+ this._offset += outHas
+ outHas = 0
+ } else {
+ // output the entire current chunk.
+ // toss it away
+ outHas -= curHas
+ outOffset += curHas
+ bufferIndex ++
+ this._offset = 0
+ }
+ }
+
+ this._bufferLength -= this._chunkSize
+ assert(out.length === this._chunkSize)
+ // debug("emitting data", out)
+ // debug(" BS emitting, paused=%j", this._paused, this._bufferLength)
+ this.emit("data", out)
+ out = null
+ }
+ // debug(" BS out of loops", this._bufferLength)
+
+ // whatever is left, it's not enough to fill up a block, or we're paused
+ this._buffer = this._buffer.slice(bufferIndex)
+ if (this._paused) {
+ // debug(" BS paused, leaving", this._bufferLength)
+ this._needsDrain = true
+ this._emitting = false
+ return
+ }
+
+ // if flushing, and not using null-padding, then need to emit the last
+ // chunk(s) sitting in the queue. We know that it's not enough to
+ // fill up a whole block, because otherwise it would have been emitted
+ // above, but there may be some offset.
+ var l = this._buffer.length
+ if (flush && !this._zeroes && l) {
+ if (l === 1) {
+ if (this._offset) {
+ this.emit("data", this._buffer[0].slice(this._offset))
+ } else {
+ this.emit("data", this._buffer[0])
+ }
+ } else {
+ var outHas = this._bufferLength
+ , out = new Buffer(outHas)
+ , outOffset = 0
+ for (var i = 0; i < l; i ++) {
+ var cur = this._buffer[i]
+ , curHas = cur.length - this._offset
+ cur.copy(out, outOffset, this._offset)
+ this._offset = 0
+ outOffset += curHas
+ this._bufferLength -= curHas
+ }
+ this.emit("data", out)
+ }
+ // truncate
+ this._buffer.length = 0
+ this._bufferLength = 0
+ this._offset = 0
+ }
+
+ // now either drained or ended
+ // debug("either draining, or ended", this._bufferLength, this._ended)
+ // means that we've flushed out all that we can so far.
+ if (this._needDrain) {
+ // debug("emitting drain", this._bufferLength)
+ this._needDrain = false
+ this.emit("drain")
+ }
+
+ if ((this._bufferLength === 0) && this._ended && !this._endEmitted) {
+ // debug("emitting end", this._bufferLength)
+ this._endEmitted = true
+ this.emit("end")
+ }
+
+ this._emitting = false
+
+ // debug(" BS no longer emitting", flush, this._paused, this._emitting, this._bufferLength, this._chunkSize)
+}
diff --git a/node_modules/tar/node_modules/block-stream/package.json b/node_modules/tar/node_modules/block-stream/package.json
new file mode 100644
index 000000000..97d9d42ab
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/package.json
@@ -0,0 +1,55 @@
+{
+ "author": {
+ "name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
+ "url": "http://blog.izs.me/"
+ },
+ "name": "block-stream",
+ "description": "a stream of blocks",
+ "version": "0.0.8",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/block-stream.git"
+ },
+ "engines": {
+ "node": "0.4 || >=0.5.8"
+ },
+ "main": "block-stream.js",
+ "dependencies": {
+ "inherits": "~2.0.0"
+ },
+ "devDependencies": {
+ "tap": "0.x"
+ },
+ "scripts": {
+ "test": "tap test/"
+ },
+ "license": "ISC",
+ "gitHead": "b35520314f4763af0788d65a846bb43d9c0a8f02",
+ "bugs": {
+ "url": "https://github.com/isaacs/block-stream/issues"
+ },
+ "homepage": "https://github.com/isaacs/block-stream#readme",
+ "_id": "block-stream@0.0.8",
+ "_shasum": "0688f46da2bbf9cff0c4f68225a0cb95cbe8a46b",
+ "_from": "block-stream@*",
+ "_npmVersion": "2.10.0",
+ "_nodeVersion": "2.0.1",
+ "_npmUser": {
+ "name": "isaacs",
+ "email": "isaacs@npmjs.com"
+ },
+ "dist": {
+ "shasum": "0688f46da2bbf9cff0c4f68225a0cb95cbe8a46b",
+ "tarball": "http://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz"
+ },
+ "maintainers": [
+ {
+ "name": "isaacs",
+ "email": "i@izs.me"
+ }
+ ],
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz",
+ "readme": "ERROR: No README data found!"
+}
diff --git a/node_modules/tar/node_modules/block-stream/test/basic.js b/node_modules/tar/node_modules/block-stream/test/basic.js
new file mode 100644
index 000000000..b4b930511
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/test/basic.js
@@ -0,0 +1,27 @@
+var tap = require("tap")
+ , BlockStream = require("../block-stream.js")
+
+tap.test("basic test", function (t) {
+ var b = new BlockStream(16)
+ var fs = require("fs")
+ var fstr = fs.createReadStream(__filename, {encoding: "utf8"})
+ fstr.pipe(b)
+
+ var stat
+ t.doesNotThrow(function () {
+ stat = fs.statSync(__filename)
+ }, "stat should not throw")
+
+ var totalBytes = 0
+ b.on("data", function (c) {
+ t.equal(c.length, 16, "chunks should be 16 bytes long")
+ t.type(c, Buffer, "chunks should be buffer objects")
+ totalBytes += c.length
+ })
+ b.on("end", function () {
+ var expectedBytes = stat.size + (16 - stat.size % 16)
+ t.equal(totalBytes, expectedBytes, "Should be multiple of 16")
+ t.end()
+ })
+
+})
diff --git a/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js b/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js
new file mode 100644
index 000000000..7a8de88b5
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/test/nopad-thorough.js
@@ -0,0 +1,68 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16]//, 25]//, 1024]
+ , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100]
+ , writeCounts = [1, 10]//, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize, {nopad: true })
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+
+ f.on("data", function (c) {
+ timeouts ++
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ setTimeout(function () {
+ timeouts --
+
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ }, 100)
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = writeSize * writeCount * 2
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 100)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/test/nopad.js b/node_modules/tar/node_modules/block-stream/test/nopad.js
new file mode 100644
index 000000000..6d38429fb
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/test/nopad.js
@@ -0,0 +1,57 @@
+var BlockStream = require("../")
+var tap = require("tap")
+
+
+tap.test("don't pad, small writes", function (t) {
+ var f = new BlockStream(16, { nopad: true })
+ t.plan(1)
+
+ f.on("data", function (c) {
+ t.equal(c.toString(), "abc", "should get 'abc'")
+ })
+
+ f.on("end", function () { t.end() })
+
+ f.write(new Buffer("a"))
+ f.write(new Buffer("b"))
+ f.write(new Buffer("c"))
+ f.end()
+})
+
+tap.test("don't pad, exact write", function (t) {
+ var f = new BlockStream(16, { nopad: true })
+ t.plan(1)
+
+ var first = true
+ f.on("data", function (c) {
+ if (first) {
+ first = false
+ t.equal(c.toString(), "abcdefghijklmnop", "first chunk")
+ } else {
+ t.fail("should only get one")
+ }
+ })
+
+ f.on("end", function () { t.end() })
+
+ f.end(new Buffer("abcdefghijklmnop"))
+})
+
+tap.test("don't pad, big write", function (t) {
+ var f = new BlockStream(16, { nopad: true })
+ t.plan(2)
+
+ var first = true
+ f.on("data", function (c) {
+ if (first) {
+ first = false
+ t.equal(c.toString(), "abcdefghijklmnop", "first chunk")
+ } else {
+ t.equal(c.toString(), "q")
+ }
+ })
+
+ f.on("end", function () { t.end() })
+
+ f.end(new Buffer("abcdefghijklmnopq"))
+})
diff --git a/node_modules/tar/node_modules/block-stream/test/pause-resume.js b/node_modules/tar/node_modules/block-stream/test/pause-resume.js
new file mode 100644
index 000000000..64d0d091d
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/test/pause-resume.js
@@ -0,0 +1,73 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16]
+ , writeSizes = [15, 16, 17]
+ , writeCounts = [1, 10]//, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize)
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+ var paused = false
+
+ f.on("data", function (c) {
+ timeouts ++
+ t.notOk(paused, "should not be paused when emitting data")
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ paused = true
+ f.pause()
+ process.nextTick(function () {
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ paused = false
+ f.resume()
+ timeouts --
+ })
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = expectChunks * blockSize
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 200)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/test/thorough.js b/node_modules/tar/node_modules/block-stream/test/thorough.js
new file mode 100644
index 000000000..1cc9ea08a
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/test/thorough.js
@@ -0,0 +1,68 @@
+var BlockStream = require("../block-stream.js")
+
+var blockSizes = [16]//, 25]//, 1024]
+ , writeSizes = [4, 15, 16, 17, 64 ]//, 64, 100]
+ , writeCounts = [1, 10]//, 100]
+ , tap = require("tap")
+
+writeCounts.forEach(function (writeCount) {
+blockSizes.forEach(function (blockSize) {
+writeSizes.forEach(function (writeSize) {
+ tap.test("writeSize=" + writeSize +
+ " blockSize="+blockSize +
+ " writeCount="+writeCount, function (t) {
+ var f = new BlockStream(blockSize)
+
+ var actualChunks = 0
+ var actualBytes = 0
+ var timeouts = 0
+
+ f.on("data", function (c) {
+ timeouts ++
+
+ actualChunks ++
+ actualBytes += c.length
+
+ // make sure that no data gets corrupted, and basic sanity
+ var before = c.toString()
+ // simulate a slow write operation
+ setTimeout(function () {
+ timeouts --
+
+ var after = c.toString()
+ t.equal(after, before, "should not change data")
+
+ // now corrupt it, to find leaks.
+ for (var i = 0; i < c.length; i ++) {
+ c[i] = "x".charCodeAt(0)
+ }
+ }, 100)
+ })
+
+ f.on("end", function () {
+ // round up to the nearest block size
+ var expectChunks = Math.ceil(writeSize * writeCount * 2 / blockSize)
+ var expectBytes = expectChunks * blockSize
+ t.equal(actualBytes, expectBytes,
+ "bytes=" + expectBytes + " writeSize=" + writeSize)
+ t.equal(actualChunks, expectChunks,
+ "chunks=" + expectChunks + " writeSize=" + writeSize)
+
+ // wait for all the timeout checks to finish, then end the test
+ setTimeout(function WAIT () {
+ if (timeouts > 0) return setTimeout(WAIT)
+ t.end()
+ }, 100)
+ })
+
+ for (var i = 0; i < writeCount; i ++) {
+ var a = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) a[j] = "a".charCodeAt(0)
+ var b = new Buffer(writeSize);
+ for (var j = 0; j < writeSize; j ++) b[j] = "b".charCodeAt(0)
+ f.write(a)
+ f.write(b)
+ }
+ f.end()
+ })
+}) }) })
diff --git a/node_modules/tar/node_modules/block-stream/test/two-stream.js b/node_modules/tar/node_modules/block-stream/test/two-stream.js
new file mode 100644
index 000000000..c6db79a43
--- /dev/null
+++ b/node_modules/tar/node_modules/block-stream/test/two-stream.js
@@ -0,0 +1,59 @@
+var log = console.log,
+ assert = require( 'assert' ),
+ BlockStream = require("../block-stream.js"),
+ isize = 0, tsize = 0, fsize = 0, psize = 0, i = 0,
+ filter = null, paper = null, stack = null,
+
+// a source data buffer
+tsize = 1 * 1024; // <- 1K
+stack = new Buffer( tsize );
+for ( ; i < tsize; i++) stack[i] = "x".charCodeAt(0);
+
+isize = 1 * 1024; // <- initial packet size with 4K no bug!
+fsize = 2 * 1024 ; // <- first block-stream size
+psize = Math.ceil( isize / 6 ); // <- second block-stream size
+
+fexpected = Math.ceil( tsize / fsize ); // <- packets expected for first
+pexpected = Math.ceil( tsize / psize ); // <- packets expected for second
+
+
+filter = new BlockStream( fsize, { nopad : true } );
+paper = new BlockStream( psize, { nopad : true } );
+
+
+var fcounter = 0;
+filter.on( 'data', function (c) {
+ // verify that they're not null-padded
+ for (var i = 0; i < c.length; i ++) {
+ assert.strictEqual(c[i], "x".charCodeAt(0))
+ }
+ ++fcounter;
+} );
+
+var pcounter = 0;
+paper.on( 'data', function (c) {
+ // verify that they're not null-padded
+ for (var i = 0; i < c.length; i ++) {
+ assert.strictEqual(c[i], "x".charCodeAt(0))
+ }
+ ++pcounter;
+} );
+
+filter.pipe( paper );
+
+filter.on( 'end', function () {
+ log("fcounter: %s === %s", fcounter, fexpected)
+ assert.strictEqual( fcounter, fexpected );
+} );
+
+paper.on( 'end', function () {
+ log("pcounter: %s === %s", pcounter, pexpected);
+ assert.strictEqual( pcounter, pexpected );
+} );
+
+
+for ( i = 0, j = isize; j <= tsize; j += isize ) {
+ filter.write( stack.slice( j - isize, j ) );
+}
+
+filter.end();
diff --git a/node_modules/tar/package.json b/node_modules/tar/package.json
index de38b2461..23921a83e 100644
--- a/node_modules/tar/package.json
+++ b/node_modules/tar/package.json
@@ -1,67 +1,50 @@
{
- "_args": [
- [
- "tar@~2.2.0",
- "/Users/rebecca/code/npm"
- ]
- ],
- "_from": "tar@>=2.2.0 <2.3.0",
- "_id": "tar@2.2.1",
- "_inCache": true,
- "_location": "/tar",
- "_nodeVersion": "2.2.2",
- "_npmUser": {
- "email": "kat@sykosomatic.org",
- "name": "zkat"
- },
- "_npmVersion": "2.14.3",
- "_phantomChildren": {},
- "_requested": {
- "name": "tar",
- "raw": "tar@~2.2.0",
- "rawSpec": "~2.2.0",
- "scope": null,
- "spec": ">=2.2.0 <2.3.0",
- "type": "range"
- },
- "_requiredBy": [
- "/"
- ],
- "_resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
- "_shasum": "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1",
- "_shrinkwrap": null,
- "_spec": "tar@~2.2.0",
- "_where": "/Users/rebecca/code/npm",
"author": {
- "email": "i@izs.me",
"name": "Isaac Z. Schlueter",
+ "email": "i@izs.me",
"url": "http://blog.izs.me/"
},
- "bugs": {
- "url": "https://github.com/isaacs/node-tar/issues"
+ "name": "tar",
+ "description": "tar for node",
+ "version": "2.2.1",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/node-tar.git"
+ },
+ "main": "tar.js",
+ "scripts": {
+ "test": "tap test/*.js"
},
"dependencies": {
"block-stream": "*",
"fstream": "^1.0.2",
"inherits": "2"
},
- "description": "tar for node",
"devDependencies": {
"graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
"rimraf": "1.x",
- "tap": "0.x"
+ "tap": "0.x",
+ "mkdirp": "^0.5.0"
+ },
+ "license": "ISC",
+ "gitHead": "52237e39d2eb68d22a32d9a98f1d762189fe6a3d",
+ "bugs": {
+ "url": "https://github.com/isaacs/node-tar/issues"
+ },
+ "homepage": "https://github.com/isaacs/node-tar#readme",
+ "_id": "tar@2.2.1",
+ "_shasum": "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1",
+ "_from": "tar@>=2.2.1 <2.3.0",
+ "_npmVersion": "2.14.3",
+ "_nodeVersion": "2.2.2",
+ "_npmUser": {
+ "name": "zkat",
+ "email": "kat@sykosomatic.org"
},
- "directories": {},
"dist": {
"shasum": "8e4d2a256c0e2185c6b18ad694aec968b83cb1d1",
"tarball": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
},
- "gitHead": "52237e39d2eb68d22a32d9a98f1d762189fe6a3d",
- "homepage": "https://github.com/isaacs/node-tar#readme",
- "installable": true,
- "license": "ISC",
- "main": "tar.js",
"maintainers": [
{
"name": "isaacs",
@@ -80,14 +63,7 @@
"email": "kat@sykosomatic.org"
}
],
- "name": "tar",
- "optionalDependencies": {},
- "repository": {
- "type": "git",
- "url": "git://github.com/isaacs/node-tar.git"
- },
- "scripts": {
- "test": "tap test/*.js"
- },
- "version": "2.2.1"
+ "directories": {},
+ "_resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
+ "readme": "ERROR: No README data found!"
}