decompress-tarbz2
Advanced tools
Comparing version
67
index.js
'use strict'; | ||
const decompressTar = require('decompress-tar'); | ||
const fileType = require('file-type'); | ||
const seekBzip = require('seek-bzip'); | ||
var bz2 = require('seek-bzip'); | ||
var File = require('vinyl'); | ||
var fs = require('fs'); | ||
var isBzip2 = require('is-bzip2'); | ||
var objectAssign = require('object-assign'); | ||
var stripDirs = require('strip-dirs'); | ||
var tar = require('tar-stream'); | ||
var through = require('through2'); | ||
module.exports = () => buf => { | ||
if (!Buffer.isBuffer(buf)) { | ||
return Promise.reject(new TypeError(`Expected a Buffer, got ${typeof buf}`)); | ||
} | ||
module.exports = function (opts) { | ||
opts = opts || {}; | ||
opts.strip = +opts.strip || 0; | ||
if (!fileType(buf) || fileType(buf).ext !== 'bz2') { | ||
return Promise.resolve([]); | ||
} | ||
return through.obj(function (file, enc, cb) { | ||
var self = this; | ||
var extract = tar.extract(); | ||
if (file.isNull()) { | ||
cb(null, file); | ||
return; | ||
} | ||
if (file.isStream()) { | ||
cb(new Error('Streaming is not supported')); | ||
return; | ||
} | ||
if (!file.extract || !isBzip2(file.contents)) { | ||
cb(null, file); | ||
return; | ||
} | ||
extract.on('entry', function (header, stream, done) { | ||
var chunk = []; | ||
var len = 0; | ||
stream.on('data', function (data) { | ||
chunk.push(data); | ||
len += data.length; | ||
}); | ||
stream.on('end', function () { | ||
if (header.type !== 'directory') { | ||
self.push(new File({ | ||
contents: Buffer.concat(chunk, len), | ||
path: stripDirs(header.name, opts.strip), | ||
stat: objectAssign(new fs.Stats(), header) | ||
})); | ||
} | ||
done(); | ||
}); | ||
}); | ||
extract.on('error', cb); | ||
extract.on('finish', cb); | ||
extract.end(bz2.decode(file.contents)); | ||
}); | ||
return decompressTar()(seekBzip.decode(buf)); | ||
}; |
{ | ||
"name": "decompress-tarbz2", | ||
"version": "3.1.0", | ||
"version": "4.0.0", | ||
"description": "decompress tar.bz2 plugin", | ||
@@ -13,6 +13,6 @@ "license": "MIT", | ||
"engines": { | ||
"node": ">=0.10.0" | ||
"node": ">=4" | ||
}, | ||
"scripts": { | ||
"test": "node test/test.js" | ||
"test": "xo && ava" | ||
}, | ||
@@ -27,3 +27,2 @@ "files": [ | ||
"extract", | ||
"gulpplugin", | ||
"tar", | ||
@@ -34,15 +33,15 @@ "tar.bz2", | ||
"dependencies": { | ||
"is-bzip2": "^1.0.0", | ||
"object-assign": "^2.0.0", | ||
"seek-bzip": "^1.0.3", | ||
"strip-dirs": "^1.0.0", | ||
"tar-stream": "^1.1.1", | ||
"through2": "^0.6.1", | ||
"vinyl": "^0.4.3" | ||
"decompress-tar": "^4.0.0", | ||
"file-type": "^3.8.0", | ||
"pify": "^2.3.0", | ||
"seek-bzip": "^1.0.5" | ||
}, | ||
"devDependencies": { | ||
"ava": "0.0.4", | ||
"ava": "*", | ||
"is-jpg": "^1.0.0", | ||
"vinyl-file": "^1.1.0" | ||
"xo": "*" | ||
}, | ||
"xo": { | ||
"esnext": true | ||
} | ||
} |
@@ -1,54 +0,39 @@ | ||
# decompress-tarbz2 [](https://travis-ci.org/kevva/decompress-tarbz2) | ||
# decompress-tarbz2 [](https://travis-ci.org/kevva/decompress-tarbz2) | ||
> tar.bz2 decompress plugin | ||
## Install | ||
```sh | ||
``` | ||
$ npm install --save decompress-tarbz2 | ||
``` | ||
## Usage | ||
```js | ||
var Decompress = require('decompress'); | ||
var tarbz2 = require('decompress-tarbz2'); | ||
const decompress = require('decompress'); | ||
const decompressTarbz = require('decompress-tarbz2'); | ||
var decompress = new Decompress() | ||
.src('foo.tar.bz2') | ||
.dest('dest') | ||
.use(tarbz2({strip: 1})); | ||
decompress.run(function (err, files) { | ||
if (err) { | ||
throw err; | ||
} | ||
console.log('Files extracted successfully!'); | ||
decompress('unicorn.tar.gz', 'dist', { | ||
plugins: [ | ||
decompressTarbz() | ||
] | ||
}).then(() => { | ||
console.log('Files decompressed'); | ||
}); | ||
``` | ||
You can also use this plugin with [gulp](http://gulpjs.com): | ||
```js | ||
var gulp = require('gulp'); | ||
var tarbz2 = require('decompress-tarbz2'); | ||
var vinylAssign = require('vinyl-assign'); | ||
## API | ||
gulp.task('default', function () { | ||
return gulp.src('foo.tar.bz2') | ||
.pipe(vinylAssign({extract: true})) | ||
.pipe(tarbz2({strip: 1})) | ||
.pipe(gulp.dest('dest')); | ||
}); | ||
``` | ||
### decompressTarbz()(buf) | ||
## Options | ||
#### buf | ||
### strip | ||
Type: `Buffer` | ||
Type: `Number` | ||
Default: `0` | ||
Buffer to decompress. | ||
Equivalent to `--strip-components` for tar. | ||
@@ -55,0 +40,0 @@ ## License |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
4
-42.86%1
-50%2963
-31.95%13
-74%43
-25.86%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated