UNPKG

fast-extract

Version:

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

100 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return createWriteStream; } }); var _flushwritestreamts = /*#__PURE__*/ _interop_require_default(require("./compat/flush-write-stream.js")); var _pumpifyts = /*#__PURE__*/ _interop_require_default(require("./compat/pumpify.js")); var _rimrafAllts = /*#__PURE__*/ _interop_require_default(require("./compat/rimrafAll.js")); var _createPipelinets = /*#__PURE__*/ _interop_require_default(require("./createPipeline.js")); var _exitCleanupts = /*#__PURE__*/ _interop_require_default(require("./exitCleanup.js")); function _define_property(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _object_spread(target) { for(var i = 1; i < arguments.length; i++){ var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === "function") { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function(key) { _define_property(target, key, source[key]); }); } return target; } function createWriteStream(dest, options_) { if (typeof options_ === 'string') options_ = { type: options_ }; var options = _object_spread({ _tempPaths: [] }, options_); var streams = (0, _createPipelinets.default)(dest, options); var generatedFiles = [ dest ].concat(options._tempPaths); generatedFiles.forEach(_exitCleanupts.default.add); var error = null; var ended = false; function onError(err, callback) { if (error || ended) return callback(err); error = err; res.destroy(err); return (0, _rimrafAllts.default)(generatedFiles, function(err2) { generatedFiles.forEach(_exitCleanupts.default.remove); callback(err || err2); }); } function onEnd(callback) { if (error || ended) return callback(); ended = true; return (0, _rimrafAllts.default)(options._tempPaths, function(err) { generatedFiles.forEach(_exitCleanupts.default.remove); callback(err); }); } var res = streams.length < 2 ? streams[0] : (0, _pumpifyts.default)(streams); var write = (0, _flushwritestreamts.default)(function write(chunk, encoding, callback) { res.write(chunk, encoding, function(err) { if (error) return; // skip if errored so will not emit errors multiple times err ? onError(err, callback) : callback(); }); }, function flush(callback) { if (error) return; // skip if errored so will not emit errors multiple times res.end(function(err) { if (error) return; // skip if errored so will not emit errors multiple times err ? onError(err || error, callback) : onEnd(callback); }); }); res.on('error', function(err) { onError(err, function() { write.destroy(err); }); }); return write; } /* 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; }