@webiny/api-page-builder-import-export 0.0.0-mt-3 → 0.0.0-unstable.085ff6572f

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 (184) hide show
  1. package/client.d.ts +8 -0
  2. package/client.js +43 -0
  3. package/client.js.map +1 -0
  4. package/export/combine/blocksHandler.d.ts +6 -0
  5. package/export/combine/blocksHandler.js +99 -0
  6. package/export/combine/blocksHandler.js.map +1 -0
  7. package/export/combine/formsHandler.d.ts +6 -0
  8. package/export/combine/formsHandler.js +99 -0
  9. package/export/combine/formsHandler.js.map +1 -0
  10. package/export/combine/index.d.ts +16 -0
  11. package/export/combine/index.js +42 -0
  12. package/export/combine/index.js.map +1 -0
  13. package/export/combine/pagesHandler.d.ts +6 -0
  14. package/export/combine/pagesHandler.js +99 -0
  15. package/export/combine/pagesHandler.js.map +1 -0
  16. package/export/combine/templatesHandler.d.ts +6 -0
  17. package/export/combine/templatesHandler.js +99 -0
  18. package/export/combine/templatesHandler.js.map +1 -0
  19. package/export/process/blocksHandler.d.ts +6 -0
  20. package/export/process/blocksHandler.js +162 -0
  21. package/export/process/blocksHandler.js.map +1 -0
  22. package/export/process/formsHandler.d.ts +6 -0
  23. package/export/process/formsHandler.js +187 -0
  24. package/export/process/formsHandler.js.map +1 -0
  25. package/export/process/index.d.ts +20 -0
  26. package/export/process/index.js +39 -0
  27. package/export/process/index.js.map +1 -0
  28. package/export/process/pagesHandler.d.ts +6 -0
  29. package/export/process/pagesHandler.js +189 -0
  30. package/export/process/pagesHandler.js.map +1 -0
  31. package/export/process/templatesHandler.d.ts +6 -0
  32. package/export/process/templatesHandler.js +166 -0
  33. package/export/process/templatesHandler.js.map +1 -0
  34. package/{exportPages → export}/s3Stream.d.ts +7 -2
  35. package/{exportPages → export}/s3Stream.js +12 -24
  36. package/export/s3Stream.js.map +1 -0
  37. package/export/utils.d.ts +29 -0
  38. package/export/utils.js +194 -0
  39. package/export/utils.js.map +1 -0
  40. package/{exportPages → export}/zipper.d.ts +7 -5
  41. package/{exportPages → export}/zipper.js +40 -53
  42. package/export/zipper.js.map +1 -0
  43. package/graphql/crud/blocks.crud.d.ts +4 -0
  44. package/graphql/crud/blocks.crud.js +140 -0
  45. package/graphql/crud/blocks.crud.js.map +1 -0
  46. package/graphql/crud/forms.crud.d.ts +4 -0
  47. package/graphql/crud/forms.crud.js +134 -0
  48. package/graphql/crud/forms.crud.js.map +1 -0
  49. package/graphql/crud/importExportTasks.crud.d.ts +5 -0
  50. package/graphql/crud/importExportTasks.crud.js +367 -0
  51. package/graphql/crud/importExportTasks.crud.js.map +1 -0
  52. package/graphql/crud/pages.crud.d.ts +3 -3
  53. package/graphql/crud/pages.crud.js +72 -74
  54. package/graphql/crud/pages.crud.js.map +1 -0
  55. package/graphql/crud/templates.crud.d.ts +4 -0
  56. package/graphql/crud/templates.crud.js +128 -0
  57. package/graphql/crud/templates.crud.js.map +1 -0
  58. package/graphql/crud.d.ts +2 -2
  59. package/graphql/crud.js +6 -8
  60. package/graphql/crud.js.map +1 -0
  61. package/graphql/graphql/blocks.gql.d.ts +4 -0
  62. package/graphql/graphql/blocks.gql.js +52 -0
  63. package/graphql/graphql/blocks.gql.js.map +1 -0
  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.d.ts +4 -0
  68. package/graphql/graphql/{pageImportExportTasks.gql.js → importExportTasks.gql.js} +19 -24
  69. package/graphql/graphql/importExportTasks.gql.js.map +1 -0
  70. package/graphql/graphql/pages.gql.d.ts +2 -2
  71. package/graphql/graphql/pages.gql.js +5 -14
  72. package/graphql/graphql/pages.gql.js.map +1 -0
  73. package/graphql/graphql/templates.gql.d.ts +4 -0
  74. package/graphql/graphql/templates.gql.js +52 -0
  75. package/graphql/graphql/templates.gql.js.map +1 -0
  76. package/graphql/graphql/utils/resolve.d.ts +1 -1
  77. package/graphql/graphql/utils/resolve.js +0 -3
  78. package/graphql/graphql/utils/resolve.js.map +1 -0
  79. package/graphql/graphql.d.ts +1 -1
  80. package/graphql/graphql.js +6 -7
  81. package/graphql/graphql.js.map +1 -0
  82. package/graphql/index.d.ts +2 -2
  83. package/graphql/index.js +1 -6
  84. package/graphql/index.js.map +1 -0
  85. package/graphql/types.d.ts +86 -27
  86. package/graphql/types.js.map +1 -0
  87. package/import/constants.d.ts +3 -0
  88. package/import/constants.js +14 -0
  89. package/import/constants.js.map +1 -0
  90. package/import/create/blocksHandler.d.ts +3 -0
  91. package/import/create/blocksHandler.js +101 -0
  92. package/import/create/blocksHandler.js.map +1 -0
  93. package/import/create/formsHandler.d.ts +3 -0
  94. package/import/create/formsHandler.js +103 -0
  95. package/import/create/formsHandler.js.map +1 -0
  96. package/import/create/index.d.ts +24 -0
  97. package/import/create/index.js +42 -0
  98. package/import/create/index.js.map +1 -0
  99. package/import/create/pagesHandler.d.ts +3 -0
  100. package/import/create/pagesHandler.js +103 -0
  101. package/import/create/pagesHandler.js.map +1 -0
  102. package/import/create/templatesHandler.d.ts +3 -0
  103. package/import/create/templatesHandler.js +99 -0
  104. package/import/create/templatesHandler.js.map +1 -0
  105. package/import/process/blocks/blocksHandler.d.ts +3 -0
  106. package/import/process/blocks/blocksHandler.js +169 -0
  107. package/import/process/blocks/blocksHandler.js.map +1 -0
  108. package/import/process/blocks/importBlock.d.ts +11 -0
  109. package/import/process/blocks/importBlock.js +92 -0
  110. package/import/process/blocks/importBlock.js.map +1 -0
  111. package/import/process/forms/formsHandler.d.ts +3 -0
  112. package/import/process/forms/formsHandler.js +176 -0
  113. package/import/process/forms/formsHandler.js.map +1 -0
  114. package/import/process/forms/importForm.d.ts +9 -0
  115. package/import/process/forms/importForm.js +43 -0
  116. package/import/process/forms/importForm.js.map +1 -0
  117. package/import/process/index.d.ts +20 -0
  118. package/import/process/index.js +39 -0
  119. package/import/process/index.js.map +1 -0
  120. package/import/process/pages/importPage.d.ts +11 -0
  121. package/import/process/pages/importPage.js +92 -0
  122. package/import/process/pages/importPage.js.map +1 -0
  123. package/import/process/pages/pagesHandler.d.ts +3 -0
  124. package/import/process/pages/pagesHandler.js +183 -0
  125. package/import/process/pages/pagesHandler.js.map +1 -0
  126. package/import/process/templates/importTemplate.d.ts +11 -0
  127. package/import/process/templates/importTemplate.js +66 -0
  128. package/import/process/templates/importTemplate.js.map +1 -0
  129. package/import/process/templates/templatesHandler.d.ts +3 -0
  130. package/import/process/templates/templatesHandler.js +170 -0
  131. package/import/process/templates/templatesHandler.js.map +1 -0
  132. package/import/utils/deleteS3Folder.d.ts +1 -0
  133. package/import/utils/deleteS3Folder.js +19 -0
  134. package/import/utils/deleteS3Folder.js.map +1 -0
  135. package/import/utils/extractAndUploadZipFileContents.d.ts +7 -0
  136. package/import/utils/extractAndUploadZipFileContents.js +122 -0
  137. package/import/utils/extractAndUploadZipFileContents.js.map +1 -0
  138. package/import/utils/extractZipAndUploadToS3.d.ts +2 -0
  139. package/import/utils/extractZipAndUploadToS3.js +98 -0
  140. package/import/utils/extractZipAndUploadToS3.js.map +1 -0
  141. package/import/utils/getFileNameWithoutExt.d.ts +1 -0
  142. package/import/utils/getFileNameWithoutExt.js +11 -0
  143. package/import/utils/getFileNameWithoutExt.js.map +1 -0
  144. package/import/utils/index.d.ts +9 -0
  145. package/import/utils/index.js +104 -0
  146. package/import/utils/index.js.map +1 -0
  147. package/import/utils/initialStats.d.ts +7 -0
  148. package/import/utils/initialStats.js +16 -0
  149. package/import/utils/initialStats.js.map +1 -0
  150. package/import/utils/prepareDataDirMap.d.ts +6 -0
  151. package/import/utils/prepareDataDirMap.js +29 -0
  152. package/import/utils/prepareDataDirMap.js.map +1 -0
  153. package/import/utils/updateFilesInData.d.ts +8 -0
  154. package/import/utils/updateFilesInData.js +48 -0
  155. package/import/utils/updateFilesInData.js.map +1 -0
  156. package/import/utils/uploadAssets.d.ts +10 -0
  157. package/import/utils/uploadAssets.js +49 -0
  158. package/import/utils/uploadAssets.js.map +1 -0
  159. package/import/utils/uploadFilesFromS3.d.ts +3 -0
  160. package/import/utils/uploadFilesFromS3.js +19 -0
  161. package/import/utils/uploadFilesFromS3.js.map +1 -0
  162. package/mockSecurity.js +0 -3
  163. package/mockSecurity.js.map +1 -0
  164. package/package.json +37 -38
  165. package/types.d.ts +91 -72
  166. package/types.js +17 -22
  167. package/types.js.map +1 -0
  168. package/exportPages/combine/index.d.ts +0 -19
  169. package/exportPages/combine/index.js +0 -88
  170. package/exportPages/process/index.d.ts +0 -26
  171. package/exportPages/process/index.js +0 -204
  172. package/exportPages/utils.d.ts +0 -13
  173. package/exportPages/utils.js +0 -113
  174. package/graphql/crud/pageImportExportTasks.crud.d.ts +0 -5
  175. package/graphql/crud/pageImportExportTasks.crud.js +0 -394
  176. package/graphql/graphql/pageImportExportTasks.gql.d.ts +0 -4
  177. package/importPages/client.d.ts +0 -7
  178. package/importPages/client.js +0 -40
  179. package/importPages/create/index.d.ts +0 -27
  180. package/importPages/create/index.js +0 -109
  181. package/importPages/process/index.d.ts +0 -25
  182. package/importPages/process/index.js +0 -183
  183. package/importPages/utils.d.ts +0 -43
  184. package/importPages/utils.js +0 -539
@@ -0,0 +1,367 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _utils = require("@webiny/utils");
10
+ var _fields = require("@commodo/fields");
11
+ var _commodoFieldsObject = require("commodo-fields-object");
12
+ var _validation = require("@webiny/validation");
13
+ var _api = require("@webiny/api");
14
+ var _handlerGraphql = require("@webiny/handler-graphql");
15
+ var _types = require("../../types");
16
+ var _error = _interopRequireDefault(require("@webiny/error"));
17
+ var _PagesPermissions = require("@webiny/api-page-builder/graphql/crud/permissions/PagesPermissions");
18
+ /**
19
+ * Package @commodo/fields does not have types.
20
+ */
21
+ // @ts-ignore
22
+
23
+ /**
24
+ * Package commodo-fields-object does not have types.
25
+ */
26
+ // @ts-ignore
27
+
28
+ const validStatus = `${_types.ImportExportTaskStatus.PENDING}:${_types.ImportExportTaskStatus.PROCESSING}:${_types.ImportExportTaskStatus.COMPLETED}:${_types.ImportExportTaskStatus.FAILED}`;
29
+ const CreateDataModel = (0, _fields.withFields)({
30
+ status: (0, _fields.string)({
31
+ validation: _validation.validation.create(`required,in:${validStatus}`)
32
+ }),
33
+ data: (0, _commodoFieldsObject.object)(),
34
+ input: (0, _commodoFieldsObject.object)(),
35
+ stats: (0, _commodoFieldsObject.object)(),
36
+ error: (0, _commodoFieldsObject.object)()
37
+ })();
38
+ const UpdateDataModel = (0, _fields.withFields)({
39
+ status: (0, _fields.string)({
40
+ validation: _validation.validation.create(`in:${validStatus}`)
41
+ }),
42
+ data: (0, _commodoFieldsObject.object)(),
43
+ input: (0, _commodoFieldsObject.object)(),
44
+ stats: (0, _commodoFieldsObject.object)(),
45
+ error: (0, _commodoFieldsObject.object)()
46
+ })();
47
+ var _default = ({
48
+ storageOperations
49
+ }) => new _api.ContextPlugin(async context => {
50
+ /**
51
+ * If pageBuilder is not defined on the context, do not continue, but log it.
52
+ */
53
+ if (!context.pageBuilder) {
54
+ console.log("Missing pageBuilder on context. Skipping ImportExportTasks crud.");
55
+ return;
56
+ }
57
+ const pagesPermissions = new _PagesPermissions.PagesPermissions({
58
+ getPermissions: () => context.security.getPermissions("pb.page"),
59
+ getIdentity: context.security.getIdentity,
60
+ fullAccessPermissionName: "pb.*"
61
+ });
62
+ const getLocale = () => {
63
+ const locale = context.i18n.getContentLocale();
64
+ if (!locale) {
65
+ throw new _error.default("Missing content locale in importExportTasks.crud.ts", "LOCALE_ERROR");
66
+ }
67
+ return locale;
68
+ };
69
+
70
+ // Modify context
71
+ context.pageBuilder.importExportTask = {
72
+ storageOperations,
73
+ async getTask(id) {
74
+ await pagesPermissions.ensure({
75
+ rwd: "r"
76
+ });
77
+ const tenant = context.tenancy.getCurrentTenant();
78
+ const locale = getLocale();
79
+ const params = {
80
+ where: {
81
+ tenant: tenant.id,
82
+ locale: locale.code,
83
+ id
84
+ }
85
+ };
86
+ let importExportTask = null;
87
+ try {
88
+ importExportTask = await storageOperations.getTask(params);
89
+ if (!importExportTask) {
90
+ return null;
91
+ }
92
+ } catch (ex) {
93
+ throw new _error.default(ex.message || "Could not get importExportTask by id.", ex.code || "GET_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
94
+ params
95
+ }));
96
+ }
97
+ await pagesPermissions.ensure({
98
+ owns: importExportTask.createdBy
99
+ });
100
+ return importExportTask;
101
+ },
102
+ async listTasks(params) {
103
+ await pagesPermissions.ensure({
104
+ rwd: "r"
105
+ });
106
+ const tenant = context.tenancy.getCurrentTenant();
107
+ const locale = getLocale();
108
+ const {
109
+ sort,
110
+ limit
111
+ } = params || {};
112
+ const listParams = {
113
+ where: {
114
+ tenant: tenant.id,
115
+ locale: locale.code
116
+ },
117
+ sort: Array.isArray(sort) && sort.length > 0 ? sort : ["createdOn_ASC"],
118
+ limit: limit
119
+ };
120
+
121
+ // If user can only manage own records, let's add that to the listing.
122
+ if (await pagesPermissions.canAccessOnlyOwnRecords) {
123
+ const identity = context.security.getIdentity();
124
+ listParams.where.createdBy = identity.id;
125
+ }
126
+ try {
127
+ const [items] = await storageOperations.listTasks(listParams);
128
+ return items;
129
+ } catch (ex) {
130
+ throw new _error.default(ex.message || "Could not list all importExportTask.", ex.code || "LIST_ELEMENTS_ERROR", {
131
+ params
132
+ });
133
+ }
134
+ },
135
+ async createTask(input) {
136
+ await pagesPermissions.ensure({
137
+ rwd: "w"
138
+ });
139
+ const createDataModel = new CreateDataModel().populate(input);
140
+ await createDataModel.validate();
141
+ const id = (0, _utils.mdbid)();
142
+ const identity = context.security.getIdentity();
143
+ const data = await createDataModel.toJSON();
144
+ const importExportTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
145
+ tenant: context.tenancy.getCurrentTenant().id,
146
+ locale: getLocale().code,
147
+ id,
148
+ createdOn: new Date().toISOString(),
149
+ createdBy: {
150
+ id: identity.id,
151
+ type: identity.type,
152
+ displayName: identity.displayName
153
+ }
154
+ });
155
+ try {
156
+ return await storageOperations.createTask({
157
+ input: data,
158
+ task: importExportTask
159
+ });
160
+ } catch (ex) {
161
+ throw new _error.default(ex.message || "Could not create importExportTask.", ex.code || "CREATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
162
+ importExportTask
163
+ }));
164
+ }
165
+ },
166
+ async updateTask(id, input) {
167
+ await pagesPermissions.ensure({
168
+ rwd: "w"
169
+ });
170
+ const original = await context.pageBuilder.importExportTask.getTask(id);
171
+ if (!original) {
172
+ throw new _handlerGraphql.NotFoundError(`ImportExportTask "${id}" not found.`);
173
+ }
174
+ await pagesPermissions.ensure({
175
+ owns: original.createdBy
176
+ });
177
+ const updateDataModel = new UpdateDataModel().populate(input);
178
+ await updateDataModel.validate();
179
+ const data = await updateDataModel.toJSON({
180
+ onlyDirty: true
181
+ });
182
+ const importExportTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
183
+ try {
184
+ return await storageOperations.updateTask({
185
+ input: data,
186
+ original,
187
+ task: importExportTask
188
+ });
189
+ } catch (ex) {
190
+ throw new _error.default(ex.message || "Could not update importExportTask.", ex.code || "UPDATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
191
+ original,
192
+ importExportTask
193
+ }));
194
+ }
195
+ },
196
+ async deleteTask(id) {
197
+ await pagesPermissions.ensure({
198
+ rwd: "d"
199
+ });
200
+ const importExportTask = await context.pageBuilder.importExportTask.getTask(id);
201
+ if (!importExportTask) {
202
+ throw new _handlerGraphql.NotFoundError(`ImportExportTask "${id}" not found.`);
203
+ }
204
+ await pagesPermissions.ensure({
205
+ owns: importExportTask.createdBy
206
+ });
207
+ try {
208
+ return await storageOperations.deleteTask({
209
+ task: importExportTask
210
+ });
211
+ } catch (ex) {
212
+ throw new _error.default(ex.message || "Could not delete importExportTask.", ex.code || "DELETE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
213
+ importExportTask
214
+ }));
215
+ }
216
+ },
217
+ async updateStats(id, input) {
218
+ await pagesPermissions.ensure({
219
+ rwd: "w"
220
+ });
221
+ const original = await context.pageBuilder.importExportTask.getTask(id);
222
+ if (!original) {
223
+ throw new _handlerGraphql.NotFoundError(`ImportExportTask "${id}" not found.`);
224
+ }
225
+ await pagesPermissions.ensure({
226
+ owns: original.createdBy
227
+ });
228
+ try {
229
+ return await storageOperations.updateTaskStats({
230
+ input,
231
+ original
232
+ });
233
+ } catch (ex) {
234
+ throw new _error.default(ex.message || "Could not update importExportTask.", ex.code || "UPDATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
235
+ original
236
+ }));
237
+ }
238
+ },
239
+ async createSubTask(parent, id, input) {
240
+ await pagesPermissions.ensure({
241
+ rwd: "w"
242
+ });
243
+ const createDataModel = new CreateDataModel().populate(input);
244
+ await createDataModel.validate();
245
+ const identity = context.security.getIdentity();
246
+ const data = await createDataModel.toJSON();
247
+ const importExportSubTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
248
+ tenant: context.tenancy.getCurrentTenant().id,
249
+ locale: getLocale().code,
250
+ id: id,
251
+ parent: parent,
252
+ createdOn: new Date().toISOString(),
253
+ createdBy: {
254
+ id: identity.id,
255
+ type: identity.type,
256
+ displayName: identity.displayName
257
+ }
258
+ });
259
+ try {
260
+ return await storageOperations.createSubTask({
261
+ input: data,
262
+ subTask: importExportSubTask
263
+ });
264
+ } catch (ex) {
265
+ throw new _error.default(ex.message || "Could not create importExportSubTask.", ex.code || "CREATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
266
+ importExportSubTask
267
+ }));
268
+ }
269
+ },
270
+ async updateSubTask(parent, subTaskId, input) {
271
+ await pagesPermissions.ensure({
272
+ rwd: "w"
273
+ });
274
+ const original = await context.pageBuilder.importExportTask.getSubTask(parent, subTaskId);
275
+ if (!original) {
276
+ throw new _handlerGraphql.NotFoundError(`ImportExportTask parent: "${parent}" and id: "${subTaskId}" not found.`);
277
+ }
278
+ await pagesPermissions.ensure({
279
+ owns: original.createdBy
280
+ });
281
+ const updateDataModel = new UpdateDataModel().populate(input);
282
+ await updateDataModel.validate();
283
+ const data = await updateDataModel.toJSON({
284
+ onlyDirty: true
285
+ });
286
+ // TODO: Merge recursively
287
+ const importExportSubTask = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data);
288
+ try {
289
+ return await storageOperations.updateSubTask({
290
+ input: data,
291
+ original,
292
+ subTask: importExportSubTask
293
+ });
294
+ } catch (ex) {
295
+ throw new _error.default(ex.message || "Could not update importExportSubTask.", ex.code || "UPDATE_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
296
+ importExportSubTask,
297
+ original
298
+ }));
299
+ }
300
+ },
301
+ async getSubTask(parent, subTaskId) {
302
+ await pagesPermissions.ensure({
303
+ rwd: "r"
304
+ });
305
+ const tenant = context.tenancy.getCurrentTenant();
306
+ const locale = getLocale();
307
+ const params = {
308
+ where: {
309
+ tenant: tenant.id,
310
+ locale: locale.code,
311
+ id: subTaskId,
312
+ parent: parent
313
+ }
314
+ };
315
+ let importExportSubTask = null;
316
+ try {
317
+ importExportSubTask = await storageOperations.getSubTask(params);
318
+ if (!importExportSubTask) {
319
+ return null;
320
+ }
321
+ } catch (ex) {
322
+ throw new _error.default(ex.message || "Could not get importExportSubTask by id.", ex.code || "GET_IMPORT_EXPORT_TASK_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
323
+ params
324
+ }));
325
+ }
326
+ await pagesPermissions.ensure({
327
+ owns: importExportSubTask.createdBy
328
+ });
329
+ return importExportSubTask;
330
+ },
331
+ async listSubTasks(parent, status, limit) {
332
+ await pagesPermissions.ensure({
333
+ rwd: "r"
334
+ });
335
+ const tenant = context.tenancy.getCurrentTenant();
336
+ const locale = getLocale();
337
+ const listParams = {
338
+ where: {
339
+ tenant: tenant.id,
340
+ locale: locale.code,
341
+ parent: parent,
342
+ status
343
+ },
344
+ limit
345
+ };
346
+
347
+ // If user can only manage own records, let's add that to the listing.
348
+ if (await pagesPermissions.canAccessOnlyOwnRecords()) {
349
+ const identity = context.security.getIdentity();
350
+ listParams.where.createdBy = identity.id;
351
+ }
352
+ try {
353
+ const [items] = await storageOperations.listSubTasks(listParams);
354
+ return items;
355
+ } catch (ex) {
356
+ throw new _error.default(ex.message || "Could not list all importExportSubTask.", ex.code || "LIST_IMPORT_EXPORT_TASK_ERROR", {
357
+ params: {
358
+ parent,
359
+ status,
360
+ limit
361
+ }
362
+ });
363
+ }
364
+ }
365
+ };
366
+ });
367
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["validStatus","ImportExportTaskStatus","PENDING","PROCESSING","COMPLETED","FAILED","CreateDataModel","withFields","status","string","validation","create","data","object","input","stats","error","UpdateDataModel","storageOperations","ContextPlugin","context","pageBuilder","console","log","pagesPermissions","PagesPermissions","getPermissions","security","getIdentity","fullAccessPermissionName","getLocale","locale","i18n","getContentLocale","WebinyError","importExportTask","getTask","id","ensure","rwd","tenant","tenancy","getCurrentTenant","params","where","code","ex","message","owns","createdBy","listTasks","sort","limit","listParams","Array","isArray","length","canAccessOnlyOwnRecords","identity","items","createTask","createDataModel","populate","validate","mdbid","toJSON","createdOn","Date","toISOString","type","displayName","task","updateTask","original","NotFoundError","updateDataModel","onlyDirty","deleteTask","updateStats","updateTaskStats","createSubTask","parent","importExportSubTask","subTask","updateSubTask","subTaskId","getSubTask","listSubTasks"],"sources":["importExportTasks.crud.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\n/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { string, withFields } from \"@commodo/fields\";\n/**\n * Package commodo-fields-object does not have types.\n */\n// @ts-ignore\nimport { object } from \"commodo-fields-object\";\nimport { validation } from \"@webiny/validation\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport {\n ImportExportPluginsParams,\n ImportExportTask,\n ImportExportTaskStatus,\n ImportExportTaskStorageOperationsListSubTaskParams\n} from \"~/types\";\nimport { PbImportExportContext } from \"~/graphql/types\";\nimport WebinyError from \"@webiny/error\";\nimport { PageElementStorageOperationsListParams } from \"@webiny/api-page-builder/types\";\nimport { PagesPermissions } from \"@webiny/api-page-builder/graphql/crud/permissions/PagesPermissions\";\n\nconst validStatus = `${ImportExportTaskStatus.PENDING}:${ImportExportTaskStatus.PROCESSING}:${ImportExportTaskStatus.COMPLETED}:${ImportExportTaskStatus.FAILED}`;\n\nconst CreateDataModel = withFields({\n status: string({\n validation: validation.create(`required,in:${validStatus}`)\n }),\n data: object(),\n input: object(),\n stats: object(),\n error: object()\n})();\n\nconst UpdateDataModel = withFields({\n status: string({\n validation: validation.create(`in:${validStatus}`)\n }),\n data: object(),\n input: object(),\n stats: object(),\n error: object()\n})();\n\nexport default ({ storageOperations }: ImportExportPluginsParams) =>\n new ContextPlugin<PbImportExportContext>(async context => {\n /**\n * If pageBuilder is not defined on the context, do not continue, but log it.\n */\n if (!context.pageBuilder) {\n console.log(\"Missing pageBuilder on context. Skipping ImportExportTasks crud.\");\n return;\n }\n\n const pagesPermissions = new PagesPermissions({\n getPermissions: () => context.security.getPermissions(\"pb.page\"),\n getIdentity: context.security.getIdentity,\n fullAccessPermissionName: \"pb.*\"\n });\n\n const getLocale = () => {\n const locale = context.i18n.getContentLocale();\n if (!locale) {\n throw new WebinyError(\n \"Missing content locale in importExportTasks.crud.ts\",\n \"LOCALE_ERROR\"\n );\n }\n return locale;\n };\n\n // Modify context\n context.pageBuilder.importExportTask = {\n storageOperations,\n async getTask(id) {\n await pagesPermissions.ensure({ rwd: \"r\" });\n\n const tenant = context.tenancy.getCurrentTenant();\n const locale = getLocale();\n\n const params = {\n where: {\n tenant: tenant.id,\n locale: locale.code,\n id\n }\n };\n\n let importExportTask: ImportExportTask | null = null;\n\n try {\n importExportTask = await storageOperations.getTask(params);\n\n if (!importExportTask) {\n return null;\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get importExportTask by id.\",\n ex.code || \"GET_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n\n await pagesPermissions.ensure({ owns: importExportTask.createdBy });\n\n return importExportTask;\n },\n\n async listTasks(params) {\n await pagesPermissions.ensure({ rwd: \"r\" });\n\n const tenant = context.tenancy.getCurrentTenant();\n const locale = getLocale();\n\n const { sort, limit } = params || {};\n\n const listParams: PageElementStorageOperationsListParams = {\n where: {\n tenant: tenant.id,\n locale: locale.code\n },\n sort: Array.isArray(sort) && sort.length > 0 ? sort : [\"createdOn_ASC\"],\n limit: limit\n };\n\n // If user can only manage own records, let's add that to the listing.\n if (await pagesPermissions.canAccessOnlyOwnRecords) {\n const identity = context.security.getIdentity();\n listParams.where.createdBy = identity.id;\n }\n\n try {\n const [items] = await storageOperations.listTasks(listParams);\n return items;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list all importExportTask.\",\n ex.code || \"LIST_ELEMENTS_ERROR\",\n {\n params\n }\n );\n }\n },\n\n async createTask(input) {\n await pagesPermissions.ensure({ rwd: \"w\" });\n\n const createDataModel = new CreateDataModel().populate(input);\n await createDataModel.validate();\n\n const id: string = mdbid();\n const identity = context.security.getIdentity();\n\n const data: ImportExportTask = await createDataModel.toJSON();\n\n const importExportTask: ImportExportTask = {\n ...data,\n tenant: context.tenancy.getCurrentTenant().id,\n locale: getLocale().code,\n id,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n type: identity.type,\n displayName: identity.displayName\n }\n };\n\n try {\n return await storageOperations.createTask({\n input: data,\n task: importExportTask\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create importExportTask.\",\n ex.code || \"CREATE_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n importExportTask\n }\n );\n }\n },\n\n async updateTask(id, input) {\n await pagesPermissions.ensure({ rwd: \"w\" });\n\n const original = await context.pageBuilder.importExportTask.getTask(id);\n if (!original) {\n throw new NotFoundError(`ImportExportTask \"${id}\" not found.`);\n }\n\n await pagesPermissions.ensure({ owns: original.createdBy });\n\n const updateDataModel = new UpdateDataModel().populate(input);\n await updateDataModel.validate();\n\n const data = await updateDataModel.toJSON({ onlyDirty: true });\n\n const importExportTask: ImportExportTask = {\n ...original,\n ...data\n };\n\n try {\n return await storageOperations.updateTask({\n input: data,\n original,\n task: importExportTask\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update importExportTask.\",\n ex.code || \"UPDATE_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n original,\n importExportTask\n }\n );\n }\n },\n\n async deleteTask(id) {\n await pagesPermissions.ensure({ rwd: \"d\" });\n\n const importExportTask = await context.pageBuilder.importExportTask.getTask(id);\n if (!importExportTask) {\n throw new NotFoundError(`ImportExportTask \"${id}\" not found.`);\n }\n\n await pagesPermissions.ensure({ owns: importExportTask.createdBy });\n\n try {\n return await storageOperations.deleteTask({\n task: importExportTask\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete importExportTask.\",\n ex.code || \"DELETE_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n importExportTask\n }\n );\n }\n },\n\n async updateStats(id, input) {\n await pagesPermissions.ensure({ rwd: \"w\" });\n\n const original = await context.pageBuilder.importExportTask.getTask(id);\n if (!original) {\n throw new NotFoundError(`ImportExportTask \"${id}\" not found.`);\n }\n\n await pagesPermissions.ensure({ owns: original.createdBy });\n\n try {\n return await storageOperations.updateTaskStats({\n input,\n original\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update importExportTask.\",\n ex.code || \"UPDATE_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n original\n }\n );\n }\n },\n\n async createSubTask(parent, id, input) {\n await pagesPermissions.ensure({ rwd: \"w\" });\n\n const createDataModel = new CreateDataModel().populate(input);\n await createDataModel.validate();\n\n const identity = context.security.getIdentity();\n\n const data = await createDataModel.toJSON();\n\n const importExportSubTask: ImportExportTask = {\n ...data,\n tenant: context.tenancy.getCurrentTenant().id,\n locale: getLocale().code,\n id: id,\n parent: parent,\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n type: identity.type,\n displayName: identity.displayName\n }\n };\n\n try {\n return await storageOperations.createSubTask({\n input: data,\n subTask: importExportSubTask\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create importExportSubTask.\",\n ex.code || \"CREATE_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n importExportSubTask\n }\n );\n }\n },\n\n async updateSubTask(parent, subTaskId, input) {\n await pagesPermissions.ensure({ rwd: \"w\" });\n\n const original = await context.pageBuilder.importExportTask.getSubTask(\n parent,\n subTaskId\n );\n if (!original) {\n throw new NotFoundError(\n `ImportExportTask parent: \"${parent}\" and id: \"${subTaskId}\" not found.`\n );\n }\n\n await pagesPermissions.ensure({ owns: original.createdBy });\n\n const updateDataModel = new UpdateDataModel().populate(input);\n await updateDataModel.validate();\n\n const data = await updateDataModel.toJSON({ onlyDirty: true });\n // TODO: Merge recursively\n const importExportSubTask: ImportExportTask = {\n ...original,\n ...data\n };\n\n try {\n return await storageOperations.updateSubTask({\n input: data,\n original,\n subTask: importExportSubTask\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update importExportSubTask.\",\n ex.code || \"UPDATE_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n importExportSubTask,\n original\n }\n );\n }\n },\n\n async getSubTask(parent, subTaskId) {\n await pagesPermissions.ensure({ rwd: \"r\" });\n\n const tenant = context.tenancy.getCurrentTenant();\n const locale = getLocale();\n\n const params = {\n where: {\n tenant: tenant.id,\n locale: locale.code,\n id: subTaskId,\n parent: parent\n }\n };\n\n let importExportSubTask: ImportExportTask | null = null;\n\n try {\n importExportSubTask = await storageOperations.getSubTask(params);\n if (!importExportSubTask) {\n return null;\n }\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not get importExportSubTask by id.\",\n ex.code || \"GET_IMPORT_EXPORT_TASK_ERROR\",\n {\n ...(ex.data || {}),\n params\n }\n );\n }\n\n await pagesPermissions.ensure({ owns: importExportSubTask.createdBy });\n\n return importExportSubTask;\n },\n\n async listSubTasks(parent, status, limit) {\n await pagesPermissions.ensure({ rwd: \"r\" });\n\n const tenant = context.tenancy.getCurrentTenant();\n const locale = getLocale();\n\n const listParams: ImportExportTaskStorageOperationsListSubTaskParams = {\n where: {\n tenant: tenant.id,\n locale: locale.code,\n parent: parent,\n status\n },\n limit\n };\n\n // If user can only manage own records, let's add that to the listing.\n if (await pagesPermissions.canAccessOnlyOwnRecords()) {\n const identity = context.security.getIdentity();\n listParams.where.createdBy = identity.id;\n }\n\n try {\n const [items] = await storageOperations.listSubTasks(listParams);\n return items;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not list all importExportSubTask.\",\n ex.code || \"LIST_IMPORT_EXPORT_TASK_ERROR\",\n {\n params: {\n parent,\n status,\n limit\n }\n }\n );\n }\n }\n };\n });\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ContextPlugin } from "@webiny/handler/plugins/ContextPlugin";
2
- import { PbPageImportExportContext } from "../../types";
3
- declare const _default: ContextPlugin<PbPageImportExportContext>;
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { PbImportExportContext } from "../../types";
3
+ declare const _default: ContextPlugin<PbImportExportContext>;
4
4
  export default _default;
@@ -1,80 +1,73 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
8
  var _error = _interopRequireDefault(require("@webiny/error"));
13
-
14
9
  var _handlerGraphql = require("@webiny/handler-graphql");
15
-
16
- var _ContextPlugin = require("@webiny/handler/plugins/ContextPlugin");
17
-
18
- var _checkBasePermissions = _interopRequireDefault(require("@webiny/api-page-builder/graphql/crud/utils/checkBasePermissions"));
19
-
10
+ var _api = require("@webiny/api");
20
11
  var _types = require("../../types");
21
-
22
- var _client = require("../../importPages/client");
23
-
24
- var _utils = require("../../importPages/utils");
25
-
26
- var _utils2 = require("../../exportPages/utils");
27
-
28
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
-
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
-
32
- const PERMISSION_NAME = "pb.page";
33
- const EXPORT_PAGES_PROCESS_HANDLER = process.env.EXPORT_PAGES_PROCESS_HANDLER;
34
- const IMPORT_PAGES_CREATE_HANDLER = process.env.IMPORT_PAGES_CREATE_HANDLER;
35
-
36
- var _default = new _ContextPlugin.ContextPlugin(context => {
12
+ var _client = require("../../client");
13
+ var _utils = require("../../import/utils");
14
+ var _utils2 = require("../../export/utils");
15
+ var _utils3 = require("@webiny/utils");
16
+ var _PagesPermissions = require("@webiny/api-page-builder/graphql/crud/permissions/PagesPermissions");
17
+ const EXPORT_PAGES_PROCESS_HANDLER = process.env.EXPORT_PROCESS_HANDLER;
18
+ const IMPORT_PAGES_CREATE_HANDLER = process.env.IMPORT_CREATE_HANDLER;
19
+ var _default = new _api.ContextPlugin(context => {
20
+ const pagesPermissions = new _PagesPermissions.PagesPermissions({
21
+ getPermissions: () => context.security.getPermissions("pb.page"),
22
+ getIdentity: context.security.getIdentity,
23
+ fullAccessPermissionName: "pb.*"
24
+ });
37
25
  const importExportCrud = {
38
26
  async importPages({
39
27
  category: categorySlug,
40
- zipFileKey,
41
- zipFileUrl
28
+ zipFileUrl,
29
+ meta
42
30
  }) {
43
- await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
31
+ await pagesPermissions.ensure({
44
32
  rwd: "w"
45
- }); // Bail out early if category not found
46
-
47
- const category = await context.pageBuilder.categories.get(categorySlug);
33
+ });
48
34
 
35
+ // Bail out early if category not found
36
+ const category = await context.pageBuilder.getCategory(categorySlug);
49
37
  if (!category) {
50
38
  throw new _handlerGraphql.NotFoundError(`Category with slug "${categorySlug}" not found.`);
51
- } // Create a task for import page
52
-
39
+ }
53
40
 
54
- const task = await context.pageBuilder.pageImportExportTask.createTask({
55
- status: _types.PageImportExportTaskStatus.PENDING,
41
+ // Create a task for import page
42
+ const task = await context.pageBuilder.importExportTask.createTask({
43
+ status: _types.ImportExportTaskStatus.PENDING,
56
44
  input: {
57
45
  category: categorySlug,
58
- zipFileKey,
59
46
  zipFileUrl
60
47
  }
61
48
  });
49
+ /**
50
+ * Import Pages
51
+ * ImportPages
52
+ * importPages
53
+ */
62
54
  await (0, _client.invokeHandlerClient)({
63
55
  context,
64
56
  name: IMPORT_PAGES_CREATE_HANDLER,
65
57
  payload: {
66
58
  category: categorySlug,
67
- zipFileKey,
68
59
  zipFileUrl,
69
60
  task,
70
- identity: context.security.getIdentity()
71
- }
61
+ type: "page",
62
+ identity: context.security.getIdentity(),
63
+ meta
64
+ },
65
+ description: "Import Pages - create"
72
66
  });
73
67
  return {
74
68
  task
75
69
  };
76
70
  },
77
-
78
71
  async exportPages({
79
72
  ids: initialPageIds,
80
73
  revisionType,
@@ -82,81 +75,86 @@ var _default = new _ContextPlugin.ContextPlugin(context => {
82
75
  sort,
83
76
  search
84
77
  }) {
85
- await (0, _checkBasePermissions.default)(context, PERMISSION_NAME, {
78
+ await pagesPermissions.ensure({
86
79
  rwd: "w"
87
80
  });
88
- let pageIds = initialPageIds; // If no ids are provided then it means we want to export all pages
89
-
81
+ let pageIds = initialPageIds || [];
82
+ // If no ids are provided then it means we want to export all pages
90
83
  if (!initialPageIds || Array.isArray(initialPageIds) && initialPageIds.length === 0) {
91
84
  pageIds = [];
92
85
  let pages = [];
93
86
  let meta = {
94
87
  hasMoreItems: true,
95
- cursor: null
96
- }; // Paginate pages
97
-
88
+ cursor: null,
89
+ totalCount: 0
90
+ };
91
+ // Paginate pages
98
92
  while (meta.hasMoreItems) {
99
- [pages, meta] = await context.pageBuilder.pages.listLatest({
93
+ [pages, meta] = await context.pageBuilder.listLatestPages({
100
94
  after: meta.cursor,
101
95
  where: where,
102
96
  sort: sort,
103
97
  search: search
104
- }); // Save page ids
105
-
98
+ });
99
+ // Save page ids
106
100
  pages.forEach(page => pageIds.push(page.id));
107
101
  }
108
102
  }
109
-
110
103
  if (pageIds.length === 0) {
111
104
  throw new _error.default("Cannot export pages - no pages found for provided inputs.", "EMPTY_EXPORT_NO_PAGES_FOUND");
112
- } // Create the main task for page export.
113
-
105
+ }
114
106
 
115
- const task = await context.pageBuilder.pageImportExportTask.createTask({
116
- status: _types.PageImportExportTaskStatus.PENDING
107
+ // Create the main task for page export.
108
+ const task = await context.pageBuilder.importExportTask.createTask({
109
+ status: _types.ImportExportTaskStatus.PENDING
117
110
  });
118
- const exportPagesDataKey = `${_utils2.EXPORT_PAGES_FOLDER_KEY}/${task.id}`; // For each page create a sub task and invoke the process handler.
119
-
111
+ const exportPagesDataKey = `${_utils2.EXPORT_PAGES_FOLDER_KEY}/${task.id}`;
112
+ // For each page create a sub task and invoke the process handler.
120
113
  for (let i = 0; i < pageIds.length; i++) {
121
- const pageId = pageIds[i]; // Create sub task.
122
-
123
- await context.pageBuilder.pageImportExportTask.createSubTask(task.id, (0, _utils.zeroPad)(i + 1), {
124
- status: _types.PageImportExportTaskStatus.PENDING,
114
+ const pageId = pageIds[i];
115
+ // Create sub task.
116
+ await context.pageBuilder.importExportTask.createSubTask(task.id, (0, _utils3.zeroPad)(i + 1, 5), {
117
+ status: _types.ImportExportTaskStatus.PENDING,
125
118
  input: {
126
119
  pageId,
127
120
  exportPagesDataKey,
128
121
  revisionType
129
122
  }
130
123
  });
131
- } // Update main task status.
132
-
133
-
134
- await context.pageBuilder.pageImportExportTask.updateTask(task.id, {
135
- status: _types.PageImportExportTaskStatus.PROCESSING,
124
+ }
125
+ // Update main task status.
126
+ await context.pageBuilder.importExportTask.updateTask(task.id, {
127
+ status: _types.ImportExportTaskStatus.PROCESSING,
136
128
  stats: (0, _utils.initialStats)(pageIds.length),
137
129
  input: {
138
130
  exportPagesDataKey,
139
131
  revisionType
140
132
  }
141
- }); // Invoke handler.
133
+ });
142
134
 
135
+ /**
136
+ * Export Pages
137
+ * ExportPages
138
+ * exportPages
139
+ */
140
+ // Invoke handler.
143
141
  await (0, _client.invokeHandlerClient)({
144
142
  context,
145
143
  name: EXPORT_PAGES_PROCESS_HANDLER,
146
144
  payload: {
147
145
  taskId: task.id,
148
146
  subTaskIndex: 1,
147
+ type: "page",
149
148
  identity: context.security.getIdentity()
150
- }
149
+ },
150
+ description: "Export pages - process"
151
151
  });
152
152
  return {
153
153
  task
154
154
  };
155
155
  }
156
-
157
- }; // Modify context
158
-
159
- context.pageBuilder.pages = _objectSpread(_objectSpread({}, context.pageBuilder.pages), importExportCrud);
156
+ };
157
+ // Modify context
158
+ context.pageBuilder.pages = importExportCrud;
160
159
  });
161
-
162
160
  exports.default = _default;