download
Advanced tools
Comparing version 3.3.0 to 4.0.1-rc.1
17
cli.js
@@ -9,6 +9,2 @@ #!/usr/bin/env node | ||
/** | ||
* Options | ||
*/ | ||
var cli = meow({ | ||
@@ -51,10 +47,2 @@ help: [ | ||
/** | ||
* Run | ||
* | ||
* @param {Array} src | ||
* @param {String} dest | ||
* @api private | ||
*/ | ||
function run(src, dest) { | ||
@@ -66,3 +54,2 @@ var download = new Download(cli.flags); | ||
if (process.stdout.isTTY) { | ||
download.use(progress()); | ||
download.dest(dest); | ||
@@ -85,6 +72,2 @@ } | ||
/** | ||
* Apply arguments | ||
*/ | ||
if (process.stdin.isTTY) { | ||
@@ -91,0 +74,0 @@ var src = cli.input; |
179
index.js
'use strict'; | ||
var combine = require('stream-combiner'); | ||
var concat = require('concat-stream'); | ||
var conf = require('rc')('npm'); | ||
var each = require('each-async'); | ||
var combine = require('stream-combiner2'); | ||
var concatStream = require('concat-stream'); | ||
var decompress = require('gulp-decompress'); | ||
var eachAsync = require('each-async'); | ||
var File = require('vinyl'); | ||
var fs = require('vinyl-fs'); | ||
var got = require('got'); | ||
var path = require('path'); | ||
var rename = require('gulp-rename'); | ||
var tar = require('decompress-tar'); | ||
var tarBz2 = require('decompress-tarbz2'); | ||
var tarGz = require('decompress-targz'); | ||
var through = require('through2'); | ||
var urlRegex = require('url-regex'); | ||
var Ware = require('ware'); | ||
var zip = require('decompress-unzip'); | ||
var vfs = require('vinyl-fs'); | ||
@@ -32,15 +28,2 @@ /** | ||
this.opts = opts || {}; | ||
this.opts.strictSSL = conf['strict-ssl']; | ||
this.opts.proxy = conf['https-proxy'] || | ||
conf['http-proxy'] || | ||
conf.proxy || | ||
process.env.HTTPS_PROXY || | ||
process.env.https_proxy || | ||
process.env.HTTP_PROXY || | ||
process.env.http_proxy || | ||
this.opts.proxy; | ||
this.tasks = []; | ||
this.ware = new Ware(); | ||
this._get = []; | ||
} | ||
@@ -52,6 +35,7 @@ | ||
* @param {String} url | ||
* @param {String} dest | ||
* @api public | ||
*/ | ||
Download.prototype.get = function (url) { | ||
Download.prototype.get = function (url, dest) { | ||
if (!arguments.length) { | ||
@@ -61,3 +45,8 @@ return this._get; | ||
this._get.push(url); | ||
this._get = this._get || []; | ||
this._get.push({ | ||
url: url, | ||
dest: dest | ||
}); | ||
return this; | ||
@@ -91,6 +80,6 @@ }; | ||
if (!arguments.length) { | ||
return this._name; | ||
return this._rename; | ||
} | ||
this._name = name; | ||
this._rename = name; | ||
return this; | ||
@@ -100,26 +89,2 @@ }; | ||
/** | ||
* Add a plugin to the middleware stack | ||
* | ||
* @param {Function} plugin | ||
* @api public | ||
*/ | ||
Download.prototype.use = function (plugin) { | ||
this.ware.use(plugin); | ||
return this; | ||
}; | ||
/** | ||
* Add a task to the middleware stack | ||
* | ||
* @param {Function} task | ||
* @api public | ||
*/ | ||
Download.prototype.pipe = function (task) { | ||
this.tasks.push(task); | ||
return this; | ||
}; | ||
/** | ||
* Run | ||
@@ -133,9 +98,6 @@ * | ||
cb = cb || function () {}; | ||
var request = require('request'); | ||
var self = this; | ||
var files = []; | ||
each(this.get(), function (url, i, done) { | ||
if (!urlRegex().test(url)) { | ||
eachAsync(this.get(), function (get, i, done) { | ||
if (!urlRegex().test(get.url)) { | ||
done(new Error('Specify a valid URL')); | ||
@@ -145,16 +107,21 @@ return; | ||
request.get(url, self.opts) | ||
.on('response', function (res) { | ||
self.res(url, res, function (err, ret) { | ||
if (err) { | ||
done(err); | ||
return; | ||
} | ||
got(get.url, {encoding: null}, function (err, data) { | ||
if (err) { | ||
done(err); | ||
return; | ||
} | ||
files.push(ret); | ||
done(); | ||
var dest = get.dest || this.dest(); | ||
var stream = this.createStream(this.createFile(get.url, data), dest); | ||
stream.on('error', cb); | ||
stream.pipe(concatStream(function (items) { | ||
items.forEach(function (item) { | ||
files.push(item); | ||
}); | ||
}) | ||
.on('error', done); | ||
}, function (err) { | ||
done(); | ||
})); | ||
}.bind(this)); | ||
}.bind(this), function (err) { | ||
if (err) { | ||
@@ -165,9 +132,3 @@ cb(err); | ||
var pipe = self.construct(files); | ||
var end = concat(function (files) { | ||
cb(null, files, pipe); | ||
}); | ||
pipe.on('error', cb); | ||
pipe.pipe(end); | ||
cb(null, files); | ||
}); | ||
@@ -177,76 +138,46 @@ }; | ||
/** | ||
* Handle response | ||
* Create vinyl file | ||
* | ||
* @param {String} url | ||
* @param {Object} res | ||
* @param {Function} cb | ||
* @param {Buffer} data | ||
* @api private | ||
*/ | ||
Download.prototype.res = function (url, res, cb) { | ||
var ret = []; | ||
var len = 0; | ||
if (res.statusCode < 200 || res.statusCode >= 300) { | ||
var err = new Error([ | ||
'Couldn\'t connect to ' + url, | ||
'(' + res.statusCode + ')' | ||
].join(' ')); | ||
err.code = res.statusCode; | ||
res.destroy(); | ||
cb(err); | ||
return; | ||
} | ||
res.on('error', cb); | ||
res.on('data', function (data) { | ||
ret.push(data); | ||
len += data.length; | ||
Download.prototype.createFile = function (url, data) { | ||
var obj = new File({ | ||
contents: data, | ||
path: path.basename(url) | ||
}); | ||
this.ware.run(res, url); | ||
res.on('end', function () { | ||
cb(null, { | ||
path: path.basename(url), | ||
contents: Buffer.concat(ret, len), | ||
url: url | ||
}); | ||
}); | ||
obj.url = url; | ||
return obj; | ||
}; | ||
/** | ||
* Construct stream | ||
* Create stream | ||
* | ||
* @param {Array} files | ||
* @param {Object} file | ||
* @param {String} dest | ||
* @api private | ||
*/ | ||
Download.prototype.construct = function (files) { | ||
Download.prototype.createStream = function (file, dest) { | ||
var stream = through.obj(); | ||
var streams = [stream]; | ||
files.forEach(function (file) { | ||
var obj = new File(file); | ||
obj.url = file.url; | ||
stream.write(obj); | ||
}); | ||
stream.end(file); | ||
stream.end(); | ||
if (this.opts.extract) { | ||
this.tasks.unshift(tar(this.opts), tarBz2(this.opts), tarGz(this.opts), zip(this.opts)); | ||
streams.push(decompress(this.opts)); | ||
} | ||
this.tasks.unshift(stream); | ||
if (this.rename()) { | ||
this.tasks.push(rename(this.rename())); | ||
streams.push(rename(this.rename())); | ||
} | ||
if (this.dest()) { | ||
this.tasks.push(fs.dest(this.dest(), this.opts)); | ||
if (dest) { | ||
streams.push(vfs.dest(dest, this.opts)); | ||
} | ||
return combine(this.tasks); | ||
return combine(streams); | ||
}; | ||
@@ -253,0 +184,0 @@ |
{ | ||
"name": "download", | ||
"version": "3.3.0", | ||
"version": "4.0.1-rc.1", | ||
"description": "Download and extract files effortlessly", | ||
@@ -34,27 +34,19 @@ "license": "MIT", | ||
"concat-stream": "^1.4.6", | ||
"decompress-tar": "^2.0.1", | ||
"decompress-tarbz2": "^2.0.1", | ||
"decompress-targz": "^2.0.1", | ||
"decompress-unzip": "^2.0.0", | ||
"download-status": "^2.0.1", | ||
"each-async": "^1.0.0", | ||
"get-stdin": "^3.0.0", | ||
"get-stdin": "^4.0.1", | ||
"got": "^2.3.2", | ||
"gulp-decompress": "^1.0.2", | ||
"gulp-rename": "^1.2.0", | ||
"meow": "^2.0.0", | ||
"rc": "^0.5.1", | ||
"request": "^2.34.0", | ||
"stream-combiner": "^0.2.1", | ||
"meow": "^3.0.0", | ||
"stream-combiner2": "^1.0.2", | ||
"through2": "^0.6.1", | ||
"url-regex": "^2.0.2", | ||
"vinyl": "^0.4.3", | ||
"vinyl-fs": "^0.3.7", | ||
"ware": "^1.0.1" | ||
"vinyl-fs": "^0.3.7" | ||
}, | ||
"devDependencies": { | ||
"archive-type": "^1.0.2", | ||
"ava": "^0.0.4", | ||
"gulp-tar": "^1.1.0", | ||
"nock": "^0.52.4", | ||
"nock": "^0.57.0", | ||
"rimraf": "^2.2.8" | ||
} | ||
} |
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 4 instances in 1 package
12
3
1
9176
230
2
119
+ Addedgot@^2.3.2
+ Addedgulp-decompress@^1.0.2
+ Addedstream-combiner2@^1.0.2
+ Addedansi-gray@0.1.1(transitive)
+ Addedansi-wrap@0.1.0(transitive)
+ Addedarchive-type@3.2.0(transitive)
+ Addedarr-diff@2.0.0(transitive)
+ Addedarr-flatten@1.1.0(transitive)
+ Addedarray-differ@1.0.0(transitive)
+ Addedarray-uniq@1.0.3(transitive)
+ Addedarray-unique@0.2.1(transitive)
+ Addedbeeper@1.1.1(transitive)
+ Addedbraces@1.8.5(transitive)
+ Addedbuffer-to-vinyl@1.1.0(transitive)
+ Addedcolor-support@1.1.3(transitive)
+ Addedconvert-source-map@1.9.0(transitive)
+ Addeddateformat@2.2.0(transitive)
+ Addeddecompress@3.0.0(transitive)
+ Addeddecompress-tar@3.1.0(transitive)
+ Addeddecompress-tarbz2@3.1.0(transitive)
+ Addeddecompress-targz@3.1.0(transitive)
+ Addeddecompress-unzip@3.4.0(transitive)
+ Addedduplexer2@0.0.20.1.4(transitive)
+ Addedduplexify@3.7.1(transitive)
+ Addedexpand-brackets@0.1.5(transitive)
+ Addedexpand-range@1.8.2(transitive)
+ Addedextend-shallow@2.0.1(transitive)
+ Addedextglob@0.3.2(transitive)
+ Addedfancy-log@1.3.3(transitive)
+ Addedfile-type@3.9.0(transitive)
+ Addedfilename-regex@2.0.1(transitive)
+ Addedfill-range@2.2.4(transitive)
+ Addedfor-in@1.0.2(transitive)
+ Addedfor-own@0.1.5(transitive)
+ Addedglob@5.0.15(transitive)
+ Addedglob-base@0.3.0(transitive)
+ Addedglob-parent@2.0.03.1.0(transitive)
+ Addedglob-stream@5.3.5(transitive)
+ Addedglogg@1.0.2(transitive)
+ Addedgot@2.9.2(transitive)
+ Addedgulp-decompress@1.2.0(transitive)
+ Addedgulp-sourcemaps@1.6.0(transitive)
+ Addedgulp-util@3.0.8(transitive)
+ Addedgulplog@1.0.0(transitive)
+ Addedhas-gulplog@0.1.0(transitive)
+ Addedinfinity-agent@2.0.3(transitive)
+ Addedis-buffer@1.1.6(transitive)
+ Addedis-dotfile@1.0.3(transitive)
+ Addedis-equal-shallow@0.1.3(transitive)
+ Addedis-extendable@0.1.1(transitive)
+ Addedis-extglob@1.0.02.1.1(transitive)
+ Addedis-glob@2.0.13.1.0(transitive)
+ Addedis-number@2.1.04.0.0(transitive)
+ Addedis-posix-bracket@0.1.1(transitive)
+ Addedis-primitive@2.0.0(transitive)
+ Addedis-stream@1.1.0(transitive)
+ Addedis-valid-glob@0.3.0(transitive)
+ Addedisobject@2.1.0(transitive)
+ Addedjson-stable-stringify-without-jsonify@1.0.1(transitive)
+ Addedkind-of@3.2.26.0.3(transitive)
+ Addedlazystream@1.0.1(transitive)
+ Addedlodash._basecopy@3.0.1(transitive)
+ Addedlodash._basetostring@3.0.1(transitive)
+ Addedlodash._basevalues@3.0.0(transitive)
+ Addedlodash._getnative@3.9.1(transitive)
+ Addedlodash._isiterateecall@3.0.9(transitive)
+ Addedlodash._reescape@3.0.0(transitive)
+ Addedlodash._reevaluate@3.0.0(transitive)
+ Addedlodash._reinterpolate@3.0.0(transitive)
+ Addedlodash._root@3.0.1(transitive)
+ Addedlodash.escape@3.2.0(transitive)
+ Addedlodash.isarguments@3.1.0(transitive)
+ Addedlodash.isarray@3.0.4(transitive)
+ Addedlodash.isequal@4.5.0(transitive)
+ Addedlodash.keys@3.1.2(transitive)
+ Addedlodash.restparam@3.6.1(transitive)
+ Addedlodash.template@3.6.2(transitive)
+ Addedlodash.templatesettings@3.1.1(transitive)
+ Addedlowercase-keys@1.0.1(transitive)
+ Addedmath-random@1.0.4(transitive)
+ Addedmerge-stream@1.0.1(transitive)
+ Addedmicromatch@2.3.11(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedmultipipe@0.1.2(transitive)
+ Addednested-error-stacks@1.0.2(transitive)
+ Addednormalize-path@2.1.1(transitive)
+ Addedobject-assign@3.0.0(transitive)
+ Addedobject.omit@2.0.1(transitive)
+ Addedordered-read-streams@0.3.0(transitive)
+ Addedparse-glob@3.0.4(transitive)
+ Addedparse-node-version@1.0.1(transitive)
+ Addedpath-dirname@1.0.2(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedprepend-http@1.0.4(transitive)
+ Addedpreserve@0.2.0(transitive)
+ Addedrandomatic@3.1.1(transitive)
+ Addedread-all-stream@2.2.03.1.0(transitive)
+ Addedreadable-stream@3.6.2(transitive)
+ Addedregex-cache@0.4.4(transitive)
+ Addedremove-trailing-separator@1.1.0(transitive)
+ Addedrepeat-element@1.1.4(transitive)
+ Addedrepeat-string@1.6.1(transitive)
+ Addedreplace-ext@0.0.1(transitive)
+ Addedsparkles@1.0.1(transitive)
+ Addedstat-mode@0.2.2(transitive)
+ Addedstatuses@1.5.0(transitive)
+ Addedstream-combiner2@1.1.1(transitive)
+ Addedstream-shift@1.0.3(transitive)
+ Addedstring_decoder@1.3.0(transitive)
+ Addedstrip-bom-stream@1.0.0(transitive)
+ Addedthrough2@2.0.54.0.2(transitive)
+ Addedthrough2-filter@2.0.03.1.0(transitive)
+ Addedtime-stamp@1.1.0(transitive)
+ Addedtimed-out@2.0.0(transitive)
+ Addedto-absolute-glob@0.1.1(transitive)
+ Addedunique-stream@2.3.1(transitive)
+ Addeduuid@2.0.3(transitive)
+ Addedvali-date@1.0.0(transitive)
+ Addedvinyl@0.5.31.2.0(transitive)
+ Addedvinyl-assign@1.2.1(transitive)
+ Addedvinyl-fs@2.4.4(transitive)
- Removeddecompress-tar@^2.0.1
- Removeddecompress-tarbz2@^2.0.1
- Removeddecompress-targz@^2.0.1
- Removeddecompress-unzip@^2.0.0
- Removeddownload-status@^2.0.1
- Removedrc@^0.5.1
- Removedrequest@^2.34.0
- Removedstream-combiner@^0.2.1
- Removedware@^1.0.1
- Removedajv@6.12.6(transitive)
- Removedansi-regex@0.2.1(transitive)
- Removedansi-styles@1.1.0(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.0(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedbl@0.9.5(transitive)
- Removedcamelcase@1.2.1(transitive)
- Removedcamelcase-keys@1.0.0(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedchalk@0.5.1(transitive)
- Removedco@3.1.0(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removedcore-util-is@1.0.2(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddecompress-tar@2.0.2(transitive)
- Removeddecompress-tarbz2@2.0.2(transitive)
- Removeddecompress-targz@2.1.0(transitive)
- Removeddecompress-unzip@2.1.2(transitive)
- Removeddeep-extend@0.2.11(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removeddownload-status@2.2.1(transitive)
- Removedduplexer@0.1.2(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedget-stdin@3.0.2(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhas-ansi@0.1.0(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedindent-string@1.2.2(transitive)
- Removedini@1.3.8(transitive)
- Removedis-integer@1.0.7(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedlongest@1.0.1(transitive)
- Removedlpad-align@1.1.2(transitive)
- Removedmeow@2.1.0(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedminimist@0.0.10(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedprogress@1.1.8(transitive)
- Removedpsl@1.9.0(transitive)
- Removedpunycode@2.3.1(transitive)
- Removedqs@6.5.3(transitive)
- Removedrc@0.5.5(transitive)
- Removedrepeating@1.1.3(transitive)
- Removedrequest@2.88.2(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedstream-combiner@0.2.2(transitive)
- Removedstrip-ansi@0.3.0(transitive)
- Removedstrip-dirs@0.1.1(transitive)
- Removedstrip-json-comments@0.1.3(transitive)
- Removedsupports-color@0.2.0(transitive)
- Removedtar-stream@0.4.7(transitive)
- Removedthrough@2.3.8(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removeduri-js@4.4.1(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)
- Removedware@1.3.0(transitive)
- Removedwrap-fn@0.1.5(transitive)
Updatedget-stdin@^4.0.1
Updatedmeow@^3.0.0