fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
81 lines • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return createWriteEntriesStream;
}
});
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
var _tempsuffix = /*#__PURE__*/ _interop_require_default(require("temp-suffix"));
var _flushwritestreamts = /*#__PURE__*/ _interop_require_default(require("../../compat/flush-write-stream.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 createWriteEntriesStream(dest) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
options = _object_spread({
now: new Date()
}, options);
var tempDest = (0, _tempsuffix.default)(dest);
var links = [];
return (0, _flushwritestreamts.default)({
objectMode: true
}, function write(entry, _encoding, callback) {
if (entry.type === 'link') {
links.unshift(entry);
return callback();
}
if (entry.type === 'symlink') {
links.push(entry);
return callback();
}
entry.create(tempDest, options, callback);
}, function flush(callback) {
var queue = new _queuecb.default(1);
queue.defer(_rimraf2.default.bind(null, dest, {
disableGlob: true
}));
queue.defer(_fs.default.rename.bind(_fs.default, tempDest, dest));
for(var index = 0; index < links.length; index++){
var entry = links[index];
queue.defer(entry.create.bind(entry, dest, options));
}
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; }