{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/extract-base-iterator/src/DirectoryEntry.mjs"],"sourcesContent":["import path from 'path';\nimport mkdirp from 'mkdirp-classic';\nimport objectAssign from 'object-assign';\nimport Queue from 'queue-cb';\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'];\n\nexport default function DirectoryEntry(attributes) {\n  validateAttributes(attributes, MANDATORY_ATTRIBUTES);\n  objectAssign(this, attributes);\n  if (this.type === undefined) this.type = 'directory';\n  if (this.basename === undefined) this.basename = path.basename(this.path);\n}\n\nDirectoryEntry.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\n      // do not check for the existence of the directory but allow out-of-order calling\n      const queue = new Queue(1);\n      queue.defer(mkdirp.bind(null, 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\nDirectoryEntry.prototype.destroy = function destroy() {};\n"],"names":["path","mkdirp","objectAssign","Queue","chmod","chown","utimes","stripPath","validateAttributes","MANDATORY_ATTRIBUTES","DirectoryEntry","attributes","type","undefined","basename","prototype","create","dest","options","callback","self","normalizedPath","normalize","fullPath","join","queue","defer","bind","await","err","Promise","createPromise","resolve","reject","done","destroy"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,OAAOC,YAAY,iBAAiB;AACpC,OAAOC,kBAAkB,gBAAgB;AACzC,OAAOC,WAAW,WAAW;AAE7B,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,WAAW,iBAAiB;AACnC,OAAOC,YAAY,kBAAkB;AACrC,OAAOC,eAAe,kBAAkB;AACxC,OAAOC,wBAAwB,2BAA2B;AAE1D,MAAMC,uBAAuB;IAAC;IAAQ;IAAS;CAAO;AAEtD,eAAe,SAASC,eAAeC,UAAU;IAC/CH,mBAAmBG,YAAYF;IAC/BP,aAAa,IAAI,EAAES;IACnB,IAAI,IAAI,CAACC,IAAI,KAAKC,WAAW,IAAI,CAACD,IAAI,GAAG;IACzC,IAAI,IAAI,CAACE,QAAQ,KAAKD,WAAW,IAAI,CAACC,QAAQ,GAAGd,KAAKc,QAAQ,CAAC,IAAI,CAACd,IAAI;AAC1E;AAEAU,eAAeK,SAAS,CAACC,MAAM,GAAG,SAASA,OAAOC,IAAI,EAAEC,OAAO,EAAEC,QAAQ;IACvE,IAAI,OAAOD,YAAY,YAAY;QACjCC,WAAWD;QACXA,UAAU;IACZ;IAEA,MAAME,OAAO,IAAI;IACjB,IAAI,OAAOD,aAAa,YAAY;QAClCD,UAAUA,WAAW,CAAC;QACtB,IAAI;YACF,MAAMG,iBAAiBrB,KAAKsB,SAAS,CAACF,KAAKpB,IAAI;YAC/C,MAAMuB,WAAWvB,KAAKwB,IAAI,CAACP,MAAMV,UAAUc,gBAAgBH;YAE3D,iFAAiF;YACjF,MAAMO,QAAQ,IAAItB,MAAM;YACxBsB,MAAMC,KAAK,CAACzB,OAAO0B,IAAI,CAAC,MAAMJ;YAC9BE,MAAMC,KAAK,CAACtB,MAAMuB,IAAI,CAAC,MAAMJ,UAAUH,MAAMF;YAC7CO,MAAMC,KAAK,CAACrB,MAAMsB,IAAI,CAAC,MAAMJ,UAAUH,MAAMF;YAC7CO,MAAMC,KAAK,CAACpB,OAAOqB,IAAI,CAAC,MAAMJ,UAAUH,MAAMF;YAC9C,OAAOO,MAAMG,KAAK,CAACT;QACrB,EAAE,OAAOU,KAAK;YACZ,OAAOV,SAASU;QAClB;IACF;IAEA,OAAO,IAAIC,QAAQ,SAASC,cAAcC,OAAO,EAAEC,MAAM;QACvDb,KAAKJ,MAAM,CAACC,MAAMC,SAAS,CAACW,KAAKK,OAAUL,MAAMI,OAAOJ,OAAOG,QAAQE;IACzE;AACF;AAEAxB,eAAeK,SAAS,CAACoB,OAAO,GAAG,SAASA,WAAW"}