@webiny/api-page-builder-import-export 5.40.6 → 5.41.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -53,7 +53,7 @@ class ExportPagesCleanup {
53
53
  collection.push(...results);
54
54
  return collection;
55
55
  }, []);
56
- const s3 = (0, _clientS.createS3Client)({
56
+ const s3 = (0, _clientS.createS3)({
57
57
  region: process.env.AWS_REGION
58
58
  });
59
59
  const parentKey = parent.output?.key;
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_clientS","_chunk","_interopRequireDefault","ExportPagesCleanup","execute","params","context","response","store","task","getTask","parentId","error","id","parent","tasks","items","subTasks","listTasks","where","definitionId","PageExportTask","ZipPages","limit","length","done","files","reduce","collection","subTask","output","results","Object","values","filter","Boolean","push","s3","createS3Client","region","process","env","AWS_REGION","parentKey","key","deleteObject","Bucket","S3_BUCKET","Key","chunks","lodashChunk","chunk","deleteObjects","Delete","Objects","map","exports"],"sources":["ExportPagesCleanup.ts"],"sourcesContent":["import {\n IExportPagesCleanupTaskParams,\n IExportPagesControllerOutput,\n IExportPagesZipPagesOutput,\n PageExportTask\n} from \"~/export/pages/types\";\nimport { ITaskResponseResult } from \"@webiny/tasks\";\nimport { createS3Client } from \"@webiny/aws-sdk/client-s3\";\nimport lodashChunk from \"lodash/chunk\";\n\nexport class ExportPagesCleanup {\n public async execute(params: IExportPagesCleanupTaskParams): Promise<ITaskResponseResult> {\n const { context, response, store } = params;\n /**\n * This task must have a parent one. If it does not, just end with error.\n * This should not happen as we trigger this task from a parent one, not directly.\n *\n * But let's just make sure.\n */\n const task = store.getTask();\n if (!task.parentId) {\n return response.error(`Missing task \"${task.id}\" parent id.`);\n }\n\n const parent = await context.tasks.getTask<IExportPagesControllerOutput>(task.parentId);\n if (!parent) {\n return response.error(`Missing parent task \"${task.parentId}\" in the database.`);\n }\n /**\n * We need to find all the tasks that created zip files, so we can have a list of files to delete.\n */\n const { items: subTasks } = await context.tasks.listTasks<any, IExportPagesZipPagesOutput>({\n where: {\n parentId: parent.id,\n definitionId: PageExportTask.ZipPages\n },\n limit: 10000\n });\n if (subTasks.length === 0) {\n return response.done(\"No subtasks found - nothing to cleanup.\");\n }\n\n const files = subTasks.reduce<string[]>((collection, subTask) => {\n const done = subTask.output?.done;\n if (!done) {\n return collection;\n }\n const results = Object.values(done).filter(Boolean);\n collection.push(...results);\n return collection;\n }, []);\n\n const s3 = createS3Client({\n region: process.env.AWS_REGION\n });\n\n const parentKey = parent.output?.key;\n if (typeof parentKey === \"string\") {\n await s3.deleteObject({\n Bucket: process.env.S3_BUCKET,\n Key: parentKey\n });\n }\n\n const chunks = lodashChunk(files, 500);\n\n for (const chunk of chunks) {\n await s3.deleteObjects({\n Bucket: process.env.S3_BUCKET,\n Delete: {\n Objects: chunk.map(Key => ({ Key }))\n }\n });\n }\n\n return response.done(\"Done with cleanup!\");\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEO,MAAMI,kBAAkB,CAAC;EAC5B,MAAaC,OAAOA,CAACC,MAAqC,EAAgC;IACtF,MAAM;MAAEC,OAAO;MAAEC,QAAQ;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAC3C;AACR;AACA;AACA;AACA;AACA;IACQ,MAAMI,IAAI,GAAGD,KAAK,CAACE,OAAO,CAAC,CAAC;IAC5B,IAAI,CAACD,IAAI,CAACE,QAAQ,EAAE;MAChB,OAAOJ,QAAQ,CAACK,KAAK,CAAE,iBAAgBH,IAAI,CAACI,EAAG,cAAa,CAAC;IACjE;IAEA,MAAMC,MAAM,GAAG,MAAMR,OAAO,CAACS,KAAK,CAACL,OAAO,CAA+BD,IAAI,CAACE,QAAQ,CAAC;IACvF,IAAI,CAACG,MAAM,EAAE;MACT,OAAOP,QAAQ,CAACK,KAAK,CAAE,wBAAuBH,IAAI,CAACE,QAAS,oBAAmB,CAAC;IACpF;IACA;AACR;AACA;IACQ,MAAM;MAAEK,KAAK,EAAEC;IAAS,CAAC,GAAG,MAAMX,OAAO,CAACS,KAAK,CAACG,SAAS,CAAkC;MACvFC,KAAK,EAAE;QACHR,QAAQ,EAAEG,MAAM,CAACD,EAAE;QACnBO,YAAY,EAAEC,qBAAc,CAACC;MACjC,CAAC;MACDC,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIN,QAAQ,CAACO,MAAM,KAAK,CAAC,EAAE;MACvB,OAAOjB,QAAQ,CAACkB,IAAI,CAAC,yCAAyC,CAAC;IACnE;IAEA,MAAMC,KAAK,GAAGT,QAAQ,CAACU,MAAM,CAAW,CAACC,UAAU,EAAEC,OAAO,KAAK;MAC7D,MAAMJ,IAAI,GAAGI,OAAO,CAACC,MAAM,EAAEL,IAAI;MACjC,IAAI,CAACA,IAAI,EAAE;QACP,OAAOG,UAAU;MACrB;MACA,MAAMG,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACR,IAAI,CAAC,CAACS,MAAM,CAACC,OAAO,CAAC;MACnDP,UAAU,CAACQ,IAAI,CAAC,GAAGL,OAAO,CAAC;MAC3B,OAAOH,UAAU;IACrB,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMS,EAAE,GAAG,IAAAC,uBAAc,EAAC;MACtBC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;IACxB,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAG7B,MAAM,CAACgB,MAAM,EAAEc,GAAG;IACpC,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;MAC/B,MAAMN,EAAE,CAACQ,YAAY,CAAC;QAClBC,MAAM,EAAEN,OAAO,CAACC,GAAG,CAACM,SAAS;QAC7BC,GAAG,EAAEL;MACT,CAAC,CAAC;IACN;IAEA,MAAMM,MAAM,GAAG,IAAAC,cAAW,EAACxB,KAAK,EAAE,GAAG,CAAC;IAEtC,KAAK,MAAMyB,KAAK,IAAIF,MAAM,EAAE;MACxB,MAAMZ,EAAE,CAACe,aAAa,CAAC;QACnBN,MAAM,EAAEN,OAAO,CAACC,GAAG,CAACM,SAAS;QAC7BM,MAAM,EAAE;UACJC,OAAO,EAAEH,KAAK,CAACI,GAAG,CAACP,GAAG,KAAK;YAAEA;UAAI,CAAC,CAAC;QACvC;MACJ,CAAC,CAAC;IACN;IAEA,OAAOzC,QAAQ,CAACkB,IAAI,CAAC,oBAAoB,CAAC;EAC9C;AACJ;AAAC+B,OAAA,CAAArD,kBAAA,GAAAA,kBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_clientS","_chunk","_interopRequireDefault","ExportPagesCleanup","execute","params","context","response","store","task","getTask","parentId","error","id","parent","tasks","items","subTasks","listTasks","where","definitionId","PageExportTask","ZipPages","limit","length","done","files","reduce","collection","subTask","output","results","Object","values","filter","Boolean","push","s3","createS3","region","process","env","AWS_REGION","parentKey","key","deleteObject","Bucket","S3_BUCKET","Key","chunks","lodashChunk","chunk","deleteObjects","Delete","Objects","map","exports"],"sources":["ExportPagesCleanup.ts"],"sourcesContent":["import {\n IExportPagesCleanupTaskParams,\n IExportPagesControllerOutput,\n IExportPagesZipPagesOutput,\n PageExportTask\n} from \"~/export/pages/types\";\nimport { ITaskResponseResult } from \"@webiny/tasks\";\nimport { createS3 } from \"@webiny/aws-sdk/client-s3\";\nimport lodashChunk from \"lodash/chunk\";\n\nexport class ExportPagesCleanup {\n public async execute(params: IExportPagesCleanupTaskParams): Promise<ITaskResponseResult> {\n const { context, response, store } = params;\n /**\n * This task must have a parent one. If it does not, just end with error.\n * This should not happen as we trigger this task from a parent one, not directly.\n *\n * But let's just make sure.\n */\n const task = store.getTask();\n if (!task.parentId) {\n return response.error(`Missing task \"${task.id}\" parent id.`);\n }\n\n const parent = await context.tasks.getTask<IExportPagesControllerOutput>(task.parentId);\n if (!parent) {\n return response.error(`Missing parent task \"${task.parentId}\" in the database.`);\n }\n /**\n * We need to find all the tasks that created zip files, so we can have a list of files to delete.\n */\n const { items: subTasks } = await context.tasks.listTasks<any, IExportPagesZipPagesOutput>({\n where: {\n parentId: parent.id,\n definitionId: PageExportTask.ZipPages\n },\n limit: 10000\n });\n if (subTasks.length === 0) {\n return response.done(\"No subtasks found - nothing to cleanup.\");\n }\n\n const files = subTasks.reduce<string[]>((collection, subTask) => {\n const done = subTask.output?.done;\n if (!done) {\n return collection;\n }\n const results = Object.values(done).filter(Boolean);\n collection.push(...results);\n return collection;\n }, []);\n\n const s3 = createS3({\n region: process.env.AWS_REGION\n });\n\n const parentKey = parent.output?.key;\n if (typeof parentKey === \"string\") {\n await s3.deleteObject({\n Bucket: process.env.S3_BUCKET,\n Key: parentKey\n });\n }\n\n const chunks = lodashChunk(files, 500);\n\n for (const chunk of chunks) {\n await s3.deleteObjects({\n Bucket: process.env.S3_BUCKET,\n Delete: {\n Objects: chunk.map(Key => ({ Key }))\n }\n });\n }\n\n return response.done(\"Done with cleanup!\");\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEO,MAAMI,kBAAkB,CAAC;EAC5B,MAAaC,OAAOA,CAACC,MAAqC,EAAgC;IACtF,MAAM;MAAEC,OAAO;MAAEC,QAAQ;MAAEC;IAAM,CAAC,GAAGH,MAAM;IAC3C;AACR;AACA;AACA;AACA;AACA;IACQ,MAAMI,IAAI,GAAGD,KAAK,CAACE,OAAO,CAAC,CAAC;IAC5B,IAAI,CAACD,IAAI,CAACE,QAAQ,EAAE;MAChB,OAAOJ,QAAQ,CAACK,KAAK,CAAE,iBAAgBH,IAAI,CAACI,EAAG,cAAa,CAAC;IACjE;IAEA,MAAMC,MAAM,GAAG,MAAMR,OAAO,CAACS,KAAK,CAACL,OAAO,CAA+BD,IAAI,CAACE,QAAQ,CAAC;IACvF,IAAI,CAACG,MAAM,EAAE;MACT,OAAOP,QAAQ,CAACK,KAAK,CAAE,wBAAuBH,IAAI,CAACE,QAAS,oBAAmB,CAAC;IACpF;IACA;AACR;AACA;IACQ,MAAM;MAAEK,KAAK,EAAEC;IAAS,CAAC,GAAG,MAAMX,OAAO,CAACS,KAAK,CAACG,SAAS,CAAkC;MACvFC,KAAK,EAAE;QACHR,QAAQ,EAAEG,MAAM,CAACD,EAAE;QACnBO,YAAY,EAAEC,qBAAc,CAACC;MACjC,CAAC;MACDC,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIN,QAAQ,CAACO,MAAM,KAAK,CAAC,EAAE;MACvB,OAAOjB,QAAQ,CAACkB,IAAI,CAAC,yCAAyC,CAAC;IACnE;IAEA,MAAMC,KAAK,GAAGT,QAAQ,CAACU,MAAM,CAAW,CAACC,UAAU,EAAEC,OAAO,KAAK;MAC7D,MAAMJ,IAAI,GAAGI,OAAO,CAACC,MAAM,EAAEL,IAAI;MACjC,IAAI,CAACA,IAAI,EAAE;QACP,OAAOG,UAAU;MACrB;MACA,MAAMG,OAAO,GAAGC,MAAM,CAACC,MAAM,CAACR,IAAI,CAAC,CAACS,MAAM,CAACC,OAAO,CAAC;MACnDP,UAAU,CAACQ,IAAI,CAAC,GAAGL,OAAO,CAAC;MAC3B,OAAOH,UAAU;IACrB,CAAC,EAAE,EAAE,CAAC;IAEN,MAAMS,EAAE,GAAG,IAAAC,iBAAQ,EAAC;MAChBC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;IACxB,CAAC,CAAC;IAEF,MAAMC,SAAS,GAAG7B,MAAM,CAACgB,MAAM,EAAEc,GAAG;IACpC,IAAI,OAAOD,SAAS,KAAK,QAAQ,EAAE;MAC/B,MAAMN,EAAE,CAACQ,YAAY,CAAC;QAClBC,MAAM,EAAEN,OAAO,CAACC,GAAG,CAACM,SAAS;QAC7BC,GAAG,EAAEL;MACT,CAAC,CAAC;IACN;IAEA,MAAMM,MAAM,GAAG,IAAAC,cAAW,EAACxB,KAAK,EAAE,GAAG,CAAC;IAEtC,KAAK,MAAMyB,KAAK,IAAIF,MAAM,EAAE;MACxB,MAAMZ,EAAE,CAACe,aAAa,CAAC;QACnBN,MAAM,EAAEN,OAAO,CAACC,GAAG,CAACM,SAAS;QAC7BM,MAAM,EAAE;UACJC,OAAO,EAAEH,KAAK,CAACI,GAAG,CAACP,GAAG,KAAK;YAAEA;UAAI,CAAC,CAAC;QACvC;MACJ,CAAC,CAAC;IACN;IAEA,OAAOzC,QAAQ,CAACkB,IAAI,CAAC,oBAAoB,CAAC;EAC9C;AACJ;AAAC+B,OAAA,CAAArD,kBAAA,GAAAA,kBAAA","ignoreList":[]}
@@ -20,7 +20,7 @@ export interface IExportPagesControllerOutput extends ITaskResponseDoneResultOut
20
20
  key: string;
21
21
  url: string;
22
22
  }
23
- export declare type IExportPagesControllerTaskParams = ITaskRunParams<PbImportExportContext, IExportPagesControllerInput, IExportPagesControllerOutput>;
23
+ export type IExportPagesControllerTaskParams = ITaskRunParams<PbImportExportContext, IExportPagesControllerInput, IExportPagesControllerOutput>;
24
24
  /**
25
25
  * Zip Pages
26
26
  */
@@ -37,7 +37,7 @@ export interface IExportPagesZipPagesOutput extends ITaskResponseDoneResultOutpu
37
37
  done: IExportPagesZipPagesDone;
38
38
  failed: string[];
39
39
  }
40
- export declare type IExportPagesZipPagesTaskParams = ITaskRunParams<PbImportExportContext, IExportPagesZipPagesInput, IExportPagesZipPagesOutput>;
40
+ export type IExportPagesZipPagesTaskParams = ITaskRunParams<PbImportExportContext, IExportPagesZipPagesInput, IExportPagesZipPagesOutput>;
41
41
  /**
42
42
  * Combine Zipped Pages
43
43
  */
@@ -45,9 +45,9 @@ export interface IExportPagesCombineZippedPagesOutput extends ITaskResponseDoneR
45
45
  key: string;
46
46
  url: string;
47
47
  }
48
- export declare type IExportPagesCombineZippedPagesParams = Pick<ITaskRunParams<PbImportExportContext, IExportPagesControllerInput, IExportPagesCombineZippedPagesOutput>, "store" | "response">;
48
+ export type IExportPagesCombineZippedPagesParams = Pick<ITaskRunParams<PbImportExportContext, IExportPagesControllerInput, IExportPagesCombineZippedPagesOutput>, "store" | "response">;
49
49
  /**
50
50
  * Cleanup Zip files
51
51
  */
52
- export declare type IExportPagesCleanupInput = Record<string, boolean>;
53
- export declare type IExportPagesCleanupTaskParams = ITaskRunParams<PbImportExportContext, IExportPagesCleanupInput>;
52
+ export type IExportPagesCleanupInput = Record<string, boolean>;
53
+ export type IExportPagesCleanupTaskParams = ITaskRunParams<PbImportExportContext, IExportPagesCleanupInput>;
@@ -24,7 +24,8 @@ class PageExporter {
24
24
  const [filesData] = await this.fileManager.listFiles({
25
25
  where: {
26
26
  id_in: fileIds
27
- }
27
+ },
28
+ limit: 10000
28
29
  });
29
30
  imageFilesData.push(...filesData);
30
31
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_get","_interopRequireDefault","require","_zipper","_utils","PageExporter","constructor","fileManager","execute","page","exportPagesDataKey","files","extractFilesFromData","content","pageSettingsImages","get","filter","image","src","fileIds","map","imageFile","id","imageFilesData","length","filesData","listFiles","where","id_in","push","pageData","title","path","version","status","settings","pageDataBuffer","Buffer","from","JSON","stringify","zipper","Zipper","exportInfo","name","dataBuffer","archiveFileKey","process","exports"],"sources":["PageExporter.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { Page } from \"@webiny/api-page-builder/types\";\nimport { File, FileManagerContext } from \"@webiny/api-file-manager/types\";\nimport Zipper from \"~/export/zipper\";\nimport { extractFilesFromData } from \"~/export/utils\";\n\nexport interface ExportedPageData {\n /**\n * TODO: is it really ok not to export whole page object?\n * What if we add some new properties in the future?\n *\n * Type of the exported page data is now created by removing unnecessary properties from the Page type.\n * This way TS will break if we add new property and forget to handle it in the export/import process.\n */\n page: Omit<\n Page,\n | \"id\"\n | \"pid\"\n | \"tenant\"\n | \"locale\"\n | \"editor\"\n | \"category\"\n | \"createdFrom\"\n | \"createdBy\"\n | \"createdOn\"\n | \"savedOn\"\n | \"publishedOn\"\n | \"locked\"\n | \"ownedBy\"\n | \"webinyVersion\"\n >;\n files: File[];\n}\n\nexport class PageExporter {\n private fileManager: FileManagerContext[\"fileManager\"];\n\n constructor(fileManager: FileManagerContext[\"fileManager\"]) {\n this.fileManager = fileManager;\n }\n\n async execute(page: Page, exportPagesDataKey: string) {\n // Extract all files\n const files = extractFilesFromData(page.content || {});\n // Extract images from page settings\n const pageSettingsImages = [\n get(page, \"settings.general.image\") as unknown as File,\n get(page, \"settings.social.image\") as unknown as File\n ].filter(image => image && image.src);\n\n const fileIds = [...files, ...pageSettingsImages].map(imageFile => imageFile.id);\n // Get file data for all images\n const imageFilesData: File[] = [];\n if (fileIds.length > 0) {\n const [filesData] = await this.fileManager.listFiles({ where: { id_in: fileIds } });\n imageFilesData.push(...filesData);\n }\n\n // Extract the page data in a json file and upload it to S3\n const pageData: ExportedPageData = {\n page: {\n content: page.content,\n title: page.title,\n path: page.path,\n version: page.version,\n status: page.status,\n settings: page.settings\n },\n files: imageFilesData\n };\n const pageDataBuffer = Buffer.from(JSON.stringify(pageData));\n\n const zipper = new Zipper({\n exportInfo: {\n files: imageFilesData,\n name: page.title,\n dataBuffer: pageDataBuffer\n },\n archiveFileKey: exportPagesDataKey\n });\n\n return zipper.process();\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AA8BO,MAAMG,YAAY,CAAC;EAGtBC,WAAWA,CAACC,WAA8C,EAAE;IACxD,IAAI,CAACA,WAAW,GAAGA,WAAW;EAClC;EAEA,MAAMC,OAAOA,CAACC,IAAU,EAAEC,kBAA0B,EAAE;IAClD;IACA,MAAMC,KAAK,GAAG,IAAAC,2BAAoB,EAACH,IAAI,CAACI,OAAO,IAAI,CAAC,CAAC,CAAC;IACtD;IACA,MAAMC,kBAAkB,GAAG,CACvB,IAAAC,YAAG,EAACN,IAAI,EAAE,wBAAwB,CAAC,EACnC,IAAAM,YAAG,EAACN,IAAI,EAAE,uBAAuB,CAAC,CACrC,CAACO,MAAM,CAACC,KAAK,IAAIA,KAAK,IAAIA,KAAK,CAACC,GAAG,CAAC;IAErC,MAAMC,OAAO,GAAG,CAAC,GAAGR,KAAK,EAAE,GAAGG,kBAAkB,CAAC,CAACM,GAAG,CAACC,SAAS,IAAIA,SAAS,CAACC,EAAE,CAAC;IAChF;IACA,MAAMC,cAAsB,GAAG,EAAE;IACjC,IAAIJ,OAAO,CAACK,MAAM,GAAG,CAAC,EAAE;MACpB,MAAM,CAACC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAClB,WAAW,CAACmB,SAAS,CAAC;QAAEC,KAAK,EAAE;UAAEC,KAAK,EAAET;QAAQ;MAAE,CAAC,CAAC;MACnFI,cAAc,CAACM,IAAI,CAAC,GAAGJ,SAAS,CAAC;IACrC;;IAEA;IACA,MAAMK,QAA0B,GAAG;MAC/BrB,IAAI,EAAE;QACFI,OAAO,EAAEJ,IAAI,CAACI,OAAO;QACrBkB,KAAK,EAAEtB,IAAI,CAACsB,KAAK;QACjBC,IAAI,EAAEvB,IAAI,CAACuB,IAAI;QACfC,OAAO,EAAExB,IAAI,CAACwB,OAAO;QACrBC,MAAM,EAAEzB,IAAI,CAACyB,MAAM;QACnBC,QAAQ,EAAE1B,IAAI,CAAC0B;MACnB,CAAC;MACDxB,KAAK,EAAEY;IACX,CAAC;IACD,MAAMa,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACC,IAAI,CAACC,SAAS,CAACV,QAAQ,CAAC,CAAC;IAE5D,MAAMW,MAAM,GAAG,IAAIC,eAAM,CAAC;MACtBC,UAAU,EAAE;QACRhC,KAAK,EAAEY,cAAc;QACrBqB,IAAI,EAAEnC,IAAI,CAACsB,KAAK;QAChBc,UAAU,EAAET;MAChB,CAAC;MACDU,cAAc,EAAEpC;IACpB,CAAC,CAAC;IAEF,OAAO+B,MAAM,CAACM,OAAO,CAAC,CAAC;EAC3B;AACJ;AAACC,OAAA,CAAA3C,YAAA,GAAAA,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["_get","_interopRequireDefault","require","_zipper","_utils","PageExporter","constructor","fileManager","execute","page","exportPagesDataKey","files","extractFilesFromData","content","pageSettingsImages","get","filter","image","src","fileIds","map","imageFile","id","imageFilesData","length","filesData","listFiles","where","id_in","limit","push","pageData","title","path","version","status","settings","pageDataBuffer","Buffer","from","JSON","stringify","zipper","Zipper","exportInfo","name","dataBuffer","archiveFileKey","process","exports"],"sources":["PageExporter.ts"],"sourcesContent":["import get from \"lodash/get\";\nimport { Page } from \"@webiny/api-page-builder/types\";\nimport { File, FileManagerContext } from \"@webiny/api-file-manager/types\";\nimport Zipper from \"~/export/zipper\";\nimport { extractFilesFromData } from \"~/export/utils\";\n\nexport interface ExportedPageData {\n /**\n * TODO: is it really ok not to export whole page object?\n * What if we add some new properties in the future?\n *\n * Type of the exported page data is now created by removing unnecessary properties from the Page type.\n * This way TS will break if we add new property and forget to handle it in the export/import process.\n */\n page: Omit<\n Page,\n | \"id\"\n | \"pid\"\n | \"tenant\"\n | \"locale\"\n | \"editor\"\n | \"category\"\n | \"createdFrom\"\n | \"createdBy\"\n | \"createdOn\"\n | \"savedOn\"\n | \"publishedOn\"\n | \"locked\"\n | \"ownedBy\"\n | \"webinyVersion\"\n >;\n files: File[];\n}\n\nexport class PageExporter {\n private fileManager: FileManagerContext[\"fileManager\"];\n\n constructor(fileManager: FileManagerContext[\"fileManager\"]) {\n this.fileManager = fileManager;\n }\n\n async execute(page: Page, exportPagesDataKey: string) {\n // Extract all files\n const files = extractFilesFromData(page.content || {});\n // Extract images from page settings\n const pageSettingsImages = [\n get(page, \"settings.general.image\") as unknown as File,\n get(page, \"settings.social.image\") as unknown as File\n ].filter(image => image && image.src);\n\n const fileIds = [...files, ...pageSettingsImages].map(imageFile => imageFile.id);\n // Get file data for all images\n const imageFilesData: File[] = [];\n if (fileIds.length > 0) {\n const [filesData] = await this.fileManager.listFiles({\n where: {\n id_in: fileIds\n },\n limit: 10000\n });\n imageFilesData.push(...filesData);\n }\n\n // Extract the page data in a json file and upload it to S3\n const pageData: ExportedPageData = {\n page: {\n content: page.content,\n title: page.title,\n path: page.path,\n version: page.version,\n status: page.status,\n settings: page.settings\n },\n files: imageFilesData\n };\n const pageDataBuffer = Buffer.from(JSON.stringify(pageData));\n\n const zipper = new Zipper({\n exportInfo: {\n files: imageFilesData,\n name: page.title,\n dataBuffer: pageDataBuffer\n },\n archiveFileKey: exportPagesDataKey\n });\n\n return zipper.process();\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AA8BO,MAAMG,YAAY,CAAC;EAGtBC,WAAWA,CAACC,WAA8C,EAAE;IACxD,IAAI,CAACA,WAAW,GAAGA,WAAW;EAClC;EAEA,MAAMC,OAAOA,CAACC,IAAU,EAAEC,kBAA0B,EAAE;IAClD;IACA,MAAMC,KAAK,GAAG,IAAAC,2BAAoB,EAACH,IAAI,CAACI,OAAO,IAAI,CAAC,CAAC,CAAC;IACtD;IACA,MAAMC,kBAAkB,GAAG,CACvB,IAAAC,YAAG,EAACN,IAAI,EAAE,wBAAwB,CAAC,EACnC,IAAAM,YAAG,EAACN,IAAI,EAAE,uBAAuB,CAAC,CACrC,CAACO,MAAM,CAACC,KAAK,IAAIA,KAAK,IAAIA,KAAK,CAACC,GAAG,CAAC;IAErC,MAAMC,OAAO,GAAG,CAAC,GAAGR,KAAK,EAAE,GAAGG,kBAAkB,CAAC,CAACM,GAAG,CAACC,SAAS,IAAIA,SAAS,CAACC,EAAE,CAAC;IAChF;IACA,MAAMC,cAAsB,GAAG,EAAE;IACjC,IAAIJ,OAAO,CAACK,MAAM,GAAG,CAAC,EAAE;MACpB,MAAM,CAACC,SAAS,CAAC,GAAG,MAAM,IAAI,CAAClB,WAAW,CAACmB,SAAS,CAAC;QACjDC,KAAK,EAAE;UACHC,KAAK,EAAET;QACX,CAAC;QACDU,KAAK,EAAE;MACX,CAAC,CAAC;MACFN,cAAc,CAACO,IAAI,CAAC,GAAGL,SAAS,CAAC;IACrC;;IAEA;IACA,MAAMM,QAA0B,GAAG;MAC/BtB,IAAI,EAAE;QACFI,OAAO,EAAEJ,IAAI,CAACI,OAAO;QACrBmB,KAAK,EAAEvB,IAAI,CAACuB,KAAK;QACjBC,IAAI,EAAExB,IAAI,CAACwB,IAAI;QACfC,OAAO,EAAEzB,IAAI,CAACyB,OAAO;QACrBC,MAAM,EAAE1B,IAAI,CAAC0B,MAAM;QACnBC,QAAQ,EAAE3B,IAAI,CAAC2B;MACnB,CAAC;MACDzB,KAAK,EAAEY;IACX,CAAC;IACD,MAAMc,cAAc,GAAGC,MAAM,CAACC,IAAI,CAACC,IAAI,CAACC,SAAS,CAACV,QAAQ,CAAC,CAAC;IAE5D,MAAMW,MAAM,GAAG,IAAIC,eAAM,CAAC;MACtBC,UAAU,EAAE;QACRjC,KAAK,EAAEY,cAAc;QACrBsB,IAAI,EAAEpC,IAAI,CAACuB,KAAK;QAChBc,UAAU,EAAET;MAChB,CAAC;MACDU,cAAc,EAAErC;IACpB,CAAC,CAAC;IAEF,OAAOgC,MAAM,CAACM,OAAO,CAAC,CAAC;EAC3B;AACJ;AAACC,OAAA,CAAA5C,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
+ /// <reference types="node" />
3
4
  import { Readable } from "stream";
4
5
  import { S3, ListObjectsOutput, DeleteObjectOutput, HeadObjectOutput } from "@webiny/aws-sdk/client-s3";
5
6
  export type { ListObjectsOutput };
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  /// <reference types="node" />
3
+ /// <reference types="node" />
3
4
  import { CompleteMultipartUploadOutput } from "@webiny/aws-sdk/client-s3";
4
5
  import { Readable } from "stream";
5
6
  import { File } from "@webiny/api-file-manager/types";
@@ -27,7 +27,7 @@ const plugin = {
27
27
  type PbImportExportTask {
28
28
  id: ID
29
29
  createdOn: DateTime
30
- createdBy: PbCreatedBy
30
+ createdBy: PbIdentity
31
31
  status: PbImportExportTaskStatus
32
32
  data: JSON
33
33
  stats: PbImportExportTaskStats
@@ -1 +1 @@
1
- {"version":3,"names":["_resolve","require","plugin","type","schema","typeDefs","resolvers","PbQuery","getImportExportTask","_","args","context","resolve","pageBuilder","importExportTask","getTask","id","listImportExportSubTask","listSubTasks","status","limit","_default","exports","default"],"sources":["importExportTasks.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\nimport { resolve } from \"./utils/resolve\";\nimport { PbImportExportContext } from \"../types\";\n\nconst plugin: GraphQLSchemaPlugin<PbImportExportContext> = {\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n enum PbImportExportTaskStatus {\n pending\n processing\n completed\n failed\n }\n\n type PbImportExportTaskStats {\n pending: Int\n processing: Int\n completed: Int\n failed: Int\n total: Int\n }\n\n type PbImportExportTask {\n id: ID\n createdOn: DateTime\n createdBy: PbCreatedBy\n status: PbImportExportTaskStatus\n data: JSON\n stats: PbImportExportTaskStats\n error: JSON\n }\n\n # Response types\n type PbImportExportTaskResponse {\n data: PbImportExportTask\n error: PbError\n }\n\n type PbImportExportTaskListResponse {\n data: [PbImportExportTask]\n error: PbError\n }\n\n extend type PbQuery {\n getImportExportTask(id: ID!): PbImportExportTaskResponse\n listImportExportSubTask(\n id: ID!\n status: PbImportExportTaskStatus\n limit: Int\n ): PbImportExportTaskListResponse\n }\n `,\n resolvers: {\n PbQuery: {\n getImportExportTask: async (_, args: any, context) => {\n return resolve(() => {\n return context.pageBuilder.importExportTask.getTask(args.id);\n });\n },\n listImportExportSubTask: async (_, args: any, context) => {\n return resolve(() => {\n return context.pageBuilder.importExportTask.listSubTasks(\n args.id,\n args.status,\n args.limit\n );\n });\n }\n }\n }\n }\n};\nexport default plugin;\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAGA,MAAMC,MAAkD,GAAG;EACvDC,IAAI,EAAE,gBAAgB;EACtBC,MAAM,EAAE;IACJC,QAAQ,EAAE,aAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACLC,mBAAmB,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;UAClD,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,gBAAgB,CAACC,OAAO,CAACL,IAAI,CAACM,EAAE,CAAC;UAChE,CAAC,CAAC;QACN,CAAC;QACDC,uBAAuB,EAAE,MAAAA,CAAOR,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;UACtD,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,gBAAgB,CAACI,YAAY,CACpDR,IAAI,CAACM,EAAE,EACPN,IAAI,CAACS,MAAM,EACXT,IAAI,CAACU,KACT,CAAC;UACL,CAAC,CAAC;QACN;MACJ;IACJ;EACJ;AACJ,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACarB,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["_resolve","require","plugin","type","schema","typeDefs","resolvers","PbQuery","getImportExportTask","_","args","context","resolve","pageBuilder","importExportTask","getTask","id","listImportExportSubTask","listSubTasks","status","limit","_default","exports","default"],"sources":["importExportTasks.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\nimport { resolve } from \"./utils/resolve\";\nimport { PbImportExportContext } from \"../types\";\n\nconst plugin: GraphQLSchemaPlugin<PbImportExportContext> = {\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n enum PbImportExportTaskStatus {\n pending\n processing\n completed\n failed\n }\n\n type PbImportExportTaskStats {\n pending: Int\n processing: Int\n completed: Int\n failed: Int\n total: Int\n }\n\n type PbImportExportTask {\n id: ID\n createdOn: DateTime\n createdBy: PbIdentity\n status: PbImportExportTaskStatus\n data: JSON\n stats: PbImportExportTaskStats\n error: JSON\n }\n\n # Response types\n type PbImportExportTaskResponse {\n data: PbImportExportTask\n error: PbError\n }\n\n type PbImportExportTaskListResponse {\n data: [PbImportExportTask]\n error: PbError\n }\n\n extend type PbQuery {\n getImportExportTask(id: ID!): PbImportExportTaskResponse\n listImportExportSubTask(\n id: ID!\n status: PbImportExportTaskStatus\n limit: Int\n ): PbImportExportTaskListResponse\n }\n `,\n resolvers: {\n PbQuery: {\n getImportExportTask: async (_, args: any, context) => {\n return resolve(() => {\n return context.pageBuilder.importExportTask.getTask(args.id);\n });\n },\n listImportExportSubTask: async (_, args: any, context) => {\n return resolve(() => {\n return context.pageBuilder.importExportTask.listSubTasks(\n args.id,\n args.status,\n args.limit\n );\n });\n }\n }\n }\n }\n};\nexport default plugin;\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AAGA,MAAMC,MAAkD,GAAG;EACvDC,IAAI,EAAE,gBAAgB;EACtBC,MAAM,EAAE;IACJC,QAAQ,EAAE,aAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACLC,mBAAmB,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;UAClD,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,gBAAgB,CAACC,OAAO,CAACL,IAAI,CAACM,EAAE,CAAC;UAChE,CAAC,CAAC;QACN,CAAC;QACDC,uBAAuB,EAAE,MAAAA,CAAOR,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;UACtD,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,gBAAgB,CAACI,YAAY,CACpDR,IAAI,CAACM,EAAE,EACPN,IAAI,CAACS,MAAM,EACXT,IAAI,CAACU,KACT,CAAC;UACL,CAAC,CAAC;QACN;MACJ;IACJ;EACJ;AACJ,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GACarB,MAAM","ignoreList":[]}
@@ -31,7 +31,7 @@ const plugin = {
31
31
  type PbExportPagesTask {
32
32
  id: ID!
33
33
  createdOn: DateTime!
34
- createdBy: PbCreatedBy!
34
+ createdBy: PbIdentity!
35
35
  status: PbImportExportPagesTaskStatus!
36
36
  data: PbExportPagesTaskData!
37
37
  stats: PbImportExportPagesTaskStats!
@@ -51,7 +51,7 @@ const plugin = {
51
51
  type PbImportPagesTask {
52
52
  id: ID!
53
53
  createdOn: DateTime!
54
- createdBy: PbCreatedBy!
54
+ createdBy: PbIdentity!
55
55
  status: PbImportExportPagesTaskStatus!
56
56
  stats: PbImportExportPagesTaskStats!
57
57
  data: PbImportExportPagesTaskData!
@@ -1 +1 @@
1
- {"version":3,"names":["_resolve","require","plugin","type","schema","typeDefs","resolvers","PbQuery","getExportPagesTask","_","args","context","resolve","pageBuilder","pages","id","getImportPagesTask","listImportedPages","taskId","PbMutation","exportPages","importPages","_default","exports","default"],"sources":["pages.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\nimport {\n ExportPagesParams,\n ImportPagesParams,\n PbExportPagesResponse,\n PbImportExportContext\n} from \"../types\";\nimport { resolve } from \"./utils/resolve\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql\";\n\nconst plugin: GraphQLSchemaPlugin<PbImportExportContext> = {\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n enum PbImportExportPagesTaskStatus {\n pending\n running\n failed\n success\n aborted\n }\n\n type PbImportExportPagesTaskStats {\n completed: Int\n failed: Int\n total: Int\n }\n\n type PbExportPagesTaskData {\n url: String\n error: PbError\n }\n\n type PbExportPagesTask {\n id: ID!\n createdOn: DateTime!\n createdBy: PbCreatedBy!\n status: PbImportExportPagesTaskStatus!\n data: PbExportPagesTaskData!\n stats: PbImportExportPagesTaskStats!\n }\n type PbExportPagesData {\n task: PbExportPagesTask!\n }\n\n type PbExportPageResponse {\n data: PbExportPagesData\n error: PbError\n }\n\n type PbImportExportPagesTaskData {\n error: PbError\n }\n type PbImportPagesTask {\n id: ID!\n createdOn: DateTime!\n createdBy: PbCreatedBy!\n status: PbImportExportPagesTaskStatus!\n stats: PbImportExportPagesTaskStats!\n data: PbImportExportPagesTaskData!\n }\n\n type PbImportPageData {\n task: PbImportPagesTask!\n }\n\n type PbImportPageResponse {\n data: PbImportPageData\n error: PbError\n }\n\n enum PbExportPageRevisionType {\n published\n latest\n }\n\n type PbExportPagesTaskResponse {\n data: PbExportPagesTask\n error: PbError\n }\n\n type PbImportPagesTaskResponse {\n data: PbImportPagesTask\n error: PbError\n }\n\n type PbListImportedPagesData {\n id: ID!\n title: String!\n version: Int!\n }\n type PbListImportedPagesResponse {\n data: [PbListImportedPagesData!]\n error: PbError\n }\n\n extend type PbQuery {\n getExportPagesTask(id: ID!): PbExportPagesTaskResponse!\n getImportPagesTask(id: ID!): PbImportPagesTaskResponse!\n listImportedPages(taskId: ID!): PbListImportedPagesResponse!\n }\n\n extend type PbMutation {\n # Export pages\n exportPages(\n where: PbListPagesWhereInput\n sort: [PbListPagesSort!]\n search: PbListPagesSearchInput\n revisionType: PbExportPageRevisionType!\n ): PbExportPageResponse!\n\n # Import pages\n importPages(\n category: String!\n zipFileUrl: String!\n meta: JSON\n ): PbImportPageResponse!\n }\n `,\n resolvers: {\n PbQuery: {\n async getExportPagesTask(_, args, context) {\n return resolve(() => {\n return context.pageBuilder.pages.getExportPagesTask(args.id);\n });\n },\n async getImportPagesTask(_, args, context) {\n return resolve(() => {\n return context.pageBuilder.pages.getImportPagesTask(args.id);\n });\n },\n async listImportedPages(_, args, context) {\n return resolve(() => {\n return context.pageBuilder.pages.listImportedPages(args.taskId);\n });\n }\n },\n PbMutation: {\n exportPages: async (\n _,\n args,\n context\n ): Promise<Response<PbExportPagesResponse> | ErrorResponse> => {\n return resolve(() => {\n return context.pageBuilder.pages.exportPages(args as ExportPagesParams);\n });\n },\n\n importPages: async (_, args, context) => {\n return resolve(() => {\n return context.pageBuilder.pages.importPages(args as ImportPagesParams);\n });\n }\n }\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;AAOA,IAAAA,QAAA,GAAAC,OAAA;AAGA,MAAMC,MAAkD,GAAG;EACvDC,IAAI,EAAE,gBAAgB;EACtBC,MAAM,EAAE;IACJC,QAAQ,EAAE,aAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACL,MAAMC,kBAAkBA,CAACC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACvC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACN,kBAAkB,CAACE,IAAI,CAACK,EAAE,CAAC;UAChE,CAAC,CAAC;QACN,CAAC;QACD,MAAMC,kBAAkBA,CAACP,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACvC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACE,kBAAkB,CAACN,IAAI,CAACK,EAAE,CAAC;UAChE,CAAC,CAAC;QACN,CAAC;QACD,MAAME,iBAAiBA,CAACR,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACtC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACG,iBAAiB,CAACP,IAAI,CAACQ,MAAM,CAAC;UACnE,CAAC,CAAC;QACN;MACJ,CAAC;MACDC,UAAU,EAAE;QACRC,WAAW,EAAE,MAAAA,CACTX,CAAC,EACDC,IAAI,EACJC,OAAO,KACoD;UAC3D,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACM,WAAW,CAACV,IAAyB,CAAC;UAC3E,CAAC,CAAC;QACN,CAAC;QAEDW,WAAW,EAAE,MAAAA,CAAOZ,CAAC,EAAEC,IAAI,EAAEC,OAAO,KAAK;UACrC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACO,WAAW,CAACX,IAAyB,CAAC;UAC3E,CAAC,CAAC;QACN;MACJ;IACJ;EACJ;AACJ,CAAC;AAAC,IAAAY,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEatB,MAAM","ignoreList":[]}
1
+ {"version":3,"names":["_resolve","require","plugin","type","schema","typeDefs","resolvers","PbQuery","getExportPagesTask","_","args","context","resolve","pageBuilder","pages","id","getImportPagesTask","listImportedPages","taskId","PbMutation","exportPages","importPages","_default","exports","default"],"sources":["pages.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/types\";\nimport {\n ExportPagesParams,\n ImportPagesParams,\n PbExportPagesResponse,\n PbImportExportContext\n} from \"../types\";\nimport { resolve } from \"./utils/resolve\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql\";\n\nconst plugin: GraphQLSchemaPlugin<PbImportExportContext> = {\n type: \"graphql-schema\",\n schema: {\n typeDefs: /* GraphQL */ `\n enum PbImportExportPagesTaskStatus {\n pending\n running\n failed\n success\n aborted\n }\n\n type PbImportExportPagesTaskStats {\n completed: Int\n failed: Int\n total: Int\n }\n\n type PbExportPagesTaskData {\n url: String\n error: PbError\n }\n\n type PbExportPagesTask {\n id: ID!\n createdOn: DateTime!\n createdBy: PbIdentity!\n status: PbImportExportPagesTaskStatus!\n data: PbExportPagesTaskData!\n stats: PbImportExportPagesTaskStats!\n }\n type PbExportPagesData {\n task: PbExportPagesTask!\n }\n\n type PbExportPageResponse {\n data: PbExportPagesData\n error: PbError\n }\n\n type PbImportExportPagesTaskData {\n error: PbError\n }\n type PbImportPagesTask {\n id: ID!\n createdOn: DateTime!\n createdBy: PbIdentity!\n status: PbImportExportPagesTaskStatus!\n stats: PbImportExportPagesTaskStats!\n data: PbImportExportPagesTaskData!\n }\n\n type PbImportPageData {\n task: PbImportPagesTask!\n }\n\n type PbImportPageResponse {\n data: PbImportPageData\n error: PbError\n }\n\n enum PbExportPageRevisionType {\n published\n latest\n }\n\n type PbExportPagesTaskResponse {\n data: PbExportPagesTask\n error: PbError\n }\n\n type PbImportPagesTaskResponse {\n data: PbImportPagesTask\n error: PbError\n }\n\n type PbListImportedPagesData {\n id: ID!\n title: String!\n version: Int!\n }\n type PbListImportedPagesResponse {\n data: [PbListImportedPagesData!]\n error: PbError\n }\n\n extend type PbQuery {\n getExportPagesTask(id: ID!): PbExportPagesTaskResponse!\n getImportPagesTask(id: ID!): PbImportPagesTaskResponse!\n listImportedPages(taskId: ID!): PbListImportedPagesResponse!\n }\n\n extend type PbMutation {\n # Export pages\n exportPages(\n where: PbListPagesWhereInput\n sort: [PbListPagesSort!]\n search: PbListPagesSearchInput\n revisionType: PbExportPageRevisionType!\n ): PbExportPageResponse!\n\n # Import pages\n importPages(\n category: String!\n zipFileUrl: String!\n meta: JSON\n ): PbImportPageResponse!\n }\n `,\n resolvers: {\n PbQuery: {\n async getExportPagesTask(_, args, context) {\n return resolve(() => {\n return context.pageBuilder.pages.getExportPagesTask(args.id);\n });\n },\n async getImportPagesTask(_, args, context) {\n return resolve(() => {\n return context.pageBuilder.pages.getImportPagesTask(args.id);\n });\n },\n async listImportedPages(_, args, context) {\n return resolve(() => {\n return context.pageBuilder.pages.listImportedPages(args.taskId);\n });\n }\n },\n PbMutation: {\n exportPages: async (\n _,\n args,\n context\n ): Promise<Response<PbExportPagesResponse> | ErrorResponse> => {\n return resolve(() => {\n return context.pageBuilder.pages.exportPages(args as ExportPagesParams);\n });\n },\n\n importPages: async (_, args, context) => {\n return resolve(() => {\n return context.pageBuilder.pages.importPages(args as ImportPagesParams);\n });\n }\n }\n }\n }\n};\n\nexport default plugin;\n"],"mappings":";;;;;;AAOA,IAAAA,QAAA,GAAAC,OAAA;AAGA,MAAMC,MAAkD,GAAG;EACvDC,IAAI,EAAE,gBAAgB;EACtBC,MAAM,EAAE;IACJC,QAAQ,EAAE,aAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACL,MAAMC,kBAAkBA,CAACC,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACvC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACN,kBAAkB,CAACE,IAAI,CAACK,EAAE,CAAC;UAChE,CAAC,CAAC;QACN,CAAC;QACD,MAAMC,kBAAkBA,CAACP,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACvC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACE,kBAAkB,CAACN,IAAI,CAACK,EAAE,CAAC;UAChE,CAAC,CAAC;QACN,CAAC;QACD,MAAME,iBAAiBA,CAACR,CAAC,EAAEC,IAAI,EAAEC,OAAO,EAAE;UACtC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACG,iBAAiB,CAACP,IAAI,CAACQ,MAAM,CAAC;UACnE,CAAC,CAAC;QACN;MACJ,CAAC;MACDC,UAAU,EAAE;QACRC,WAAW,EAAE,MAAAA,CACTX,CAAC,EACDC,IAAI,EACJC,OAAO,KACoD;UAC3D,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACM,WAAW,CAACV,IAAyB,CAAC;UAC3E,CAAC,CAAC;QACN,CAAC;QAEDW,WAAW,EAAE,MAAAA,CAAOZ,CAAC,EAAEC,IAAI,EAAEC,OAAO,KAAK;UACrC,OAAO,IAAAC,gBAAO,EAAC,MAAM;YACjB,OAAOD,OAAO,CAACE,WAAW,CAACC,KAAK,CAACO,WAAW,CAACX,IAAyB,CAAC;UAC3E,CAAC,CAAC;QACN;MACJ;IACJ;EACJ;AACJ,CAAC;AAAC,IAAAY,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEatB,MAAM","ignoreList":[]}
@@ -122,7 +122,7 @@ export interface OnBlocksBeforeImportTopicParams {
122
122
  export interface OnBlocksAfterImportTopicParams {
123
123
  params: ImportBlocksParams;
124
124
  }
125
- export declare type BlocksImportExportCrud = {
125
+ export type BlocksImportExportCrud = {
126
126
  exportBlocks(params: ExportBlocksParams): Promise<{
127
127
  task: ImportExportTask;
128
128
  }>;
@@ -165,7 +165,7 @@ export interface OnTemplatesBeforeImportTopicParams {
165
165
  export interface OnTemplatesAfterImportTopicParams {
166
166
  params: ImportTemplatesParams;
167
167
  }
168
- export declare type TemplatesImportExportCrud = {
168
+ export type TemplatesImportExportCrud = {
169
169
  exportTemplates(params: ExportTemplatesParams): Promise<{
170
170
  task: ImportExportTask;
171
171
  }>;
@@ -212,7 +212,7 @@ export interface OnFormsBeforeImportTopicParams {
212
212
  export interface OnFormsAfterImportTopicParams {
213
213
  params: ImportFormsParams;
214
214
  }
215
- export declare type FormsImportExportCrud = {
215
+ export type FormsImportExportCrud = {
216
216
  exportForms(params: ExportFormsParams): Promise<{
217
217
  task: ImportExportTask;
218
218
  }>;
@@ -224,8 +224,8 @@ export declare type FormsImportExportCrud = {
224
224
  onFormsBeforeImport: Topic<OnFormsBeforeImportTopicParams>;
225
225
  onFormsAfterImport: Topic<OnFormsAfterImportTopicParams>;
226
226
  };
227
- declare type ImportExportTaskCreateData = Omit<ImportExportTask, "id" | "createdOn" | "createdBy">;
228
- export declare type ImportExportTaskCrud = {
227
+ type ImportExportTaskCreateData = Omit<ImportExportTask, "id" | "createdOn" | "createdBy">;
228
+ export type ImportExportTaskCrud = {
229
229
  /**
230
230
  * To be used internally in our code.
231
231
  * @internal
@@ -27,7 +27,7 @@ export interface IImportPagesControllerInput {
27
27
  export interface IImportPagesControllerOutput extends ITaskResponseDoneResultOutput {
28
28
  total: number;
29
29
  }
30
- export declare type IImportPagesControllerTaskParams = ITaskRunParams<PbImportExportContext, IImportPagesControllerInput, IImportPagesControllerOutput>;
30
+ export type IImportPagesControllerTaskParams = ITaskRunParams<PbImportExportContext, IImportPagesControllerInput, IImportPagesControllerOutput>;
31
31
  /**
32
32
  * Process Pages.
33
33
  */
@@ -45,4 +45,4 @@ export interface IImportPagesProcessPagesOutput extends ITaskResponseDoneResultO
45
45
  failed: string[];
46
46
  pageIdList: string[];
47
47
  }
48
- export declare type IImportPagesProcessPagesTaskParams = ITaskRunParams<PbImportExportContext, IImportPagesProcessPagesInput, IImportPagesProcessPagesOutput>;
48
+ export type IImportPagesProcessPagesTaskParams = ITaskRunParams<PbImportExportContext, IImportPagesProcessPagesInput, IImportPagesProcessPagesOutput>;
@@ -1,3 +1,3 @@
1
1
  import { FileInput } from "@webiny/api-file-manager/types";
2
- export declare type UploadFileMap = Map<string, FileInput>;
2
+ export type UploadFileMap = Map<string, FileInput>;
3
3
  export declare function uploadFilesFromS3(fileMap: UploadFileMap): Promise<import("@aws-sdk/client-s3").CompleteMultipartUploadCommandOutput[]>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-page-builder-import-export",
3
- "version": "5.40.6",
3
+ "version": "5.41.0-beta.1",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "pbie:base"
@@ -17,20 +17,20 @@
17
17
  "@babel/runtime": "7.24.1",
18
18
  "@commodo/fields": "1.1.2-beta.20",
19
19
  "@smithy/node-http-handler": "2.1.6",
20
- "@webiny/api": "5.40.6",
21
- "@webiny/api-file-manager": "5.40.6",
22
- "@webiny/api-form-builder": "5.40.6",
23
- "@webiny/api-page-builder": "5.40.6",
24
- "@webiny/api-security": "5.40.6",
25
- "@webiny/aws-sdk": "5.40.6",
26
- "@webiny/error": "5.40.6",
27
- "@webiny/handler": "5.40.6",
28
- "@webiny/handler-aws": "5.40.6",
29
- "@webiny/handler-graphql": "5.40.6",
30
- "@webiny/pubsub": "5.40.6",
31
- "@webiny/tasks": "5.40.6",
32
- "@webiny/utils": "5.40.6",
33
- "@webiny/validation": "5.40.6",
20
+ "@webiny/api": "5.41.0-beta.1",
21
+ "@webiny/api-file-manager": "5.41.0-beta.1",
22
+ "@webiny/api-form-builder": "5.41.0-beta.1",
23
+ "@webiny/api-page-builder": "5.41.0-beta.1",
24
+ "@webiny/api-security": "5.41.0-beta.1",
25
+ "@webiny/aws-sdk": "5.41.0-beta.1",
26
+ "@webiny/error": "5.41.0-beta.1",
27
+ "@webiny/handler": "5.41.0-beta.1",
28
+ "@webiny/handler-aws": "5.41.0-beta.1",
29
+ "@webiny/handler-graphql": "5.41.0-beta.1",
30
+ "@webiny/pubsub": "5.41.0-beta.1",
31
+ "@webiny/tasks": "5.41.0-beta.1",
32
+ "@webiny/utils": "5.41.0-beta.1",
33
+ "@webiny/validation": "5.41.0-beta.1",
34
34
  "archiver": "7.0.1",
35
35
  "commodo-fields-object": "1.0.6",
36
36
  "dot-prop-immutable": "2.1.1",
@@ -51,18 +51,18 @@
51
51
  "@types/archiver": "5.3.1",
52
52
  "@types/node-fetch": "2.6.2",
53
53
  "@types/yauzl": "2.10.0",
54
- "@webiny/api-authentication": "5.40.6",
55
- "@webiny/api-dynamodb-to-elasticsearch": "5.40.6",
56
- "@webiny/api-tenancy": "5.40.6",
57
- "@webiny/api-wcp": "5.40.6",
58
- "@webiny/cli": "5.40.6",
59
- "@webiny/db": "5.40.6",
60
- "@webiny/project-utils": "5.40.6",
54
+ "@webiny/api-authentication": "5.41.0-beta.1",
55
+ "@webiny/api-dynamodb-to-elasticsearch": "5.41.0-beta.1",
56
+ "@webiny/api-tenancy": "5.41.0-beta.1",
57
+ "@webiny/api-wcp": "5.41.0-beta.1",
58
+ "@webiny/cli": "5.41.0-beta.1",
59
+ "@webiny/db": "5.41.0-beta.1",
60
+ "@webiny/project-utils": "5.41.0-beta.1",
61
61
  "jest": "29.7.0",
62
62
  "jest-dynalite": "3.6.1",
63
63
  "rimraf": "5.0.5",
64
64
  "ttypescript": "1.5.15",
65
- "typescript": "4.7.4"
65
+ "typescript": "4.9.5"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public",
@@ -72,5 +72,5 @@
72
72
  "build": "yarn webiny run build",
73
73
  "watch": "yarn webiny run watch"
74
74
  },
75
- "gitHead": "f9da84b373e62f9f269599c4301e5e4418a98d51"
75
+ "gitHead": "2035c6fdbac9f52545b5024a381bc568c66ca899"
76
76
  }
@@ -42,7 +42,7 @@ class ChildTasksCleanup {
42
42
  * First, we need to remove all the logs which have no errors.
43
43
  */
44
44
  for (const log of childLogs) {
45
- if (log.items.some(item => item.type === _tasks.ITaskLogItemType.ERROR)) {
45
+ if (log.items.some(item => item.type === _tasks.TaskLogItemType.ERROR)) {
46
46
  continue;
47
47
  }
48
48
  await context.tasks.deleteLog(log.id);
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","ChildTasksCleanup","execute","params","context","task","items","childTasks","tasks","listTasks","where","parentId","id","limit","length","childTaskIdList","map","childTask","childLogs","listLogs","task_in","deletedChildTaskLogIdList","log","some","item","type","ITaskLogItemType","ERROR","deleteLog","includes","push","childTaskId","deleteTask","exports"],"sources":["ChildTasksCleanup.ts"],"sourcesContent":["/**\n * Cleanup of the child tasks.\n * This code will remove all the child tasks and their logs, which have no errors in them.\n */\nimport { ITask, Context, ITaskLogItemType } from \"@webiny/tasks\";\n\nexport interface IChildTasksCleanupExecuteParams {\n context: Context;\n task: ITask;\n}\nexport class ChildTasksCleanup {\n public async execute(params: IChildTasksCleanupExecuteParams): Promise<void> {\n const { context, task } = params;\n\n const { items: childTasks } = await context.tasks.listTasks({\n where: {\n parentId: task.id\n },\n // Really doubtful there will be more than 10k of child tasks.\n limit: 100000\n });\n if (childTasks.length === 0) {\n return;\n }\n\n const childTaskIdList = childTasks.map(childTask => childTask.id);\n\n const { items: childLogs } = await context.tasks.listLogs({\n where: {\n task_in: childTaskIdList\n },\n limit: 100000\n });\n\n const deletedChildTaskLogIdList: string[] = [];\n /**\n * First, we need to remove all the logs which have no errors.\n */\n for (const log of childLogs) {\n if (log.items.some(item => item.type === ITaskLogItemType.ERROR)) {\n continue;\n }\n await context.tasks.deleteLog(log.id);\n if (deletedChildTaskLogIdList.includes(log.task)) {\n continue;\n }\n deletedChildTaskLogIdList.push(log.task);\n }\n /**\n * Now we can remove the tasks.\n */\n for (const childTaskId of deletedChildTaskLogIdList) {\n await context.tasks.deleteTask(childTaskId);\n }\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAJA;AACA;AACA;AACA;;AAOO,MAAMC,iBAAiB,CAAC;EAC3B,MAAaC,OAAOA,CAACC,MAAuC,EAAiB;IACzE,MAAM;MAAEC,OAAO;MAAEC;IAAK,CAAC,GAAGF,MAAM;IAEhC,MAAM;MAAEG,KAAK,EAAEC;IAAW,CAAC,GAAG,MAAMH,OAAO,CAACI,KAAK,CAACC,SAAS,CAAC;MACxDC,KAAK,EAAE;QACHC,QAAQ,EAAEN,IAAI,CAACO;MACnB,CAAC;MACD;MACAC,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIN,UAAU,CAACO,MAAM,KAAK,CAAC,EAAE;MACzB;IACJ;IAEA,MAAMC,eAAe,GAAGR,UAAU,CAACS,GAAG,CAACC,SAAS,IAAIA,SAAS,CAACL,EAAE,CAAC;IAEjE,MAAM;MAAEN,KAAK,EAAEY;IAAU,CAAC,GAAG,MAAMd,OAAO,CAACI,KAAK,CAACW,QAAQ,CAAC;MACtDT,KAAK,EAAE;QACHU,OAAO,EAAEL;MACb,CAAC;MACDF,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAMQ,yBAAmC,GAAG,EAAE;IAC9C;AACR;AACA;IACQ,KAAK,MAAMC,GAAG,IAAIJ,SAAS,EAAE;MACzB,IAAII,GAAG,CAAChB,KAAK,CAACiB,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAKC,uBAAgB,CAACC,KAAK,CAAC,EAAE;QAC9D;MACJ;MACA,MAAMvB,OAAO,CAACI,KAAK,CAACoB,SAAS,CAACN,GAAG,CAACV,EAAE,CAAC;MACrC,IAAIS,yBAAyB,CAACQ,QAAQ,CAACP,GAAG,CAACjB,IAAI,CAAC,EAAE;QAC9C;MACJ;MACAgB,yBAAyB,CAACS,IAAI,CAACR,GAAG,CAACjB,IAAI,CAAC;IAC5C;IACA;AACR;AACA;IACQ,KAAK,MAAM0B,WAAW,IAAIV,yBAAyB,EAAE;MACjD,MAAMjB,OAAO,CAACI,KAAK,CAACwB,UAAU,CAACD,WAAW,CAAC;IAC/C;EACJ;AACJ;AAACE,OAAA,CAAAhC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","ChildTasksCleanup","execute","params","context","task","items","childTasks","tasks","listTasks","where","parentId","id","limit","length","childTaskIdList","map","childTask","childLogs","listLogs","task_in","deletedChildTaskLogIdList","log","some","item","type","TaskLogItemType","ERROR","deleteLog","includes","push","childTaskId","deleteTask","exports"],"sources":["ChildTasksCleanup.ts"],"sourcesContent":["/**\n * Cleanup of the child tasks.\n * This code will remove all the child tasks and their logs, which have no errors in them.\n */\nimport { ITask, Context, TaskLogItemType } from \"@webiny/tasks\";\n\nexport interface IChildTasksCleanupExecuteParams {\n context: Context;\n task: ITask;\n}\nexport class ChildTasksCleanup {\n public async execute(params: IChildTasksCleanupExecuteParams): Promise<void> {\n const { context, task } = params;\n\n const { items: childTasks } = await context.tasks.listTasks({\n where: {\n parentId: task.id\n },\n // Really doubtful there will be more than 10k of child tasks.\n limit: 100000\n });\n if (childTasks.length === 0) {\n return;\n }\n\n const childTaskIdList = childTasks.map(childTask => childTask.id);\n\n const { items: childLogs } = await context.tasks.listLogs({\n where: {\n task_in: childTaskIdList\n },\n limit: 100000\n });\n\n const deletedChildTaskLogIdList: string[] = [];\n /**\n * First, we need to remove all the logs which have no errors.\n */\n for (const log of childLogs) {\n if (log.items.some(item => item.type === TaskLogItemType.ERROR)) {\n continue;\n }\n await context.tasks.deleteLog(log.id);\n if (deletedChildTaskLogIdList.includes(log.task)) {\n continue;\n }\n deletedChildTaskLogIdList.push(log.task);\n }\n /**\n * Now we can remove the tasks.\n */\n for (const childTaskId of deletedChildTaskLogIdList) {\n await context.tasks.deleteTask(childTaskId);\n }\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAJA;AACA;AACA;AACA;;AAOO,MAAMC,iBAAiB,CAAC;EAC3B,MAAaC,OAAOA,CAACC,MAAuC,EAAiB;IACzE,MAAM;MAAEC,OAAO;MAAEC;IAAK,CAAC,GAAGF,MAAM;IAEhC,MAAM;MAAEG,KAAK,EAAEC;IAAW,CAAC,GAAG,MAAMH,OAAO,CAACI,KAAK,CAACC,SAAS,CAAC;MACxDC,KAAK,EAAE;QACHC,QAAQ,EAAEN,IAAI,CAACO;MACnB,CAAC;MACD;MACAC,KAAK,EAAE;IACX,CAAC,CAAC;IACF,IAAIN,UAAU,CAACO,MAAM,KAAK,CAAC,EAAE;MACzB;IACJ;IAEA,MAAMC,eAAe,GAAGR,UAAU,CAACS,GAAG,CAACC,SAAS,IAAIA,SAAS,CAACL,EAAE,CAAC;IAEjE,MAAM;MAAEN,KAAK,EAAEY;IAAU,CAAC,GAAG,MAAMd,OAAO,CAACI,KAAK,CAACW,QAAQ,CAAC;MACtDT,KAAK,EAAE;QACHU,OAAO,EAAEL;MACb,CAAC;MACDF,KAAK,EAAE;IACX,CAAC,CAAC;IAEF,MAAMQ,yBAAmC,GAAG,EAAE;IAC9C;AACR;AACA;IACQ,KAAK,MAAMC,GAAG,IAAIJ,SAAS,EAAE;MACzB,IAAII,GAAG,CAAChB,KAAK,CAACiB,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,IAAI,KAAKC,sBAAe,CAACC,KAAK,CAAC,EAAE;QAC7D;MACJ;MACA,MAAMvB,OAAO,CAACI,KAAK,CAACoB,SAAS,CAACN,GAAG,CAACV,EAAE,CAAC;MACrC,IAAIS,yBAAyB,CAACQ,QAAQ,CAACP,GAAG,CAACjB,IAAI,CAAC,EAAE;QAC9C;MACJ;MACAgB,yBAAyB,CAACS,IAAI,CAACR,GAAG,CAACjB,IAAI,CAAC;IAC5C;IACA;AACR;AACA;IACQ,KAAK,MAAM0B,WAAW,IAAIV,yBAAyB,EAAE;MACjD,MAAMjB,OAAO,CAACI,KAAK,CAACwB,UAAU,CAACD,WAAW,CAAC;IAC/C;EACJ;AACJ;AAACE,OAAA,CAAAhC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -10,6 +10,7 @@ var _ChildTasksCleanup = require("../common/ChildTasksCleanup");
10
10
  const createExportPagesControllerTask = () => {
11
11
  // TODO make the task private with createPrivateTaskDefinition
12
12
  return (0, _tasks.createTaskDefinition)({
13
+ isPrivate: true,
13
14
  id: _types.PageExportTask.Controller,
14
15
  title: "Page Builder - Export Pages - Controller",
15
16
  description: "Export pages from the Page Builder - controller.",
@@ -1 +1 @@
1
- {"version":3,"names":["_tasks","require","_types","_ChildTasksCleanup","createExportPagesControllerTask","createTaskDefinition","id","PageExportTask","Controller","title","description","maxIterations","run","params","response","isAborted","aborted","ExportPagesController","exportPagesController","execute","onDone","context","task","tasks","trigger","definition","Cleanup","parent","delay","childTasksCleanup","ChildTasksCleanup","ex","console","error","onError","onAbort","exports"],"sources":["exportPagesControllerTask.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport {\n IExportPagesControllerInput,\n IExportPagesControllerOutput,\n PageExportTask\n} from \"~/export/pages/types\";\nimport { ChildTasksCleanup } from \"../common/ChildTasksCleanup\";\n\nexport const createExportPagesControllerTask = () => {\n // TODO make the task private with createPrivateTaskDefinition\n return createTaskDefinition<\n PbImportExportContext,\n IExportPagesControllerInput,\n IExportPagesControllerOutput\n >({\n id: PageExportTask.Controller,\n title: \"Page Builder - Export Pages - Controller\",\n description: \"Export pages from the Page Builder - controller.\",\n /**\n * We want to have a lot of executions because we need to pool the subtasks all the time.\n */\n maxIterations: 500,\n run: async params => {\n const { response, isAborted } = params;\n /**\n * We always need to check task status.\n */\n if (isAborted()) {\n return response.aborted();\n }\n\n const { ExportPagesController } = await import(\n /* webpackChunkName: \"ExportPagesController\" */ \"~/export/pages/ExportPagesController\"\n );\n\n const exportPagesController = new ExportPagesController();\n return await exportPagesController.execute(params);\n },\n onDone: async ({ context, task }) => {\n await context.tasks.trigger({\n definition: PageExportTask.Cleanup,\n parent: task,\n // delay cleanup for 25hrs\n delay: 25 * 60 * 60\n });\n /**\n * We want to clean all child tasks and logs, which have no errors.\n */\n const childTasksCleanup = new ChildTasksCleanup();\n try {\n await childTasksCleanup.execute({\n context,\n task\n });\n } catch (ex) {\n console.error(\"Error while cleaning child tasks.\", ex);\n }\n },\n onError: async ({ context, task }) => {\n await context.tasks.trigger({\n definition: PageExportTask.Cleanup,\n parent: task\n });\n },\n onAbort: async ({ context, task }) => {\n await context.tasks.trigger({\n definition: PageExportTask.Cleanup,\n parent: task\n });\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAKA,IAAAE,kBAAA,GAAAF,OAAA;AAEO,MAAMG,+BAA+B,GAAGA,CAAA,KAAM;EACjD;EACA,OAAO,IAAAC,2BAAoB,EAIzB;IACEC,EAAE,EAAEC,qBAAc,CAACC,UAAU;IAC7BC,KAAK,EAAE,0CAA0C;IACjDC,WAAW,EAAE,kDAAkD;IAC/D;AACR;AACA;IACQC,aAAa,EAAE,GAAG;IAClBC,GAAG,EAAE,MAAMC,MAAM,IAAI;MACjB,MAAM;QAAEC,QAAQ;QAAEC;MAAU,CAAC,GAAGF,MAAM;MACtC;AACZ;AACA;MACY,IAAIE,SAAS,CAAC,CAAC,EAAE;QACb,OAAOD,QAAQ,CAACE,OAAO,CAAC,CAAC;MAC7B;MAEA,MAAM;QAAEC;MAAsB,CAAC,GAAG,MAAM,MAAM,EAC1C,yFACJ,CAAC;MAED,MAAMC,qBAAqB,GAAG,IAAID,qBAAqB,CAAC,CAAC;MACzD,OAAO,MAAMC,qBAAqB,CAACC,OAAO,CAACN,MAAM,CAAC;IACtD,CAAC;IACDO,MAAM,EAAE,MAAAA,CAAO;MAAEC,OAAO;MAAEC;IAAK,CAAC,KAAK;MACjC,MAAMD,OAAO,CAACE,KAAK,CAACC,OAAO,CAAC;QACxBC,UAAU,EAAElB,qBAAc,CAACmB,OAAO;QAClCC,MAAM,EAAEL,IAAI;QACZ;QACAM,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG;MACrB,CAAC,CAAC;MACF;AACZ;AACA;MACY,MAAMC,iBAAiB,GAAG,IAAIC,oCAAiB,CAAC,CAAC;MACjD,IAAI;QACA,MAAMD,iBAAiB,CAACV,OAAO,CAAC;UAC5BE,OAAO;UACPC;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOS,EAAE,EAAE;QACTC,OAAO,CAACC,KAAK,CAAC,mCAAmC,EAAEF,EAAE,CAAC;MAC1D;IACJ,CAAC;IACDG,OAAO,EAAE,MAAAA,CAAO;MAAEb,OAAO;MAAEC;IAAK,CAAC,KAAK;MAClC,MAAMD,OAAO,CAACE,KAAK,CAACC,OAAO,CAAC;QACxBC,UAAU,EAAElB,qBAAc,CAACmB,OAAO;QAClCC,MAAM,EAAEL;MACZ,CAAC,CAAC;IACN,CAAC;IACDa,OAAO,EAAE,MAAAA,CAAO;MAAEd,OAAO;MAAEC;IAAK,CAAC,KAAK;MAClC,MAAMD,OAAO,CAACE,KAAK,CAACC,OAAO,CAAC;QACxBC,UAAU,EAAElB,qBAAc,CAACmB,OAAO;QAClCC,MAAM,EAAEL;MACZ,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACc,OAAA,CAAAhC,+BAAA,GAAAA,+BAAA","ignoreList":[]}
1
+ {"version":3,"names":["_tasks","require","_types","_ChildTasksCleanup","createExportPagesControllerTask","createTaskDefinition","isPrivate","id","PageExportTask","Controller","title","description","maxIterations","run","params","response","isAborted","aborted","ExportPagesController","exportPagesController","execute","onDone","context","task","tasks","trigger","definition","Cleanup","parent","delay","childTasksCleanup","ChildTasksCleanup","ex","console","error","onError","onAbort","exports"],"sources":["exportPagesControllerTask.ts"],"sourcesContent":["import { createTaskDefinition } from \"@webiny/tasks\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport {\n IExportPagesControllerInput,\n IExportPagesControllerOutput,\n PageExportTask\n} from \"~/export/pages/types\";\nimport { ChildTasksCleanup } from \"../common/ChildTasksCleanup\";\n\nexport const createExportPagesControllerTask = () => {\n // TODO make the task private with createPrivateTaskDefinition\n return createTaskDefinition<\n PbImportExportContext,\n IExportPagesControllerInput,\n IExportPagesControllerOutput\n >({\n isPrivate: true,\n id: PageExportTask.Controller,\n title: \"Page Builder - Export Pages - Controller\",\n description: \"Export pages from the Page Builder - controller.\",\n /**\n * We want to have a lot of executions because we need to pool the subtasks all the time.\n */\n maxIterations: 500,\n run: async params => {\n const { response, isAborted } = params;\n /**\n * We always need to check task status.\n */\n if (isAborted()) {\n return response.aborted();\n }\n\n const { ExportPagesController } = await import(\n /* webpackChunkName: \"ExportPagesController\" */ \"~/export/pages/ExportPagesController\"\n );\n\n const exportPagesController = new ExportPagesController();\n return await exportPagesController.execute(params);\n },\n onDone: async ({ context, task }) => {\n await context.tasks.trigger({\n definition: PageExportTask.Cleanup,\n parent: task,\n // delay cleanup for 25hrs\n delay: 25 * 60 * 60\n });\n /**\n * We want to clean all child tasks and logs, which have no errors.\n */\n const childTasksCleanup = new ChildTasksCleanup();\n try {\n await childTasksCleanup.execute({\n context,\n task\n });\n } catch (ex) {\n console.error(\"Error while cleaning child tasks.\", ex);\n }\n },\n onError: async ({ context, task }) => {\n await context.tasks.trigger({\n definition: PageExportTask.Cleanup,\n parent: task\n });\n },\n onAbort: async ({ context, task }) => {\n await context.tasks.trigger({\n definition: PageExportTask.Cleanup,\n parent: task\n });\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAKA,IAAAE,kBAAA,GAAAF,OAAA;AAEO,MAAMG,+BAA+B,GAAGA,CAAA,KAAM;EACjD;EACA,OAAO,IAAAC,2BAAoB,EAIzB;IACEC,SAAS,EAAE,IAAI;IACfC,EAAE,EAAEC,qBAAc,CAACC,UAAU;IAC7BC,KAAK,EAAE,0CAA0C;IACjDC,WAAW,EAAE,kDAAkD;IAC/D;AACR;AACA;IACQC,aAAa,EAAE,GAAG;IAClBC,GAAG,EAAE,MAAMC,MAAM,IAAI;MACjB,MAAM;QAAEC,QAAQ;QAAEC;MAAU,CAAC,GAAGF,MAAM;MACtC;AACZ;AACA;MACY,IAAIE,SAAS,CAAC,CAAC,EAAE;QACb,OAAOD,QAAQ,CAACE,OAAO,CAAC,CAAC;MAC7B;MAEA,MAAM;QAAEC;MAAsB,CAAC,GAAG,MAAM,MAAM,EAC1C,yFACJ,CAAC;MAED,MAAMC,qBAAqB,GAAG,IAAID,qBAAqB,CAAC,CAAC;MACzD,OAAO,MAAMC,qBAAqB,CAACC,OAAO,CAACN,MAAM,CAAC;IACtD,CAAC;IACDO,MAAM,EAAE,MAAAA,CAAO;MAAEC,OAAO;MAAEC;IAAK,CAAC,KAAK;MACjC,MAAMD,OAAO,CAACE,KAAK,CAACC,OAAO,CAAC;QACxBC,UAAU,EAAElB,qBAAc,CAACmB,OAAO;QAClCC,MAAM,EAAEL,IAAI;QACZ;QACAM,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG;MACrB,CAAC,CAAC;MACF;AACZ;AACA;MACY,MAAMC,iBAAiB,GAAG,IAAIC,oCAAiB,CAAC,CAAC;MACjD,IAAI;QACA,MAAMD,iBAAiB,CAACV,OAAO,CAAC;UAC5BE,OAAO;UACPC;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOS,EAAE,EAAE;QACTC,OAAO,CAACC,KAAK,CAAC,mCAAmC,EAAEF,EAAE,CAAC;MAC1D;IACJ,CAAC;IACDG,OAAO,EAAE,MAAAA,CAAO;MAAEb,OAAO;MAAEC;IAAK,CAAC,KAAK;MAClC,MAAMD,OAAO,CAACE,KAAK,CAACC,OAAO,CAAC;QACxBC,UAAU,EAAElB,qBAAc,CAACmB,OAAO;QAClCC,MAAM,EAAEL;MACZ,CAAC,CAAC;IACN,CAAC;IACDa,OAAO,EAAE,MAAAA,CAAO;MAAEd,OAAO;MAAEC;IAAK,CAAC,KAAK;MAClC,MAAMD,OAAO,CAACE,KAAK,CAACC,OAAO,CAAC;QACxBC,UAAU,EAAElB,qBAAc,CAACmB,OAAO;QAClCC,MAAM,EAAEL;MACZ,CAAC,CAAC;IACN;EACJ,CAAC,CAAC;AACN,CAAC;AAACc,OAAA,CAAAjC,+BAAA,GAAAA,+BAAA","ignoreList":[]}
package/types.d.ts CHANGED
@@ -71,7 +71,7 @@ export interface ImportExportTaskStorageOperationsListParams {
71
71
  * @category StorageOperations
72
72
  * @category ImportExportTaskStorageOperations
73
73
  */
74
- export declare type ImportExportTaskStorageOperationsListResponse = [ImportExportTask[], MetaResponse];
74
+ export type ImportExportTaskStorageOperationsListResponse = [ImportExportTask[], MetaResponse];
75
75
  /**
76
76
  * @category StorageOperations
77
77
  * @category ImportExportTaskStorageOperations
@@ -128,7 +128,7 @@ export interface ImportExportTaskStorageOperationsListSubTaskParams {
128
128
  * @category StorageOperations
129
129
  * @category ImportExportTaskStorageOperations
130
130
  */
131
- export declare type ImportExportTaskStorageOperationsListSubTaskResponse = [
131
+ export type ImportExportTaskStorageOperationsListSubTaskResponse = [
132
132
  ImportExportTask[],
133
133
  MetaResponse
134
134
  ];
package/utils/ZipFiles.js CHANGED
@@ -21,7 +21,7 @@ class ZipFiles {
21
21
  }
22
22
  async process(targetFileName, files) {
23
23
  const fileNames = Array.from(files);
24
- const s3Client = (0, _clientS.createS3Client)({
24
+ const s3Client = (0, _clientS.createS3)({
25
25
  requestHandler: new _nodeHttpHandler.NodeHttpHandler({
26
26
  connectionTimeout: 0,
27
27
  httpAgent: new _http.Agent({
@@ -1 +1 @@
1
- {"version":3,"names":["_archiver","require","_clientS","_path","_interopRequireDefault","_stream","_libStorage","_nodeHttpHandler","_https","_http","ZipFiles","bucket","process","env","S3_BUCKET","debug","DEBUG","constructor","options","setDebug","targetFileName","files","fileNames","Array","from","s3Client","createS3Client","requestHandler","NodeHttpHandler","connectionTimeout","httpAgent","HttpAgent","maxSockets","keepAlive","maxFreeSockets","maxTotalSockets","keepAliveMsecs","httpsAgent","HttpsAgent","sessionTimeout","maxCachedSessions","requestTimeout","streamPassThrough","Stream","PassThrough","autoDestroy","upload","Upload","client","params","ACL","Body","Bucket","ContentType","Key","queueSize","partSize","leavePartsOnError","archive","createArchiver","on","error","console","Error","name","code","message","path","stack","pipe","data","log","addFileToArchive","file","shift","setTimeout","finalize","cmd","GetObjectCommand","response","send","basename","append","result","done","destroy","undefined","exports"],"sources":["ZipFiles.ts"],"sourcesContent":["import { ArchiverError, create as createArchiver } from \"archiver\";\nimport {\n CompleteMultipartUploadOutput,\n createS3Client,\n GetObjectCommand\n} from \"@webiny/aws-sdk/client-s3\";\nimport path from \"path\";\nimport { type Readable, Stream } from \"stream\";\nimport { Upload } from \"@webiny/aws-sdk/lib-storage\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport { Agent as HttpsAgent } from \"https\";\nimport { Agent as HttpAgent } from \"http\";\n\nexport interface ZipFilesOptions {\n debug?: boolean;\n}\n\nexport class ZipFiles {\n private readonly bucket: string = process.env.S3_BUCKET as string;\n private debug: boolean = process.env.DEBUG === \"true\";\n\n public constructor(options?: ZipFilesOptions) {\n this.setDebug(options?.debug);\n }\n\n public async process(\n targetFileName: string,\n files: string[]\n ): Promise<CompleteMultipartUploadOutput> {\n const fileNames = Array.from(files);\n const s3Client = createS3Client({\n requestHandler: new NodeHttpHandler({\n connectionTimeout: 0,\n httpAgent: new HttpAgent({\n maxSockets: 10000,\n keepAlive: true,\n maxFreeSockets: 10000,\n maxTotalSockets: 10000,\n keepAliveMsecs: 900000 // milliseconds / 15 minutes\n }),\n httpsAgent: new HttpsAgent({\n maxSockets: 10000,\n keepAlive: true,\n sessionTimeout: 900, // seconds / 15 minutes\n maxCachedSessions: 100000,\n maxFreeSockets: 10000,\n maxTotalSockets: 10000,\n keepAliveMsecs: 900000 // milliseconds / 15 minutes\n }),\n requestTimeout: 900000 // milliseconds / 15 minutes\n })\n });\n\n const streamPassThrough = new Stream.PassThrough({\n autoDestroy: true\n });\n\n const upload = new Upload({\n client: s3Client,\n params: {\n ACL: \"private\",\n Body: streamPassThrough,\n Bucket: this.bucket,\n ContentType: \"application/zip\",\n Key: targetFileName\n },\n queueSize: 1,\n partSize: 1024 * 1024 * 5,\n leavePartsOnError: false\n });\n\n const archive = createArchiver(\"zip\", {});\n\n archive.on(\"error\", (error: ArchiverError) => {\n console.error(error);\n throw new Error(\n `${error.name} ${error.code} ${error.message} ${error.path} ${error.stack}`\n );\n });\n\n archive.pipe(streamPassThrough);\n\n /**\n * To combine all the files into a single zip file, we need to add files one by one.\n *\n * addFileToArchive() method is called every time an entry event is triggered on the archive - it means that file was added into the archive.\n * The method is called manually, first time, to start the process.\n */\n\n archive.on(\"entry\", data => {\n this.debug && console.log(`Archived file: ${data.name}`);\n addFileToArchive();\n });\n\n const addFileToArchive = async (): Promise<void> => {\n const file = fileNames.shift();\n if (!file) {\n this.debug && console.log(\"No more files to add to the archive.\");\n /**\n * Must call finalize() with a timeout, otherwise the lambda crashes.\n */\n setTimeout(() => {\n archive.finalize();\n }, 200);\n return;\n }\n this.debug && console.log(`Adding file \"${file}\" to the archive.`);\n const cmd = new GetObjectCommand({\n Bucket: this.bucket,\n Key: file\n });\n\n const response = await s3Client.send(cmd);\n // Possible to get a null response.Body?\n // Typescript says yes, so let's check it.\n if (!response.Body) {\n this.debug &&\n console.log(`No response.Body for file \"${file}\", moving to next file.`);\n return addFileToArchive();\n }\n const name = `${path.basename(file)}`;\n\n archive.append(response.Body as Readable, {\n name\n });\n };\n\n addFileToArchive();\n\n const result = await upload.done();\n\n s3Client.destroy();\n return result;\n }\n\n private setDebug(debug?: boolean): void {\n if (debug === undefined) {\n return;\n }\n this.debug = debug;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_archiver","require","_clientS","_path","_interopRequireDefault","_stream","_libStorage","_nodeHttpHandler","_https","_http","ZipFiles","bucket","process","env","S3_BUCKET","debug","DEBUG","constructor","options","setDebug","targetFileName","files","fileNames","Array","from","s3Client","createS3","requestHandler","NodeHttpHandler","connectionTimeout","httpAgent","HttpAgent","maxSockets","keepAlive","maxFreeSockets","maxTotalSockets","keepAliveMsecs","httpsAgent","HttpsAgent","sessionTimeout","maxCachedSessions","requestTimeout","streamPassThrough","Stream","PassThrough","autoDestroy","upload","Upload","client","params","ACL","Body","Bucket","ContentType","Key","queueSize","partSize","leavePartsOnError","archive","createArchiver","on","error","console","Error","name","code","message","path","stack","pipe","data","log","addFileToArchive","file","shift","setTimeout","finalize","cmd","GetObjectCommand","response","send","basename","append","result","done","destroy","undefined","exports"],"sources":["ZipFiles.ts"],"sourcesContent":["import { ArchiverError, create as createArchiver } from \"archiver\";\nimport {\n CompleteMultipartUploadOutput,\n createS3,\n GetObjectCommand\n} from \"@webiny/aws-sdk/client-s3\";\nimport path from \"path\";\nimport { type Readable, Stream } from \"stream\";\nimport { Upload } from \"@webiny/aws-sdk/lib-storage\";\nimport { NodeHttpHandler } from \"@smithy/node-http-handler\";\nimport { Agent as HttpsAgent } from \"https\";\nimport { Agent as HttpAgent } from \"http\";\n\nexport interface ZipFilesOptions {\n debug?: boolean;\n}\n\nexport class ZipFiles {\n private readonly bucket: string = process.env.S3_BUCKET as string;\n private debug: boolean = process.env.DEBUG === \"true\";\n\n public constructor(options?: ZipFilesOptions) {\n this.setDebug(options?.debug);\n }\n\n public async process(\n targetFileName: string,\n files: string[]\n ): Promise<CompleteMultipartUploadOutput> {\n const fileNames = Array.from(files);\n const s3Client = createS3({\n requestHandler: new NodeHttpHandler({\n connectionTimeout: 0,\n httpAgent: new HttpAgent({\n maxSockets: 10000,\n keepAlive: true,\n maxFreeSockets: 10000,\n maxTotalSockets: 10000,\n keepAliveMsecs: 900000 // milliseconds / 15 minutes\n }),\n httpsAgent: new HttpsAgent({\n maxSockets: 10000,\n keepAlive: true,\n sessionTimeout: 900, // seconds / 15 minutes\n maxCachedSessions: 100000,\n maxFreeSockets: 10000,\n maxTotalSockets: 10000,\n keepAliveMsecs: 900000 // milliseconds / 15 minutes\n }),\n requestTimeout: 900000 // milliseconds / 15 minutes\n })\n });\n\n const streamPassThrough = new Stream.PassThrough({\n autoDestroy: true\n });\n\n const upload = new Upload({\n client: s3Client,\n params: {\n ACL: \"private\",\n Body: streamPassThrough,\n Bucket: this.bucket,\n ContentType: \"application/zip\",\n Key: targetFileName\n },\n queueSize: 1,\n partSize: 1024 * 1024 * 5,\n leavePartsOnError: false\n });\n\n const archive = createArchiver(\"zip\", {});\n\n archive.on(\"error\", (error: ArchiverError) => {\n console.error(error);\n throw new Error(\n `${error.name} ${error.code} ${error.message} ${error.path} ${error.stack}`\n );\n });\n\n archive.pipe(streamPassThrough);\n\n /**\n * To combine all the files into a single zip file, we need to add files one by one.\n *\n * addFileToArchive() method is called every time an entry event is triggered on the archive - it means that file was added into the archive.\n * The method is called manually, first time, to start the process.\n */\n\n archive.on(\"entry\", data => {\n this.debug && console.log(`Archived file: ${data.name}`);\n addFileToArchive();\n });\n\n const addFileToArchive = async (): Promise<void> => {\n const file = fileNames.shift();\n if (!file) {\n this.debug && console.log(\"No more files to add to the archive.\");\n /**\n * Must call finalize() with a timeout, otherwise the lambda crashes.\n */\n setTimeout(() => {\n archive.finalize();\n }, 200);\n return;\n }\n this.debug && console.log(`Adding file \"${file}\" to the archive.`);\n const cmd = new GetObjectCommand({\n Bucket: this.bucket,\n Key: file\n });\n\n const response = await s3Client.send(cmd);\n // Possible to get a null response.Body?\n // Typescript says yes, so let's check it.\n if (!response.Body) {\n this.debug &&\n console.log(`No response.Body for file \"${file}\", moving to next file.`);\n return addFileToArchive();\n }\n const name = `${path.basename(file)}`;\n\n archive.append(response.Body as Readable, {\n name\n });\n };\n\n addFileToArchive();\n\n const result = await upload.done();\n\n s3Client.destroy();\n return result;\n }\n\n private setDebug(debug?: boolean): void {\n if (debug === undefined) {\n return;\n }\n this.debug = debug;\n }\n}\n"],"mappings":"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","ignoreList":[]}