{"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":["SymbolicLinkEntry","symlinkWin32","linkFullPath","linkpath","fullPath","callback","lstatReal","err","targetStat","Error","type","isDirectory","fs","symlink","isWindows","process","platform","test","env","OSTYPE","MANDATORY_ATTRIBUTES","attributes","validateAttributes","objectAssign","basename","undefined","path","prototype","create","dest","options","self","normalizedPath","normalize","join","stripPath","normalizedLinkpath","isAbsolute","linkRelativePath","dirname","relative","queue","Queue","force","defer","rimraf2","disableGlob","code","mkdirp","bind","chmod","chown","utimes","await","Promise","createPromise","resolve","reject","done","destroy"],"mappings":"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"}