UNPKG

@flatfile/plugin-zip-extractor

Version:

A plugin for unzipping zip files and uploading content back in Flatfile.

24 lines (19 loc) 2.05 kB
'use strict'; 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