fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
100 lines • 3.87 kB
JavaScript
;
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; }