extract-base-iterator
Version:
Base iterator for extract iterators like tar-iterator and zip-iterator
1 lines • 6.5 kB
Source Map (JSON)
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/SymbolicLinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\nimport isAbsolute from 'is-absolute';\nimport mkdirp from 'mkdirp-classic';\nimport objectAssign from 'object-assign';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport chmod from './fs/chmod.mjs';\nimport chown from './fs/chown.mjs';\nimport lstatReal from './fs/lstatReal.mjs';\nimport utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nfunction symlinkWin32(linkFullPath, linkpath, fullPath, callback) {\n lstatReal(linkFullPath, (err, targetStat) => {\n if (err || !targetStat) return callback(err || new Error(`Symlink path does not exist${linkFullPath}`));\n const type = targetStat.isDirectory() ? 'dir' : 'file';\n fs.symlink(linkpath, fullPath, type, callback);\n });\n}\nconst isWindows = process.platform === 'win32' || /^(msys|cygwin)$/.test(process.env.OSTYPE);\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nexport default function SymbolicLinkEntry(attributes) {\n validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n objectAssign(this, attributes);\n if (this.basename === undefined) this.basename = path.basename(this.path);\n if (this.type === undefined) this.type = 'symlink';\n}\n\nSymbolicLinkEntry.prototype.create = function create(dest, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = null;\n }\n\n const self = this;\n if (typeof callback === 'function') {\n options = options || {};\n try {\n const normalizedPath = path.normalize(self.path);\n const fullPath = path.join(dest, stripPath(normalizedPath, options));\n let normalizedLinkpath = path.normalize(self.linkpath);\n let linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\n if (!isAbsolute(normalizedLinkpath)) {\n const linkRelativePath = path.join(path.dirname(normalizedPath), self.linkpath);\n linkFullPath = path.join(dest, stripPath(linkRelativePath, options));\n normalizedLinkpath = path.relative(path.dirname(fullPath), linkFullPath);\n }\n\n const queue = new Queue(1);\n if (options.force) {\n queue.defer((callback) => {\n rimraf2(fullPath, { disableGlob: true }, (err) => {\n err && err.code !== 'ENOENT' ? callback(err) : callback();\n });\n });\n }\n queue.defer(mkdirp.bind(null, path.dirname(fullPath)));\n if (isWindows) queue.defer(symlinkWin32.bind(null, linkFullPath, normalizedLinkpath, fullPath));\n else queue.defer(fs.symlink.bind(fs, normalizedLinkpath, fullPath));\n queue.defer(chmod.bind(null, fullPath, self, options));\n queue.defer(chown.bind(null, fullPath, self, options));\n queue.defer(utimes.bind(null, fullPath, self, options));\n return queue.await(callback);\n } catch (err) {\n return callback(err);\n }\n }\n\n return new Promise(function createPromise(resolve, reject) {\n self.create(dest, options, (err, done) => (err ? reject(err) : resolve(done)));\n });\n};\n\nSymbolicLinkEntry.prototype.destroy = function destroy() {};\n"],"names":["path","fs","isAbsolute","mkdirp","objectAssign","Queue","rimraf2","chmod","chown","lstatReal","utimes","stripPath","validateAttributes","symlinkWin32","linkFullPath","linkpath","fullPath","callback","err","targetStat","Error","type","isDirectory","symlink","isWindows","process","platform","test","env","OSTYPE","MANDATORY_ATTRIBUTES","SymbolicLinkEntry","attributes","basename","undefined","prototype","create","dest","options","self","normalizedPath","normalize","join","normalizedLinkpath","linkRelativePath","dirname","relative","queue","force","defer","disableGlob","code","bind","await","Promise","createPromise","resolve","reject","done","destroy"],"mappings":"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"}