fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
78 lines • 3.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return createPipeline;
}
});
var _7ziterator = /*#__PURE__*/ _interop_require_default(require("7z-iterator"));
var _tariterator = /*#__PURE__*/ _interop_require_default(require("tar-iterator"));
var _unbzip2stream = /*#__PURE__*/ _interop_require_default(require("unbzip2-stream"));
var _xzcompat = require("xz-compat");
var _zipiterator = /*#__PURE__*/ _interop_require_default(require("zip-iterator"));
var _zlib = /*#__PURE__*/ _interop_require_default(require("zlib"));
var _extnamets = /*#__PURE__*/ _interop_require_default(require("./extname.js"));
var _basenamets = /*#__PURE__*/ _interop_require_default(require("./sourceStats/basename.js"));
var _filets = /*#__PURE__*/ _interop_require_default(require("./streams/pipelines/file.js"));
var _DestinationExiststs = /*#__PURE__*/ _interop_require_default(require("./streams/transforms/DestinationExists.js"));
var _DestinationRemovets = /*#__PURE__*/ _interop_require_default(require("./streams/transforms/DestinationRemove.js"));
var _EntryProgressts = /*#__PURE__*/ _interop_require_default(require("./streams/transforms/EntryProgress.js"));
var _IteratorTransformts = /*#__PURE__*/ _interop_require_default(require("./streams/transforms/IteratorTransform.js"));
var _entriests = /*#__PURE__*/ _interop_require_default(require("./streams/write/entries.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var TRANSFORMS = {
bz2: _unbzip2stream.default,
tgz: _zlib.default.createUnzip.bind(_zlib.default),
gz: _zlib.default.createUnzip.bind(_zlib.default),
xz: _xzcompat.createXZDecoder
};
// Create transform classes for each iterator type
var ZipTransform = (0, _IteratorTransformts.default)(_zipiterator.default);
var TarTransform = (0, _IteratorTransformts.default)(_tariterator.default);
var SevenZTransform = (0, _IteratorTransformts.default)(_7ziterator.default);
function createArchivePipeline(dest, streams, options, TransformClass) {
streams = streams.slice();
streams.push(new TransformClass(options));
if (options.progress) streams.push(new _EntryProgressts.default(options));
streams.push((0, _entriests.default)(dest, options));
return streams;
}
var WRITERS = {
zip: function(dest, streams, options) {
return createArchivePipeline(dest, streams, options, ZipTransform);
},
tar: function(dest, streams, options) {
return createArchivePipeline(dest, streams, options, TarTransform);
},
tgz: function(dest, streams, options) {
return createArchivePipeline(dest, streams, options, TarTransform);
},
'7z': function(dest, streams, options) {
return createArchivePipeline(dest, streams, options, SevenZTransform);
}
};
function createPipeline(dest, options) {
var type = options.type === undefined ? (0, _extnamets.default)((0, _basenamets.default)(options.source, options) || '') : options.type;
var parts = type.split('.');
var streams = [
options.force ? new _DestinationRemovets.default(dest) : new _DestinationExiststs.default(dest)
];
for(var index = parts.length - 1; index >= 0; index--){
// append transform
var transform = TRANSFORMS[parts[index]];
if (transform) streams.push(transform());
// finish with a write stream
var writer = WRITERS[parts[index]];
if (writer) return writer(dest, streams, options);
}
// default is to write the result to a file
return (0, _filets.default)(dest, streams, options);
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }