@webiny/api-page-builder-import-export 0.0.0-unstable.d16f688daf → 0.0.0-unstable.d65ec29d44

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 (84) 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/index.js +14 -9
  6. package/export/combine/index.js.map +1 -1
  7. package/export/combine/pagesHandler.js +11 -18
  8. package/export/combine/pagesHandler.js.map +1 -1
  9. package/export/combine/templatesHandler.d.ts +6 -0
  10. package/export/combine/templatesHandler.js +99 -0
  11. package/export/combine/templatesHandler.js.map +1 -0
  12. package/export/process/blocksHandler.js +18 -32
  13. package/export/process/blocksHandler.js.map +1 -1
  14. package/export/process/index.js +14 -9
  15. package/export/process/index.js.map +1 -1
  16. package/export/process/pagesHandler.js +19 -34
  17. package/export/process/pagesHandler.js.map +1 -1
  18. package/export/process/templatesHandler.d.ts +6 -0
  19. package/export/process/templatesHandler.js +166 -0
  20. package/export/process/templatesHandler.js.map +1 -0
  21. package/export/s3Stream.js +1 -20
  22. package/export/s3Stream.js.map +1 -1
  23. package/export/utils.d.ts +7 -1
  24. package/export/utils.js +57 -32
  25. package/export/utils.js.map +1 -1
  26. package/export/zipper.js +29 -41
  27. package/export/zipper.js.map +1 -1
  28. package/graphql/crud/blocks.crud.js +19 -37
  29. package/graphql/crud/blocks.crud.js.map +1 -1
  30. package/graphql/crud/importExportTasks.crud.js +9 -57
  31. package/graphql/crud/importExportTasks.crud.js.map +1 -1
  32. package/graphql/crud/pages.crud.js +25 -41
  33. package/graphql/crud/pages.crud.js.map +1 -1
  34. package/graphql/crud/templates.crud.d.ts +4 -0
  35. package/graphql/crud/templates.crud.js +124 -0
  36. package/graphql/crud/templates.crud.js.map +1 -0
  37. package/graphql/crud.js +2 -7
  38. package/graphql/crud.js.map +1 -1
  39. package/graphql/graphql/blocks.gql.js +1 -6
  40. package/graphql/graphql/blocks.gql.js.map +1 -1
  41. package/graphql/graphql/importExportTasks.gql.js +1 -6
  42. package/graphql/graphql/importExportTasks.gql.js.map +1 -1
  43. package/graphql/graphql/pages.gql.js +2 -7
  44. package/graphql/graphql/pages.gql.js.map +1 -1
  45. package/graphql/graphql/templates.gql.d.ts +4 -0
  46. package/graphql/graphql/templates.gql.js +52 -0
  47. package/graphql/graphql/templates.gql.js.map +1 -0
  48. package/graphql/graphql/utils/resolve.d.ts +1 -1
  49. package/graphql/graphql/utils/resolve.js +0 -3
  50. package/graphql/graphql/utils/resolve.js.map +1 -1
  51. package/graphql/graphql.js +2 -6
  52. package/graphql/graphql.js.map +1 -1
  53. package/graphql/index.js +0 -5
  54. package/graphql/index.js.map +1 -1
  55. package/graphql/types.d.ts +17 -0
  56. package/graphql/types.js.map +1 -1
  57. package/import/create/blocksHandler.js +9 -19
  58. package/import/create/blocksHandler.js.map +1 -1
  59. package/import/create/index.d.ts +2 -1
  60. package/import/create/index.js +14 -9
  61. package/import/create/index.js.map +1 -1
  62. package/import/create/pagesHandler.js +12 -20
  63. package/import/create/pagesHandler.js.map +1 -1
  64. package/import/create/templatesHandler.d.ts +3 -0
  65. package/import/create/templatesHandler.js +98 -0
  66. package/import/create/templatesHandler.js.map +1 -0
  67. package/import/process/blocksHandler.js +20 -26
  68. package/import/process/blocksHandler.js.map +1 -1
  69. package/import/process/index.d.ts +1 -0
  70. package/import/process/index.js +14 -9
  71. package/import/process/index.js.map +1 -1
  72. package/import/process/pagesHandler.js +26 -29
  73. package/import/process/pagesHandler.js.map +1 -1
  74. package/import/process/templatesHandler.d.ts +3 -0
  75. package/import/process/templatesHandler.js +169 -0
  76. package/import/process/templatesHandler.js.map +1 -0
  77. package/import/utils.d.ts +8 -1
  78. package/import/utils.js +103 -137
  79. package/import/utils.js.map +1 -1
  80. package/mockSecurity.js +0 -2
  81. package/mockSecurity.js.map +1 -1
  82. package/package.json +24 -24
  83. package/types.js +0 -5
  84. package/types.js.map +1 -1
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.blocksHandler = 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
-
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
  */
35
+
42
36
  subTask = await pageBuilder.importExportTask.getSubTask(taskId, (0, _utils2.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,7 +48,6 @@ 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);
@@ -67,32 +60,36 @@ const blocksHandler = async (configuration, payload, context) => {
67
60
  const {
68
61
  fileUploadsData
69
62
  } = input;
70
- log(`Processing block key "${blockKey}"`); // Mark task status as PROCESSING
63
+ log(`Processing block key "${blockKey}"`);
71
64
 
65
+ // Mark task status as PROCESSING
72
66
  subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
73
67
  status: _types.ImportExportTaskStatus.PROCESSING
74
- }); // Update stats in main task
75
-
68
+ });
69
+ // Update stats in main task
76
70
  await pageBuilder.importExportTask.updateStats(taskId, {
77
71
  prevStatus: prevStatusOfSubTask,
78
72
  nextStatus: _types.ImportExportTaskStatus.PROCESSING
79
73
  });
80
- prevStatusOfSubTask = subTask.status; // Real job
74
+ prevStatusOfSubTask = subTask.status;
81
75
 
76
+ // Real job
82
77
  const block = await (0, _utils.importBlock)({
83
78
  context,
84
79
  blockKey,
85
80
  key: zipFileKey,
86
81
  fileUploadsData
87
- }); // Create a block
82
+ });
88
83
 
84
+ // Create a block
89
85
  const pbBlock = await context.pageBuilder.createPageBlock({
90
86
  name: block.name,
91
87
  blockCategory: category,
92
88
  content: block.content,
93
89
  preview: block.preview
94
- }); // Update task record in DB
90
+ });
95
91
 
92
+ // Update task record in DB
96
93
  subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
97
94
  status: _types.ImportExportTaskStatus.COMPLETED,
98
95
  data: {
@@ -102,8 +99,8 @@ const blocksHandler = async (configuration, payload, context) => {
102
99
  name: pbBlock.name
103
100
  }
104
101
  }
105
- }); // Update stats in main task
106
-
102
+ });
103
+ // Update stats in main task
107
104
  await pageBuilder.importExportTask.updateStats(taskId, {
108
105
  prevStatus: prevStatusOfSubTask,
109
106
  nextStatus: _types.ImportExportTaskStatus.COMPLETED
@@ -111,7 +108,6 @@ const blocksHandler = async (configuration, payload, context) => {
111
108
  prevStatusOfSubTask = subTask.status;
112
109
  } catch (e) {
113
110
  log("[IMPORT_BLOCKS_PROCESS] Error => ", e.message);
114
-
115
111
  if (subTask && subTask.id) {
116
112
  /**
117
113
  * In case of error, we'll update the task status to "failed",
@@ -124,15 +120,15 @@ const blocksHandler = async (configuration, payload, context) => {
124
120
  message: e.message,
125
121
  code: "IMPORT_FAILED"
126
122
  }
127
- }); // Update stats in main task
123
+ });
128
124
 
125
+ // Update stats in main task
129
126
  await pageBuilder.importExportTask.updateStats(taskId, {
130
127
  prevStatus: prevStatusOfSubTask,
131
128
  nextStatus: _types.ImportExportTaskStatus.FAILED
132
129
  });
133
130
  prevStatusOfSubTask = subTask.status;
134
131
  }
135
-
136
132
  return {
137
133
  data: null,
138
134
  error: {
@@ -150,8 +146,8 @@ const blocksHandler = async (configuration, payload, context) => {
150
146
  }
151
147
  });
152
148
  } else {
153
- log(`Invoking PROCESS for task "${subTaskIndex + 1}"`); // We want to continue with Self invocation no matter if current block error out.
154
-
149
+ log(`Invoking PROCESS for task "${subTaskIndex + 1}"`);
150
+ // We want to continue with Self invocation no matter if current block error out.
155
151
  await (0, _client.invokeHandlerClient)({
156
152
  context,
157
153
  name: configuration.handlers.process,
@@ -165,11 +161,9 @@ const blocksHandler = async (configuration, payload, context) => {
165
161
  });
166
162
  }
167
163
  }
168
-
169
164
  return {
170
165
  data: "",
171
166
  error: null
172
167
  };
173
168
  };
174
-
175
169
  exports.blocksHandler = blocksHandler;
@@ -1 +1 @@
1
- {"version":3,"names":["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","category","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"],"sources":["blocksHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { importBlock } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\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, category, 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: category,\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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"}
1
+ {"version":3,"names":["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","category","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"],"sources":["blocksHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { importBlock } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\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, category, 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: category,\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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"}
@@ -10,6 +10,7 @@ export interface Payload {
10
10
  subTaskIndex: number;
11
11
  type: string;
12
12
  identity: SecurityIdentity;
13
+ meta?: Record<string, any>;
13
14
  }
14
15
  export interface Response {
15
16
  data: string | null;
@@ -4,24 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _handlerAws = require("@webiny/handler-aws");
9
-
10
8
  var _blocksHandler = require("./blocksHandler");
11
-
12
9
  var _pagesHandler = require("./pagesHandler");
13
-
10
+ var _templatesHandler = require("./templatesHandler");
14
11
  var _default = configuration => {
15
12
  return (0, _handlerAws.createRawEventHandler)(async ({
16
13
  payload,
17
14
  context
18
15
  }) => {
19
- if (payload.type === "block") {
20
- return await (0, _blocksHandler.blocksHandler)(configuration, payload, context);
21
- } else {
22
- return await (0, _pagesHandler.pagesHandler)(configuration, payload, context);
16
+ switch (payload.type) {
17
+ case "block":
18
+ {
19
+ return await (0, _blocksHandler.blocksHandler)(configuration, payload, context);
20
+ }
21
+ case "template":
22
+ {
23
+ return await (0, _templatesHandler.templatesHandler)(configuration, payload, context);
24
+ }
25
+ default:
26
+ {
27
+ return await (0, _pagesHandler.pagesHandler)(configuration, payload, context);
28
+ }
23
29
  }
24
30
  });
25
31
  };
26
-
27
32
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["configuration","createRawEventHandler","payload","context","type","blocksHandler","pagesHandler"],"sources":["index.ts"],"sourcesContent":["import { PbImportExportContext } from \"~/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\nimport { blocksHandler } from \"~/import/process/blocksHandler\";\nimport { pagesHandler } from \"~/import/process/pagesHandler\";\n\nexport interface Configuration {\n handlers: {\n process: string;\n };\n}\n\nexport interface Payload {\n taskId: string;\n subTaskIndex: number;\n type: string;\n identity: SecurityIdentity;\n}\n\nexport interface Response {\n data: string | null;\n error: Partial<Error> | null;\n}\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;;eAoBgBA,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":["configuration","createRawEventHandler","payload","context","type","blocksHandler","templatesHandler","pagesHandler"],"sources":["index.ts"],"sourcesContent":["import { PbImportExportContext } from \"~/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createRawEventHandler } from \"@webiny/handler-aws\";\nimport { blocksHandler } from \"~/import/process/blocksHandler\";\nimport { pagesHandler } from \"~/import/process/pagesHandler\";\nimport { templatesHandler } from \"~/import/process/templatesHandler\";\n\nexport interface Configuration {\n handlers: {\n process: string;\n };\n}\n\nexport interface Payload {\n taskId: string;\n subTaskIndex: number;\n type: string;\n identity: SecurityIdentity;\n meta?: Record<string, any>;\n}\n\nexport interface Response {\n data: string | null;\n error: Partial<Error> | null;\n}\n\nexport default (configuration: Configuration) => {\n return createRawEventHandler<Payload, PbImportExportContext, Response>(\n async ({ payload, context }) => {\n switch (payload.type) {\n case \"block\": {\n return await blocksHandler(configuration, payload, context);\n }\n case \"template\": {\n return await templatesHandler(configuration, payload, context);\n }\n default: {\n return await pagesHandler(configuration, payload, context);\n }\n }\n }\n );\n};\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AAAqE,eAqBrDA,aAA4B,IAAK;EAC7C,OAAO,IAAAC,iCAAqB,EACxB,OAAO;IAAEC,OAAO;IAAEC;EAAQ,CAAC,KAAK;IAC5B,QAAQD,OAAO,CAACE,IAAI;MAChB,KAAK,OAAO;QAAE;UACV,OAAO,MAAM,IAAAC,4BAAa,EAACL,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;QAC/D;MACA,KAAK,UAAU;QAAE;UACb,OAAO,MAAM,IAAAG,kCAAgB,EAACN,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;QAClE;MACA;QAAS;UACL,OAAO,MAAM,IAAAI,0BAAY,EAACP,aAAa,EAAEE,OAAO,EAAEC,OAAO,CAAC;QAC9D;IAAC;EAET,CAAC,CACJ;AACL,CAAC;AAAA"}
@@ -4,17 +4,11 @@ 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
-
18
12
  const pagesHandler = async (configuration, payload, context) => {
19
13
  const log = console.log;
20
14
  let subTask;
@@ -29,22 +23,22 @@ const pagesHandler = 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
  */
35
+
42
36
  subTask = await pageBuilder.importExportTask.getSubTask(taskId, (0, _utils2.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,47 +48,53 @@ const pagesHandler = 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
  const {
61
54
  pageKey,
62
55
  category,
63
56
  zipFileKey,
64
- input
57
+ input,
58
+ meta
65
59
  } = subTask.data;
66
60
  const {
67
61
  fileUploadsData
68
62
  } = input;
69
- log(`Processing page key "${pageKey}"`); // Mark task status as PROCESSING
63
+ log(`Processing page key "${pageKey}"`);
70
64
 
65
+ // Mark task status as PROCESSING
71
66
  subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
72
67
  status: _types.ImportExportTaskStatus.PROCESSING
73
- }); // Update stats in main task
74
-
68
+ });
69
+ // Update stats in main task
75
70
  await pageBuilder.importExportTask.updateStats(taskId, {
76
71
  prevStatus: prevStatusOfSubTask,
77
72
  nextStatus: _types.ImportExportTaskStatus.PROCESSING
78
73
  });
79
- prevStatusOfSubTask = subTask.status; // Real job
74
+ prevStatusOfSubTask = subTask.status;
80
75
 
76
+ // Real job
81
77
  const page = await (0, _utils.importPage)({
82
78
  context,
83
79
  pageKey,
84
80
  key: zipFileKey,
85
81
  fileUploadsData
86
- }); // Create a page
82
+ });
87
83
 
88
- let pbPage = await context.pageBuilder.createPage(category); // Update page with data
84
+ // Create a page
85
+ let pbPage = await context.pageBuilder.createPage(category, meta);
89
86
 
87
+ // Update page with data
90
88
  pbPage = await context.pageBuilder.updatePage(pbPage.id, {
91
89
  content: page.content,
92
90
  title: page.title,
93
91
  path: page.path,
94
92
  settings: page.settings
95
- }); // TODO: Publish page
96
- // Update task record in DB
93
+ });
97
94
 
95
+ // TODO: Publish page
96
+
97
+ // Update task record in DB
98
98
  subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
99
99
  status: _types.ImportExportTaskStatus.COMPLETED,
100
100
  data: {
@@ -106,8 +106,8 @@ const pagesHandler = async (configuration, payload, context) => {
106
106
  status: pbPage.status
107
107
  }
108
108
  }
109
- }); // Update stats in main task
110
-
109
+ });
110
+ // Update stats in main task
111
111
  await pageBuilder.importExportTask.updateStats(taskId, {
112
112
  prevStatus: prevStatusOfSubTask,
113
113
  nextStatus: _types.ImportExportTaskStatus.COMPLETED
@@ -115,7 +115,6 @@ const pagesHandler = async (configuration, payload, context) => {
115
115
  prevStatusOfSubTask = subTask.status;
116
116
  } catch (e) {
117
117
  log("[IMPORT_PAGES_PROCESS] Error => ", e);
118
-
119
118
  if (subTask && subTask.id) {
120
119
  /**
121
120
  * In case of error, we'll update the task status to "failed",
@@ -129,15 +128,15 @@ const pagesHandler = async (configuration, payload, context) => {
129
128
  stack: e.stack,
130
129
  code: "IMPORT_FAILED"
131
130
  }
132
- }); // Update stats in main task
131
+ });
133
132
 
133
+ // Update stats in main task
134
134
  await pageBuilder.importExportTask.updateStats(taskId, {
135
135
  prevStatus: prevStatusOfSubTask,
136
136
  nextStatus: _types.ImportExportTaskStatus.FAILED
137
137
  });
138
138
  prevStatusOfSubTask = subTask.status;
139
139
  }
140
-
141
140
  return {
142
141
  data: null,
143
142
  error: {
@@ -155,8 +154,8 @@ const pagesHandler = async (configuration, payload, context) => {
155
154
  }
156
155
  });
157
156
  } else {
158
- log(`Invoking PROCESS for task "${subTaskIndex + 1}"`); // We want to continue with Self invocation no matter if current page error out.
159
-
157
+ log(`Invoking PROCESS for task "${subTaskIndex + 1}"`);
158
+ // We want to continue with Self invocation no matter if current page error out.
160
159
  await (0, _client.invokeHandlerClient)({
161
160
  context,
162
161
  name: configuration.handlers.process,
@@ -170,11 +169,9 @@ const pagesHandler = async (configuration, payload, context) => {
170
169
  });
171
170
  }
172
171
  }
173
-
174
172
  return {
175
173
  data: "",
176
174
  error: null
177
175
  };
178
176
  };
179
-
180
177
  exports.pagesHandler = pagesHandler;
@@ -1 +1 @@
1
- {"version":3,"names":["pagesHandler","configuration","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","ImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","type","identity","mockSecurity","importExportTask","getSubTask","zeroPad","status","data","error","id","pageKey","category","zipFileKey","input","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","page","importPage","key","pbPage","createPage","updatePage","content","title","path","settings","COMPLETED","message","version","e","FAILED","name","stack","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity","description"],"sources":["pagesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { importPage } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\n\nexport const pagesHandler = 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 Page 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 { pageKey, category, zipFileKey, input } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing page key \"${pageKey}\"`);\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 page = await importPage({\n context,\n pageKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a page\n let pbPage = await context.pageBuilder.createPage(category);\n\n // Update page with data\n pbPage = await context.pageBuilder.updatePage(pbPage.id, {\n content: page.content,\n title: page.title,\n path: page.path,\n settings: page.settings\n });\n\n // TODO: Publish page\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 page: {\n id: pbPage.id,\n title: pbPage.title,\n version: pbPage.version,\n status: pbPage.status\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_PAGES_PROCESS] Error => \", e);\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 stack: e.stack,\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 pages.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current page 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 pages - process - subtask\"\n });\n }\n }\n return {\n data: \"\",\n error: null\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["pagesHandler","configuration","payload","context","log","console","subTask","noPendingTask","prevStatusOfSubTask","ImportExportTaskStatus","PENDING","pageBuilder","taskId","subTaskIndex","type","identity","mockSecurity","importExportTask","getSubTask","zeroPad","status","data","error","id","pageKey","category","zipFileKey","input","meta","fileUploadsData","updateSubTask","PROCESSING","updateStats","prevStatus","nextStatus","page","importPage","key","pbPage","createPage","updatePage","content","title","path","settings","COMPLETED","message","version","e","FAILED","name","stack","code","updateTask","invokeHandlerClient","handlers","process","security","getIdentity","description"],"sources":["pagesHandler.ts"],"sourcesContent":["import { ImportExportTaskStatus, PbImportExportContext } from \"~/types\";\nimport { importPage } from \"~/import/utils\";\nimport { invokeHandlerClient } from \"~/client\";\nimport { mockSecurity } from \"~/mockSecurity\";\nimport { zeroPad } from \"@webiny/utils\";\nimport { Configuration, Payload, Response } from \"~/import/process\";\n\nexport const pagesHandler = 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 Page 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 { pageKey, category, zipFileKey, input, meta } = subTask.data;\n const { fileUploadsData } = input;\n\n log(`Processing page key \"${pageKey}\"`);\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 page = await importPage({\n context,\n pageKey,\n key: zipFileKey,\n fileUploadsData\n });\n\n // Create a page\n let pbPage = await context.pageBuilder.createPage(category, meta);\n\n // Update page with data\n pbPage = await context.pageBuilder.updatePage(pbPage.id, {\n content: page.content,\n title: page.title,\n path: page.path,\n settings: page.settings\n });\n\n // TODO: Publish page\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 page: {\n id: pbPage.id,\n title: pbPage.title,\n version: pbPage.version,\n status: pbPage.status\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_PAGES_PROCESS] Error => \", e);\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 stack: e.stack,\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 pages.`\n }\n });\n } else {\n log(`Invoking PROCESS for task \"${subTaskIndex + 1}\"`);\n // We want to continue with Self invocation no matter if current page 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 pages - process - subtask\"\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,169 @@
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
+ const templatesHandler = async (configuration, payload, context) => {
13
+ const log = console.log;
14
+ let subTask;
15
+ let noPendingTask = true;
16
+ let prevStatusOfSubTask = _types.ImportExportTaskStatus.PENDING;
17
+ log("RUNNING Import Template Queue Process");
18
+ const {
19
+ pageBuilder
20
+ } = context;
21
+ const {
22
+ taskId,
23
+ subTaskIndex,
24
+ type,
25
+ identity
26
+ } = payload;
27
+ // Disable authorization; this is necessary because we call Page Builder CRUD methods which include authorization checks
28
+ // and this Lambda is invoked internally, without credentials.
29
+ (0, _mockSecurity.mockSecurity)(identity, context);
30
+ try {
31
+ /*
32
+ * Note: We're not going to DB for getting next sub-task to process,
33
+ * because the data might be out of sync due to GSI eventual consistency.
34
+ */
35
+
36
+ subTask = await pageBuilder.importExportTask.getSubTask(taskId, (0, _utils2.zeroPad)(subTaskIndex, 5));
37
+
38
+ /**
39
+ * Base condition!!
40
+ * Bail out early, if task not found or task's status is not "pending".
41
+ */
42
+ if (!subTask || subTask.status !== _types.ImportExportTaskStatus.PENDING) {
43
+ noPendingTask = true;
44
+ return {
45
+ data: "",
46
+ error: null
47
+ };
48
+ } else {
49
+ noPendingTask = false;
50
+ }
51
+ prevStatusOfSubTask = subTask.status;
52
+ log(`Fetched sub task => ${subTask.id}`);
53
+ const {
54
+ templateKey,
55
+ zipFileKey,
56
+ input
57
+ } = subTask.data;
58
+ const {
59
+ fileUploadsData
60
+ } = input;
61
+ log(`Processing template key "${templateKey}"`);
62
+
63
+ // Mark task status as PROCESSING
64
+ subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
65
+ status: _types.ImportExportTaskStatus.PROCESSING
66
+ });
67
+ // Update stats in main task
68
+ await pageBuilder.importExportTask.updateStats(taskId, {
69
+ prevStatus: prevStatusOfSubTask,
70
+ nextStatus: _types.ImportExportTaskStatus.PROCESSING
71
+ });
72
+ prevStatusOfSubTask = subTask.status;
73
+
74
+ // Real job
75
+ const template = await (0, _utils.importTemplate)({
76
+ context,
77
+ templateKey,
78
+ key: zipFileKey,
79
+ fileUploadsData
80
+ });
81
+
82
+ // Create a template
83
+ const pbTemplate = await context.pageBuilder.createPageTemplate({
84
+ title: template.title,
85
+ slug: template.slug,
86
+ tags: template.tags,
87
+ layout: template.layout,
88
+ description: template.description,
89
+ content: template.content
90
+ });
91
+
92
+ // Update task record in DB
93
+ subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
94
+ status: _types.ImportExportTaskStatus.COMPLETED,
95
+ data: {
96
+ message: "Done",
97
+ template: {
98
+ id: pbTemplate.id,
99
+ title: pbTemplate.title
100
+ }
101
+ }
102
+ });
103
+ // Update stats in main task
104
+ await pageBuilder.importExportTask.updateStats(taskId, {
105
+ prevStatus: prevStatusOfSubTask,
106
+ nextStatus: _types.ImportExportTaskStatus.COMPLETED
107
+ });
108
+ prevStatusOfSubTask = subTask.status;
109
+ } catch (e) {
110
+ log("[IMPORT_TEMPLATES_PROCESS] Error => ", e.message);
111
+ if (subTask && subTask.id) {
112
+ /**
113
+ * In case of error, we'll update the task status to "failed",
114
+ * so that, client can show notify the user appropriately.
115
+ */
116
+ subTask = await pageBuilder.importExportTask.updateSubTask(taskId, subTask.id, {
117
+ status: _types.ImportExportTaskStatus.FAILED,
118
+ error: {
119
+ name: e.name,
120
+ message: e.message,
121
+ code: "IMPORT_FAILED"
122
+ }
123
+ });
124
+
125
+ // Update stats in main task
126
+ await pageBuilder.importExportTask.updateStats(taskId, {
127
+ prevStatus: prevStatusOfSubTask,
128
+ nextStatus: _types.ImportExportTaskStatus.FAILED
129
+ });
130
+ prevStatusOfSubTask = subTask.status;
131
+ }
132
+ return {
133
+ data: null,
134
+ error: {
135
+ message: e.message
136
+ }
137
+ };
138
+ } finally {
139
+ // Base condition!
140
+ if (noPendingTask) {
141
+ log(`No pending sub-task for task ${taskId}`);
142
+ await pageBuilder.importExportTask.updateTask(taskId, {
143
+ status: _types.ImportExportTaskStatus.COMPLETED,
144
+ data: {
145
+ message: `Finish importing templates.`
146
+ }
147
+ });
148
+ } else {
149
+ log(`Invoking PROCESS for task "${subTaskIndex + 1}"`);
150
+ // We want to continue with Self invocation no matter if current template error out.
151
+ await (0, _client.invokeHandlerClient)({
152
+ context,
153
+ name: configuration.handlers.process,
154
+ payload: {
155
+ taskId,
156
+ subTaskIndex: subTaskIndex + 1,
157
+ type,
158
+ identity: context.security.getIdentity()
159
+ },
160
+ description: "Import templates - process - subtask"
161
+ });
162
+ }
163
+ }
164
+ return {
165
+ data: "",
166
+ error: null
167
+ };
168
+ };
169
+ exports.templatesHandler = templatesHandler;