UNPKG

fast-extract

Version:

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

67 lines 3.11 kB
"use strict"; 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; }