fast-extract
Version:
Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)
1 lines • 3.63 kB
Source Map (JSON)
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/iterators/fast-extract/src/createWriteStream.mjs"],"sourcesContent":["import writer from 'flush-write-stream';\nimport pumpify from 'pumpify';\n\nimport createPipeline from './createPipeline.mjs';\nimport exitCleanup from './exitCleanup.mjs';\nimport rimrafAll from './rimrafAll.mjs';\n\nexport default function createWriteStream(dest, options) {\n if (typeof options === 'string') options = { type: options };\n options = { _tempPaths: [], ...options };\n const streams = createPipeline(dest, options);\n\n const generatedFiles = [dest].concat(options._tempPaths);\n\n generatedFiles.forEach(exitCleanup.add);\n\n let error = null;\n let ended = false;\n function onError(err, callback) {\n if (error || ended) return callback(err);\n error = err;\n res.destroy(err);\n return rimrafAll(generatedFiles, (err2) => {\n generatedFiles.forEach(exitCleanup.remove);\n callback(err || err2);\n });\n }\n\n function onEnd(callback) {\n if (error || ended) return callback();\n ended = true;\n return rimrafAll(options._tempPaths, (err) => {\n generatedFiles.forEach(exitCleanup.remove);\n callback(err);\n });\n }\n\n const res = streams.length < 2 ? streams[0] : pumpify(streams);\n const write = writer(\n function write(chunk, encoding, callback) {\n res.write(chunk, encoding, (err) => {\n if (error) return; // skip if errored so will not emit errors multiple times\n err ? onError(err, callback) : callback();\n });\n },\n function flush(callback) {\n if (error) return; // skip if errored so will not emit errors multiple times\n res.end((err) => {\n if (error) return; // skip if errored so will not emit errors multiple times\n err ? onError(err || error, callback) : onEnd(callback);\n });\n }\n );\n\n res.on('error', (err) => {\n onError(err, () => {\n write.destroy(err);\n });\n });\n\n return write;\n}\n"],"names":["writer","pumpify","createPipeline","exitCleanup","rimrafAll","createWriteStream","dest","options","type","_tempPaths","streams","generatedFiles","concat","forEach","add","error","ended","onError","err","callback","res","destroy","err2","remove","onEnd","length","write","chunk","encoding","flush","end","on"],"mappings":"AAAA,OAAOA,YAAY,qBAAqB;AACxC,OAAOC,aAAa,UAAU;AAE9B,OAAOC,oBAAoB,uBAAuB;AAClD,OAAOC,iBAAiB,oBAAoB;AAC5C,OAAOC,eAAe,kBAAkB;AAExC,eAAe,SAASC,kBAAkBC,IAAI,EAAEC,OAAO;IACrD,IAAI,OAAOA,YAAY,UAAUA,UAAU;QAAEC,MAAMD;IAAQ;IAC3DA,UAAU;QAAEE,YAAY,EAAE;QAAE,GAAGF,OAAO;IAAC;IACvC,MAAMG,UAAUR,eAAeI,MAAMC;IAErC,MAAMI,iBAAiB;QAACL;KAAK,CAACM,MAAM,CAACL,QAAQE,UAAU;IAEvDE,eAAeE,OAAO,CAACV,YAAYW,GAAG;IAEtC,IAAIC,QAAQ;IACZ,IAAIC,QAAQ;IACZ,SAASC,QAAQC,GAAG,EAAEC,QAAQ;QAC5B,IAAIJ,SAASC,OAAO,OAAOG,SAASD;QACpCH,QAAQG;QACRE,IAAIC,OAAO,CAACH;QACZ,OAAOd,UAAUO,gBAAgB,CAACW;YAChCX,eAAeE,OAAO,CAACV,YAAYoB,MAAM;YACzCJ,SAASD,OAAOI;QAClB;IACF;IAEA,SAASE,MAAML,QAAQ;QACrB,IAAIJ,SAASC,OAAO,OAAOG;QAC3BH,QAAQ;QACR,OAAOZ,UAAUG,QAAQE,UAAU,EAAE,CAACS;YACpCP,eAAeE,OAAO,CAACV,YAAYoB,MAAM;YACzCJ,SAASD;QACX;IACF;IAEA,MAAME,MAAMV,QAAQe,MAAM,GAAG,IAAIf,OAAO,CAAC,EAAE,GAAGT,QAAQS;IACtD,MAAMgB,QAAQ1B,OACZ,SAAS0B,MAAMC,KAAK,EAAEC,QAAQ,EAAET,QAAQ;QACtCC,IAAIM,KAAK,CAACC,OAAOC,UAAU,CAACV;YAC1B,IAAIH,OAAO,QAAQ,0DAA0D;YAC7EG,MAAMD,QAAQC,KAAKC,YAAYA;QACjC;IACF,GACA,SAASU,MAAMV,QAAQ;QACrB,IAAIJ,OAAO,QAAQ,yDAAyD;QAC5EK,IAAIU,GAAG,CAAC,CAACZ;YACP,IAAIH,OAAO,QAAQ,yDAAyD;YAC5EG,MAAMD,QAAQC,OAAOH,OAAOI,YAAYK,MAAML;QAChD;IACF;IAGFC,IAAIW,EAAE,CAAC,SAAS,CAACb;QACfD,QAAQC,KAAK;YACXQ,MAAML,OAAO,CAACH;QAChB;IACF;IAEA,OAAOQ;AACT"}