fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
67 lines • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return createFilePipeline;
}
});
var _extractbaseiterator = require("extract-base-iterator");
var _fsremovecompat = require("fs-remove-compat");
var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _tempsuffix = /*#__PURE__*/ _interop_require_default(require("temp-suffix"));
var _flushwritestreamts = /*#__PURE__*/ _interop_require_default(require("../../compat/flush-write-stream.js"));
var _exitCleanupts = /*#__PURE__*/ _interop_require_default(require("../../exitCleanup.js"));
var _writeTruncateFilets = /*#__PURE__*/ _interop_require_default(require("../../writeTruncateFile.js"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function createFilePipeline(dest, _options) {
var tempDest = (0, _tempsuffix.default)(dest);
_exitCleanupts.default.add(tempDest);
var wroteSomething = false;
return (0, _flushwritestreamts.default)(function write(chunk, _encoding, callback) {
var _this = this;
wroteSomething = true;
var appendFile = _gracefulfs.default.appendFile.bind(_gracefulfs.default, tempDest, chunk, callback);
if (this.pathMade) return appendFile();
(0, _mkdirpclassic.default)(_path.default.dirname(tempDest), function() {
_this.pathMade = true;
appendFile();
});
}, function flush(callback) {
var queue = new _queuecb.default(1);
queue.defer(function(callback) {
(0, _mkdirpclassic.default)(_path.default.dirname(dest), function(err) {
err && err.code !== 'EEXIST' ? callback(err) : callback();
});
});
if (wroteSomething) {
queue.defer(_fsremovecompat.safeRm.bind(null, dest));
queue.defer(function(cb) {
_gracefulfs.default.rename(tempDest, dest, function(err) {
if (!err) _exitCleanupts.default.remove(tempDest);
cb(err);
});
});
queue.defer(_extractbaseiterator.waitForAccess.bind(null, dest));
} else {
queue.defer(function(cb) {
_exitCleanupts.default.remove(tempDest);
(0, _writeTruncateFilets.default)(dest, function(err) {
cb(err);
return undefined;
});
});
}
queue.await(callback);
});
}
/* 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; }