extract-base-iterator
Version:
Base iterator for extract iterators like tar-iterator and zip-iterator
79 lines • 3.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return LinkEntry;
}
});
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _gracefulfs = /*#__PURE__*/ _interop_require_default(require("graceful-fs"));
var _mkdirpclassic = /*#__PURE__*/ _interop_require_default(require("mkdirp-classic"));
var _objectassign = /*#__PURE__*/ _interop_require_default(require("object-assign"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _rimraf2 = /*#__PURE__*/ _interop_require_default(require("rimraf2"));
var _chmod = /*#__PURE__*/ _interop_require_default(require("./fs/chmod.cjs"));
var _chown = /*#__PURE__*/ _interop_require_default(require("./fs/chown.cjs"));
var _utimes = /*#__PURE__*/ _interop_require_default(require("./fs/utimes.cjs"));
var _stripPath = /*#__PURE__*/ _interop_require_default(require("./stripPath.cjs"));
var _validateAttributes = /*#__PURE__*/ _interop_require_default(require("./validateAttributes.cjs"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var MANDATORY_ATTRIBUTES = [
'mode',
'mtime',
'path',
'linkpath'
];
function LinkEntry(attributes, _type) {
(0, _validateAttributes.default)(attributes, MANDATORY_ATTRIBUTES);
(0, _objectassign.default)(this, attributes);
if (this.basename === undefined) this.basename = _path.default.basename(this.path);
if (this.type === undefined) this.type = 'link';
}
LinkEntry.prototype.create = function create(dest, options, callback) {
if (typeof options === 'function') {
callback = options;
options = null;
}
var self = this;
if (typeof callback === 'function') {
options = options || {};
try {
var normalizedPath = _path.default.normalize(self.path);
var fullPath = _path.default.join(dest, (0, _stripPath.default)(normalizedPath, options));
var normalizedLinkpath = _path.default.normalize(self.linkpath);
var linkFullPath = _path.default.join(dest, (0, _stripPath.default)(normalizedLinkpath, options));
var queue = new _queuecb.default(1);
if (options.force) {
queue.defer(function(callback) {
(0, _rimraf2.default)(fullPath, {
disableGlob: true
}, function(err) {
err && err.code !== 'ENOENT' ? callback(err) : callback();
});
});
}
queue.defer(_mkdirpclassic.default.bind(null, _path.default.dirname(fullPath)));
queue.defer(_gracefulfs.default.link.bind(_gracefulfs.default, linkFullPath, fullPath));
queue.defer(_chmod.default.bind(null, fullPath, self, options));
queue.defer(_chown.default.bind(null, fullPath, self, options));
queue.defer(_utimes.default.bind(null, fullPath, self, options));
return queue.await(callback);
} catch (err) {
return callback(err);
}
}
return new Promise(function createPromise(resolve, reject) {
self.create(dest, options, function(err, done) {
return err ? reject(err) : resolve(done);
});
});
};
LinkEntry.prototype.destroy = function destroy() {};
/* 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; }