UNPKG

fast-extract

Version:

Extract contents from various archive types (tar, tar.bz2, tar.gz, tar.xz, tgz, zip)

1 lines 3.65 kB
{"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":["createWriteStream","dest","options","type","_tempPaths","streams","createPipeline","generatedFiles","concat","forEach","exitCleanup","add","error","ended","onError","err","callback","res","destroy","rimrafAll","err2","remove","onEnd","length","pumpify","write","writer","chunk","encoding","flush","end","on"],"mappings":";;;;+BAOA;;;eAAwBA;;;uEAPL;8DACC;qEAEO;kEACH;gEACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,SAASA,kBAAkBC,IAAI,EAAEC,OAAO;IACrD,IAAI,OAAOA,YAAY,UAAUA,UAAU;QAAEC,MAAMD;IAAQ;IAC3DA,UAAU;QAAEE,YAAY,EAAE;OAAKF;IAC/B,IAAMG,UAAUC,IAAAA,uBAAc,EAACL,MAAMC;IAErC,IAAMK,iBAAiB;QAACN;KAAK,CAACO,MAAM,CAACN,QAAQE,UAAU;IAEvDG,eAAeE,OAAO,CAACC,oBAAW,CAACC,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,OAAOI,IAAAA,kBAAS,EAACZ,gBAAgB,SAACa;YAChCb,eAAeE,OAAO,CAACC,oBAAW,CAACW,MAAM;YACzCL,SAASD,OAAOK;QAClB;IACF;IAEA,SAASE,MAAMN,QAAQ;QACrB,IAAIJ,SAASC,OAAO,OAAOG;QAC3BH,QAAQ;QACR,OAAOM,IAAAA,kBAAS,EAACjB,QAAQE,UAAU,EAAE,SAACW;YACpCR,eAAeE,OAAO,CAACC,oBAAW,CAACW,MAAM;YACzCL,SAASD;QACX;IACF;IAEA,IAAME,MAAMZ,QAAQkB,MAAM,GAAG,IAAIlB,OAAO,CAAC,EAAE,GAAGmB,IAAAA,gBAAO,EAACnB;IACtD,IAAMoB,QAAQC,IAAAA,yBAAM,EAClB,SAASD,MAAME,KAAK,EAAEC,QAAQ,EAAEZ,QAAQ;QACtCC,IAAIQ,KAAK,CAACE,OAAOC,UAAU,SAACb;YAC1B,IAAIH,OAAO,QAAQ,0DAA0D;YAC7EG,MAAMD,QAAQC,KAAKC,YAAYA;QACjC;IACF,GACA,SAASa,MAAMb,QAAQ;QACrB,IAAIJ,OAAO,QAAQ,yDAAyD;QAC5EK,IAAIa,GAAG,CAAC,SAACf;YACP,IAAIH,OAAO,QAAQ,yDAAyD;YAC5EG,MAAMD,QAAQC,OAAOH,OAAOI,YAAYM,MAAMN;QAChD;IACF;IAGFC,IAAIc,EAAE,CAAC,SAAS,SAAChB;QACfD,QAAQC,KAAK;YACXU,MAAMP,OAAO,CAACH;QAChB;IACF;IAEA,OAAOU;AACT"}