UNPKG

untar-memory

Version:

Untar a tarball to an in-memory filesystem

38 lines (31 loc) 973 B
var ref = require('fs'); var createReadStream = ref.createReadStream; var concat = require('concat-stream') var gunzip = require('gunzip-maybe') var MemoryFs = require('memory-fs') var fileType = require('file-type') var ref$1 = require('path'); var dirname = ref$1.dirname; var tar = require('tar') module.exports = untarToMemory function untarToMemory (file, mfs) { var tarball = typeof file === 'string' ? createReadStream(file) : file mfs = mfs || new MemoryFs() return new Promise(function (resolve, reject) { tarball .pipe(gunzip()) .pipe(tar.Parse()) .on('entry', function (entry) { var path = '/' + entry.props.path mfs.mkdirpSync(dirname(path)) entry.pipe(concat(function (buf) { var encoding = fileType(buf) ? 'binary' : 'utf8' mfs.writeFileSync(path, buf, encoding) })) }) .on('end', function () { return resolve(mfs); }) .on('error', reject) }) }