@webiny/api-page-builder-import-export 0.0.0-unstable.99666aeb00 → 0.0.0-unstable.a9593f74dd

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.
Files changed (135) hide show
  1. package/client.js +12 -21
  2. package/client.js.map +1 -1
  3. package/export/combine/blocksHandler.js +4 -2
  4. package/export/combine/blocksHandler.js.map +1 -1
  5. package/export/combine/formsHandler.js +4 -2
  6. package/export/combine/formsHandler.js.map +1 -1
  7. package/export/combine/index.js +3 -1
  8. package/export/combine/index.js.map +1 -1
  9. package/export/combine/pagesHandler.js +4 -2
  10. package/export/combine/pagesHandler.js.map +1 -1
  11. package/export/combine/templatesHandler.js +4 -2
  12. package/export/combine/templatesHandler.js.map +1 -1
  13. package/export/process/blocksHandler.js +13 -6
  14. package/export/process/blocksHandler.js.map +1 -1
  15. package/export/process/exporters/BlockExporter.d.ts +12 -0
  16. package/export/process/exporters/BlockExporter.js +57 -0
  17. package/export/process/exporters/BlockExporter.js.map +1 -0
  18. package/export/process/exporters/FormExporter.d.ts +9 -0
  19. package/export/process/exporters/FormExporter.js +36 -0
  20. package/export/process/exporters/FormExporter.js.map +1 -0
  21. package/export/process/exporters/PageExporter.d.ts +11 -0
  22. package/export/process/exporters/PageExporter.js +58 -0
  23. package/export/process/exporters/PageExporter.js.map +1 -0
  24. package/export/process/exporters/PageTemplateExporter.d.ts +11 -0
  25. package/export/process/exporters/PageTemplateExporter.js +56 -0
  26. package/export/process/exporters/PageTemplateExporter.js.map +1 -0
  27. package/export/process/formsHandler.js +8 -6
  28. package/export/process/formsHandler.js.map +1 -1
  29. package/export/process/index.js +3 -1
  30. package/export/process/index.js.map +1 -1
  31. package/export/process/pagesHandler.js +8 -6
  32. package/export/process/pagesHandler.js.map +1 -1
  33. package/export/process/templatesHandler.js +8 -6
  34. package/export/process/templatesHandler.js.map +1 -1
  35. package/export/s3Stream.d.ts +8 -8
  36. package/export/s3Stream.js +27 -22
  37. package/export/s3Stream.js.map +1 -1
  38. package/export/utils.d.ts +8 -13
  39. package/export/utils.js +11 -34
  40. package/export/utils.js.map +1 -1
  41. package/export/zipper.d.ts +5 -5
  42. package/export/zipper.js +18 -22
  43. package/export/zipper.js.map +1 -1
  44. package/graphql/crud/blocks.crud.js +41 -22
  45. package/graphql/crud/blocks.crud.js.map +1 -1
  46. package/graphql/crud/forms.crud.js +41 -12
  47. package/graphql/crud/forms.crud.js.map +1 -1
  48. package/graphql/crud/importExportTasks.crud.js +43 -29
  49. package/graphql/crud/importExportTasks.crud.js.map +1 -1
  50. package/graphql/crud/pages.crud.d.ts +1 -0
  51. package/graphql/crud/pages.crud.js +50 -20
  52. package/graphql/crud/pages.crud.js.map +1 -1
  53. package/graphql/crud/templates.crud.js +40 -11
  54. package/graphql/crud/templates.crud.js.map +1 -1
  55. package/graphql/crud.js +3 -1
  56. package/graphql/crud.js.map +1 -1
  57. package/graphql/graphql/blocks.gql.js +4 -2
  58. package/graphql/graphql/blocks.gql.js.map +1 -1
  59. package/graphql/graphql/forms.gql.js +3 -1
  60. package/graphql/graphql/forms.gql.js.map +1 -1
  61. package/graphql/graphql/importExportTasks.gql.js +3 -1
  62. package/graphql/graphql/importExportTasks.gql.js.map +1 -1
  63. package/graphql/graphql/pages.gql.js +3 -1
  64. package/graphql/graphql/pages.gql.js.map +1 -1
  65. package/graphql/graphql/templates.gql.js +3 -1
  66. package/graphql/graphql/templates.gql.js.map +1 -1
  67. package/graphql/graphql/utils/resolve.js +3 -1
  68. package/graphql/graphql/utils/resolve.js.map +1 -1
  69. package/graphql/graphql.js +3 -1
  70. package/graphql/graphql.js.map +1 -1
  71. package/graphql/index.js +3 -1
  72. package/graphql/index.js.map +1 -1
  73. package/graphql/types.d.ts +113 -1
  74. package/graphql/types.js +3 -1
  75. package/graphql/types.js.map +1 -1
  76. package/import/constants.js +3 -1
  77. package/import/constants.js.map +1 -1
  78. package/import/create/blocksHandler.js +3 -3
  79. package/import/create/blocksHandler.js.map +1 -1
  80. package/import/create/formsHandler.js +3 -1
  81. package/import/create/formsHandler.js.map +1 -1
  82. package/import/create/index.js +3 -1
  83. package/import/create/index.js.map +1 -1
  84. package/import/create/pagesHandler.js +3 -1
  85. package/import/create/pagesHandler.js.map +1 -1
  86. package/import/create/templatesHandler.js +3 -1
  87. package/import/create/templatesHandler.js.map +1 -1
  88. package/import/process/blocks/blocksHandler.js +6 -6
  89. package/import/process/blocks/blocksHandler.js.map +1 -1
  90. package/import/process/blocks/importBlock.d.ts +2 -2
  91. package/import/process/blocks/importBlock.js +33 -27
  92. package/import/process/blocks/importBlock.js.map +1 -1
  93. package/import/process/forms/formsHandler.js +4 -2
  94. package/import/process/forms/formsHandler.js.map +1 -1
  95. package/import/process/forms/importForm.d.ts +1 -1
  96. package/import/process/forms/importForm.js +6 -2
  97. package/import/process/forms/importForm.js.map +1 -1
  98. package/import/process/index.js +3 -1
  99. package/import/process/index.js.map +1 -1
  100. package/import/process/pages/importPage.d.ts +1 -1
  101. package/import/process/pages/importPage.js +8 -6
  102. package/import/process/pages/importPage.js.map +1 -1
  103. package/import/process/pages/pagesHandler.js +3 -1
  104. package/import/process/pages/pagesHandler.js.map +1 -1
  105. package/import/process/templates/importTemplate.d.ts +1 -1
  106. package/import/process/templates/importTemplate.js +6 -2
  107. package/import/process/templates/importTemplate.js.map +1 -1
  108. package/import/process/templates/templatesHandler.js +3 -1
  109. package/import/process/templates/templatesHandler.js.map +1 -1
  110. package/import/utils/deleteS3Folder.js +3 -1
  111. package/import/utils/deleteS3Folder.js.map +1 -1
  112. package/import/utils/extractAndUploadZipFileContents.js +3 -2
  113. package/import/utils/extractAndUploadZipFileContents.js.map +1 -1
  114. package/import/utils/extractZipAndUploadToS3.js +3 -1
  115. package/import/utils/extractZipAndUploadToS3.js.map +1 -1
  116. package/import/utils/getFileNameWithoutExt.js +3 -1
  117. package/import/utils/getFileNameWithoutExt.js.map +1 -1
  118. package/import/utils/index.js +3 -1
  119. package/import/utils/index.js.map +1 -1
  120. package/import/utils/initialStats.js +3 -1
  121. package/import/utils/initialStats.js.map +1 -1
  122. package/import/utils/prepareDataDirMap.js +3 -1
  123. package/import/utils/prepareDataDirMap.js.map +1 -1
  124. package/import/utils/updateFilesInData.js +5 -2
  125. package/import/utils/updateFilesInData.js.map +1 -1
  126. package/import/utils/uploadAssets.js +54 -11
  127. package/import/utils/uploadAssets.js.map +1 -1
  128. package/import/utils/uploadFilesFromS3.d.ts +1 -1
  129. package/import/utils/uploadFilesFromS3.js +4 -2
  130. package/import/utils/uploadFilesFromS3.js.map +1 -1
  131. package/mockSecurity.js +3 -1
  132. package/mockSecurity.js.map +1 -1
  133. package/package.json +27 -32
  134. package/types.js +62 -8
  135. package/types.js.map +1 -1
@@ -167,4 +167,6 @@ const templatesHandler = async (configuration, payload, context) => {
167
167
  error: null
168
168
  };
169
169
  };
170
- exports.templatesHandler = templatesHandler;
170
+ exports.templatesHandler = templatesHandler;
171
+
172
+ //# sourceMappingURL=templatesHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["templatesHandler","configuration","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","ImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","type","identity","mockSecurity","importExportTask","getSubTask","zeroPad","status","data","error","id","templateKey","zipFileKey","input","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","template","importTemplate","key","pbTemplate","createPageTemplate","title","slug","tags","layout","pageCategory","description","content","COMPLETED","message","e","FAILED","name","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity"],"sources":["templatesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { importTemplate } from \"./importTemplate\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\n\nexport const templatesHandler = async (\n configuration: Configuration,\n payload: Payload,\n context: PbImportExportContext\n): Promise<Response> => {\n const log = console.log;\n let subTask;\n let noPendingTask = true;\n let prevStatusOfSubTask = ImportExportTaskStatus.PENDING;\n\n log(\"RUNNING Import Template Queue Process\");\n const { pageBuilder } = context;\n const { taskId, subTaskIndex, type, identity } = payload;\n // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks\n // and this Lambda is invoked internally, without credentials.\n mockSecurity(identity, context);\n\n try {\n /*\n * Note: We're not going to DB for getting next sub-task to process,\n * because the data might be out of sync due to GSI eventual consistency.\n */\n\n subTask = await pageBuilder.importExportTask.getSubTask(taskId, zeroPad(subTaskIndex, 5));\n\n /**\n * Base condition!!\n * Bail out early, if task not found or task's status is not \"pending\".\n */\n if (!subTask || subTask.status !== ImportExportTaskStatus.PENDING) {\n noPendingTask = true;\n return {\n data: \"\",\n error: null\n };\n } else {\n noPendingTask = false;\n }\n prevStatusOfSubTask = subTask.status;\n\n log(`Fetched sub task => ${subTask.id}`);\n\n const { templateKey, zipFileKey, input } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing template key \"${templateKey}\"`);\n\n // Mark task status as PROCESSING\n subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {\n status: ImportExportTaskStatus.PROCESSING\n });\n // Update stats in main task\n await pageBuilder.importExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: ImportExportTaskStatus.PROCESSING\n });\n prevStatusOfSubTask = subTask.status;\n\n // Real job\n const template = await importTemplate({\n context,\n templateKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a template\n const pbTemplate = await context.pageBuilder.createPageTemplate({\n title: template.title,\n slug: template.slug,\n tags: template.tags,\n layout: template.layout,\n pageCategory: template.pageCategory,\n description: template.description,\n content: template.content\n });\n\n // Update task record in DB\n subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {\n status: ImportExportTaskStatus.COMPLETED,\n data: {\n message: \"Done\",\n template: {\n id: pbTemplate.id,\n title: pbTemplate.title\n }\n }\n });\n // Update stats in main task\n await pageBuilder.importExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: ImportExportTaskStatus.COMPLETED\n });\n prevStatusOfSubTask = subTask.status;\n } catch (e) {\n log(\"[IMPORT_TEMPLATES_PROCESS] Error => \", e.message);\n\n if (subTask && subTask.id) {\n /**\n * In case of error, we'll update the task status to \"failed\",\n * so that, client can show notify the user appropriately.\n */\n subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {\n status: ImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n code: \"IMPORT_FAILED\"\n }\n });\n\n // Update stats in main task\n await pageBuilder.importExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: ImportExportTaskStatus.FAILED\n });\n prevStatusOfSubTask = subTask.status;\n }\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n } finally {\n // Base condition!\n if (noPendingTask) {\n log(`No pending sub-task for task ${taskId}`);\n\n await pageBuilder.importExportTask.updateTask(taskId, {\n status: ImportExportTaskStatus.COMPLETED,\n data: {\n message: `Finish importing templates.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current template error out.\n await invokeHandlerClient<Payload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId,\n subTaskIndex: subTaskIndex + 1,\n type,\n identity: context.security.getIdentity()\n },\n description: \"Import templates - process - subtask\"\n });\n }\n }\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","_importTemplate","_client","_mockSecurity","_utils","templatesHandler","configuration","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","ImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","type","identity","mockSecurity","importExportTask","getSubTask","zeroPad","status","data","error","id","templateKey","zipFileKey","input","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","template","importTemplate","key","pbTemplate","createPageTemplate","title","slug","tags","layout","pageCategory","description","content","COMPLETED","message","e","FAILED","name","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity","exports"],"sources":["templatesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { importTemplate } from \"./importTemplate\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\n\nexport const templatesHandler = async (\n configuration: Configuration,\n payload: Payload,\n context: PbImportExportContext\n): Promise<Response> => {\n const log = console.log;\n let subTask;\n let noPendingTask = true;\n let prevStatusOfSubTask = ImportExportTaskStatus.PENDING;\n\n log(\"RUNNING Import Template Queue Process\");\n const { pageBuilder } = context;\n const { taskId, subTaskIndex, type, identity } = payload;\n // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks\n // and this Lambda is invoked internally, without credentials.\n mockSecurity(identity, context);\n\n try {\n /*\n * Note: We're not going to DB for getting next sub-task to process,\n * because the data might be out of sync due to GSI eventual consistency.\n */\n\n subTask = await pageBuilder.importExportTask.getSubTask(taskId, zeroPad(subTaskIndex, 5));\n\n /**\n * Base condition!!\n * Bail out early, if task not found or task's status is not \"pending\".\n */\n if (!subTask || subTask.status !== ImportExportTaskStatus.PENDING) {\n noPendingTask = true;\n return {\n data: \"\",\n error: null\n };\n } else {\n noPendingTask = false;\n }\n prevStatusOfSubTask = subTask.status;\n\n log(`Fetched sub task => ${subTask.id}`);\n\n const { templateKey, zipFileKey, input } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing template key \"${templateKey}\"`);\n\n // Mark task status as PROCESSING\n subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {\n status: ImportExportTaskStatus.PROCESSING\n });\n // Update stats in main task\n await pageBuilder.importExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: ImportExportTaskStatus.PROCESSING\n });\n prevStatusOfSubTask = subTask.status;\n\n // Real job\n const template = await importTemplate({\n context,\n templateKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a template\n const pbTemplate = await context.pageBuilder.createPageTemplate({\n title: template.title,\n slug: template.slug,\n tags: template.tags,\n layout: template.layout,\n pageCategory: template.pageCategory,\n description: template.description,\n content: template.content\n });\n\n // Update task record in DB\n subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {\n status: ImportExportTaskStatus.COMPLETED,\n data: {\n message: \"Done\",\n template: {\n id: pbTemplate.id,\n title: pbTemplate.title\n }\n }\n });\n // Update stats in main task\n await pageBuilder.importExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: ImportExportTaskStatus.COMPLETED\n });\n prevStatusOfSubTask = subTask.status;\n } catch (e) {\n log(\"[IMPORT_TEMPLATES_PROCESS] Error => \", e.message);\n\n if (subTask && subTask.id) {\n /**\n * In case of error, we'll update the task status to \"failed\",\n * so that, client can show notify the user appropriately.\n */\n subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {\n status: ImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n code: \"IMPORT_FAILED\"\n }\n });\n\n // Update stats in main task\n await pageBuilder.importExportTask.updateStats(taskId, {\n prevStatus: prevStatusOfSubTask,\n nextStatus: ImportExportTaskStatus.FAILED\n });\n prevStatusOfSubTask = subTask.status;\n }\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n } finally {\n // Base condition!\n if (noPendingTask) {\n log(`No pending sub-task for task ${taskId}`);\n\n await pageBuilder.importExportTask.updateTask(taskId, {\n status: ImportExportTaskStatus.COMPLETED,\n data: {\n message: `Finish importing templates.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current template error out.\n await invokeHandlerClient<Payload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId,\n subTaskIndex: subTaskIndex + 1,\n type,\n identity: context.security.getIdentity()\n },\n description: \"Import templates - process - subtask\"\n });\n }\n }\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
@@ -16,4 +16,6 @@ async function deleteS3Folder(key) {
16
16
  const deleteFilePromises = keys.map(key => _s3Stream.s3Stream.deleteObject(key));
17
17
  await Promise.all(deleteFilePromises);
18
18
  console.log(`Successfully deleted ${deleteFilePromises.length} files.`);
19
- }
19
+ }
20
+
21
+ //# sourceMappingURL=deleteS3Folder.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["deleteS3Folder","key","endsWith","response","s3Stream","listObject","keys","Contents","map","c","Key","filter","Boolean","console","log","length","deleteFilePromises","deleteObject","Promise","all"],"sources":["deleteS3Folder.ts"],"sourcesContent":["import { s3Stream } from \"~/export/s3Stream\";\n\nexport async function deleteS3Folder(key: string): Promise<void> {\n // Append trailing slash i.e \"/\" to key to make sure we only delete a specific folder.\n if (!key.endsWith(\"/\")) {\n key = `${key}/`;\n }\n\n const response = await s3Stream.listObject(key);\n const keys = (response.Contents || []).map(c => c.Key).filter(Boolean) as string[];\n console.log(`Found ${keys.length} files.`);\n\n const deleteFilePromises = keys.map(key => s3Stream.deleteObject(key));\n\n await Promise.all(deleteFilePromises);\n console.log(`Successfully deleted ${deleteFilePromises.length} files.`);\n}\n"],"mappings":";;;;;;AAAA;AAEO,eAAeA,cAAc,CAACC,GAAW,EAAiB;EAC7D;EACA,IAAI,CAACA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACpBD,GAAG,GAAI,GAAEA,GAAI,GAAE;EACnB;EAEA,MAAME,QAAQ,GAAG,MAAMC,kBAAQ,CAACC,UAAU,CAACJ,GAAG,CAAC;EAC/C,MAAMK,IAAI,GAAG,CAACH,QAAQ,CAACI,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,GAAG,CAAC,CAACC,MAAM,CAACC,OAAO,CAAa;EAClFC,OAAO,CAACC,GAAG,CAAE,SAAQR,IAAI,CAACS,MAAO,SAAQ,CAAC;EAE1C,MAAMC,kBAAkB,GAAGV,IAAI,CAACE,GAAG,CAACP,GAAG,IAAIG,kBAAQ,CAACa,YAAY,CAAChB,GAAG,CAAC,CAAC;EAEtE,MAAMiB,OAAO,CAACC,GAAG,CAACH,kBAAkB,CAAC;EACrCH,OAAO,CAACC,GAAG,CAAE,wBAAuBE,kBAAkB,CAACD,MAAO,SAAQ,CAAC;AAC3E"}
1
+ {"version":3,"names":["_s3Stream","require","deleteS3Folder","key","endsWith","response","s3Stream","listObject","keys","Contents","map","c","Key","filter","Boolean","console","log","length","deleteFilePromises","deleteObject","Promise","all"],"sources":["deleteS3Folder.ts"],"sourcesContent":["import { s3Stream } from \"~/export/s3Stream\";\n\nexport async function deleteS3Folder(key: string): Promise<void> {\n // Append trailing slash i.e \"/\" to key to make sure we only delete a specific folder.\n if (!key.endsWith(\"/\")) {\n key = `${key}/`;\n }\n\n const response = await s3Stream.listObject(key);\n const keys = (response.Contents || []).map(c => c.Key).filter(Boolean) as string[];\n console.log(`Found ${keys.length} files.`);\n\n const deleteFilePromises = keys.map(key => s3Stream.deleteObject(key));\n\n await Promise.all(deleteFilePromises);\n console.log(`Successfully deleted ${deleteFilePromises.length} files.`);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEO,eAAeC,cAAcA,CAACC,GAAW,EAAiB;EAC7D;EACA,IAAI,CAACA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACpBD,GAAG,GAAI,GAAEA,GAAI,GAAE;EACnB;EAEA,MAAME,QAAQ,GAAG,MAAMC,kBAAQ,CAACC,UAAU,CAACJ,GAAG,CAAC;EAC/C,MAAMK,IAAI,GAAG,CAACH,QAAQ,CAACI,QAAQ,IAAI,EAAE,EAAEC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,GAAG,CAAC,CAACC,MAAM,CAACC,OAAO,CAAa;EAClFC,OAAO,CAACC,GAAG,CAAE,SAAQR,IAAI,CAACS,MAAO,SAAQ,CAAC;EAE1C,MAAMC,kBAAkB,GAAGV,IAAI,CAACE,GAAG,CAACP,GAAG,IAAIG,kBAAQ,CAACa,YAAY,CAAChB,GAAG,CAAC,CAAC;EAEtE,MAAMiB,OAAO,CAACC,GAAG,CAACH,kBAAkB,CAAC;EACrCH,OAAO,CAACC,GAAG,CAAE,wBAAuBE,kBAAkB,CAACD,MAAO,SAAQ,CAAC;AAC3E"}
@@ -38,7 +38,6 @@ async function extractAndUploadZipFileContents(zipFileUrl) {
38
38
  // Read export file and download it in the disk
39
39
  const ZIP_FILE_PATH = _path.default.join(_constants.INSTALL_DIR, zipFileName);
40
40
  const writeStream = (0, _fs.createWriteStream)(ZIP_FILE_PATH);
41
- // @ts-ignore
42
41
  await streamPipeline(readStream, writeStream);
43
42
  log(`Downloaded file "${zipFileName}" at ${ZIP_FILE_PATH}`);
44
43
 
@@ -119,4 +118,6 @@ function extractZipToDisk(exportFileZipPath) {
119
118
  });
120
119
  });
121
120
  });
122
- }
121
+ }
122
+
123
+ //# sourceMappingURL=extractAndUploadZipFileContents.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["streamPipeline","promisify","pipeline","extractAndUploadZipFileContents","zipFileUrl","log","console","importDataList","zipFileName","path","basename","split","response","fetch","readStream","body","ok","WebinyError","statusText","uniquePath","uniqueId","ZIP_FILE_PATH","join","INSTALL_DIR","writeStream","createWriteStream","zipFilePaths","extractZipToDisk","deleteFile","i","length","currentPath","dataMap","extractZipAndUploadToS3","push","dirname","exportFileZipPath","Promise","resolve","reject","uniqueFolderNameForExport","getFileNameWithoutExt","EXPORT_FILE_EXTRACTION_PATH","ensureDirSync","yauzl","open","lazyEntries","err","zipFile","warn","info","entryCount","on","readEntry","entry","fileName","test","openReadStream","filePath","catch","error"],"sources":["extractAndUploadZipFileContents.ts"],"sourcesContent":["import { pipeline } from \"stream\";\nimport { promisify } from \"util\";\nimport fetch from \"node-fetch\";\nimport path from \"path\";\nimport yauzl from \"yauzl\";\nimport { createWriteStream } from \"fs\";\nimport uniqueId from \"uniqid\";\nimport WebinyError from \"@webiny/error\";\nimport { deleteFile } from \"@webiny/api-page-builder/graphql/crud/install/utils/downloadInstallFiles\";\nimport { extractZipAndUploadToS3 } from \"~/import/utils/extractZipAndUploadToS3\";\nimport { getFileNameWithoutExt } from \"~/import/utils/getFileNameWithoutExt\";\nimport { ImportData } from \"~/types\";\nimport { INSTALL_DIR } from \"~/import/constants\";\nimport { ensureDirSync } from \"fs-extra\";\n\nconst streamPipeline = promisify(pipeline);\n\n/**\n * Function will read the given zip file from S3 via stream, extract its content and upload it to S3 bucket.\n * @param zipFileUrl\n * @return ImportData S3 file keys for all uploaded assets group by page/block.\n */\nexport async function extractAndUploadZipFileContents(zipFileUrl: string): Promise<ImportData[]> {\n const log = console.log;\n const importDataList = [];\n\n const zipFileName = path.basename(zipFileUrl).split(\"?\")[0];\n\n const response = await fetch(zipFileUrl);\n const readStream = response.body;\n if (!response.ok || !readStream) {\n throw new WebinyError(`Unable to downloading file: \"${zipFileUrl}\"`, response.statusText);\n }\n\n const uniquePath = uniqueId(\"IMPORTS/\");\n // Read export file and download it in the disk\n const ZIP_FILE_PATH = path.join(INSTALL_DIR, zipFileName);\n\n const writeStream = createWriteStream(ZIP_FILE_PATH);\n // @ts-ignore\n await streamPipeline(readStream, writeStream);\n log(`Downloaded file \"${zipFileName}\" at ${ZIP_FILE_PATH}`);\n\n // Extract the downloaded zip file\n const zipFilePaths = await extractZipToDisk(ZIP_FILE_PATH);\n\n log(`Removing ZIP file \"${zipFileUrl}\" from ${ZIP_FILE_PATH}`);\n await deleteFile(ZIP_FILE_PATH);\n\n // Extract each page/block zip and upload their content's to S3\n for (let i = 0; i < zipFilePaths.length; i++) {\n const currentPath = zipFilePaths[i];\n const dataMap = await extractZipAndUploadToS3(currentPath, uniquePath);\n importDataList.push(dataMap);\n }\n log(\"Removing all ZIP files located at \", path.dirname(zipFilePaths[0]));\n await deleteFile(path.dirname(zipFilePaths[0]));\n\n return importDataList;\n}\n\nfunction extractZipToDisk(exportFileZipPath: string): Promise<string[]> {\n return new Promise((resolve, reject) => {\n const zipFilePaths: string[] = [];\n const uniqueFolderNameForExport = getFileNameWithoutExt(exportFileZipPath);\n const EXPORT_FILE_EXTRACTION_PATH = path.join(INSTALL_DIR, uniqueFolderNameForExport);\n // Make sure DIR exists\n ensureDirSync(EXPORT_FILE_EXTRACTION_PATH);\n\n yauzl.open(exportFileZipPath, { lazyEntries: true }, function (err, zipFile) {\n if (err) {\n console.warn(\"ERROR: Failed to extract zip: \", exportFileZipPath, err);\n reject(err);\n return;\n }\n if (!zipFile) {\n console.log(\"ERROR: Missing zip file resource for path: \" + exportFileZipPath);\n reject(\"Missing Zip File Resource.\");\n return;\n }\n\n console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);\n\n zipFile.on(\"end\", function (err) {\n if (err) {\n console.warn(\"ERROR: Failed on END event for file: \", exportFileZipPath, err);\n reject(err);\n }\n resolve(zipFilePaths);\n });\n\n zipFile.readEntry();\n\n zipFile.on(\"entry\", function (entry) {\n console.info(`Processing entry: \"${entry.fileName}\"`);\n if (/\\/$/.test(entry.fileName)) {\n // Directory file names end with '/'.\n // Note that entries for directories themselves are optional.\n // An entry's fileName implicitly requires its parent directories to exist.\n zipFile.readEntry();\n } else {\n // file entry\n zipFile.openReadStream(entry, function (err, readStream) {\n if (err) {\n console.warn(\n \"ERROR: Failed to openReadStream for file: \",\n entry.fileName,\n err\n );\n reject(err);\n return;\n }\n if (!readStream) {\n console.log(\n \"ERROR: Missing Read Stream Resource when extracting to disk.\"\n );\n reject(\"Missing Read Stream Resource.\");\n return;\n }\n\n const filePath = path.join(EXPORT_FILE_EXTRACTION_PATH, entry.fileName);\n\n readStream.on(\"end\", function () {\n zipFilePaths.push(filePath);\n zipFile.readEntry();\n });\n\n streamPipeline(readStream, createWriteStream(filePath)).catch(error => {\n reject(error);\n });\n });\n }\n });\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_stream","require","_util","_nodeFetch","_interopRequireDefault","_path","_yauzl","_fs","_uniqid","_error","_downloadInstallFiles","_extractZipAndUploadToS","_getFileNameWithoutExt","_constants","_fsExtra","streamPipeline","promisify","pipeline","extractAndUploadZipFileContents","zipFileUrl","log","console","importDataList","zipFileName","path","basename","split","response","fetch","readStream","body","ok","WebinyError","statusText","uniquePath","uniqueId","ZIP_FILE_PATH","join","INSTALL_DIR","writeStream","createWriteStream","zipFilePaths","extractZipToDisk","deleteFile","i","length","currentPath","dataMap","extractZipAndUploadToS3","push","dirname","exportFileZipPath","Promise","resolve","reject","uniqueFolderNameForExport","getFileNameWithoutExt","EXPORT_FILE_EXTRACTION_PATH","ensureDirSync","yauzl","open","lazyEntries","err","zipFile","warn","info","entryCount","on","readEntry","entry","fileName","test","openReadStream","filePath","catch","error"],"sources":["extractAndUploadZipFileContents.ts"],"sourcesContent":["import { pipeline } from \"stream\";\nimport { promisify } from \"util\";\nimport fetch from \"node-fetch\";\nimport path from \"path\";\nimport yauzl from \"yauzl\";\nimport { createWriteStream } from \"fs\";\nimport uniqueId from \"uniqid\";\nimport WebinyError from \"@webiny/error\";\nimport { deleteFile } from \"@webiny/api-page-builder/graphql/crud/install/utils/downloadInstallFiles\";\nimport { extractZipAndUploadToS3 } from \"~/import/utils/extractZipAndUploadToS3\";\nimport { getFileNameWithoutExt } from \"~/import/utils/getFileNameWithoutExt\";\nimport { ImportData } from \"~/types\";\nimport { INSTALL_DIR } from \"~/import/constants\";\nimport { ensureDirSync } from \"fs-extra\";\n\nconst streamPipeline = promisify(pipeline);\n\n/**\n * Function will read the given zip file from S3 via stream, extract its content and upload it to S3 bucket.\n * @param zipFileUrl\n * @return ImportData S3 file keys for all uploaded assets group by page/block.\n */\nexport async function extractAndUploadZipFileContents(zipFileUrl: string): Promise<ImportData[]> {\n const log = console.log;\n const importDataList = [];\n\n const zipFileName = path.basename(zipFileUrl).split(\"?\")[0];\n\n const response = await fetch(zipFileUrl);\n const readStream = response.body;\n if (!response.ok || !readStream) {\n throw new WebinyError(`Unable to downloading file: \"${zipFileUrl}\"`, response.statusText);\n }\n\n const uniquePath = uniqueId(\"IMPORTS/\");\n // Read export file and download it in the disk\n const ZIP_FILE_PATH = path.join(INSTALL_DIR, zipFileName);\n\n const writeStream = createWriteStream(ZIP_FILE_PATH);\n\n await streamPipeline(readStream, writeStream);\n log(`Downloaded file \"${zipFileName}\" at ${ZIP_FILE_PATH}`);\n\n // Extract the downloaded zip file\n const zipFilePaths = await extractZipToDisk(ZIP_FILE_PATH);\n\n log(`Removing ZIP file \"${zipFileUrl}\" from ${ZIP_FILE_PATH}`);\n await deleteFile(ZIP_FILE_PATH);\n\n // Extract each page/block zip and upload their content's to S3\n for (let i = 0; i < zipFilePaths.length; i++) {\n const currentPath = zipFilePaths[i];\n const dataMap = await extractZipAndUploadToS3(currentPath, uniquePath);\n importDataList.push(dataMap);\n }\n log(\"Removing all ZIP files located at \", path.dirname(zipFilePaths[0]));\n await deleteFile(path.dirname(zipFilePaths[0]));\n\n return importDataList;\n}\n\nfunction extractZipToDisk(exportFileZipPath: string): Promise<string[]> {\n return new Promise((resolve, reject) => {\n const zipFilePaths: string[] = [];\n const uniqueFolderNameForExport = getFileNameWithoutExt(exportFileZipPath);\n const EXPORT_FILE_EXTRACTION_PATH = path.join(INSTALL_DIR, uniqueFolderNameForExport);\n // Make sure DIR exists\n ensureDirSync(EXPORT_FILE_EXTRACTION_PATH);\n\n yauzl.open(exportFileZipPath, { lazyEntries: true }, function (err, zipFile) {\n if (err) {\n console.warn(\"ERROR: Failed to extract zip: \", exportFileZipPath, err);\n reject(err);\n return;\n }\n if (!zipFile) {\n console.log(\"ERROR: Missing zip file resource for path: \" + exportFileZipPath);\n reject(\"Missing Zip File Resource.\");\n return;\n }\n\n console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);\n\n zipFile.on(\"end\", function (err) {\n if (err) {\n console.warn(\"ERROR: Failed on END event for file: \", exportFileZipPath, err);\n reject(err);\n }\n resolve(zipFilePaths);\n });\n\n zipFile.readEntry();\n\n zipFile.on(\"entry\", function (entry) {\n console.info(`Processing entry: \"${entry.fileName}\"`);\n if (/\\/$/.test(entry.fileName)) {\n // Directory file names end with '/'.\n // Note that entries for directories themselves are optional.\n // An entry's fileName implicitly requires its parent directories to exist.\n zipFile.readEntry();\n } else {\n // file entry\n zipFile.openReadStream(entry, function (err, readStream) {\n if (err) {\n console.warn(\n \"ERROR: Failed to openReadStream for file: \",\n entry.fileName,\n err\n );\n reject(err);\n return;\n }\n if (!readStream) {\n console.log(\n \"ERROR: Missing Read Stream Resource when extracting to disk.\"\n );\n reject(\"Missing Read Stream Resource.\");\n return;\n }\n\n const filePath = path.join(EXPORT_FILE_EXTRACTION_PATH, entry.fileName);\n\n readStream.on(\"end\", function () {\n zipFilePaths.push(filePath);\n zipFile.readEntry();\n });\n\n streamPipeline(readStream, createWriteStream(filePath)).catch(error => {\n reject(error);\n });\n });\n }\n });\n });\n });\n}\n"],"mappings":"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"}
@@ -95,4 +95,6 @@ function extractZipAndUploadToS3(dataZipFilePath, uniquePath) {
95
95
  });
96
96
  });
97
97
  });
98
- }
98
+ }
99
+
100
+ //# sourceMappingURL=extractZipAndUploadToS3.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FILE_CONTENT_TYPE","streamPipeline","promisify","pipeline","extractZipAndUploadToS3","dataZipFilePath","uniquePath","Promise","resolve","reject","filePaths","fileUploadPromises","uniqueKey","getFileNameWithoutExt","dataMap","key","assets","data","yauzl","open","lazyEntries","err","zipFile","console","warn","log","info","entryCount","on","all","then","res","forEach","r","readEntry","entry","fileName","test","openReadStream","readStream","push","newKey","prepareDataDirMap","map","filePath","streamPassThrough","streamPassThroughUploadPromise","promise","s3Stream","writeStream","catch","error"],"sources":["extractZipAndUploadToS3.ts"],"sourcesContent":["import yauzl from \"yauzl\";\nimport { pipeline } from \"stream\";\nimport { promisify } from \"util\";\nimport S3 from \"aws-sdk/clients/s3\";\nimport { s3Stream } from \"~/export/s3Stream\";\nimport { getFileNameWithoutExt } from \"./getFileNameWithoutExt\";\nimport { ImportData } from \"~/types\";\nimport { prepareDataDirMap } from \"~/import/utils/prepareDataDirMap\";\n\nconst FILE_CONTENT_TYPE = \"application/octet-stream\";\nconst streamPipeline = promisify(pipeline);\n\nexport function extractZipAndUploadToS3(\n dataZipFilePath: string,\n uniquePath: string\n): Promise<ImportData> {\n return new Promise((resolve, reject) => {\n const filePaths = [];\n const fileUploadPromises: Promise<S3.ManagedUpload.SendData>[] = [];\n const uniqueKey = getFileNameWithoutExt(dataZipFilePath);\n let dataMap: ImportData = {\n key: uniqueKey,\n assets: {},\n data: \"\"\n };\n yauzl.open(dataZipFilePath, { lazyEntries: true }, function (err, zipFile) {\n if (err) {\n console.warn(\"ERROR: Failed to extract zip: \", dataZipFilePath, err);\n reject(err);\n return;\n }\n if (!zipFile) {\n console.log(\"ERROR: Probably failed to extract zip: \" + dataZipFilePath);\n reject(\"Missing Zip File Resource.\");\n return;\n }\n console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);\n zipFile.on(\"end\", function (err) {\n if (err) {\n console.warn('ERROR: Failed on \"END\" for file: ', dataZipFilePath, err);\n reject(err);\n }\n\n Promise.all(fileUploadPromises).then(res => {\n res.forEach(r => {\n console.info(\"Done uploading... \", r);\n });\n resolve(dataMap);\n });\n });\n\n zipFile.readEntry();\n\n zipFile.on(\"entry\", function (entry) {\n console.info(`Processing entry: \"${entry.fileName}\"`);\n if (/\\/$/.test(entry.fileName)) {\n // Directory file names end with '/'.\n // Note that entries for directories themselves are optional.\n // An entry's fileName implicitly requires its parent directories to exist.\n zipFile.readEntry();\n } else {\n // file entry\n zipFile.openReadStream(entry, function (err, readStream) {\n if (err) {\n console.warn(\n \"ERROR: Failed while performing [openReadStream] for file: \",\n entry.fileName,\n err\n );\n reject(err);\n return;\n }\n if (!readStream) {\n console.log(\"ERROR: Missing Read Stream while importing.\");\n reject(\"Missing Read Strea Resource.\");\n return;\n }\n readStream.on(\"end\", function () {\n filePaths.push(entry.fileName);\n zipFile.readEntry();\n });\n\n const newKey = `${uniquePath}/${uniqueKey}/${entry.fileName}`;\n // Modify in place\n dataMap = prepareDataDirMap({\n map: dataMap,\n filePath: entry.fileName,\n newKey\n });\n\n const { streamPassThrough, streamPassThroughUploadPromise: promise } =\n s3Stream.writeStream(newKey, FILE_CONTENT_TYPE);\n\n streamPipeline(readStream, streamPassThrough)\n .then(() => {\n fileUploadPromises.push(promise);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n });\n });\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_yauzl","_interopRequireDefault","require","_stream","_util","_s3Stream","_getFileNameWithoutExt","_prepareDataDirMap","FILE_CONTENT_TYPE","streamPipeline","promisify","pipeline","extractZipAndUploadToS3","dataZipFilePath","uniquePath","Promise","resolve","reject","filePaths","fileUploadPromises","uniqueKey","getFileNameWithoutExt","dataMap","key","assets","data","yauzl","open","lazyEntries","err","zipFile","console","warn","log","info","entryCount","on","all","then","res","forEach","r","readEntry","entry","fileName","test","openReadStream","readStream","push","newKey","prepareDataDirMap","map","filePath","streamPassThrough","streamPassThroughUploadPromise","promise","s3Stream","writeStream","catch","error"],"sources":["extractZipAndUploadToS3.ts"],"sourcesContent":["import yauzl from \"yauzl\";\nimport { pipeline } from \"stream\";\nimport { promisify } from \"util\";\nimport { CompleteMultipartUploadOutput } from \"@webiny/aws-sdk/client-s3\";\nimport { s3Stream } from \"~/export/s3Stream\";\nimport { getFileNameWithoutExt } from \"./getFileNameWithoutExt\";\nimport { ImportData } from \"~/types\";\nimport { prepareDataDirMap } from \"~/import/utils/prepareDataDirMap\";\n\nconst FILE_CONTENT_TYPE = \"application/octet-stream\";\nconst streamPipeline = promisify(pipeline);\n\nexport function extractZipAndUploadToS3(\n dataZipFilePath: string,\n uniquePath: string\n): Promise<ImportData> {\n return new Promise((resolve, reject) => {\n const filePaths = [];\n const fileUploadPromises: Promise<CompleteMultipartUploadOutput>[] = [];\n const uniqueKey = getFileNameWithoutExt(dataZipFilePath);\n let dataMap: ImportData = {\n key: uniqueKey,\n assets: {},\n data: \"\"\n };\n yauzl.open(dataZipFilePath, { lazyEntries: true }, function (err, zipFile) {\n if (err) {\n console.warn(\"ERROR: Failed to extract zip: \", dataZipFilePath, err);\n reject(err);\n return;\n }\n if (!zipFile) {\n console.log(\"ERROR: Probably failed to extract zip: \" + dataZipFilePath);\n reject(\"Missing Zip File Resource.\");\n return;\n }\n console.info(`The ZIP file contains ${zipFile.entryCount} entries.`);\n zipFile.on(\"end\", function (err) {\n if (err) {\n console.warn('ERROR: Failed on \"END\" for file: ', dataZipFilePath, err);\n reject(err);\n }\n\n Promise.all(fileUploadPromises).then(res => {\n res.forEach(r => {\n console.info(\"Done uploading... \", r);\n });\n resolve(dataMap);\n });\n });\n\n zipFile.readEntry();\n\n zipFile.on(\"entry\", function (entry) {\n console.info(`Processing entry: \"${entry.fileName}\"`);\n if (/\\/$/.test(entry.fileName)) {\n // Directory file names end with '/'.\n // Note that entries for directories themselves are optional.\n // An entry's fileName implicitly requires its parent directories to exist.\n zipFile.readEntry();\n } else {\n // file entry\n zipFile.openReadStream(entry, function (err, readStream) {\n if (err) {\n console.warn(\n \"ERROR: Failed while performing [openReadStream] for file: \",\n entry.fileName,\n err\n );\n reject(err);\n return;\n }\n if (!readStream) {\n console.log(\"ERROR: Missing Read Stream while importing.\");\n reject(\"Missing Read Strea Resource.\");\n return;\n }\n readStream.on(\"end\", function () {\n filePaths.push(entry.fileName);\n zipFile.readEntry();\n });\n\n const newKey = `${uniquePath}/${uniqueKey}/${entry.fileName}`;\n // Modify in place\n dataMap = prepareDataDirMap({\n map: dataMap,\n filePath: entry.fileName,\n newKey\n });\n\n const { streamPassThrough, streamPassThroughUploadPromise: promise } =\n s3Stream.writeStream(newKey, FILE_CONTENT_TYPE);\n\n streamPipeline(readStream, streamPassThrough)\n .then(() => {\n fileUploadPromises.push(promise);\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n });\n });\n });\n}\n"],"mappings":"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"}
@@ -8,4 +8,6 @@ exports.getFileNameWithoutExt = getFileNameWithoutExt;
8
8
  var _path = _interopRequireDefault(require("path"));
9
9
  function getFileNameWithoutExt(fileName) {
10
10
  return _path.default.basename(fileName).replace(_path.default.extname(fileName), "");
11
- }
11
+ }
12
+
13
+ //# sourceMappingURL=getFileNameWithoutExt.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getFileNameWithoutExt","fileName","path","basename","replace","extname"],"sources":["getFileNameWithoutExt.ts"],"sourcesContent":["import path from \"path\";\n\nexport function getFileNameWithoutExt(fileName: string): string {\n return path.basename(fileName).replace(path.extname(fileName), \"\");\n}\n"],"mappings":";;;;;;;AAAA;AAEO,SAASA,qBAAqB,CAACC,QAAgB,EAAU;EAC5D,OAAOC,aAAI,CAACC,QAAQ,CAACF,QAAQ,CAAC,CAACG,OAAO,CAACF,aAAI,CAACG,OAAO,CAACJ,QAAQ,CAAC,EAAE,EAAE,CAAC;AACtE"}
1
+ {"version":3,"names":["_path","_interopRequireDefault","require","getFileNameWithoutExt","fileName","path","basename","replace","extname"],"sources":["getFileNameWithoutExt.ts"],"sourcesContent":["import path from \"path\";\n\nexport function getFileNameWithoutExt(fileName: string): string {\n return path.basename(fileName).replace(path.extname(fileName), \"\");\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEO,SAASC,qBAAqBA,CAACC,QAAgB,EAAU;EAC5D,OAAOC,aAAI,CAACC,QAAQ,CAACF,QAAQ,CAAC,CAACG,OAAO,CAACF,aAAI,CAACG,OAAO,CAACJ,QAAQ,CAAC,EAAE,EAAE,CAAC;AACtE"}
@@ -101,4 +101,6 @@ Object.keys(_deleteS3Folder).forEach(function (key) {
101
101
  return _deleteS3Folder[key];
102
102
  }
103
103
  });
104
- });
104
+ });
105
+
106
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./initialStats\";\nexport * from \"./uploadFilesFromS3\";\nexport * from \"./uploadAssets\";\nexport * from \"./updateFilesInData\";\nexport * from \"./prepareDataDirMap\";\nexport * from \"./getFileNameWithoutExt\";\nexport * from \"./extractZipAndUploadToS3\";\nexport * from \"./extractAndUploadZipFileContents\";\nexport * from \"./deleteS3Folder\";\n"],"mappings":";;;;;AAAA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;AACA;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
1
+ {"version":3,"names":["_initialStats","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_uploadFilesFromS","_uploadAssets","_updateFilesInData","_prepareDataDirMap","_getFileNameWithoutExt","_extractZipAndUploadToS","_extractAndUploadZipFileContents","_deleteS3Folder"],"sources":["index.ts"],"sourcesContent":["export * from \"./initialStats\";\nexport * from \"./uploadFilesFromS3\";\nexport * from \"./uploadAssets\";\nexport * from \"./updateFilesInData\";\nexport * from \"./prepareDataDirMap\";\nexport * from \"./getFileNameWithoutExt\";\nexport * from \"./extractZipAndUploadToS3\";\nexport * from \"./extractAndUploadZipFileContents\";\nexport * from \"./deleteS3Folder\";\n"],"mappings":"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"}
@@ -13,4 +13,6 @@ function initialStats(total) {
13
13
  [_types.ImportExportTaskStatus.FAILED]: 0,
14
14
  total
15
15
  };
16
- }
16
+ }
17
+
18
+ //# sourceMappingURL=initialStats.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["initialStats","total","ImportExportTaskStatus","PENDING","PROCESSING","COMPLETED","FAILED"],"sources":["initialStats.ts"],"sourcesContent":["import { ImportExportTaskStatus } from \"~/types\";\n\nexport function initialStats(total: number) {\n return {\n [ImportExportTaskStatus.PENDING]: total,\n [ImportExportTaskStatus.PROCESSING]: 0,\n [ImportExportTaskStatus.COMPLETED]: 0,\n [ImportExportTaskStatus.FAILED]: 0,\n total\n };\n}\n"],"mappings":";;;;;;AAAA;AAEO,SAASA,YAAY,CAACC,KAAa,EAAE;EACxC,OAAO;IACH,CAACC,6BAAsB,CAACC,OAAO,GAAGF,KAAK;IACvC,CAACC,6BAAsB,CAACE,UAAU,GAAG,CAAC;IACtC,CAACF,6BAAsB,CAACG,SAAS,GAAG,CAAC;IACrC,CAACH,6BAAsB,CAACI,MAAM,GAAG,CAAC;IAClCL;EACJ,CAAC;AACL"}
1
+ {"version":3,"names":["_types","require","initialStats","total","ImportExportTaskStatus","PENDING","PROCESSING","COMPLETED","FAILED"],"sources":["initialStats.ts"],"sourcesContent":["import { ImportExportTaskStatus } from \"~/types\";\n\nexport function initialStats(total: number) {\n return {\n [ImportExportTaskStatus.PENDING]: total,\n [ImportExportTaskStatus.PROCESSING]: 0,\n [ImportExportTaskStatus.COMPLETED]: 0,\n [ImportExportTaskStatus.FAILED]: 0,\n total\n };\n}\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEO,SAASC,YAAYA,CAACC,KAAa,EAAE;EACxC,OAAO;IACH,CAACC,6BAAsB,CAACC,OAAO,GAAGF,KAAK;IACvC,CAACC,6BAAsB,CAACE,UAAU,GAAG,CAAC;IACtC,CAACF,6BAAsB,CAACG,SAAS,GAAG,CAAC;IACrC,CAACH,6BAAsB,CAACI,MAAM,GAAG,CAAC;IAClCL;EACJ,CAAC;AACL"}
@@ -26,4 +26,6 @@ function prepareDataDirMap({
26
26
  map = _dotPropImmutable.default.set(map, `data`, newKey);
27
27
  }
28
28
  return map;
29
- }
29
+ }
30
+
31
+ //# sourceMappingURL=prepareDataDirMap.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["prepareDataDirMap","map","filePath","newKey","isAsset","includes","ASSETS_DIR_NAME","assetKey","split","pop","oldKey","replace","dotProp","set"],"sources":["prepareDataDirMap.ts"],"sourcesContent":["import dotProp from \"dot-prop-immutable\";\nimport { ImportData } from \"~/types\";\nimport { ASSETS_DIR_NAME } from \"~/import/constants\";\n\nexport function prepareDataDirMap({\n map,\n filePath,\n newKey\n}: {\n map: ImportData;\n filePath: string;\n newKey: string;\n}): ImportData {\n const isAsset = filePath.includes(ASSETS_DIR_NAME);\n\n if (isAsset) {\n /*\n * We want to use dot (.) as part of object key rather than creating nested object(s).\n * Also, the file name might contain dots in it beside the extension, so, we are escaping them all.\n */\n const assetKey = filePath.split(`${ASSETS_DIR_NAME}/`).pop() as string;\n const oldKey = assetKey.replace(/\\./g, \"\\\\.\");\n\n map = dotProp.set(map, `assets.${oldKey}`, newKey);\n } else {\n // We only need to know the newKey for data file.\n map = dotProp.set(map, `data`, newKey);\n }\n\n return map;\n}\n"],"mappings":";;;;;;;AAAA;AAEA;AAEO,SAASA,iBAAiB,CAAC;EAC9BC,GAAG;EACHC,QAAQ;EACRC;AAKJ,CAAC,EAAc;EACX,MAAMC,OAAO,GAAGF,QAAQ,CAACG,QAAQ,CAACC,0BAAe,CAAC;EAElD,IAAIF,OAAO,EAAE;IACT;AACR;AACA;AACA;IACQ,MAAMG,QAAQ,GAAGL,QAAQ,CAACM,KAAK,CAAE,GAAEF,0BAAgB,GAAE,CAAC,CAACG,GAAG,EAAY;IACtE,MAAMC,MAAM,GAAGH,QAAQ,CAACI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IAE7CV,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAG,UAASS,MAAO,EAAC,EAAEP,MAAM,CAAC;EACtD,CAAC,MAAM;IACH;IACAF,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAG,MAAK,EAAEE,MAAM,CAAC;EAC1C;EAEA,OAAOF,GAAG;AACd"}
1
+ {"version":3,"names":["_dotPropImmutable","_interopRequireDefault","require","_constants","prepareDataDirMap","map","filePath","newKey","isAsset","includes","ASSETS_DIR_NAME","assetKey","split","pop","oldKey","replace","dotProp","set"],"sources":["prepareDataDirMap.ts"],"sourcesContent":["import dotProp from \"dot-prop-immutable\";\nimport { ImportData } from \"~/types\";\nimport { ASSETS_DIR_NAME } from \"~/import/constants\";\n\nexport function prepareDataDirMap({\n map,\n filePath,\n newKey\n}: {\n map: ImportData;\n filePath: string;\n newKey: string;\n}): ImportData {\n const isAsset = filePath.includes(ASSETS_DIR_NAME);\n\n if (isAsset) {\n /*\n * We want to use dot (.) as part of object key rather than creating nested object(s).\n * Also, the file name might contain dots in it beside the extension, so, we are escaping them all.\n */\n const assetKey = filePath.split(`${ASSETS_DIR_NAME}/`).pop() as string;\n const oldKey = assetKey.replace(/\\./g, \"\\\\.\");\n\n map = dotProp.set(map, `assets.${oldKey}`, newKey);\n } else {\n // We only need to know the newKey for data file.\n map = dotProp.set(map, `data`, newKey);\n }\n\n return map;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEO,SAASE,iBAAiBA,CAAC;EAC9BC,GAAG;EACHC,QAAQ;EACRC;AAKJ,CAAC,EAAc;EACX,MAAMC,OAAO,GAAGF,QAAQ,CAACG,QAAQ,CAACC,0BAAe,CAAC;EAElD,IAAIF,OAAO,EAAE;IACT;AACR;AACA;AACA;IACQ,MAAMG,QAAQ,GAAGL,QAAQ,CAACM,KAAK,CAAE,GAAEF,0BAAgB,GAAE,CAAC,CAACG,GAAG,CAAC,CAAW;IACtE,MAAMC,MAAM,GAAGH,QAAQ,CAACI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;IAE7CV,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAG,UAASS,MAAO,EAAC,EAAEP,MAAM,CAAC;EACtD,CAAC,MAAM;IACH;IACAF,GAAG,GAAGW,yBAAO,CAACC,GAAG,CAACZ,GAAG,EAAG,MAAK,EAAEE,MAAM,CAAC;EAC1C;EAEA,OAAOF,GAAG;AACd"}
@@ -12,7 +12,7 @@ function updateFilesInData({
12
12
  if (!data || typeof data !== "object") {
13
13
  return;
14
14
  }
15
- // Recursively call function if data is array
15
+ // Recursively call function if data is an array.
16
16
  if (Array.isArray(data)) {
17
17
  for (let i = 0; i < data.length; i++) {
18
18
  const element = data[i];
@@ -34,6 +34,7 @@ function updateFilesInData({
34
34
  continue;
35
35
  }
36
36
  const cleanSrcPrefix = srcPrefix.endsWith("/") ? srcPrefix.slice(0, -1) : srcPrefix;
37
+ value.id = newFile.id;
37
38
  value.key = newFile.key;
38
39
  value.name = newFile.name;
39
40
  value.src = `${cleanSrcPrefix}/${newFile.key}`;
@@ -45,4 +46,6 @@ function updateFilesInData({
45
46
  });
46
47
  }
47
48
  }
48
- }
49
+ }
50
+
51
+ //# sourceMappingURL=updateFilesInData.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["updateFilesInData","data","fileIdToNewFileMap","srcPrefix","Array","isArray","i","length","element","tuple","Object","entries","key","value","has","id","newFile","get","cleanSrcPrefix","endsWith","slice","name","src"],"sources":["updateFilesInData.ts"],"sourcesContent":["import { FileInput } from \"@webiny/api-file-manager/types\";\n\ninterface UpdateFilesInDataParams {\n data: Record<string, any>;\n fileIdToNewFileMap: Map<string, FileInput>;\n srcPrefix: string;\n}\n\nexport function updateFilesInData({\n data,\n fileIdToNewFileMap,\n srcPrefix\n}: UpdateFilesInDataParams) {\n if (!data || typeof data !== \"object\") {\n return;\n }\n // Recursively call function if data is array\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n const element = data[i];\n updateFilesInData({ data: element, fileIdToNewFileMap, srcPrefix });\n }\n return;\n }\n // Main logic\n const tuple = Object.entries(data);\n for (let i = 0; i < tuple.length; i++) {\n const [key, value] = tuple[i];\n\n if (key === \"file\" && value && fileIdToNewFileMap.has(value.id)) {\n const newFile = fileIdToNewFileMap.get(value.id);\n if (!newFile) {\n continue;\n }\n\n const cleanSrcPrefix = srcPrefix.endsWith(\"/\") ? srcPrefix.slice(0, -1) : srcPrefix;\n\n value.key = newFile.key;\n value.name = newFile.name;\n value.src = `${cleanSrcPrefix}/${newFile.key}`;\n } else {\n updateFilesInData({ data: value, srcPrefix, fileIdToNewFileMap });\n }\n }\n}\n"],"mappings":";;;;;;AAQO,SAASA,iBAAiB,CAAC;EAC9BC,IAAI;EACJC,kBAAkB;EAClBC;AACqB,CAAC,EAAE;EACxB,IAAI,CAACF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IACnC;EACJ;EACA;EACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC,EAAE;IACrB,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,IAAI,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,MAAME,OAAO,GAAGP,IAAI,CAACK,CAAC,CAAC;MACvBN,iBAAiB,CAAC;QAAEC,IAAI,EAAEO,OAAO;QAAEN,kBAAkB;QAAEC;MAAU,CAAC,CAAC;IACvE;IACA;EACJ;EACA;EACA,MAAMM,KAAK,GAAGC,MAAM,CAACC,OAAO,CAACV,IAAI,CAAC;EAClC,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGG,KAAK,CAACF,MAAM,EAAED,CAAC,EAAE,EAAE;IACnC,MAAM,CAACM,GAAG,EAAEC,KAAK,CAAC,GAAGJ,KAAK,CAACH,CAAC,CAAC;IAE7B,IAAIM,GAAG,KAAK,MAAM,IAAIC,KAAK,IAAIX,kBAAkB,CAACY,GAAG,CAACD,KAAK,CAACE,EAAE,CAAC,EAAE;MAC7D,MAAMC,OAAO,GAAGd,kBAAkB,CAACe,GAAG,CAACJ,KAAK,CAACE,EAAE,CAAC;MAChD,IAAI,CAACC,OAAO,EAAE;QACV;MACJ;MAEA,MAAME,cAAc,GAAGf,SAAS,CAACgB,QAAQ,CAAC,GAAG,CAAC,GAAGhB,SAAS,CAACiB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGjB,SAAS;MAEnFU,KAAK,CAACD,GAAG,GAAGI,OAAO,CAACJ,GAAG;MACvBC,KAAK,CAACQ,IAAI,GAAGL,OAAO,CAACK,IAAI;MACzBR,KAAK,CAACS,GAAG,GAAI,GAAEJ,cAAe,IAAGF,OAAO,CAACJ,GAAI,EAAC;IAClD,CAAC,MAAM;MACHZ,iBAAiB,CAAC;QAAEC,IAAI,EAAEY,KAAK;QAAEV,SAAS;QAAED;MAAmB,CAAC,CAAC;IACrE;EACJ;AACJ"}
1
+ {"version":3,"names":["updateFilesInData","data","fileIdToNewFileMap","srcPrefix","Array","isArray","i","length","element","tuple","Object","entries","key","value","has","id","newFile","get","cleanSrcPrefix","endsWith","slice","name","src"],"sources":["updateFilesInData.ts"],"sourcesContent":["import { FileInput } from \"@webiny/api-file-manager/types\";\n\ninterface UpdateFilesInDataParams {\n data: Record<string, any>;\n fileIdToNewFileMap: Map<string, FileInput>;\n srcPrefix: string;\n}\n\nexport function updateFilesInData({\n data,\n fileIdToNewFileMap,\n srcPrefix\n}: UpdateFilesInDataParams) {\n if (!data || typeof data !== \"object\") {\n return;\n }\n // Recursively call function if data is an array.\n if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n const element = data[i];\n updateFilesInData({ data: element, fileIdToNewFileMap, srcPrefix });\n }\n return;\n }\n // Main logic\n const tuple = Object.entries(data);\n for (let i = 0; i < tuple.length; i++) {\n const [key, value] = tuple[i];\n\n if (key === \"file\" && value && fileIdToNewFileMap.has(value.id)) {\n const newFile = fileIdToNewFileMap.get(value.id);\n if (!newFile) {\n continue;\n }\n\n const cleanSrcPrefix = srcPrefix.endsWith(\"/\") ? srcPrefix.slice(0, -1) : srcPrefix;\n\n value.id = newFile.id;\n value.key = newFile.key;\n value.name = newFile.name;\n value.src = `${cleanSrcPrefix}/${newFile.key}`;\n } else {\n updateFilesInData({ data: value, srcPrefix, fileIdToNewFileMap });\n }\n }\n}\n"],"mappings":";;;;;;AAQO,SAASA,iBAAiBA,CAAC;EAC9BC,IAAI;EACJC,kBAAkB;EAClBC;AACqB,CAAC,EAAE;EACxB,IAAI,CAACF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IACnC;EACJ;EACA;EACA,IAAIG,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC,EAAE;IACrB,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,IAAI,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;MAClC,MAAME,OAAO,GAAGP,IAAI,CAACK,CAAC,CAAC;MACvBN,iBAAiB,CAAC;QAAEC,IAAI,EAAEO,OAAO;QAAEN,kBAAkB;QAAEC;MAAU,CAAC,CAAC;IACvE;IACA;EACJ;EACA;EACA,MAAMM,KAAK,GAAGC,MAAM,CAACC,OAAO,CAACV,IAAI,CAAC;EAClC,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGG,KAAK,CAACF,MAAM,EAAED,CAAC,EAAE,EAAE;IACnC,MAAM,CAACM,GAAG,EAAEC,KAAK,CAAC,GAAGJ,KAAK,CAACH,CAAC,CAAC;IAE7B,IAAIM,GAAG,KAAK,MAAM,IAAIC,KAAK,IAAIX,kBAAkB,CAACY,GAAG,CAACD,KAAK,CAACE,EAAE,CAAC,EAAE;MAC7D,MAAMC,OAAO,GAAGd,kBAAkB,CAACe,GAAG,CAACJ,KAAK,CAACE,EAAE,CAAC;MAChD,IAAI,CAACC,OAAO,EAAE;QACV;MACJ;MAEA,MAAME,cAAc,GAAGf,SAAS,CAACgB,QAAQ,CAAC,GAAG,CAAC,GAAGhB,SAAS,CAACiB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAGjB,SAAS;MAEnFU,KAAK,CAACE,EAAE,GAAGC,OAAO,CAACD,EAAE;MACrBF,KAAK,CAACD,GAAG,GAAGI,OAAO,CAACJ,GAAG;MACvBC,KAAK,CAACQ,IAAI,GAAGL,OAAO,CAACK,IAAI;MACzBR,KAAK,CAACS,GAAG,GAAI,GAAEJ,cAAe,IAAGF,OAAO,CAACJ,GAAI,EAAC;IAClD,CAAC,MAAM;MACHZ,iBAAiB,CAAC;QAAEC,IAAI,EAAEY,KAAK;QAAEV,SAAS;QAAED;MAAmB,CAAC,CAAC;IACrE;EACJ;AACJ"}
@@ -1,13 +1,21 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.uploadAssets = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
7
  var _utils = require("@webiny/utils");
10
8
  var _uploadFilesFromS = require("./uploadFilesFromS3");
9
+ function notAPreviouslyImportedFile(importedImages) {
10
+ return file => {
11
+ return !importedImages.some(existingImportedImage => existingImportedImage.meta.originalKey === file.key);
12
+ };
13
+ }
14
+ function notAnExistingFile(existingFiles) {
15
+ return file => {
16
+ return !existingFiles.some(existingFile => existingFile.key === file.key);
17
+ };
18
+ }
11
19
  const uploadAssets = async params => {
12
20
  const {
13
21
  context,
@@ -25,25 +33,60 @@ const uploadAssets = async params => {
25
33
  return oldIdToNewFileMap;
26
34
  }
27
35
 
36
+ // Check if the requested files were already imported in the past.
37
+ const [importedImages] = await context.fileManager.listFiles({
38
+ where: {
39
+ meta: {
40
+ originalKey_in: files.map(file => file.key)
41
+ }
42
+ }
43
+ });
44
+
45
+ // Link files that were already imported.
46
+ for (const importedImage of importedImages) {
47
+ const fileBeingImported = files.find(file => file.key === importedImage.meta.originalKey);
48
+ if (fileBeingImported) {
49
+ oldIdToNewFileMap.set(fileBeingImported.id, importedImage);
50
+ }
51
+ }
52
+
53
+ // Check if files with such IDs already exist.
54
+ const [existingFiles] = await context.fileManager.listFiles({
55
+ where: {
56
+ id_in: files.map(file => file.id)
57
+ }
58
+ });
59
+ const newFilesToImport = files.filter(notAnExistingFile(existingFiles)).filter(notAPreviouslyImportedFile(importedImages));
60
+
28
61
  // A map of temporary file keys (created during ZIP upload) to permanent file keys.
29
62
  const uploadFileMap = new Map();
30
63
 
31
64
  // Array of file inputs, to insert into the DB.
32
65
  const createFilesInput = [];
33
- for (const oldFile of files) {
66
+ for (const toImport of newFilesToImport) {
67
+ // We generate a new file id, key, and add `meta.originalKey` property to prevent duplicates on future imports.
34
68
  const id = (0, _utils.mdbid)();
35
- // We replace the old file ID with a new one.
36
- const newKey = `${id}/${oldFile.key.replace(`${oldFile.id}/`, "")}`;
37
- const newFile = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, oldFile), {}, {
69
+ const newKey = `${id}/${toImport.key.replace(`${toImport.id}/`, "")}`;
70
+ const newFile = {
71
+ ...toImport,
38
72
  id,
39
- key: newKey
40
- });
73
+ location: {
74
+ folderId: "root"
75
+ },
76
+ key: newKey,
77
+ meta: {
78
+ ...toImport.meta,
79
+ originalKey: toImport.key
80
+ }
81
+ };
41
82
  createFilesInput.push(newFile);
42
- oldIdToNewFileMap.set(oldFile.id, newFile);
43
- uploadFileMap.set(fileUploadsData.assets[oldFile.key], newFile);
83
+ oldIdToNewFileMap.set(toImport.id, newFile);
84
+ uploadFileMap.set(fileUploadsData.assets[toImport.key], newFile);
44
85
  }
45
86
  await (0, _uploadFilesFromS.uploadFilesFromS3)(uploadFileMap);
46
87
  await context.fileManager.createFilesInBatch(createFilesInput);
47
88
  return oldIdToNewFileMap;
48
89
  };
49
- exports.uploadAssets = uploadAssets;
90
+ exports.uploadAssets = uploadAssets;
91
+
92
+ //# sourceMappingURL=uploadAssets.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["uploadAssets","params","context","files","fileUploadsData","oldIdToNewFileMap","Map","process","env","NODE_ENV","uploadFileMap","createFilesInput","oldFile","id","mdbid","newKey","key","replace","newFile","push","set","assets","uploadFilesFromS3","fileManager","createFilesInBatch"],"sources":["uploadAssets.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport { File, FileInput } from \"@webiny/api-file-manager/types\";\nimport { UploadFileMap, uploadFilesFromS3 } from \"~/import/utils/uploadFilesFromS3\";\nimport { FileUploadsData } from \"~/types\";\n\ninterface UploadAssetsParams {\n context: PbImportExportContext;\n files: File[];\n fileUploadsData: FileUploadsData;\n}\n\nexport const uploadAssets = async (params: UploadAssetsParams) => {\n const { context, files, fileUploadsData } = params;\n\n const oldIdToNewFileMap = new Map<string, FileInput>();\n\n /**\n * This function contains logic of file download from S3.\n * Current we're not mocking zip file download from S3 in tests at the moment.\n * So, we're manually mocking it in case of test just by returning an empty object.\n */\n if (process.env.NODE_ENV === \"test\") {\n return oldIdToNewFileMap;\n }\n\n // A map of temporary file keys (created during ZIP upload) to permanent file keys.\n const uploadFileMap: UploadFileMap = new Map();\n\n // Array of file inputs, to insert into the DB.\n const createFilesInput: FileInput[] = [];\n\n for (const oldFile of files) {\n const id = mdbid();\n // We replace the old file ID with a new one.\n const newKey = `${id}/${oldFile.key.replace(`${oldFile.id}/`, \"\")}`;\n const newFile: FileInput = { ...oldFile, id, key: newKey };\n\n createFilesInput.push(newFile);\n oldIdToNewFileMap.set(oldFile.id, newFile);\n uploadFileMap.set(fileUploadsData.assets[oldFile.key], newFile);\n }\n\n await uploadFilesFromS3(uploadFileMap);\n\n await context.fileManager.createFilesInBatch(createFilesInput);\n\n return oldIdToNewFileMap;\n};\n"],"mappings":";;;;;;;;AAAA;AAGA;AASO,MAAMA,YAAY,GAAG,MAAOC,MAA0B,IAAK;EAC9D,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAgB,CAAC,GAAGH,MAAM;EAElD,MAAMI,iBAAiB,GAAG,IAAIC,GAAG,EAAqB;;EAEtD;AACJ;AACA;AACA;AACA;EACI,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;IACjC,OAAOJ,iBAAiB;EAC5B;;EAEA;EACA,MAAMK,aAA4B,GAAG,IAAIJ,GAAG,EAAE;;EAE9C;EACA,MAAMK,gBAA6B,GAAG,EAAE;EAExC,KAAK,MAAMC,OAAO,IAAIT,KAAK,EAAE;IACzB,MAAMU,EAAE,GAAG,IAAAC,YAAK,GAAE;IAClB;IACA,MAAMC,MAAM,GAAI,GAAEF,EAAG,IAAGD,OAAO,CAACI,GAAG,CAACC,OAAO,CAAE,GAAEL,OAAO,CAACC,EAAG,GAAE,EAAE,EAAE,CAAE,EAAC;IACnE,MAAMK,OAAkB,+DAAQN,OAAO;MAAEC,EAAE;MAAEG,GAAG,EAAED;IAAM,EAAE;IAE1DJ,gBAAgB,CAACQ,IAAI,CAACD,OAAO,CAAC;IAC9Bb,iBAAiB,CAACe,GAAG,CAACR,OAAO,CAACC,EAAE,EAAEK,OAAO,CAAC;IAC1CR,aAAa,CAACU,GAAG,CAAChB,eAAe,CAACiB,MAAM,CAACT,OAAO,CAACI,GAAG,CAAC,EAAEE,OAAO,CAAC;EACnE;EAEA,MAAM,IAAAI,mCAAiB,EAACZ,aAAa,CAAC;EAEtC,MAAMR,OAAO,CAACqB,WAAW,CAACC,kBAAkB,CAACb,gBAAgB,CAAC;EAE9D,OAAON,iBAAiB;AAC5B,CAAC;AAAC"}
1
+ {"version":3,"names":["_utils","require","_uploadFilesFromS","notAPreviouslyImportedFile","importedImages","file","some","existingImportedImage","meta","originalKey","key","notAnExistingFile","existingFiles","existingFile","uploadAssets","params","context","files","fileUploadsData","oldIdToNewFileMap","Map","process","env","NODE_ENV","fileManager","listFiles","where","originalKey_in","map","importedImage","fileBeingImported","find","set","id","id_in","newFilesToImport","filter","uploadFileMap","createFilesInput","toImport","mdbid","newKey","replace","newFile","location","folderId","push","assets","uploadFilesFromS3","createFilesInBatch","exports"],"sources":["uploadAssets.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport { File, FileInput } from \"@webiny/api-file-manager/types\";\nimport { UploadFileMap, uploadFilesFromS3 } from \"~/import/utils/uploadFilesFromS3\";\nimport { FileUploadsData } from \"~/types\";\n\ninterface UploadAssetsParams {\n context: PbImportExportContext;\n files: File[];\n fileUploadsData: FileUploadsData;\n}\n\nfunction notAPreviouslyImportedFile(importedImages: File[]) {\n return (file: File) => {\n return !importedImages.some(\n existingImportedImage => existingImportedImage.meta.originalKey === file.key\n );\n };\n}\n\nfunction notAnExistingFile(existingFiles: File[]) {\n return (file: File) => {\n return !existingFiles.some(existingFile => existingFile.key === file.key);\n };\n}\n\nexport const uploadAssets = async (params: UploadAssetsParams) => {\n const { context, files, fileUploadsData } = params;\n\n const oldIdToNewFileMap = new Map<string, FileInput>();\n\n /**\n * This function contains logic of file download from S3.\n * Current we're not mocking zip file download from S3 in tests at the moment.\n * So, we're manually mocking it in case of test just by returning an empty object.\n */\n if (process.env.NODE_ENV === \"test\") {\n return oldIdToNewFileMap;\n }\n\n // Check if the requested files were already imported in the past.\n const [importedImages] = await context.fileManager.listFiles({\n where: { meta: { originalKey_in: files.map(file => file.key) } }\n });\n\n // Link files that were already imported.\n for (const importedImage of importedImages) {\n const fileBeingImported = files.find(file => file.key === importedImage.meta.originalKey);\n\n if (fileBeingImported) {\n oldIdToNewFileMap.set(fileBeingImported.id, importedImage);\n }\n }\n\n // Check if files with such IDs already exist.\n const [existingFiles] = await context.fileManager.listFiles({\n where: { id_in: files.map(file => file.id) }\n });\n\n const newFilesToImport = files\n .filter(notAnExistingFile(existingFiles))\n .filter(notAPreviouslyImportedFile(importedImages));\n\n // A map of temporary file keys (created during ZIP upload) to permanent file keys.\n const uploadFileMap: UploadFileMap = new Map();\n\n // Array of file inputs, to insert into the DB.\n const createFilesInput: FileInput[] = [];\n\n for (const toImport of newFilesToImport) {\n // We generate a new file id, key, and add `meta.originalKey` property to prevent duplicates on future imports.\n const id = mdbid();\n const newKey = `${id}/${toImport.key.replace(`${toImport.id}/`, \"\")}`;\n const newFile: FileInput = {\n ...toImport,\n id,\n location: {\n folderId: \"root\"\n },\n key: newKey,\n meta: { ...toImport.meta, originalKey: toImport.key }\n };\n\n createFilesInput.push(newFile);\n oldIdToNewFileMap.set(toImport.id, newFile);\n uploadFileMap.set(fileUploadsData.assets[toImport.key], newFile);\n }\n\n await uploadFilesFromS3(uploadFileMap);\n\n await context.fileManager.createFilesInBatch(createFilesInput);\n\n return oldIdToNewFileMap;\n};\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { FileInput } from "@webiny/api-file-manager/types";
2
2
  export declare type UploadFileMap = Map<string, FileInput>;
3
- export declare function uploadFilesFromS3(fileMap: UploadFileMap): Promise<import("aws-sdk/clients/s3").ManagedUpload.SendData[]>;
3
+ export declare function uploadFilesFromS3(fileMap: UploadFileMap): Promise<(import("@aws-sdk/client-s3").AbortMultipartUploadCommandOutput | import("@aws-sdk/client-s3").CompleteMultipartUploadCommandOutput)[]>;
@@ -9,11 +9,13 @@ async function uploadFilesFromS3(fileMap) {
9
9
  const promises = [];
10
10
  for (const [source, target] of Array.from(fileMap.entries())) {
11
11
  // Read file.
12
- const readStream = _s3Stream.s3Stream.readStream(source);
12
+ const readStream = await _s3Stream.s3Stream.readStream(source);
13
13
  const ws = _s3Stream.s3Stream.writeStream(target.key, target.type);
14
14
  readStream.pipe(ws.streamPassThrough);
15
15
  promises.push(ws.streamPassThroughUploadPromise);
16
16
  console.log(`Successfully queued file "${target.key}"`);
17
17
  }
18
18
  return Promise.all(promises);
19
- }
19
+ }
20
+
21
+ //# sourceMappingURL=uploadFilesFromS3.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["uploadFilesFromS3","fileMap","promises","source","target","Array","from","entries","readStream","s3Stream","ws","writeStream","key","type","pipe","streamPassThrough","push","streamPassThroughUploadPromise","console","log","Promise","all"],"sources":["uploadFilesFromS3.ts"],"sourcesContent":["import { s3Stream } from \"~/export/s3Stream\";\nimport { FileInput } from \"@webiny/api-file-manager/types\";\n\nexport type UploadFileMap = Map<string, FileInput>;\n\nexport async function uploadFilesFromS3(fileMap: UploadFileMap) {\n const promises = [];\n for (const [source, target] of Array.from(fileMap.entries())) {\n // Read file.\n const readStream = s3Stream.readStream(source);\n\n const ws = s3Stream.writeStream(target.key, target.type);\n readStream.pipe(ws.streamPassThrough);\n promises.push(ws.streamPassThroughUploadPromise);\n\n console.log(`Successfully queued file \"${target.key}\"`);\n }\n\n return Promise.all(promises);\n}\n"],"mappings":";;;;;;AAAA;AAKO,eAAeA,iBAAiB,CAACC,OAAsB,EAAE;EAC5D,MAAMC,QAAQ,GAAG,EAAE;EACnB,KAAK,MAAM,CAACC,MAAM,EAAEC,MAAM,CAAC,IAAIC,KAAK,CAACC,IAAI,CAACL,OAAO,CAACM,OAAO,EAAE,CAAC,EAAE;IAC1D;IACA,MAAMC,UAAU,GAAGC,kBAAQ,CAACD,UAAU,CAACL,MAAM,CAAC;IAE9C,MAAMO,EAAE,GAAGD,kBAAQ,CAACE,WAAW,CAACP,MAAM,CAACQ,GAAG,EAAER,MAAM,CAACS,IAAI,CAAC;IACxDL,UAAU,CAACM,IAAI,CAACJ,EAAE,CAACK,iBAAiB,CAAC;IACrCb,QAAQ,CAACc,IAAI,CAACN,EAAE,CAACO,8BAA8B,CAAC;IAEhDC,OAAO,CAACC,GAAG,CAAE,6BAA4Bf,MAAM,CAACQ,GAAI,GAAE,CAAC;EAC3D;EAEA,OAAOQ,OAAO,CAACC,GAAG,CAACnB,QAAQ,CAAC;AAChC"}
1
+ {"version":3,"names":["_s3Stream","require","uploadFilesFromS3","fileMap","promises","source","target","Array","from","entries","readStream","s3Stream","ws","writeStream","key","type","pipe","streamPassThrough","push","streamPassThroughUploadPromise","console","log","Promise","all"],"sources":["uploadFilesFromS3.ts"],"sourcesContent":["import { s3Stream } from \"~/export/s3Stream\";\nimport { FileInput } from \"@webiny/api-file-manager/types\";\n\nexport type UploadFileMap = Map<string, FileInput>;\n\nexport async function uploadFilesFromS3(fileMap: UploadFileMap) {\n const promises = [];\n for (const [source, target] of Array.from(fileMap.entries())) {\n // Read file.\n const readStream = await s3Stream.readStream(source);\n\n const ws = s3Stream.writeStream(target.key, target.type);\n readStream.pipe(ws.streamPassThrough);\n promises.push(ws.streamPassThroughUploadPromise);\n\n console.log(`Successfully queued file \"${target.key}\"`);\n }\n\n return Promise.all(promises);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAKO,eAAeC,iBAAiBA,CAACC,OAAsB,EAAE;EAC5D,MAAMC,QAAQ,GAAG,EAAE;EACnB,KAAK,MAAM,CAACC,MAAM,EAAEC,MAAM,CAAC,IAAIC,KAAK,CAACC,IAAI,CAACL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,EAAE;IAC1D;IACA,MAAMC,UAAU,GAAG,MAAMC,kBAAQ,CAACD,UAAU,CAACL,MAAM,CAAC;IAEpD,MAAMO,EAAE,GAAGD,kBAAQ,CAACE,WAAW,CAACP,MAAM,CAACQ,GAAG,EAAER,MAAM,CAACS,IAAI,CAAC;IACxDL,UAAU,CAACM,IAAI,CAACJ,EAAE,CAACK,iBAAiB,CAAC;IACrCb,QAAQ,CAACc,IAAI,CAACN,EAAE,CAACO,8BAA8B,CAAC;IAEhDC,OAAO,CAACC,GAAG,CAAE,6BAA4Bf,MAAM,CAACQ,GAAI,GAAE,CAAC;EAC3D;EAEA,OAAOQ,OAAO,CAACC,GAAG,CAACnB,QAAQ,CAAC;AAChC"}
package/mockSecurity.js CHANGED
@@ -7,4 +7,6 @@ exports.mockSecurity = void 0;
7
7
  const mockSecurity = (identity, context) => {
8
8
  context.security.setIdentity(identity);
9
9
  };
10
- exports.mockSecurity = mockSecurity;
10
+ exports.mockSecurity = mockSecurity;
11
+
12
+ //# sourceMappingURL=mockSecurity.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["mockSecurity","identity","context","security","setIdentity"],"sources":["mockSecurity.ts"],"sourcesContent":["import { SecurityContext, SecurityIdentity } from \"@webiny/api-security/types\";\n\nexport const mockSecurity = (identity: SecurityIdentity, context: SecurityContext) => {\n context.security.setIdentity(identity);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,YAAY,GAAG,CAACC,QAA0B,EAAEC,OAAwB,KAAK;EAClFA,OAAO,CAACC,QAAQ,CAACC,WAAW,CAACH,QAAQ,CAAC;AAC1C,CAAC;AAAC"}
1
+ {"version":3,"names":["mockSecurity","identity","context","security","setIdentity","exports"],"sources":["mockSecurity.ts"],"sourcesContent":["import { SecurityContext, SecurityIdentity } from \"@webiny/api-security/types\";\n\nexport const mockSecurity = (identity: SecurityIdentity, context: SecurityContext) => {\n context.security.setIdentity(identity);\n};\n"],"mappings":";;;;;;AAEO,MAAMA,YAAY,GAAGA,CAACC,QAA0B,EAAEC,OAAwB,KAAK;EAClFA,OAAO,CAACC,QAAQ,CAACC,WAAW,CAACH,QAAQ,CAAC;AAC1C,CAAC;AAACI,OAAA,CAAAL,YAAA,GAAAA,YAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-page-builder-import-export",
3
- "version": "0.0.0-unstable.99666aeb00",
3
+ "version": "0.0.0-unstable.a9593f74dd",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "pbie:base"
@@ -14,19 +14,21 @@
14
14
  "author": "Webiny Ltd",
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
- "@babel/runtime": "7.20.13",
17
+ "@babel/runtime": "7.22.6",
18
18
  "@commodo/fields": "1.1.2-beta.20",
19
- "@webiny/api": "0.0.0-unstable.99666aeb00",
20
- "@webiny/api-file-manager": "0.0.0-unstable.99666aeb00",
21
- "@webiny/api-form-builder": "0.0.0-unstable.99666aeb00",
22
- "@webiny/api-page-builder": "0.0.0-unstable.99666aeb00",
23
- "@webiny/api-security": "0.0.0-unstable.99666aeb00",
24
- "@webiny/error": "0.0.0-unstable.99666aeb00",
25
- "@webiny/handler": "0.0.0-unstable.99666aeb00",
26
- "@webiny/handler-aws": "0.0.0-unstable.99666aeb00",
27
- "@webiny/handler-graphql": "0.0.0-unstable.99666aeb00",
28
- "@webiny/utils": "0.0.0-unstable.99666aeb00",
29
- "@webiny/validation": "0.0.0-unstable.99666aeb00",
19
+ "@webiny/api": "0.0.0-unstable.a9593f74dd",
20
+ "@webiny/api-file-manager": "0.0.0-unstable.a9593f74dd",
21
+ "@webiny/api-form-builder": "0.0.0-unstable.a9593f74dd",
22
+ "@webiny/api-page-builder": "0.0.0-unstable.a9593f74dd",
23
+ "@webiny/api-security": "0.0.0-unstable.a9593f74dd",
24
+ "@webiny/aws-sdk": "0.0.0-unstable.a9593f74dd",
25
+ "@webiny/error": "0.0.0-unstable.a9593f74dd",
26
+ "@webiny/handler": "0.0.0-unstable.a9593f74dd",
27
+ "@webiny/handler-aws": "0.0.0-unstable.a9593f74dd",
28
+ "@webiny/handler-graphql": "0.0.0-unstable.a9593f74dd",
29
+ "@webiny/pubsub": "0.0.0-unstable.a9593f74dd",
30
+ "@webiny/utils": "0.0.0-unstable.a9593f74dd",
31
+ "@webiny/validation": "0.0.0-unstable.a9593f74dd",
30
32
  "archiver": "5.3.1",
31
33
  "commodo-fields-object": "1.0.6",
32
34
  "dot-prop-immutable": "2.1.1",
@@ -39,21 +41,21 @@
39
41
  "yauzl": "2.10.0"
40
42
  },
41
43
  "devDependencies": {
42
- "@babel/cli": "7.20.7",
43
- "@babel/core": "7.20.12",
44
+ "@babel/cli": "7.22.6",
45
+ "@babel/core": "7.22.8",
44
46
  "@babel/plugin-proposal-export-default-from": "7.18.10",
45
- "@babel/preset-env": "7.20.2",
46
- "@babel/preset-typescript": "7.18.6",
47
+ "@babel/preset-env": "7.22.7",
48
+ "@babel/preset-typescript": "7.22.5",
47
49
  "@types/archiver": "5.3.1",
48
50
  "@types/node-fetch": "2.6.2",
49
51
  "@types/yauzl": "2.10.0",
50
- "@webiny/api-authentication": "0.0.0-unstable.99666aeb00",
51
- "@webiny/api-dynamodb-to-elasticsearch": "0.0.0-unstable.99666aeb00",
52
- "@webiny/api-tenancy": "0.0.0-unstable.99666aeb00",
53
- "@webiny/api-wcp": "0.0.0-unstable.99666aeb00",
54
- "@webiny/cli": "0.0.0-unstable.99666aeb00",
55
- "@webiny/db": "0.0.0-unstable.99666aeb00",
56
- "@webiny/project-utils": "0.0.0-unstable.99666aeb00",
52
+ "@webiny/api-authentication": "0.0.0-unstable.a9593f74dd",
53
+ "@webiny/api-dynamodb-to-elasticsearch": "0.0.0-unstable.a9593f74dd",
54
+ "@webiny/api-tenancy": "0.0.0-unstable.a9593f74dd",
55
+ "@webiny/api-wcp": "0.0.0-unstable.a9593f74dd",
56
+ "@webiny/cli": "0.0.0-unstable.a9593f74dd",
57
+ "@webiny/db": "0.0.0-unstable.a9593f74dd",
58
+ "@webiny/project-utils": "0.0.0-unstable.a9593f74dd",
57
59
  "jest": "29.5.0",
58
60
  "jest-dynalite": "3.6.1",
59
61
  "rimraf": "3.0.2",
@@ -68,12 +70,5 @@
68
70
  "build": "yarn webiny run build",
69
71
  "watch": "yarn webiny run watch"
70
72
  },
71
- "adio": {
72
- "ignore": {
73
- "src": [
74
- "aws-sdk"
75
- ]
76
- }
77
- },
78
- "gitHead": "99666aeb00056c56292eeb5dbb6aba7fda2439e2"
73
+ "gitHead": "a9593f74ddf9ce93263eadb0ddc0807ed343f5ee"
79
74
  }