{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/LinkEntry.mjs"],"sourcesContent":["import path from 'path';\nimport fs from 'graceful-fs';\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 utimes from './fs/utimes.mjs';\nimport stripPath from './stripPath.mjs';\nimport validateAttributes from './validateAttributes.mjs';\n\nconst MANDATORY_ATTRIBUTES = ['mode', 'mtime', 'path', 'linkpath'];\n\nexport default function LinkEntry(attributes, _type) {\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 = 'link';\n}\n\nLinkEntry.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      const normalizedLinkpath = path.normalize(self.linkpath);\n      const linkFullPath = path.join(dest, stripPath(normalizedLinkpath, options));\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      queue.defer(fs.link.bind(fs, linkFullPath, 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\nLinkEntry.prototype.destroy = function destroy() {};\n"],"names":["LinkEntry","MANDATORY_ATTRIBUTES","attributes","_type","validateAttributes","objectAssign","basename","undefined","path","type","prototype","create","dest","options","callback","self","normalizedPath","normalize","fullPath","join","stripPath","normalizedLinkpath","linkpath","linkFullPath","queue","Queue","force","defer","rimraf2","disableGlob","err","code","mkdirp","bind","dirname","fs","link","chmod","chown","utimes","await","Promise","createPromise","resolve","reject","done","destroy"],"mappings":";;;;+BAeA;;;eAAwBA;;;2DAfP;iEACF;oEACI;mEACM;8DACP;8DACE;4DAEF;4DACA;6DACC;gEACG;yEACS;;;;;;AAE/B,IAAMC,uBAAuB;IAAC;IAAQ;IAAS;IAAQ;CAAW;AAEnD,SAASD,UAAUE,UAAU,EAAEC,KAAK;IACjDC,IAAAA,2BAAkB,EAACF,YAAYD;IAC/BI,IAAAA,qBAAY,EAAC,IAAI,EAAEH;IACnB,IAAI,IAAI,CAACI,QAAQ,KAAKC,WAAW,IAAI,CAACD,QAAQ,GAAGE,aAAI,CAACF,QAAQ,CAAC,IAAI,CAACE,IAAI;IACxE,IAAI,IAAI,CAACC,IAAI,KAAKF,WAAW,IAAI,CAACE,IAAI,GAAG;AAC3C;AAEAT,UAAUU,SAAS,CAACC,MAAM,GAAG,SAASA,OAAOC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IAClE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IAEA,IAAME,OAAO,IAAI;IACjB,IAAI,OAAOD,aAAa,YAAY;QAClCD,UAAUA,WAAW,CAAC;QACtB,IAAI;YACF,IAAMG,iBAAiBR,aAAI,CAACS,SAAS,CAACF,KAAKP,IAAI;YAC/C,IAAMU,WAAWV,aAAI,CAACW,IAAI,CAACP,MAAMQ,IAAAA,kBAAS,EAACJ,gBAAgBH;YAC3D,IAAMQ,qBAAqBb,aAAI,CAACS,SAAS,CAACF,KAAKO,QAAQ;YACvD,IAAMC,eAAef,aAAI,CAACW,IAAI,CAACP,MAAMQ,IAAAA,kBAAS,EAACC,oBAAoBR;YAEnE,IAAMW,QAAQ,IAAIC,gBAAK,CAAC;YACxB,IAAIZ,QAAQa,KAAK,EAAE;gBACjBF,MAAMG,KAAK,CAAC,SAACb;oBACXc,IAAAA,gBAAO,EAACV,UAAU;wBAAEW,aAAa;oBAAK,GAAG,SAACC;wBACxCA,OAAOA,IAAIC,IAAI,KAAK,WAAWjB,SAASgB,OAAOhB;oBACjD;gBACF;YACF;YACAU,MAAMG,KAAK,CAACK,sBAAM,CAACC,IAAI,CAAC,MAAMzB,aAAI,CAAC0B,OAAO,CAAChB;YAC3CM,MAAMG,KAAK,CAACQ,mBAAE,CAACC,IAAI,CAACH,IAAI,CAACE,mBAAE,EAAEZ,cAAcL;YAC3CM,MAAMG,KAAK,CAACU,cAAK,CAACJ,IAAI,CAAC,MAAMf,UAAUH,MAAMF;YAC7CW,MAAMG,KAAK,CAACW,cAAK,CAACL,IAAI,CAAC,MAAMf,UAAUH,MAAMF;YAC7CW,MAAMG,KAAK,CAACY,eAAM,CAACN,IAAI,CAAC,MAAMf,UAAUH,MAAMF;YAC9C,OAAOW,MAAMgB,KAAK,CAAC1B;QACrB,EAAE,OAAOgB,KAAK;YACZ,OAAOhB,SAASgB;QAClB;IACF;IAEA,OAAO,IAAIW,QAAQ,SAASC,cAAcC,OAAO,EAAEC,MAAM;QACvD7B,KAAKJ,MAAM,CAACC,MAAMC,SAAS,SAACiB,KAAKe;mBAAUf,MAAMc,OAAOd,OAAOa,QAAQE;;IACzE;AACF;AAEA7C,UAAUU,SAAS,CAACoC,OAAO,GAAG,SAASA,WAAW"}