aboutsummaryrefslogtreecommitdiff
path: root/node_modules/zip-stream
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/zip-stream')
-rw-r--r--node_modules/zip-stream/LICENSE22
-rw-r--r--node_modules/zip-stream/README.md51
-rw-r--r--node_modules/zip-stream/index.js161
-rw-r--r--node_modules/zip-stream/package.json52
4 files changed, 286 insertions, 0 deletions
diff --git a/node_modules/zip-stream/LICENSE b/node_modules/zip-stream/LICENSE
new file mode 100644
index 000000000..819b403f0
--- /dev/null
+++ b/node_modules/zip-stream/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2014 Chris Talkington, contributors.
+
+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. \ No newline at end of file
diff --git a/node_modules/zip-stream/README.md b/node_modules/zip-stream/README.md
new file mode 100644
index 000000000..7169cdcef
--- /dev/null
+++ b/node_modules/zip-stream/README.md
@@ -0,0 +1,51 @@
+# zip-stream v1.1.0 [![Build Status](https://travis-ci.org/archiverjs/node-zip-stream.svg?branch=master)](https://travis-ci.org/archiverjs/node-zip-stream) [![Build status](https://ci.appveyor.com/api/projects/status/2sraarbaadwbtti2/branch/master?svg=true)](https://ci.appveyor.com/project/ctalkington/node-zip-stream/branch/master)
+
+zip-stream is a streaming zip archive generator based on the `ZipArchiveOutputStream` prototype found in the [compress-commons](https://www.npmjs.org/package/compress-commons) project.
+
+It was originally created to be a successor to [zipstream](https://npmjs.org/package/zipstream).
+
+Visit the [API documentation](http://archiverjs.com/zip-stream) for a list of all methods available.
+
+### Install
+
+```bash
+npm install zip-stream --save
+```
+
+You can also use `npm install https://github.com/archiverjs/node-zip-stream/archive/master.tar.gz` to test upcoming versions.
+
+### Usage
+
+This module is meant to be wrapped internally by other modules and therefore lacks any queue management. This means you have to wait until the previous entry has been fully consumed to add another. Nested callbacks should be used to add multiple entries. There are modules like [async](https://npmjs.org/package/async) that ease the so called "callback hell".
+
+If you want a module that handles entry queueing and much more, you should check out [archiver](https://npmjs.org/package/archiver) which uses this module internally.
+
+```js
+var packer = require('zip-stream');
+var archive = new packer(); // OR new packer(options)
+
+archive.on('error', function(err) {
+ throw err;
+});
+
+// pipe archive where you want it (ie fs, http, etc)
+// listen to the destination's end, close, or finish event
+
+archive.entry('string contents', { name: 'string.txt' }, function(err, entry) {
+ if (err) throw err;
+ archive.entry(null, { name: 'directory/' }, function(err, entry) {
+ if (err) throw err;
+ archive.finish();
+ });
+});
+```
+
+## Things of Interest
+
+- [Releases](https://github.com/archiverjs/node-zip-stream/releases)
+- [Contributing](https://github.com/archiverjs/node-zip-stream/blob/master/CONTRIBUTING.md)
+- [MIT License](https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE)
+
+## Credits
+
+Concept inspired by Antoine van Wel's [zipstream](https://npmjs.org/package/zipstream) module, which is no longer being updated. \ No newline at end of file
diff --git a/node_modules/zip-stream/index.js b/node_modules/zip-stream/index.js
new file mode 100644
index 000000000..71f9fc4e7
--- /dev/null
+++ b/node_modules/zip-stream/index.js
@@ -0,0 +1,161 @@
+/**
+ * ZipStream
+ *
+ * @ignore
+ * @license [MIT]{@link https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE}
+ * @copyright (c) 2014 Chris Talkington, contributors.
+ */
+var inherits = require('util').inherits;
+
+var ZipArchiveOutputStream = require('compress-commons').ZipArchiveOutputStream;
+var ZipArchiveEntry = require('compress-commons').ZipArchiveEntry;
+
+var util = require('archiver-utils');
+
+/**
+ * @constructor
+ * @extends external:ZipArchiveOutputStream
+ * @param {Object} [options]
+ * @param {String} [options.comment] Sets the zip archive comment.
+ * @param {Boolean} [options.forceLocalTime=false] Forces the archive to contain local file times instead of UTC.
+ * @param {Boolean} [options.forceZip64=false] Forces the archive to contain ZIP64 headers.
+ * @param {Boolean} [options.store=false] Sets the compression method to STORE.
+ * @param {Object} [options.zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}
+ * to control compression.
+ */
+var ZipStream = module.exports = function(options) {
+ if (!(this instanceof ZipStream)) {
+ return new ZipStream(options);
+ }
+
+ options = this.options = options || {};
+ options.zlib = options.zlib || {};
+
+ ZipArchiveOutputStream.call(this, options);
+
+ if (typeof options.level === 'number' && options.level >= 0) {
+ options.zlib.level = options.level;
+ delete options.level;
+ }
+
+ if (options.zlib.level && options.zlib.level === 0) {
+ options.store = true;
+ }
+
+ if (options.comment && options.comment.length > 0) {
+ this.setComment(options.comment);
+ }
+};
+
+inherits(ZipStream, ZipArchiveOutputStream);
+
+/**
+ * Normalizes entry data with fallbacks for key properties.
+ *
+ * @private
+ * @param {Object} data
+ * @return {Object}
+ */
+ZipStream.prototype._normalizeFileData = function(data) {
+ data = util.defaults(data, {
+ type: 'file',
+ name: null,
+ date: null,
+ mode: null,
+ store: this.options.store,
+ comment: ''
+ });
+
+ var isDir = data.type === 'directory';
+
+ if (data.name) {
+ data.name = util.sanitizePath(data.name);
+
+ if (data.name.slice(-1) === '/') {
+ isDir = true;
+ data.type = 'directory';
+ } else if (isDir) {
+ data.name += '/';
+ }
+ }
+
+ if (isDir) {
+ data.store = true;
+ }
+
+ data.date = util.dateify(data.date);
+
+ return data;
+};
+
+/**
+ * Appends an entry given an input source (text string, buffer, or stream).
+ *
+ * @param {(Buffer|Stream|String)} source The input source.
+ * @param {Object} data
+ * @param {String} data.name Sets the entry name including internal path.
+ * @param {String} [data.comment] Sets the entry comment.
+ * @param {(String|Date)} [data.date=NOW()] Sets the entry date.
+ * @param {Number} [data.mode=D:0755/F:0644] Sets the entry permissions.
+ * @param {Boolean} [data.store=options.store] Sets the compression method to STORE.
+ * @param {String} [data.type=file] Sets the entry type. Defaults to `directory`
+ * if name ends with trailing slash.
+ * @param {Function} callback
+ * @return this
+ */
+ZipStream.prototype.entry = function(source, data, callback) {
+ if (typeof callback !== 'function') {
+ callback = this._emitErrorCallback.bind(this);
+ }
+
+ data = this._normalizeFileData(data);
+
+ if (data.type !== 'file' && data.type !== 'directory') {
+ callback(new Error(data.type + ' entries not currently supported'));
+ return;
+ }
+
+ if (typeof data.name !== 'string' || data.name.length === 0) {
+ callback(new Error('entry name must be a non-empty string value'));
+ return;
+ }
+
+ var entry = new ZipArchiveEntry(data.name);
+ entry.setTime(data.date);
+
+ if (data.store) {
+ entry.setMethod(0);
+ }
+
+ if (data.comment.length > 0) {
+ entry.setComment(data.comment);
+ }
+
+ if (typeof data.mode === 'number') {
+ entry.setUnixMode(data.mode);
+ }
+
+ return ZipArchiveOutputStream.prototype.entry.call(this, entry, source, callback);
+};
+
+/**
+ * Finalizes the instance and prevents further appending to the archive
+ * structure (queue will continue til drained).
+ *
+ * @return void
+ */
+ZipStream.prototype.finalize = function() {
+ this.finish();
+};
+
+/**
+ * Returns the current number of bytes written to this stream.
+ * @function ZipStream#getBytesWritten
+ * @returns {Number}
+ */
+
+/**
+ * Compress Commons ZipArchiveOutputStream
+ * @external ZipArchiveOutputStream
+ * @see {@link https://github.com/archiverjs/node-compress-commons}
+ */ \ No newline at end of file
diff --git a/node_modules/zip-stream/package.json b/node_modules/zip-stream/package.json
new file mode 100644
index 000000000..1fb2cf6fa
--- /dev/null
+++ b/node_modules/zip-stream/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "zip-stream",
+ "version": "1.1.0",
+ "description": "a streaming zip archive generator.",
+ "homepage": "https://github.com/archiverjs/node-zip-stream",
+ "author": {
+ "name": "Chris Talkington",
+ "url": "http://christalkington.com/"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/archiverjs/node-zip-stream.git"
+ },
+ "bugs": {
+ "url": "https://github.com/archiverjs/node-zip-stream/issues"
+ },
+ "license": "MIT",
+ "main": "index.js",
+ "files": [
+ "index.js"
+ ],
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "scripts": {
+ "test": "mocha --reporter dot",
+ "gendocs": "jsdoc -c jsdoc.json readme.md"
+ },
+ "dependencies": {
+ "archiver-utils": "^1.3.0",
+ "compress-commons": "^1.1.0",
+ "lodash": "^4.8.0",
+ "readable-stream": "^2.0.0"
+ },
+ "devDependencies": {
+ "chai": "^3.4.0",
+ "jsdoc": "^3.4.0",
+ "minami": "^1.1.0",
+ "mocha": "^2.3.3",
+ "rimraf": "^2.4.3",
+ "mkdirp": "^0.5.0"
+ },
+ "keywords": [
+ "archive",
+ "stream",
+ "zip-stream",
+ "zip"
+ ],
+ "publishConfig": {
+ "registry": "https://registry.npmjs.org/"
+ }
+} \ No newline at end of file