UNPKG

fast-extract

Version:

Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)

78 lines 3.97 kB
"use strict"; 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()); 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; }