@webiny/api-page-builder-import-export 0.0.0-unstable.aad28a72ae → 0.0.0-unstable.acacc54f0e

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 (166) hide show
  1. package/client.js +2 -6
  2. package/client.js.map +1 -1
  3. package/export/combine/blocksHandler.js +11 -18
  4. package/export/combine/blocksHandler.js.map +1 -1
  5. package/export/combine/formsHandler.d.ts +6 -0
  6. package/export/combine/formsHandler.js +99 -0
  7. package/export/combine/formsHandler.js.map +1 -0
  8. package/export/combine/index.js +22 -10
  9. package/export/combine/index.js.map +1 -1
  10. package/export/combine/pagesHandler.js +11 -18
  11. package/export/combine/pagesHandler.js.map +1 -1
  12. package/export/combine/templatesHandler.d.ts +6 -0
  13. package/export/combine/templatesHandler.js +99 -0
  14. package/export/combine/templatesHandler.js.map +1 -0
  15. package/export/process/blocksHandler.js +27 -36
  16. package/export/process/blocksHandler.js.map +1 -1
  17. package/export/process/exporters/BlockExporter.d.ts +13 -0
  18. package/export/process/exporters/BlockExporter.js +81 -0
  19. package/export/process/exporters/BlockExporter.js.map +1 -0
  20. package/export/process/exporters/FormExporter.d.ts +9 -0
  21. package/export/process/exporters/FormExporter.js +34 -0
  22. package/export/process/exporters/FormExporter.js.map +1 -0
  23. package/export/process/exporters/PageExporter.d.ts +11 -0
  24. package/export/process/exporters/PageExporter.js +58 -0
  25. package/export/process/exporters/PageExporter.js.map +1 -0
  26. package/export/process/exporters/PageTemplateExporter.d.ts +11 -0
  27. package/export/process/exporters/PageTemplateExporter.js +56 -0
  28. package/export/process/exporters/PageTemplateExporter.js.map +1 -0
  29. package/export/process/formsHandler.d.ts +6 -0
  30. package/export/process/formsHandler.js +187 -0
  31. package/export/process/formsHandler.js.map +1 -0
  32. package/export/process/index.js +22 -10
  33. package/export/process/index.js.map +1 -1
  34. package/export/process/pagesHandler.js +23 -38
  35. package/export/process/pagesHandler.js.map +1 -1
  36. package/export/process/templatesHandler.d.ts +6 -0
  37. package/export/process/templatesHandler.js +166 -0
  38. package/export/process/templatesHandler.js.map +1 -0
  39. package/export/s3Stream.d.ts +5 -2
  40. package/export/s3Stream.js +1 -20
  41. package/export/s3Stream.js.map +1 -1
  42. package/export/utils.d.ts +2 -16
  43. package/export/utils.js +5 -105
  44. package/export/utils.js.map +1 -1
  45. package/export/zipper.js +31 -43
  46. package/export/zipper.js.map +1 -1
  47. package/graphql/crud/blocks.crud.js +29 -54
  48. package/graphql/crud/blocks.crud.js.map +1 -1
  49. package/graphql/crud/forms.crud.d.ts +4 -0
  50. package/graphql/crud/forms.crud.js +134 -0
  51. package/graphql/crud/forms.crud.js.map +1 -0
  52. package/graphql/crud/importExportTasks.crud.js +47 -94
  53. package/graphql/crud/importExportTasks.crud.js.map +1 -1
  54. package/graphql/crud/pages.crud.d.ts +1 -0
  55. package/graphql/crud/pages.crud.js +38 -49
  56. package/graphql/crud/pages.crud.js.map +1 -1
  57. package/graphql/crud/templates.crud.d.ts +4 -0
  58. package/graphql/crud/templates.crud.js +128 -0
  59. package/graphql/crud/templates.crud.js.map +1 -0
  60. package/graphql/crud.js +3 -7
  61. package/graphql/crud.js.map +1 -1
  62. package/graphql/graphql/blocks.gql.js +2 -7
  63. package/graphql/graphql/blocks.gql.js.map +1 -1
  64. package/graphql/graphql/forms.gql.d.ts +4 -0
  65. package/graphql/graphql/forms.gql.js +60 -0
  66. package/graphql/graphql/forms.gql.js.map +1 -0
  67. package/graphql/graphql/importExportTasks.gql.js +1 -6
  68. package/graphql/graphql/importExportTasks.gql.js.map +1 -1
  69. package/graphql/graphql/pages.gql.js +2 -7
  70. package/graphql/graphql/pages.gql.js.map +1 -1
  71. package/graphql/graphql/templates.gql.d.ts +4 -0
  72. package/graphql/graphql/templates.gql.js +52 -0
  73. package/graphql/graphql/templates.gql.js.map +1 -0
  74. package/graphql/graphql/utils/resolve.d.ts +1 -1
  75. package/graphql/graphql/utils/resolve.js +0 -3
  76. package/graphql/graphql/utils/resolve.js.map +1 -1
  77. package/graphql/graphql.js +3 -6
  78. package/graphql/graphql.js.map +1 -1
  79. package/graphql/index.js +0 -5
  80. package/graphql/index.js.map +1 -1
  81. package/graphql/types.d.ts +40 -1
  82. package/graphql/types.js.map +1 -1
  83. package/import/constants.d.ts +3 -0
  84. package/import/constants.js +14 -0
  85. package/import/constants.js.map +1 -0
  86. package/import/create/blocksHandler.js +11 -22
  87. package/import/create/blocksHandler.js.map +1 -1
  88. package/import/{process/pagesHandler.d.ts → create/formsHandler.d.ts} +1 -1
  89. package/import/create/formsHandler.js +103 -0
  90. package/import/create/formsHandler.js.map +1 -0
  91. package/import/create/index.d.ts +2 -1
  92. package/import/create/index.js +22 -10
  93. package/import/create/index.js.map +1 -1
  94. package/import/create/pagesHandler.js +13 -20
  95. package/import/create/pagesHandler.js.map +1 -1
  96. package/import/create/templatesHandler.d.ts +3 -0
  97. package/import/create/templatesHandler.js +99 -0
  98. package/import/create/templatesHandler.js.map +1 -0
  99. package/import/process/{blocksHandler.d.ts → blocks/blocksHandler.d.ts} +2 -2
  100. package/import/process/{blocksHandler.js → blocks/blocksHandler.js} +28 -35
  101. package/import/process/blocks/blocksHandler.js.map +1 -0
  102. package/import/process/blocks/importBlock.d.ts +11 -0
  103. package/import/process/blocks/importBlock.js +106 -0
  104. package/import/process/blocks/importBlock.js.map +1 -0
  105. package/import/process/forms/formsHandler.d.ts +3 -0
  106. package/import/process/forms/formsHandler.js +176 -0
  107. package/import/process/forms/formsHandler.js.map +1 -0
  108. package/import/process/forms/importForm.d.ts +9 -0
  109. package/import/process/forms/importForm.js +43 -0
  110. package/import/process/forms/importForm.js.map +1 -0
  111. package/import/process/index.d.ts +1 -0
  112. package/import/process/index.js +24 -12
  113. package/import/process/index.js.map +1 -1
  114. package/import/process/pages/importPage.d.ts +11 -0
  115. package/import/process/pages/importPage.js +92 -0
  116. package/import/process/pages/importPage.js.map +1 -0
  117. package/import/process/pages/pagesHandler.d.ts +3 -0
  118. package/import/process/{pagesHandler.js → pages/pagesHandler.js} +39 -36
  119. package/import/process/pages/pagesHandler.js.map +1 -0
  120. package/import/process/templates/importTemplate.d.ts +11 -0
  121. package/import/process/templates/importTemplate.js +66 -0
  122. package/import/process/templates/importTemplate.js.map +1 -0
  123. package/import/process/templates/templatesHandler.d.ts +3 -0
  124. package/import/process/templates/templatesHandler.js +170 -0
  125. package/import/process/templates/templatesHandler.js.map +1 -0
  126. package/import/utils/deleteS3Folder.d.ts +1 -0
  127. package/import/utils/deleteS3Folder.js +19 -0
  128. package/import/utils/deleteS3Folder.js.map +1 -0
  129. package/import/utils/extractAndUploadZipFileContents.d.ts +7 -0
  130. package/import/utils/extractAndUploadZipFileContents.js +122 -0
  131. package/import/utils/extractAndUploadZipFileContents.js.map +1 -0
  132. package/import/utils/extractZipAndUploadToS3.d.ts +2 -0
  133. package/import/utils/extractZipAndUploadToS3.js +98 -0
  134. package/import/utils/extractZipAndUploadToS3.js.map +1 -0
  135. package/import/utils/getFileNameWithoutExt.d.ts +1 -0
  136. package/import/utils/getFileNameWithoutExt.js +11 -0
  137. package/import/utils/getFileNameWithoutExt.js.map +1 -0
  138. package/import/utils/index.d.ts +9 -0
  139. package/import/utils/index.js +104 -0
  140. package/import/utils/index.js.map +1 -0
  141. package/import/utils/initialStats.d.ts +7 -0
  142. package/import/utils/initialStats.js +16 -0
  143. package/import/utils/initialStats.js.map +1 -0
  144. package/import/utils/prepareDataDirMap.d.ts +6 -0
  145. package/import/utils/prepareDataDirMap.js +29 -0
  146. package/import/utils/prepareDataDirMap.js.map +1 -0
  147. package/import/utils/updateFilesInData.d.ts +8 -0
  148. package/import/utils/updateFilesInData.js +49 -0
  149. package/import/utils/updateFilesInData.js.map +1 -0
  150. package/import/utils/uploadAssets.d.ts +10 -0
  151. package/import/utils/uploadAssets.js +87 -0
  152. package/import/utils/uploadAssets.js.map +1 -0
  153. package/import/utils/uploadFilesFromS3.d.ts +3 -0
  154. package/import/utils/uploadFilesFromS3.js +19 -0
  155. package/import/utils/uploadFilesFromS3.js.map +1 -0
  156. package/mockSecurity.js +0 -3
  157. package/mockSecurity.js.map +1 -1
  158. package/package.json +34 -37
  159. package/types.d.ts +21 -0
  160. package/types.js +60 -13
  161. package/types.js.map +1 -1
  162. package/import/process/blocksHandler.js.map +0 -1
  163. package/import/process/pagesHandler.js.map +0 -1
  164. package/import/utils.d.ts +0 -49
  165. package/import/utils.js +0 -641
  166. package/import/utils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["configuration","createRawEventHandler","payload","context","type","blocksHandler","pagesHandler"],"sources":["index.ts"],"sourcesContent":["import { ImportExportTask, PbImportExportContext } from \"~/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\nimport { blocksHandler } from \"~/import/create/blocksHandler\";\nimport { pagesHandler } from \"~/import/create/pagesHandler\";\n\nexport interface Configuration {\n handlers: {\n process: string;\n };\n}\n\nexport interface Payload {\n category: string;\n zipFileUrl: string;\n task: ImportExportTask;\n type: string;\n identity: SecurityIdentity;\n}\nexport interface Response {\n data: string | null;\n error: Partial<Error> | null;\n}\n\n/**\n * Handles the import page workflow.\n */\nexport default (configuration: Configuration) => {\n return createRawEventHandler<Payload, PbImportExportContext, Response>(\n async ({ payload, context }) => {\n if (payload.type === \"block\") {\n return await blocksHandler(configuration, payload, context);\n } else {\n return await pagesHandler(configuration, payload, context);\n }\n }\n );\n};\n"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AAoBA;AACA;AACA;eACgBA,aAAD,IAAkC;EAC7C,OAAO,IAAAC,iCAAA,EACH,OAAO;IAAEC,OAAF;IAAWC;EAAX,CAAP,KAAgC;IAC5B,IAAID,OAAO,CAACE,IAAR,KAAiB,OAArB,EAA8B;MAC1B,OAAO,MAAM,IAAAC,4BAAA,EAAcL,aAAd,EAA6BE,OAA7B,EAAsCC,OAAtC,CAAb;IACH,CAFD,MAEO;MACH,OAAO,MAAM,IAAAG,0BAAA,EAAaN,aAAb,EAA4BE,OAA5B,EAAqCC,OAArC,CAAb;IACH;EACJ,CAPE,CAAP;AASH,C"}
1
+ {"version":3,"names":["_handlerAws","require","_blocksHandler","_formsHandler","_pagesHandler","_templatesHandler","_default","configuration","createRawEventHandler","payload","context","security","withoutAuthorization","type","blocksHandler","formsHandler","templatesHandler","pagesHandler","exports","default"],"sources":["index.ts"],"sourcesContent":["import { ImportExportTask, PbImportExportContext } from \"~/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\nimport { blocksHandler } from \"~/import/create/blocksHandler\";\nimport { formsHandler } from \"~/import/create/formsHandler\";\nimport { pagesHandler } from \"~/import/create/pagesHandler\";\nimport { templatesHandler } from \"~/import/create/templatesHandler\";\n\nexport interface Configuration {\n handlers: {\n process: string;\n };\n}\n\nexport interface Payload {\n category?: string;\n zipFileUrl: string;\n task: ImportExportTask;\n type: string;\n identity: SecurityIdentity;\n meta?: Record<string, any>;\n}\nexport interface Response {\n data: string | null;\n error: Partial<Error> | null;\n}\n\n/**\n * Handles the import page workflow.\n */\nexport default (configuration: Configuration) => {\n return createRawEventHandler<Payload, PbImportExportContext, Response>(\n async ({ payload, context }) => {\n return context.security.withoutAuthorization(() => {\n switch (payload.type) {\n case \"block\": {\n return blocksHandler(configuration, payload, context);\n }\n case \"form\": {\n return formsHandler(configuration, payload, context);\n }\n case \"template\": {\n return templatesHandler(configuration, payload, context);\n }\n default: {\n return pagesHandler(configuration, payload, context);\n }\n }\n });\n }\n );\n};\n"],"mappings":";;;;;;AAEA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,aAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAqBA;AACA;AACA;AAFA,IAAAK,QAAA,GAGgBC,aAA4B,IAAK;EAC7C,OAAO,IAAAC,iCAAqB,EACxB,OAAO;IAAEC,OAAO;IAAEC;EAAQ,CAAC,KAAK;IAC5B,OAAOA,OAAO,CAACC,QAAQ,CAACC,oBAAoB,CAAC,MAAM;MAC/C,QAAQH,OAAO,CAACI,IAAI;QAChB,KAAK,OAAO;UAAE;YACV,OAAO,IAAAC,4BAAa,EAACP,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;UACzD;QACA,KAAK,MAAM;UAAE;YACT,OAAO,IAAAK,0BAAY,EAACR,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;UACxD;QACA,KAAK,UAAU;UAAE;YACb,OAAO,IAAAM,kCAAgB,EAACT,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;UAC5D;QACA;UAAS;YACL,OAAO,IAAAO,0BAAY,EAACV,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;UACxD;MACJ;IACJ,CAAC,CAAC;EACN,CACJ,CAAC;AACL,CAAC;AAAAQ,OAAA,CAAAC,OAAA,GAAAb,QAAA"}
@@ -4,17 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.pagesHandler = void 0;
7
-
8
7
  var _types = require("../../types");
9
-
10
8
  var _utils = require("../utils");
11
-
12
9
  var _client = require("../../client");
13
-
14
10
  var _mockSecurity = require("../../mockSecurity");
15
-
16
11
  var _utils2 = require("@webiny/utils");
17
-
12
+ var _extractAndUploadZipFileContents = require("../utils/extractAndUploadZipFileContents");
18
13
  const pagesHandler = async (configuration, payload, context) => {
19
14
  const log = console.log;
20
15
  const {
@@ -25,12 +20,11 @@ const pagesHandler = async (configuration, payload, context) => {
25
20
  type,
26
21
  category,
27
22
  zipFileUrl,
28
- identity
23
+ identity,
24
+ meta
29
25
  } = payload;
30
-
31
26
  try {
32
27
  log("RUNNING Import Pages Create");
33
-
34
28
  if (!zipFileUrl) {
35
29
  return {
36
30
  data: null,
@@ -39,29 +33,29 @@ const pagesHandler = async (configuration, payload, context) => {
39
33
  }
40
34
  };
41
35
  }
36
+ (0, _mockSecurity.mockSecurity)(identity, context);
37
+ // Step 1: Read the zip file
38
+ const pageImportDataList = await (0, _extractAndUploadZipFileContents.extractAndUploadZipFileContents)(zipFileUrl);
42
39
 
43
- (0, _mockSecurity.mockSecurity)(identity, context); // Step 1: Read the zip file
44
-
45
- const pageImportDataList = await (0, _utils.readExtractAndUploadZipFileContents)(zipFileUrl); // For each page create a subtask and invoke the process handler
46
-
40
+ // For each page create a subtask and invoke the process handler
47
41
  for (let i = 0; i < pageImportDataList.length; i++) {
48
- const pagesDirMap = pageImportDataList[i]; // Create sub task
49
-
42
+ const pagesDirMap = pageImportDataList[i];
43
+ // Create sub-task
50
44
  const subtask = await pageBuilder.importExportTask.createSubTask(task.id, (0, _utils2.zeroPad)(i + 1, 5), {
51
45
  status: _types.ImportExportTaskStatus.PENDING,
52
46
  data: {
53
47
  pageKey: pagesDirMap.key,
54
48
  category,
55
49
  zipFileUrl,
50
+ meta,
56
51
  input: {
57
52
  fileUploadsData: pagesDirMap
58
53
  }
59
54
  }
60
55
  });
61
56
  log(`Added SUB_TASK "${subtask.id}" to queue.`);
62
- } // Update main task status
63
-
64
-
57
+ }
58
+ // Update main task status
65
59
  await pageBuilder.importExportTask.updateTask(task.id, {
66
60
  status: _types.ImportExportTaskStatus.PROCESSING,
67
61
  stats: (0, _utils.initialStats)(pageImportDataList.length)
@@ -80,6 +74,7 @@ const pagesHandler = async (configuration, payload, context) => {
80
74
  });
81
75
  } catch (e) {
82
76
  log("[IMPORT_PAGES_CREATE] Error => ", e);
77
+
83
78
  /**
84
79
  * In case of error, we'll update the task status to "failed",
85
80
  * so that, client can show notify the user appropriately.
@@ -100,11 +95,9 @@ const pagesHandler = async (configuration, payload, context) => {
100
95
  }
101
96
  };
102
97
  }
103
-
104
98
  return {
105
99
  data: "",
106
100
  error: null
107
101
  };
108
102
  };
109
-
110
103
  exports.pagesHandler = pagesHandler;
@@ -1 +1 @@
1
- {"version":3,"names":["pagesHandler","configuration","payload","context","log","console","pageBuilder","task","type","category","zipFileUrl","identity","data","error","message","mockSecurity","pageImportDataList","readExtractAndUploadZipFileContents","i","length","pagesDirMap","subtask","importExportTask","createSubTask","id","zeroPad","status","ImportExportTaskStatus","PENDING","pageKey","key","input","fileUploadsData","updateTask","PROCESSING","stats","initialStats","invokeHandlerClient","name","handlers","process","taskId","subTaskIndex","security","getIdentity","description","e","FAILED","code"],"sources":["pagesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { initialStats, readExtractAndUploadZipFileContents } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { Payload as ProcessPayload } from \"../process\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/create\";\n\nexport const pagesHandler = async (\n configuration: Configuration,\n payload: Payload,\n context: PbImportExportContext\n): Promise<Response> => {\n const log = console.log;\n\n const { pageBuilder } = context;\n const { task, type, category, zipFileUrl, identity } = payload;\n try {\n log(\"RUNNING Import Pages Create\");\n if (!zipFileUrl) {\n return {\n data: null,\n error: {\n message: `Missing \"zipFileUrl\"!`\n }\n };\n }\n mockSecurity(identity, context);\n // Step 1: Read the zip file\n const pageImportDataList = await readExtractAndUploadZipFileContents(zipFileUrl);\n\n // For each page create a subtask and invoke the process handler\n for (let i = 0; i < pageImportDataList.length; i++) {\n const pagesDirMap = pageImportDataList[i];\n // Create sub task\n const subtask = await pageBuilder.importExportTask.createSubTask(\n task.id,\n zeroPad(i + 1, 5),\n {\n status: ImportExportTaskStatus.PENDING,\n data: {\n pageKey: pagesDirMap.key,\n category,\n zipFileUrl,\n input: {\n fileUploadsData: pagesDirMap\n }\n }\n }\n );\n log(`Added SUB_TASK \"${subtask.id}\" to queue.`);\n }\n // Update main task status\n await pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.PROCESSING,\n stats: initialStats(pageImportDataList.length)\n });\n\n await invokeHandlerClient<ProcessPayload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId: task.id,\n // Execute \"Process\" for the first sub task.\n subTaskIndex: 1,\n type,\n identity: context.security.getIdentity()\n },\n description: \"Import pages - process - first\"\n });\n } catch (e) {\n log(\"[IMPORT_PAGES_CREATE] Error => \", e);\n\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\n await pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n code: e.code || \"EXPORT_FAILED\"\n }\n });\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n }\n\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","_utils","_client","_mockSecurity","_utils2","_extractAndUploadZipFileContents","pagesHandler","configuration","payload","context","log","console","pageBuilder","task","type","category","zipFileUrl","identity","meta","data","error","message","mockSecurity","pageImportDataList","extractAndUploadZipFileContents","i","length","pagesDirMap","subtask","importExportTask","createSubTask","id","zeroPad","status","ImportExportTaskStatus","PENDING","pageKey","key","input","fileUploadsData","updateTask","PROCESSING","stats","initialStats","invokeHandlerClient","name","handlers","process","taskId","subTaskIndex","security","getIdentity","description","e","FAILED","code","exports"],"sources":["pagesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { initialStats } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { Payload as ProcessPayload } from \"../process\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/create\";\nimport { extractAndUploadZipFileContents } from \"~/import/utils/extractAndUploadZipFileContents\";\n\nexport const pagesHandler = async (\n configuration: Configuration,\n payload: Payload,\n context: PbImportExportContext\n): Promise<Response> => {\n const log = console.log;\n\n const { pageBuilder } = context;\n const { task, type, category, zipFileUrl, identity, meta } = payload;\n try {\n log(\"RUNNING Import Pages Create\");\n if (!zipFileUrl) {\n return {\n data: null,\n error: {\n message: `Missing \"zipFileUrl\"!`\n }\n };\n }\n mockSecurity(identity, context);\n // Step 1: Read the zip file\n const pageImportDataList = await extractAndUploadZipFileContents(zipFileUrl);\n\n // For each page create a subtask and invoke the process handler\n for (let i = 0; i < pageImportDataList.length; i++) {\n const pagesDirMap = pageImportDataList[i];\n // Create sub-task\n const subtask = await pageBuilder.importExportTask.createSubTask(\n task.id,\n zeroPad(i + 1, 5),\n {\n status: ImportExportTaskStatus.PENDING,\n data: {\n pageKey: pagesDirMap.key,\n category,\n zipFileUrl,\n meta,\n input: {\n fileUploadsData: pagesDirMap\n }\n }\n }\n );\n log(`Added SUB_TASK \"${subtask.id}\" to queue.`);\n }\n // Update main task status\n await pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.PROCESSING,\n stats: initialStats(pageImportDataList.length)\n });\n\n await invokeHandlerClient<ProcessPayload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId: task.id,\n // Execute \"Process\" for the first sub task.\n subTaskIndex: 1,\n type,\n identity: context.security.getIdentity()\n },\n description: \"Import pages - process - first\"\n });\n } catch (e) {\n log(\"[IMPORT_PAGES_CREATE] Error => \", e);\n\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\n await pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n code: e.code || \"EXPORT_FAILED\"\n }\n });\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n }\n\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PbImportExportContext } from "../../types";
2
+ import { Configuration, Payload, Response } from ".";
3
+ export declare const templatesHandler: (configuration: Configuration, payload: Payload, context: PbImportExportContext) => Promise<Response>;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.templatesHandler = void 0;
7
+ var _types = require("../../types");
8
+ var _utils = require("../utils");
9
+ var _client = require("../../client");
10
+ var _mockSecurity = require("../../mockSecurity");
11
+ var _utils2 = require("@webiny/utils");
12
+ var _extractAndUploadZipFileContents = require("../utils/extractAndUploadZipFileContents");
13
+ const templatesHandler = async (configuration, payload, context) => {
14
+ const log = console.log;
15
+ const {
16
+ pageBuilder
17
+ } = context;
18
+ const {
19
+ task,
20
+ type,
21
+ zipFileUrl,
22
+ identity
23
+ } = payload;
24
+ try {
25
+ log("RUNNING Import Templates Create");
26
+ if (!zipFileUrl) {
27
+ return {
28
+ data: null,
29
+ error: {
30
+ message: `Missing "zipFileUrl"!`
31
+ }
32
+ };
33
+ }
34
+ (0, _mockSecurity.mockSecurity)(identity, context);
35
+ // Step 1: Read the zip file
36
+ const templateImportDataList = await (0, _extractAndUploadZipFileContents.extractAndUploadZipFileContents)(zipFileUrl);
37
+
38
+ // For each template create a subtask and invoke the process handler
39
+ for (let i = 0; i < templateImportDataList.length; i++) {
40
+ const templatesDirMap = templateImportDataList[i];
41
+ // Create sub task
42
+ const subtask = await pageBuilder.importExportTask.createSubTask(task.id, (0, _utils2.zeroPad)(i + 1, 5), {
43
+ status: _types.ImportExportTaskStatus.PENDING,
44
+ data: {
45
+ templateKey: templatesDirMap.key,
46
+ zipFileUrl,
47
+ input: {
48
+ fileUploadsData: templatesDirMap
49
+ }
50
+ }
51
+ });
52
+ log(`Added SUB_TASK "${subtask.id}" to queue.`);
53
+ }
54
+ // Update main task status
55
+ await pageBuilder.importExportTask.updateTask(task.id, {
56
+ status: _types.ImportExportTaskStatus.PROCESSING,
57
+ stats: (0, _utils.initialStats)(templateImportDataList.length)
58
+ });
59
+ await (0, _client.invokeHandlerClient)({
60
+ context,
61
+ name: configuration.handlers.process,
62
+ payload: {
63
+ taskId: task.id,
64
+ // Execute "Process" for the first sub task.
65
+ subTaskIndex: 1,
66
+ type,
67
+ identity: context.security.getIdentity()
68
+ },
69
+ description: "Import templates - process - first"
70
+ });
71
+ } catch (e) {
72
+ log("[IMPORT_TEMPLATES_CREATE] Error => ", e);
73
+
74
+ /**
75
+ * In case of error, we'll update the task status to "failed",
76
+ * so that, client can show notify the user appropriately.
77
+ */
78
+
79
+ await pageBuilder.importExportTask.updateTask(task.id, {
80
+ status: _types.ImportExportTaskStatus.FAILED,
81
+ error: {
82
+ name: e.name,
83
+ message: e.message,
84
+ code: e.code || "EXPORT_FAILED"
85
+ }
86
+ });
87
+ return {
88
+ data: null,
89
+ error: {
90
+ message: e.message
91
+ }
92
+ };
93
+ }
94
+ return {
95
+ data: "",
96
+ error: null
97
+ };
98
+ };
99
+ exports.templatesHandler = templatesHandler;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","_utils","_client","_mockSecurity","_utils2","_extractAndUploadZipFileContents","templatesHandler","configuration","payload","context","log","console","pageBuilder","task","type","zipFileUrl","identity","data","error","message","mockSecurity","templateImportDataList","extractAndUploadZipFileContents","i","length","templatesDirMap","subtask","importExportTask","createSubTask","id","zeroPad","status","ImportExportTaskStatus","PENDING","templateKey","key","input","fileUploadsData","updateTask","PROCESSING","stats","initialStats","invokeHandlerClient","name","handlers","process","taskId","subTaskIndex","security","getIdentity","description","e","FAILED","code","exports"],"sources":["templatesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { initialStats } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { Payload as ProcessPayload } from \"../process\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/create\";\nimport { extractAndUploadZipFileContents } from \"~/import/utils/extractAndUploadZipFileContents\";\n\nexport const templatesHandler = async (\n configuration: Configuration,\n payload: Payload,\n context: PbImportExportContext\n): Promise<Response> => {\n const log = console.log;\n\n const { pageBuilder } = context;\n const { task, type, zipFileUrl, identity } = payload;\n try {\n log(\"RUNNING Import Templates Create\");\n if (!zipFileUrl) {\n return {\n data: null,\n error: {\n message: `Missing \"zipFileUrl\"!`\n }\n };\n }\n mockSecurity(identity, context);\n // Step 1: Read the zip file\n const templateImportDataList = await extractAndUploadZipFileContents(zipFileUrl);\n\n // For each template create a subtask and invoke the process handler\n for (let i = 0; i < templateImportDataList.length; i++) {\n const templatesDirMap = templateImportDataList[i];\n // Create sub task\n const subtask = await pageBuilder.importExportTask.createSubTask(\n task.id,\n zeroPad(i + 1, 5),\n {\n status: ImportExportTaskStatus.PENDING,\n data: {\n templateKey: templatesDirMap.key,\n zipFileUrl,\n input: {\n fileUploadsData: templatesDirMap\n }\n }\n }\n );\n log(`Added SUB_TASK \"${subtask.id}\" to queue.`);\n }\n // Update main task status\n await pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.PROCESSING,\n stats: initialStats(templateImportDataList.length)\n });\n\n await invokeHandlerClient<ProcessPayload>({\n context,\n name: configuration.handlers.process,\n payload: {\n taskId: task.id,\n // Execute \"Process\" for the first sub task.\n subTaskIndex: 1,\n type,\n identity: context.security.getIdentity()\n },\n description: \"Import templates - process - first\"\n });\n } catch (e) {\n log(\"[IMPORT_TEMPLATES_CREATE] Error => \", e);\n\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\n await pageBuilder.importExportTask.updateTask(task.id, {\n status: ImportExportTaskStatus.FAILED,\n error: {\n name: e.name,\n message: e.message,\n code: e.code || \"EXPORT_FAILED\"\n }\n });\n\n return {\n data: null,\n error: {\n message: e.message\n }\n };\n }\n\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { PbImportExportContext } from "../../types";
2
- import { Configuration, Payload, Response } from ".";
1
+ import { PbImportExportContext } from "../../../types";
2
+ import { Configuration, Payload, Response } from "..";
3
3
  export declare const blocksHandler: (configuration: Configuration, payload: Payload, context: PbImportExportContext) => Promise<Response>;
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.blocksHandler = void 0;
7
-
8
- var _types = require("../../types");
9
-
10
- var _utils = require("../utils");
11
-
12
- var _client = require("../../client");
13
-
14
- var _mockSecurity = require("../../mockSecurity");
15
-
16
- var _utils2 = require("@webiny/utils");
17
-
7
+ var _types = require("../../../types");
8
+ var _client = require("../../../client");
9
+ var _mockSecurity = require("../../../mockSecurity");
10
+ var _utils = require("@webiny/utils");
11
+ var _importBlock = require("./importBlock");
18
12
  const blocksHandler = async (configuration, payload, context) => {
19
13
  const log = console.log;
20
14
  let subTask;
@@ -29,22 +23,22 @@ const blocksHandler = async (configuration, payload, context) => {
29
23
  subTaskIndex,
30
24
  type,
31
25
  identity
32
- } = payload; // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks
26
+ } = payload;
27
+ // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks
33
28
  // and this Lambda is invoked internally, without credentials.
34
-
35
29
  (0, _mockSecurity.mockSecurity)(identity, context);
36
-
37
30
  try {
38
31
  /*
39
32
  * Note: We're not going to DB for getting next sub-task to process,
40
33
  * because the data might be out of sync due to GSI eventual consistency.
41
34
  */
42
- subTask = await pageBuilder.importExportTask.getSubTask(taskId, (0, _utils2.zeroPad)(subTaskIndex, 5));
35
+
36
+ subTask = await pageBuilder.importExportTask.getSubTask(taskId, (0, _utils.zeroPad)(subTaskIndex, 5));
37
+
43
38
  /**
44
39
  * Base condition!!
45
40
  * Bail out early, if task not found or task's status is not "pending".
46
41
  */
47
-
48
42
  if (!subTask || subTask.status !== _types.ImportExportTaskStatus.PENDING) {
49
43
  noPendingTask = true;
50
44
  return {
@@ -54,45 +48,47 @@ const blocksHandler = async (configuration, payload, context) => {
54
48
  } else {
55
49
  noPendingTask = false;
56
50
  }
57
-
58
51
  prevStatusOfSubTask = subTask.status;
59
52
  log(`Fetched sub task => ${subTask.id}`);
60
53
  console.log("subTask", subTask);
61
54
  const {
62
55
  blockKey,
63
- category,
64
56
  zipFileKey,
65
57
  input
66
58
  } = subTask.data;
67
59
  const {
68
60
  fileUploadsData
69
61
  } = input;
70
- log(`Processing block key "${blockKey}"`); // Mark task status as PROCESSING
62
+ log(`Processing block key "${blockKey}"`);
71
63
 
64
+ // Mark task status as PROCESSING
72
65
  subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
73
66
  status: _types.ImportExportTaskStatus.PROCESSING
74
- }); // Update stats in main task
75
-
67
+ });
68
+ // Update stats in main task
76
69
  await pageBuilder.importExportTask.updateStats(taskId, {
77
70
  prevStatus: prevStatusOfSubTask,
78
71
  nextStatus: _types.ImportExportTaskStatus.PROCESSING
79
72
  });
80
- prevStatusOfSubTask = subTask.status; // Real job
73
+ prevStatusOfSubTask = subTask.status;
81
74
 
82
- const block = await (0, _utils.importBlock)({
75
+ // Real job
76
+ const block = await (0, _importBlock.importBlock)({
83
77
  context,
84
78
  blockKey,
85
79
  key: zipFileKey,
86
80
  fileUploadsData
87
- }); // Create a block
81
+ });
88
82
 
83
+ // Create a block
89
84
  const pbBlock = await context.pageBuilder.createPageBlock({
90
85
  name: block.name,
91
- blockCategory: category,
86
+ blockCategory: block.blockCategory,
92
87
  content: block.content,
93
88
  preview: block.preview
94
- }); // Update task record in DB
89
+ });
95
90
 
91
+ // Update task record in DB
96
92
  subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
97
93
  status: _types.ImportExportTaskStatus.COMPLETED,
98
94
  data: {
@@ -102,8 +98,8 @@ const blocksHandler = async (configuration, payload, context) => {
102
98
  name: pbBlock.name
103
99
  }
104
100
  }
105
- }); // Update stats in main task
106
-
101
+ });
102
+ // Update stats in main task
107
103
  await pageBuilder.importExportTask.updateStats(taskId, {
108
104
  prevStatus: prevStatusOfSubTask,
109
105
  nextStatus: _types.ImportExportTaskStatus.COMPLETED
@@ -111,7 +107,6 @@ const blocksHandler = async (configuration, payload, context) => {
111
107
  prevStatusOfSubTask = subTask.status;
112
108
  } catch (e) {
113
109
  log("[IMPORT_BLOCKS_PROCESS] Error => ", e.message);
114
-
115
110
  if (subTask && subTask.id) {
116
111
  /**
117
112
  * In case of error, we'll update the task status to "failed",
@@ -124,15 +119,15 @@ const blocksHandler = async (configuration, payload, context) => {
124
119
  message: e.message,
125
120
  code: "IMPORT_FAILED"
126
121
  }
127
- }); // Update stats in main task
122
+ });
128
123
 
124
+ // Update stats in main task
129
125
  await pageBuilder.importExportTask.updateStats(taskId, {
130
126
  prevStatus: prevStatusOfSubTask,
131
127
  nextStatus: _types.ImportExportTaskStatus.FAILED
132
128
  });
133
129
  prevStatusOfSubTask = subTask.status;
134
130
  }
135
-
136
131
  return {
137
132
  data: null,
138
133
  error: {
@@ -150,8 +145,8 @@ const blocksHandler = async (configuration, payload, context) => {
150
145
  }
151
146
  });
152
147
  } else {
153
- log(`Invoking PROCESS for task "${subTaskIndex + 1}"`); // We want to continue with Self invocation no matter if current block error out.
154
-
148
+ log(`Invoking PROCESS for task "${subTaskIndex + 1}"`);
149
+ // We want to continue with Self invocation no matter if current block error out.
155
150
  await (0, _client.invokeHandlerClient)({
156
151
  context,
157
152
  name: configuration.handlers.process,
@@ -165,11 +160,9 @@ const blocksHandler = async (configuration, payload, context) => {
165
160
  });
166
161
  }
167
162
  }
168
-
169
163
  return {
170
164
  data: "",
171
165
  error: null
172
166
  };
173
167
  };
174
-
175
168
  exports.blocksHandler = blocksHandler;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","_client","_mockSecurity","_utils","_importBlock","blocksHandler","configuration","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","ImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","type","identity","mockSecurity","importExportTask","getSubTask","zeroPad","status","data","error","id","blockKey","zipFileKey","input","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","block","importBlock","key","pbBlock","createPageBlock","name","blockCategory","content","preview","COMPLETED","message","e","FAILED","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity","description","exports"],"sources":["blocksHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\nimport { importBlock } from \"./importBlock\";\n\nexport const blocksHandler = 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 Block 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 console.log(\"subTask\", subTask);\n\n const { blockKey, zipFileKey, input } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing block key \"${blockKey}\"`);\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 block = await importBlock({\n context,\n blockKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a block\n const pbBlock = await context.pageBuilder.createPageBlock({\n name: block.name,\n blockCategory: block.blockCategory,\n content: block.content,\n preview: block.preview\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 block: {\n id: pbBlock.id,\n name: pbBlock.name\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_BLOCKS_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 blocks.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current block 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 blocks - process - subtask\"\n });\n }\n }\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { PbImportExportContext } from "../../../graphql/types";
2
+ import { FileUploadsData } from "../../../types";
3
+ import { PageBlock } from "@webiny/api-page-builder/types";
4
+ interface ImportBlockParams {
5
+ key: string;
6
+ blockKey: string;
7
+ context: PbImportExportContext;
8
+ fileUploadsData: FileUploadsData;
9
+ }
10
+ export declare function importBlock({ blockKey, context, fileUploadsData }: ImportBlockParams): Promise<Pick<PageBlock, "name" | "content" | "preview" | "blockCategory">>;
11
+ export {};
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.importBlock = importBlock;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _path = _interopRequireDefault(require("path"));
10
+ var _dotPropImmutable = _interopRequireDefault(require("dot-prop-immutable"));
11
+ var _loadJsonFile = _interopRequireDefault(require("load-json-file"));
12
+ var _fsExtra = require("fs-extra");
13
+ var _s3Stream = require("../../../export/s3Stream");
14
+ var _uploadAssets = require("../../utils/uploadAssets");
15
+ var _downloadInstallFiles = require("@webiny/api-page-builder/graphql/crud/install/utils/downloadInstallFiles");
16
+ var _deleteS3Folder = require("../../utils/deleteS3Folder");
17
+ var _updateFilesInData = require("../../utils/updateFilesInData");
18
+ var _constants = require("../../constants");
19
+ async function importBlock({
20
+ blockKey,
21
+ context,
22
+ fileUploadsData
23
+ }) {
24
+ const log = console.log;
25
+
26
+ // Making Directory for block in which we're going to extract the block data file.
27
+ const BLOCK_EXTRACT_DIR = _path.default.join(_constants.INSTALL_EXTRACT_DIR, blockKey);
28
+ (0, _fsExtra.ensureDirSync)(BLOCK_EXTRACT_DIR);
29
+ const blockDataFileKey = _dotPropImmutable.default.get(fileUploadsData, `data`);
30
+ const BLOCK_DATA_FILE_PATH = _path.default.join(BLOCK_EXTRACT_DIR, _path.default.basename(blockDataFileKey));
31
+ log(`Downloading Block data file: ${blockDataFileKey} at "${BLOCK_DATA_FILE_PATH}"`);
32
+ // Download and save block data file in disk.
33
+ await new Promise((resolve, reject) => {
34
+ _s3Stream.s3Stream.readStream(blockDataFileKey).on("error", reject).pipe((0, _fsExtra.createWriteStream)(BLOCK_DATA_FILE_PATH)).on("error", reject).on("finish", resolve);
35
+ });
36
+
37
+ // Load the block data file from disk.
38
+ log(`Load file ${blockDataFileKey}`);
39
+ const {
40
+ block,
41
+ category,
42
+ files
43
+ } = await (0, _loadJsonFile.default)(BLOCK_DATA_FILE_PATH);
44
+
45
+ // Only update block data if there are files.
46
+ if (files && Array.isArray(files) && files.length > 0) {
47
+ // Upload block assets.
48
+ const fileIdToNewFileMap = await (0, _uploadAssets.uploadAssets)({
49
+ context,
50
+ files,
51
+ fileUploadsData
52
+ });
53
+ console.log("After uploadAssets:fileIdToNewFileMap", JSON.stringify(Object.fromEntries(fileIdToNewFileMap)));
54
+ const settings = await context.fileManager.getSettings();
55
+ const {
56
+ srcPrefix = ""
57
+ } = settings || {};
58
+ (0, _updateFilesInData.updateFilesInData)({
59
+ data: block.content || {},
60
+ fileIdToNewFileMap,
61
+ srcPrefix
62
+ });
63
+ block.preview = updateBlockPreviewImage({
64
+ /**
65
+ * Casting as this is only a type error.
66
+ */
67
+ file: block.preview || {},
68
+ fileIdToNewFileMap,
69
+ srcPrefix
70
+ });
71
+ }
72
+
73
+ // Check if block category already exists
74
+ const blockCategory = await context.pageBuilder.getBlockCategory(category === null || category === void 0 ? void 0 : category.slug);
75
+ if (!blockCategory) {
76
+ await context.pageBuilder.createBlockCategory({
77
+ name: category.name,
78
+ slug: category.slug,
79
+ icon: category.icon,
80
+ description: category.description
81
+ });
82
+ }
83
+ log("Removing Directory for block...");
84
+ await (0, _downloadInstallFiles.deleteFile)(blockKey);
85
+ log(`Remove block contents from S3...`);
86
+ await (0, _deleteS3Folder.deleteS3Folder)(_path.default.dirname(fileUploadsData.data));
87
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, block), {}, {
88
+ blockCategory: category.slug
89
+ });
90
+ }
91
+ function updateBlockPreviewImage(params) {
92
+ const {
93
+ file: blockPreview,
94
+ fileIdToNewFileMap,
95
+ srcPrefix
96
+ } = params;
97
+ const newFile = fileIdToNewFileMap.get(blockPreview.id || "");
98
+ if (!newFile) {
99
+ console.log("Block preview file not found!");
100
+ return blockPreview;
101
+ }
102
+ const srcPrefixWithoutTrailingSlash = srcPrefix.endsWith("/") ? srcPrefix.slice(0, -1) : srcPrefix;
103
+ blockPreview.id = newFile.id;
104
+ blockPreview.src = `${srcPrefixWithoutTrailingSlash}/${newFile.key}`;
105
+ return blockPreview;
106
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_path","_interopRequireDefault","require","_dotPropImmutable","_loadJsonFile","_fsExtra","_s3Stream","_uploadAssets","_downloadInstallFiles","_deleteS3Folder","_updateFilesInData","_constants","importBlock","blockKey","context","fileUploadsData","log","console","BLOCK_EXTRACT_DIR","path","join","INSTALL_EXTRACT_DIR","ensureDirSync","blockDataFileKey","dotProp","get","BLOCK_DATA_FILE_PATH","basename","Promise","resolve","reject","s3Stream","readStream","on","pipe","createWriteStream","block","category","files","loadJson","Array","isArray","length","fileIdToNewFileMap","uploadAssets","JSON","stringify","Object","fromEntries","settings","fileManager","getSettings","srcPrefix","updateFilesInData","data","content","preview","updateBlockPreviewImage","file","blockCategory","pageBuilder","getBlockCategory","slug","createBlockCategory","name","icon","description","deleteFile","deleteS3Folder","dirname","_objectSpread2","default","params","blockPreview","newFile","id","srcPrefixWithoutTrailingSlash","endsWith","slice","src","key"],"sources":["importBlock.ts"],"sourcesContent":["import path from \"path\";\nimport dotProp from \"dot-prop-immutable\";\nimport loadJson from \"load-json-file\";\nimport { ensureDirSync, createWriteStream } from \"fs-extra\";\nimport { FileInput } from \"@webiny/api-file-manager/types\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport { File as ImageFile, FileUploadsData } from \"~/types\";\nimport { PageBlock } from \"@webiny/api-page-builder/types\";\nimport { s3Stream } from \"~/export/s3Stream\";\nimport { uploadAssets } from \"~/import/utils/uploadAssets\";\nimport { deleteFile } from \"@webiny/api-page-builder/graphql/crud/install/utils/downloadInstallFiles\";\nimport { deleteS3Folder } from \"~/import/utils/deleteS3Folder\";\nimport { updateFilesInData } from \"~/import/utils/updateFilesInData\";\nimport { INSTALL_EXTRACT_DIR } from \"~/import/constants\";\nimport { ExportedBlockData } from \"~/export/process/exporters/BlockExporter\";\n\ninterface ImportBlockParams {\n key: string;\n blockKey: string;\n context: PbImportExportContext;\n fileUploadsData: FileUploadsData;\n}\n\ninterface UpdateBlockPreviewImage {\n fileIdToNewFileMap: Map<string, FileInput>;\n srcPrefix: string;\n file: ImageFile;\n}\n\nexport async function importBlock({\n blockKey,\n context,\n fileUploadsData\n}: ImportBlockParams): Promise<Pick<PageBlock, \"name\" | \"content\" | \"preview\" | \"blockCategory\">> {\n const log = console.log;\n\n // Making Directory for block in which we're going to extract the block data file.\n const BLOCK_EXTRACT_DIR = path.join(INSTALL_EXTRACT_DIR, blockKey);\n ensureDirSync(BLOCK_EXTRACT_DIR);\n\n const blockDataFileKey = dotProp.get(fileUploadsData, `data`);\n const BLOCK_DATA_FILE_PATH = path.join(BLOCK_EXTRACT_DIR, path.basename(blockDataFileKey));\n\n log(`Downloading Block data file: ${blockDataFileKey} at \"${BLOCK_DATA_FILE_PATH}\"`);\n // Download and save block data file in disk.\n await new Promise((resolve, reject) => {\n s3Stream\n .readStream(blockDataFileKey)\n .on(\"error\", reject)\n .pipe(createWriteStream(BLOCK_DATA_FILE_PATH))\n .on(\"error\", reject)\n .on(\"finish\", resolve);\n });\n\n // Load the block data file from disk.\n log(`Load file ${blockDataFileKey}`);\n const { block, category, files } = await loadJson<ExportedBlockData>(BLOCK_DATA_FILE_PATH);\n\n // Only update block data if there are files.\n if (files && Array.isArray(files) && files.length > 0) {\n // Upload block assets.\n const fileIdToNewFileMap = await uploadAssets({\n context,\n files,\n fileUploadsData\n });\n\n console.log(\n \"After uploadAssets:fileIdToNewFileMap\",\n JSON.stringify(Object.fromEntries(fileIdToNewFileMap))\n );\n\n const settings = await context.fileManager.getSettings();\n\n const { srcPrefix = \"\" } = settings || {};\n updateFilesInData({\n data: block.content || {},\n fileIdToNewFileMap,\n srcPrefix\n });\n\n block.preview = updateBlockPreviewImage({\n /**\n * Casting as this is only a type error.\n */\n file: (block.preview as ImageFile) || {},\n fileIdToNewFileMap,\n srcPrefix\n });\n }\n\n // Check if block category already exists\n const blockCategory = await context.pageBuilder.getBlockCategory(category?.slug);\n if (!blockCategory) {\n await context.pageBuilder.createBlockCategory({\n name: category.name,\n slug: category.slug,\n icon: category.icon,\n description: category.description\n });\n }\n\n log(\"Removing Directory for block...\");\n await deleteFile(blockKey);\n\n log(`Remove block contents from S3...`);\n await deleteS3Folder(path.dirname(fileUploadsData.data));\n\n return { ...block, blockCategory: category.slug };\n}\n\nfunction updateBlockPreviewImage(params: UpdateBlockPreviewImage): ImageFile {\n const { file: blockPreview, fileIdToNewFileMap, srcPrefix } = params;\n const newFile = fileIdToNewFileMap.get(blockPreview.id || \"\");\n\n if (!newFile) {\n console.log(\"Block preview file not found!\");\n return blockPreview;\n }\n\n const srcPrefixWithoutTrailingSlash = srcPrefix.endsWith(\"/\")\n ? srcPrefix.slice(0, -1)\n : srcPrefix;\n\n blockPreview.id = newFile.id;\n blockPreview.src = `${srcPrefixWithoutTrailingSlash}/${newFile.key}`;\n\n return blockPreview;\n}\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PbImportExportContext } from "../../../types";
2
+ import { Configuration, Payload, Response } from "..";
3
+ export declare const formsHandler: (configuration: Configuration, payload: Payload, context: PbImportExportContext) => Promise<Response>;