{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fast-extract/src/streams/write/file.mjs"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport writer from 'flush-write-stream';\nimport mkdirp from 'mkdirp-classic';\nimport Queue from 'queue-cb';\nimport rimraf2 from 'rimraf2';\n\nimport tempSuffix from 'temp-suffix';\nimport writeTruncateFile from '../../writeTruncateFile.mjs';\n\nexport default function createFilePipeline(dest, options) {\n  const tempDest = tempSuffix(dest);\n  options._tempPaths.push(tempDest);\n\n  let wroteSomething = false;\n  return writer(\n    function write(chunk, _encoding, callback) {\n      wroteSomething = true;\n      const appendFile = fs.appendFile.bind(fs, tempDest, chunk, callback);\n      if (this.pathMade) return appendFile();\n      mkdirp(path.dirname(tempDest), () => {\n        this.pathMade = true;\n        appendFile();\n      });\n    },\n    function flush(callback) {\n      const queue = new Queue(1);\n      queue.defer((callback) => {\n        mkdirp(path.dirname(dest), (err) => {\n          err && err.code !== 'EEXIST' ? callback(err) : callback();\n        });\n      });\n      if (wroteSomething) {\n        queue.defer(rimraf2.bind(null, dest, { disableGlob: true }));\n        queue.defer(fs.rename.bind(fs, tempDest, dest));\n      } else queue.defer(writeTruncateFile.bind(null, dest));\n      queue.await(callback);\n    }\n  );\n}\n"],"names":["createFilePipeline","dest","options","tempDest","tempSuffix","_tempPaths","push","wroteSomething","writer","write","chunk","_encoding","callback","appendFile","fs","bind","pathMade","mkdirp","path","dirname","flush","queue","Queue","defer","err","code","rimraf2","disableGlob","rename","writeTruncateFile","await"],"mappings":";;;;+BAUA;;;eAAwBA;;;yDAVT;2DACE;uEACE;oEACA;8DACD;8DACE;iEAEG;wEACO;;;;;;AAEf,SAASA,mBAAmBC,IAAI,EAAEC,OAAO;IACtD,IAAMC,WAAWC,IAAAA,mBAAU,EAACH;IAC5BC,QAAQG,UAAU,CAACC,IAAI,CAACH;IAExB,IAAII,iBAAiB;IACrB,OAAOC,IAAAA,yBAAM,EACX,SAASC,MAAMC,KAAK,EAAEC,SAAS,EAAEC,QAAQ;;QACvCL,iBAAiB;QACjB,IAAMM,aAAaC,WAAE,CAACD,UAAU,CAACE,IAAI,CAACD,WAAE,EAAEX,UAAUO,OAAOE;QAC3D,IAAI,IAAI,CAACI,QAAQ,EAAE,OAAOH;QAC1BI,IAAAA,sBAAM,EAACC,aAAI,CAACC,OAAO,CAAChB,WAAW;YAC7B,MAAKa,QAAQ,GAAG;YAChBH;QACF;IACF,GACA,SAASO,MAAMR,QAAQ;QACrB,IAAMS,QAAQ,IAAIC,gBAAK,CAAC;QACxBD,MAAME,KAAK,CAAC,SAACX;YACXK,IAAAA,sBAAM,EAACC,aAAI,CAACC,OAAO,CAAClB,OAAO,SAACuB;gBAC1BA,OAAOA,IAAIC,IAAI,KAAK,WAAWb,SAASY,OAAOZ;YACjD;QACF;QACA,IAAIL,gBAAgB;YAClBc,MAAME,KAAK,CAACG,gBAAO,CAACX,IAAI,CAAC,MAAMd,MAAM;gBAAE0B,aAAa;YAAK;YACzDN,MAAME,KAAK,CAACT,WAAE,CAACc,MAAM,CAACb,IAAI,CAACD,WAAE,EAAEX,UAAUF;QAC3C,OAAOoB,MAAME,KAAK,CAACM,0BAAiB,CAACd,IAAI,CAAC,MAAMd;QAChDoB,MAAMS,KAAK,CAAClB;IACd;AAEJ"}