UNPKG

fast-extract

Version:

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

81 lines 3.03 kB
"use strict"; 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; }