@flatfile/plugin-zip-extractor
Version:
A plugin for unzipping zip files and uploading content back in Flatfile.
24 lines (19 loc) • 2.05 kB
JavaScript
;
var api = require('@flatfile/api');
var pluginJobHandler = require('@flatfile/plugin-job-handler');
var utilCommon = require('@flatfile/util-common');
var utilFileBuffer = require('@flatfile/util-file-buffer');
var E = require('adm-zip');
var d = require('fs');
var modernAsync = require('modern-async');
var os = require('os');
var j = require('path');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var E__default = /*#__PURE__*/_interopDefault(E);
var d__default = /*#__PURE__*/_interopDefault(d);
var j__default = /*#__PURE__*/_interopDefault(j);
var r=new api.FlatfileClient,P=(x={})=>s=>{s.on("file:created",async i=>{let{fileId:t}=i.context,{data:o}=await r.files.get(t);if(o.mode==="export"||!o.name.endsWith(".zip"))return;let n=await r.jobs.create({type:api.Flatfile.JobType.File,operation:"extract-plugin-zip",status:api.Flatfile.JobStatus.Ready,source:t});await r.jobs.execute(n.data.id);}),s.use(pluginJobHandler.jobHandler({operation:"extract-plugin-zip"},async(i,t)=>{let{spaceId:o,environmentId:n}=i.context;try{await t(1,"Unzipping file");let a=await utilFileBuffer.getFileBuffer(i),f=new E__default.default(a),p=f.getEntries().filter(e=>!e.name.startsWith(".")&&!e.entryName.startsWith("__MACOSX")&&!e.isDirectory),w=p.length;await t(10,"Uploading files");let c=0;return await modernAsync.asyncForEach(p,async e=>{f.extractEntryTo(e,os.tmpdir(),!1,!0);let l=j__default.default.join(os.tmpdir(),e.name);x.debug&&utilCommon.logInfo("@flatfile/plugin-zip-extractor",`filePath ${l}`);let F=d__default.default.createReadStream(l);await r.files.upload(F,{spaceId:o,environmentId:n}),await d__default.default.promises.unlink(l),await t(10+Math.round((c+1)/w*89),"File uploaded"),c++;}),{outcome:{message:"Extraction complete"}}}catch(a){throw utilCommon.logInfo("@flatfile/plugin-zip-extractor",`error ${a}`),new Error(`Extraction failed ${a.message}`)}}));},A=P;
exports.ZipExtractor = P;
exports.zipExtractorPlugin = A;
//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map