@webiny/api-headless-cms 5.33.5 → 5.34.0-beta.0

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 (195) hide show
  1. package/context.js +3 -7
  2. package/context.js.map +1 -1
  3. package/crud/contentEntry/afterDelete.d.ts +2 -2
  4. package/crud/contentEntry/afterDelete.js +2 -2
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.d.ts +2 -2
  7. package/crud/contentEntry/beforeCreate.js +2 -2
  8. package/crud/contentEntry/beforeCreate.js.map +1 -1
  9. package/crud/contentEntry/beforeUpdate.d.ts +2 -2
  10. package/crud/contentEntry/beforeUpdate.js +2 -2
  11. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  12. package/crud/contentEntry/entryDataValidation.js +3 -7
  13. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  14. package/crud/contentEntry/markLockedFields.js +10 -11
  15. package/crud/contentEntry/markLockedFields.js.map +1 -1
  16. package/crud/contentEntry/referenceFieldsMapping.js +11 -13
  17. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  18. package/crud/contentEntry/searchableFields.d.ts +9 -0
  19. package/crud/contentEntry/searchableFields.js +83 -0
  20. package/crud/contentEntry/searchableFields.js.map +1 -0
  21. package/crud/contentEntry.crud.d.ts +0 -2
  22. package/crud/contentEntry.crud.js +249 -269
  23. package/crud/contentEntry.crud.js.map +1 -1
  24. package/crud/contentModel/afterCreate.d.ts +3 -3
  25. package/crud/contentModel/afterCreate.js +5 -5
  26. package/crud/contentModel/afterCreate.js.map +1 -1
  27. package/crud/contentModel/afterCreateFrom.d.ts +3 -3
  28. package/crud/contentModel/afterCreateFrom.js +5 -5
  29. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  30. package/crud/contentModel/afterDelete.d.ts +3 -3
  31. package/crud/contentModel/afterDelete.js +5 -5
  32. package/crud/contentModel/afterDelete.js.map +1 -1
  33. package/crud/contentModel/afterUpdate.d.ts +3 -3
  34. package/crud/contentModel/afterUpdate.js +5 -5
  35. package/crud/contentModel/afterUpdate.js.map +1 -1
  36. package/crud/contentModel/beforeCreate.d.ts +4 -4
  37. package/crud/contentModel/beforeCreate.js +10 -10
  38. package/crud/contentModel/beforeCreate.js.map +1 -1
  39. package/crud/contentModel/beforeDelete.d.ts +3 -3
  40. package/crud/contentModel/beforeDelete.js +6 -6
  41. package/crud/contentModel/beforeDelete.js.map +1 -1
  42. package/crud/contentModel/beforeUpdate.d.ts +3 -3
  43. package/crud/contentModel/beforeUpdate.js +5 -5
  44. package/crud/contentModel/beforeUpdate.js.map +1 -1
  45. package/crud/contentModel/createFieldStorageId.js +5 -1
  46. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  47. package/crud/contentModel/models.js +12 -0
  48. package/crud/contentModel/models.js.map +1 -1
  49. package/crud/contentModel/validateModel.js +1 -1
  50. package/crud/contentModel/validateModelFields.js +42 -34
  51. package/crud/contentModel/validateModelFields.js.map +1 -1
  52. package/crud/contentModel.crud.js +222 -169
  53. package/crud/contentModel.crud.js.map +1 -1
  54. package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
  55. package/crud/contentModelGroup/beforeCreate.js +3 -3
  56. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  57. package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
  58. package/crud/contentModelGroup/beforeDelete.js +3 -3
  59. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  60. package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
  61. package/crud/contentModelGroup/beforeUpdate.js +2 -2
  62. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  63. package/crud/contentModelGroup.crud.js +87 -37
  64. package/crud/contentModelGroup.crud.js.map +1 -1
  65. package/crud/index.js +3 -7
  66. package/crud/index.js.map +1 -1
  67. package/crud/settings.crud.js +3 -8
  68. package/crud/settings.crud.js.map +1 -1
  69. package/crud/system.crud.js +63 -51
  70. package/crud/system.crud.js.map +1 -1
  71. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
  72. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  73. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
  74. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  75. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
  76. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  77. package/fieldConverters/index.d.ts +2 -1
  78. package/fieldConverters/index.js +3 -1
  79. package/fieldConverters/index.js.map +1 -1
  80. package/graphql/graphQLHandlerFactory.js +21 -17
  81. package/graphql/graphQLHandlerFactory.js.map +1 -1
  82. package/graphql/index.d.ts +1 -1
  83. package/graphql/schema/baseContentSchema.js +4 -8
  84. package/graphql/schema/baseContentSchema.js.map +1 -1
  85. package/graphql/schema/contentEntries.js +1 -1
  86. package/graphql/schema/contentModels.js +18 -1
  87. package/graphql/schema/contentModels.js.map +1 -1
  88. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  89. package/graphql/schema/createFieldResolvers.js +12 -14
  90. package/graphql/schema/createFieldResolvers.js.map +1 -1
  91. package/graphql/schema/createManageResolvers.js +4 -18
  92. package/graphql/schema/createManageResolvers.js.map +1 -1
  93. package/graphql/schema/createManageSDL.js +7 -10
  94. package/graphql/schema/createManageSDL.js.map +1 -1
  95. package/graphql/schema/createPreviewResolvers.js +3 -7
  96. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  97. package/graphql/schema/createReadResolvers.js +3 -7
  98. package/graphql/schema/createReadResolvers.js.map +1 -1
  99. package/graphql/schema/createReadSDL.js +5 -3
  100. package/graphql/schema/createReadSDL.js.map +1 -1
  101. package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
  102. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  103. package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
  104. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  105. package/graphql/schema/resolvers/read/resolveGet.js +3 -7
  106. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  107. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  108. package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
  109. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  110. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  111. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
  112. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  113. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  114. package/graphqlFields/dynamicZone/index.js +21 -0
  115. package/graphqlFields/dynamicZone/index.js.map +1 -0
  116. package/graphqlFields/index.d.ts +1 -1
  117. package/graphqlFields/index.js +3 -1
  118. package/graphqlFields/index.js.map +1 -1
  119. package/graphqlFields/number.js +4 -0
  120. package/graphqlFields/number.js.map +1 -1
  121. package/graphqlFields/object.js +123 -73
  122. package/graphqlFields/object.js.map +1 -1
  123. package/graphqlFields/ref.js +23 -23
  124. package/graphqlFields/ref.js.map +1 -1
  125. package/index.d.ts +2 -2
  126. package/index.js +3 -1
  127. package/index.js.map +1 -1
  128. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  129. package/modelManager/DefaultCmsModelManager.js +1 -1
  130. package/package.json +27 -28
  131. package/parameters/header.js +1 -1
  132. package/parameters/manual.js +7 -8
  133. package/parameters/manual.js.map +1 -1
  134. package/parameters/path.js +1 -1
  135. package/plugins/CmsGroupPlugin.js +1 -1
  136. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  137. package/plugins/CmsModelFieldConverterPlugin.js +1 -1
  138. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  139. package/plugins/CmsModelPlugin.d.ts +6 -2
  140. package/plugins/CmsModelPlugin.js +18 -13
  141. package/plugins/CmsModelPlugin.js.map +1 -1
  142. package/plugins/CmsParametersPlugin.js +1 -1
  143. package/plugins/StorageTransformPlugin.d.ts +11 -11
  144. package/plugins/StorageTransformPlugin.js +1 -1
  145. package/plugins/StorageTransformPlugin.js.map +1 -1
  146. package/storage/object.js +7 -8
  147. package/storage/object.js.map +1 -1
  148. package/types.d.ts +436 -164
  149. package/types.js +50 -9
  150. package/types.js.map +1 -1
  151. package/upgrades/5.33.0/index.js +5 -9
  152. package/upgrades/5.33.0/index.js.map +1 -1
  153. package/utils/converters/Converter.js +1 -1
  154. package/utils/converters/ConverterCollection.js +10 -8
  155. package/utils/converters/ConverterCollection.js.map +1 -1
  156. package/utils/converters/valueKeyStorageConverter.js +3 -7
  157. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  158. package/utils/createTypeFromFields.d.ts +15 -0
  159. package/utils/createTypeFromFields.js +75 -0
  160. package/utils/createTypeFromFields.js.map +1 -0
  161. package/utils/createTypeName.js +4 -2
  162. package/utils/createTypeName.js.map +1 -1
  163. package/utils/entryStorage.js +17 -18
  164. package/utils/entryStorage.js.map +1 -1
  165. package/utils/filterModelFields.js +5 -9
  166. package/utils/filterModelFields.js.map +1 -1
  167. package/utils/getBaseFieldType.d.ts +4 -0
  168. package/utils/getBaseFieldType.js +12 -0
  169. package/utils/getBaseFieldType.js.map +1 -0
  170. package/utils/permissions.js +1 -5
  171. package/utils/permissions.js.map +1 -1
  172. package/utils/pluralizedTypeName.js +1 -1
  173. package/utils/renderFields.js +3 -1
  174. package/utils/renderFields.js.map +1 -1
  175. package/utils/renderGetFilterFields.js +8 -3
  176. package/utils/renderGetFilterFields.js.map +1 -1
  177. package/utils/renderInputFields.js +3 -1
  178. package/utils/renderInputFields.js.map +1 -1
  179. package/utils/renderListFilterFields.js +12 -2
  180. package/utils/renderListFilterFields.js.map +1 -1
  181. package/utils/renderSortEnum.js +3 -1
  182. package/utils/renderSortEnum.js.map +1 -1
  183. package/utils/toSlug.js +1 -1
  184. package/validators/dynamicZone.d.ts +2 -0
  185. package/validators/dynamicZone.js +24 -0
  186. package/validators/dynamicZone.js.map +1 -0
  187. package/validators/index.js +3 -1
  188. package/validators/index.js.map +1 -1
  189. package/validators/unique.js +1 -1
  190. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  191. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  192. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  193. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  194. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  195. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.createContentEntryCrud = exports.STATUS_UNPUBLISHED = exports.STATUS_REVIEW_REQUESTED = exports.STATUS_PUBLISHED = exports.STATUS_DRAFT = exports.STATUS_CHANGES_REQUESTED = void 0;
8
+ exports.createContentEntryCrud = exports.STATUS_UNPUBLISHED = exports.STATUS_PUBLISHED = exports.STATUS_DRAFT = void 0;
9
9
 
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
 
12
12
  var _mdbid = _interopRequireDefault(require("mdbid"));
13
13
 
@@ -41,20 +41,18 @@ var _entryStorage = require("../utils/entryStorage");
41
41
 
42
42
  var _valueKeyStorageConverter = require("../utils/converters/valueKeyStorageConverter");
43
43
 
44
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
-
46
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
44
+ var _searchableFields = require("./contentEntry/searchableFields");
47
45
 
46
+ /**
47
+ * Package mdbid does not have types.
48
+ */
49
+ // @ts-ignore
48
50
  const STATUS_DRAFT = "draft";
49
51
  exports.STATUS_DRAFT = STATUS_DRAFT;
50
52
  const STATUS_PUBLISHED = "published";
51
53
  exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
52
54
  const STATUS_UNPUBLISHED = "unpublished";
53
55
  exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
54
- const STATUS_CHANGES_REQUESTED = "changesRequested";
55
- exports.STATUS_CHANGES_REQUESTED = STATUS_CHANGES_REQUESTED;
56
- const STATUS_REVIEW_REQUESTED = "reviewRequested";
57
- exports.STATUS_REVIEW_REQUESTED = STATUS_REVIEW_REQUESTED;
58
56
 
59
57
  /**
60
58
  * Used for some fields to convert their values.
@@ -221,33 +219,10 @@ const increaseEntryIdVersion = id => {
221
219
  };
222
220
  };
223
221
 
224
- const getSearchableFields = params => {
225
- const {
226
- plugins,
227
- model,
228
- fields
229
- } = params;
230
- const fieldPluginMap = plugins.byType("cms-model-field-to-graphql").reduce((collection, field) => {
231
- collection[field.fieldType] = field;
232
- return collection;
233
- }, {});
234
- return model.fields.filter(field => {
235
- if (!field.fieldId) {
236
- return false;
237
- }
238
-
239
- const plugin = fieldPluginMap[field.type];
240
-
241
- if (!plugin) {
242
- return false;
243
- } else if (!plugin.fullTextSearch) {
244
- return false;
245
- } else if (!fields || fields.length === 0) {
246
- return true;
247
- }
222
+ const allowedEntryStatus = ["draft", "published", "unpublished"];
248
223
 
249
- return fields.includes(field.fieldId);
250
- }).map(field => field.fieldId);
224
+ const transformEntryStatus = status => {
225
+ return allowedEntryStatus.includes(status) ? status : "draft";
251
226
  };
252
227
 
253
228
  const createContentEntryCrud = params => {
@@ -260,41 +235,71 @@ const createContentEntryCrud = params => {
260
235
  const {
261
236
  plugins
262
237
  } = context;
263
- const onBeforeEntryCreate = (0, _pubsub.createTopic)();
264
- const onAfterEntryCreate = (0, _pubsub.createTopic)();
265
- const onBeforeEntryCreateRevision = (0, _pubsub.createTopic)();
266
- const onAfterEntryCreateRevision = (0, _pubsub.createTopic)();
267
- const onBeforeEntryUpdate = (0, _pubsub.createTopic)();
268
- const onAfterEntryUpdate = (0, _pubsub.createTopic)();
269
- const onBeforeEntryPublish = (0, _pubsub.createTopic)();
270
- const onAfterEntryPublish = (0, _pubsub.createTopic)();
271
- const onBeforeEntryUnpublish = (0, _pubsub.createTopic)();
272
- const onAfterEntryUnpublish = (0, _pubsub.createTopic)();
273
- const onBeforeEntryRequestChanges = (0, _pubsub.createTopic)();
274
- const onAfterEntryRequestChanges = (0, _pubsub.createTopic)();
275
- const onBeforeEntryRequestReview = (0, _pubsub.createTopic)();
276
- const onAfterEntryRequestReview = (0, _pubsub.createTopic)();
277
- const onBeforeEntryDelete = (0, _pubsub.createTopic)();
278
- const onAfterEntryDelete = (0, _pubsub.createTopic)();
279
- const onBeforeEntryDeleteRevision = (0, _pubsub.createTopic)();
280
- const onAfterEntryDeleteRevision = (0, _pubsub.createTopic)();
281
- const onBeforeEntryGet = (0, _pubsub.createTopic)();
282
- const onBeforeEntryList = (0, _pubsub.createTopic)();
238
+ /**
239
+ * Create
240
+ */
241
+
242
+ const onEntryBeforeCreate = (0, _pubsub.createTopic)("cms.onEntryBeforeCreate");
243
+ const onEntryAfterCreate = (0, _pubsub.createTopic)("cms.onEntryAfterCreate");
244
+ const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
245
+ /**
246
+ * Create new revision
247
+ */
248
+
249
+ const onEntryBeforeCreateRevision = (0, _pubsub.createTopic)("cms.onEntryBeforeCreateRevision");
250
+ const onEntryRevisionAfterCreate = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterCreate");
251
+ const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
252
+ /**
253
+ * Update
254
+ */
255
+
256
+ const onEntryBeforeUpdate = (0, _pubsub.createTopic)("cms.onEntryBeforeUpdate");
257
+ const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
258
+ const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
259
+ /**
260
+ * Publish
261
+ */
262
+
263
+ const onEntryBeforePublish = (0, _pubsub.createTopic)("cms.onEntryBeforePublish");
264
+ const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublic");
265
+ const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
266
+ /**
267
+ * Unpublish
268
+ */
269
+
270
+ const onEntryBeforeUnpublish = (0, _pubsub.createTopic)("cms.onEntryBeforeUnpublish");
271
+ const onEntryAfterUnpublish = (0, _pubsub.createTopic)("cms.onEntryAfterUnpublish");
272
+ const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
273
+ /**
274
+ * Delete
275
+ */
276
+
277
+ const onEntryBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryBeforeDelete");
278
+ const onEntryAfterDelete = (0, _pubsub.createTopic)("cms.onEntryAfterDelete");
279
+ const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError"); // delete revision
280
+
281
+ const onEntryRevisionBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionBeforeDelete");
282
+ const onEntryRevisionAfterDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterDelete");
283
+ const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError"); // get
284
+
285
+ const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet"); // list
286
+
287
+ const onEntryBeforeList = (0, _pubsub.createTopic)("cms.onEntryBeforeList");
283
288
  /**
284
289
  * We need to assign some default behaviors.
285
290
  */
286
291
 
287
292
  (0, _beforeCreate.assignBeforeEntryCreate)({
288
293
  context,
289
- onBeforeEntryCreate
294
+ onEntryBeforeCreate
290
295
  });
291
296
  (0, _beforeUpdate.assignBeforeEntryUpdate)({
292
297
  context,
293
- onBeforeEntryUpdate
298
+ onEntryBeforeUpdate
294
299
  });
295
300
  (0, _afterDelete.assignAfterEntryDelete)({
296
301
  context,
297
- onAfterEntryDelete
302
+ onEntryAfterDelete
298
303
  });
299
304
 
300
305
  const checkEntryPermissions = check => {
@@ -312,18 +317,23 @@ const createContentEntryCrud = params => {
312
317
  } = params;
313
318
 
314
319
  try {
315
- await onBeforeEntryDelete.publish({
320
+ await onEntryBeforeDelete.publish({
316
321
  entry,
317
322
  model
318
323
  });
319
324
  await storageOperations.entries.delete(model, {
320
325
  entry
321
326
  });
322
- await onAfterEntryDelete.publish({
327
+ await onEntryAfterDelete.publish({
323
328
  entry,
324
329
  model
325
330
  });
326
331
  } catch (ex) {
332
+ await onEntryDeleteError.publish({
333
+ entry,
334
+ model,
335
+ error: ex
336
+ });
327
337
  throw new _error.default(ex.message || "Could not delete entry.", ex.code || "DELETE_ERROR", {
328
338
  entry
329
339
  });
@@ -350,26 +360,78 @@ const createContentEntryCrud = params => {
350
360
  };
351
361
 
352
362
  return {
353
- onBeforeEntryCreate,
354
- onAfterEntryCreate,
355
- onBeforeEntryCreateRevision,
356
- onAfterEntryCreateRevision,
357
- onBeforeEntryUpdate,
358
- onAfterEntryUpdate,
359
- onBeforeEntryDelete,
360
- onAfterEntryDelete,
361
- onBeforeEntryDeleteRevision,
362
- onAfterEntryDeleteRevision,
363
- onBeforeEntryPublish,
364
- onAfterEntryPublish,
365
- onBeforeEntryUnpublish,
366
- onAfterEntryUnpublish,
367
- onBeforeEntryRequestChanges,
368
- onAfterEntryRequestChanges,
369
- onBeforeEntryRequestReview,
370
- onAfterEntryRequestReview,
371
- onBeforeEntryGet,
372
- onBeforeEntryList,
363
+ /**
364
+ * Deprecated - will be removed in 5.35.0
365
+ */
366
+ onBeforeEntryCreate: onEntryBeforeCreate,
367
+ onAfterEntryCreate: onEntryAfterCreate,
368
+ onBeforeEntryCreateRevision: onEntryBeforeCreateRevision,
369
+ onAfterEntryCreateRevision: onEntryRevisionAfterCreate,
370
+ onBeforeEntryUpdate: onEntryBeforeUpdate,
371
+ onAfterEntryUpdate: onEntryAfterUpdate,
372
+ onBeforeEntryDelete: onEntryBeforeDelete,
373
+ onAfterEntryDelete: onEntryAfterDelete,
374
+ onBeforeEntryDeleteRevision: onEntryRevisionBeforeDelete,
375
+ onAfterEntryDeleteRevision: onEntryRevisionAfterDelete,
376
+ onBeforeEntryPublish: onEntryBeforePublish,
377
+ onAfterEntryPublish: onEntryAfterPublish,
378
+ onBeforeEntryUnpublish: onEntryBeforeUnpublish,
379
+ onAfterEntryUnpublish: onEntryAfterUnpublish,
380
+ onBeforeEntryGet: onEntryBeforeGet,
381
+ onBeforeEntryList: onEntryBeforeList,
382
+
383
+ /**
384
+ * Released in 5.34.0
385
+ *
386
+ * Create
387
+ */
388
+ onEntryBeforeCreate,
389
+ onEntryAfterCreate,
390
+ onEntryCreateError,
391
+
392
+ /**
393
+ * Create revision
394
+ */
395
+ onEntryRevisionBeforeCreate: onEntryBeforeCreateRevision,
396
+ onEntryRevisionAfterCreate,
397
+ onEntryRevisionCreateError: onEntryCreateRevisionError,
398
+
399
+ /**
400
+ * Update
401
+ */
402
+ onEntryBeforeUpdate,
403
+ onEntryAfterUpdate,
404
+ onEntryUpdateError,
405
+
406
+ /**
407
+ * Delete whole entry
408
+ */
409
+ onEntryBeforeDelete,
410
+ onEntryAfterDelete,
411
+ onEntryDeleteError,
412
+
413
+ /**
414
+ * Delete entry revision
415
+ */
416
+ onEntryRevisionBeforeDelete,
417
+ onEntryRevisionAfterDelete,
418
+ onEntryRevisionDeleteError,
419
+
420
+ /**
421
+ * Publish
422
+ */
423
+ onEntryBeforePublish,
424
+ onEntryAfterPublish,
425
+ onEntryPublishError,
426
+
427
+ /**
428
+ * Unpublish
429
+ */
430
+ onEntryBeforeUnpublish,
431
+ onEntryAfterUnpublish,
432
+ onEntryUnpublishError,
433
+ onEntryBeforeGet,
434
+ onEntryBeforeList,
373
435
 
374
436
  /**
375
437
  * Get entries by exact revision IDs from the database.
@@ -379,7 +441,7 @@ const createContentEntryCrud = params => {
379
441
  /**
380
442
  * Get a single entry by revision ID from the database.
381
443
  */
382
- getEntryById: async (initialModel, id) => {
444
+ async getEntryById(initialModel, id) {
383
445
  const where = {
384
446
  id
385
447
  };
@@ -387,7 +449,7 @@ const createContentEntryCrud = params => {
387
449
  model: initialModel,
388
450
  plugins
389
451
  });
390
- await onBeforeEntryGet.publish({
452
+ await onEntryBeforeGet.publish({
391
453
  where,
392
454
  model
393
455
  });
@@ -403,7 +465,7 @@ const createContentEntryCrud = params => {
403
465
  /**
404
466
  * Get published revisions by entry IDs.
405
467
  */
406
- getPublishedEntriesByIds: async (initialModel, ids) => {
468
+ async getPublishedEntriesByIds(initialModel, ids) {
407
469
  const permission = await checkEntryPermissions({
408
470
  rwd: "r"
409
471
  });
@@ -419,9 +481,9 @@ const createContentEntryCrud = params => {
419
481
  },
420
482
 
421
483
  /**
422
- * Get latest revisions by entry IDs.
484
+ * Get the latest revisions by entry IDs.
423
485
  */
424
- getLatestEntriesByIds: async (initialModel, ids) => {
486
+ async getLatestEntriesByIds(initialModel, ids) {
425
487
  const permission = await checkEntryPermissions({
426
488
  rwd: "r"
427
489
  });
@@ -435,7 +497,8 @@ const createContentEntryCrud = params => {
435
497
  });
436
498
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
437
499
  },
438
- getEntryRevisions: async (initialModel, entryId) => {
500
+
501
+ async getEntryRevisions(initialModel, entryId) {
439
502
  const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
440
503
  model: initialModel,
441
504
  plugins
@@ -450,7 +513,7 @@ const createContentEntryCrud = params => {
450
513
  *
451
514
  * @internal
452
515
  */
453
- getEntry: async (initialModel, params) => {
516
+ async getEntry(initialModel, params) {
454
517
  await checkEntryPermissions({
455
518
  rwd: "r"
456
519
  });
@@ -462,11 +525,11 @@ const createContentEntryCrud = params => {
462
525
  where,
463
526
  sort
464
527
  } = params;
465
- await onBeforeEntryGet.publish({
528
+ await onEntryBeforeGet.publish({
466
529
  where,
467
530
  model
468
531
  });
469
- const [items] = await context.cms.listEntries(model, {
532
+ const [items] = await this.listEntries(model, {
470
533
  where,
471
534
  sort,
472
535
  limit: 1
@@ -484,7 +547,7 @@ const createContentEntryCrud = params => {
484
547
  *
485
548
  * @internal
486
549
  */
487
- listEntries: async (initialModel, params) => {
550
+ async listEntries(initialModel, params) {
488
551
  const permission = await checkEntryPermissions({
489
552
  rwd: "r"
490
553
  });
@@ -500,13 +563,12 @@ const createContentEntryCrud = params => {
500
563
  * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
501
564
  */
502
565
 
503
- const where = _objectSpread({}, initialWhere);
566
+ const where = (0, _objectSpread2.default)({}, initialWhere);
504
567
  /**
505
568
  * Possibly only get records which are owned by current user.
506
569
  * Or if searching for the owner set that value - in the case that user can see other entries than their own.
507
570
  */
508
571
 
509
-
510
572
  const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
511
573
 
512
574
  if (ownedBy !== undefined) {
@@ -528,14 +590,14 @@ const createContentEntryCrud = params => {
528
590
  });
529
591
  }
530
592
 
531
- const fields = getSearchableFields({
532
- model,
593
+ const fields = (0, _searchableFields.getSearchableFields)({
594
+ fields: model.fields,
533
595
  plugins: context.plugins,
534
- fields: params.fields || []
596
+ input: params.fields || []
535
597
  });
536
598
 
537
599
  try {
538
- await onBeforeEntryList.publish({
600
+ await onEntryBeforeList.publish({
539
601
  where,
540
602
  model
541
603
  });
@@ -544,7 +606,7 @@ const createContentEntryCrud = params => {
544
606
  totalCount,
545
607
  cursor,
546
608
  items
547
- } = await storageOperations.entries.list(model, _objectSpread(_objectSpread({}, params), {}, {
609
+ } = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
548
610
  where,
549
611
  fields
550
612
  }));
@@ -562,33 +624,40 @@ const createContentEntryCrud = params => {
562
624
  } catch (ex) {
563
625
  throw new _error.default("Error while fetching entries from storage.", "LIST_ENTRIES_ERROR", {
564
626
  params,
565
- error: ex,
627
+ error: {
628
+ message: ex.message,
629
+ code: ex.code,
630
+ data: ex.data
631
+ },
566
632
  model,
567
633
  fields
568
634
  });
569
635
  }
570
636
  },
571
- listLatestEntries: async function (model, params) {
637
+
638
+ async listLatestEntries(model, params) {
572
639
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
573
- return context.cms.listEntries(model, _objectSpread(_objectSpread({
640
+ return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
574
641
  sort: ["createdOn_DESC"]
575
642
  }, params || {}), {}, {
576
- where: _objectSpread(_objectSpread({}, where), {}, {
643
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
577
644
  latest: true
578
645
  })
579
646
  }));
580
647
  },
581
- listPublishedEntries: async function (model, params) {
648
+
649
+ async listPublishedEntries(model, params) {
582
650
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
583
- return context.cms.listEntries(model, _objectSpread(_objectSpread({
651
+ return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
584
652
  sort: ["createdOn_DESC"]
585
653
  }, params || {}), {}, {
586
- where: _objectSpread(_objectSpread({}, where), {}, {
654
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
587
655
  published: true
588
656
  })
589
657
  }));
590
658
  },
591
- createEntry: async (initialModel, inputData) => {
659
+
660
+ async createEntry(initialModel, inputData) {
592
661
  await checkEntryPermissions({
593
662
  rwd: "w"
594
663
  });
@@ -614,7 +683,7 @@ const createContentEntryCrud = params => {
614
683
  validateEntries: true
615
684
  });
616
685
  const identity = context.security.getIdentity();
617
- const locale = context.cms.getLocale();
686
+ const locale = this.getLocale();
618
687
  const owner = {
619
688
  id: identity.id,
620
689
  displayName: identity.displayName,
@@ -644,7 +713,7 @@ const createContentEntryCrud = params => {
644
713
  let storageEntry = null;
645
714
 
646
715
  try {
647
- await onBeforeEntryCreate.publish({
716
+ await onEntryBeforeCreate.publish({
648
717
  entry,
649
718
  input,
650
719
  model
@@ -654,7 +723,7 @@ const createContentEntryCrud = params => {
654
723
  entry,
655
724
  storageEntry
656
725
  });
657
- await onAfterEntryCreate.publish({
726
+ await onEntryAfterCreate.publish({
658
727
  entry,
659
728
  storageEntry: result,
660
729
  model,
@@ -662,6 +731,12 @@ const createContentEntryCrud = params => {
662
731
  });
663
732
  return result;
664
733
  } catch (ex) {
734
+ await onEntryCreateError.publish({
735
+ error: ex,
736
+ entry,
737
+ model,
738
+ input
739
+ });
665
740
  throw new _error.default(ex.message || "Could not create content entry.", ex.code || "CREATE_ENTRY_ERROR", ex.data || {
666
741
  error: ex,
667
742
  input,
@@ -670,7 +745,8 @@ const createContentEntryCrud = params => {
670
745
  });
671
746
  }
672
747
  },
673
- createEntryRevisionFrom: async (initialModel, sourceId, inputData) => {
748
+
749
+ async createEntryRevisionFrom(initialModel, sourceId, inputData) {
674
750
  const permission = await checkEntryPermissions({
675
751
  rwd: "w"
676
752
  });
@@ -707,9 +783,7 @@ const createContentEntryCrud = params => {
707
783
 
708
784
 
709
785
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
710
-
711
- const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
712
-
786
+ const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
713
787
  await (0, _entryDataValidation.validateModelEntryData)({
714
788
  context,
715
789
  model,
@@ -729,8 +803,7 @@ const createContentEntryCrud = params => {
729
803
  id,
730
804
  version: nextVersion
731
805
  } = increaseEntryIdVersion(latestId);
732
-
733
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
806
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
734
807
  id,
735
808
  version: nextVersion,
736
809
  savedOn: new Date().toISOString(),
@@ -745,11 +818,10 @@ const createContentEntryCrud = params => {
745
818
  status: STATUS_DRAFT,
746
819
  values
747
820
  });
748
-
749
821
  let storageEntry = null;
750
822
 
751
823
  try {
752
- await onBeforeEntryCreateRevision.publish({
824
+ await onEntryBeforeCreateRevision.publish({
753
825
  input,
754
826
  entry,
755
827
  original: originalEntry,
@@ -760,7 +832,7 @@ const createContentEntryCrud = params => {
760
832
  entry,
761
833
  storageEntry
762
834
  });
763
- await onAfterEntryCreateRevision.publish({
835
+ await onEntryRevisionAfterCreate.publish({
764
836
  input,
765
837
  entry,
766
838
  model,
@@ -769,6 +841,13 @@ const createContentEntryCrud = params => {
769
841
  });
770
842
  return result;
771
843
  } catch (ex) {
844
+ await onEntryCreateRevisionError.publish({
845
+ entry,
846
+ original: originalEntry,
847
+ model,
848
+ input,
849
+ error: ex
850
+ });
772
851
  throw new _error.default(ex.message || "Could not create entry from existing one.", ex.code || "CREATE_FROM_REVISION_ERROR", {
773
852
  error: ex,
774
853
  entry,
@@ -778,7 +857,8 @@ const createContentEntryCrud = params => {
778
857
  });
779
858
  }
780
859
  },
781
- updateEntry: async (initialModel, id, inputData, metaInput) => {
860
+
861
+ async updateEntry(initialModel, id, inputData, metaInput) {
782
862
  const permission = await checkEntryPermissions({
783
863
  rwd: "w"
784
864
  });
@@ -816,9 +896,7 @@ const createContentEntryCrud = params => {
816
896
  entry: originalEntry
817
897
  });
818
898
  (0, _ownership.checkOwnership)(context, permission, originalEntry);
819
-
820
- const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
821
-
899
+ const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
822
900
  const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
823
901
  context,
824
902
  model,
@@ -834,16 +912,16 @@ const createContentEntryCrud = params => {
834
912
  * We always send the full entry to the hooks and storage operations update.
835
913
  */
836
914
 
837
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
915
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
838
916
  savedOn: new Date().toISOString(),
839
917
  values,
840
- meta
918
+ meta,
919
+ status: transformEntryStatus(originalEntry.status)
841
920
  });
842
-
843
921
  let storageEntry = null;
844
922
 
845
923
  try {
846
- await onBeforeEntryUpdate.publish({
924
+ await onEntryBeforeUpdate.publish({
847
925
  entry,
848
926
  model,
849
927
  input,
@@ -854,7 +932,7 @@ const createContentEntryCrud = params => {
854
932
  entry,
855
933
  storageEntry
856
934
  });
857
- await onAfterEntryUpdate.publish({
935
+ await onEntryAfterUpdate.publish({
858
936
  entry,
859
937
  storageEntry: result,
860
938
  model,
@@ -863,6 +941,12 @@ const createContentEntryCrud = params => {
863
941
  });
864
942
  return result;
865
943
  } catch (ex) {
944
+ await onEntryUpdateError.publish({
945
+ entry,
946
+ model,
947
+ input,
948
+ error: ex
949
+ });
866
950
  throw new _error.default(ex.message || "Could not update existing entry.", ex.code || "UPDATE_ERROR", {
867
951
  error: ex,
868
952
  entry,
@@ -872,7 +956,12 @@ const createContentEntryCrud = params => {
872
956
  });
873
957
  }
874
958
  },
875
- republishEntry: async (initialModel, id) => {
959
+
960
+ /**
961
+ * Method used internally. Not documented and should not be used in users systems.
962
+ * @internal
963
+ */
964
+ async republishEntry(initialModel, id) {
876
965
  await checkEntryPermissions({
877
966
  rwd: "w"
878
967
  });
@@ -911,13 +1000,11 @@ const createContentEntryCrud = params => {
911
1000
  input: originalEntry.values,
912
1001
  validateEntries: false
913
1002
  });
914
-
915
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1003
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
916
1004
  savedOn: new Date().toISOString(),
917
1005
  webinyVersion: context.WEBINY_VERSION,
918
1006
  values
919
1007
  });
920
-
921
1008
  const storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
922
1009
  /**
923
1010
  * First we need to update existing entry.
@@ -949,7 +1036,8 @@ const createContentEntryCrud = params => {
949
1036
  });
950
1037
  }
951
1038
  },
952
- deleteEntryRevision: async (initialModel, revisionId) => {
1039
+
1040
+ async deleteEntryRevision(initialModel, revisionId) {
953
1041
  const permission = await checkEntryPermissions({
954
1042
  rwd: "d"
955
1043
  });
@@ -1005,7 +1093,7 @@ const createContentEntryCrud = params => {
1005
1093
  }
1006
1094
 
1007
1095
  try {
1008
- await onBeforeEntryDeleteRevision.publish({
1096
+ await onEntryRevisionBeforeDelete.publish({
1009
1097
  entry: entryToDelete,
1010
1098
  model
1011
1099
  });
@@ -1015,11 +1103,16 @@ const createContentEntryCrud = params => {
1015
1103
  latestEntry: entryToSetAsLatest,
1016
1104
  latestStorageEntry: storageEntryToSetAsLatest
1017
1105
  });
1018
- await onAfterEntryDeleteRevision.publish({
1106
+ await onEntryRevisionAfterDelete.publish({
1019
1107
  entry: entryToDelete,
1020
1108
  model
1021
1109
  });
1022
1110
  } catch (ex) {
1111
+ await onEntryRevisionDeleteError.publish({
1112
+ entry: entryToDelete,
1113
+ model,
1114
+ error: ex
1115
+ });
1023
1116
  throw new _error.default(ex.message, ex.code || "DELETE_REVISION_ERROR", {
1024
1117
  error: ex,
1025
1118
  entry: entryToDelete,
@@ -1029,7 +1122,8 @@ const createContentEntryCrud = params => {
1029
1122
  });
1030
1123
  }
1031
1124
  },
1032
- deleteEntry: async (initialModel, entryId) => {
1125
+
1126
+ async deleteEntry(initialModel, entryId) {
1033
1127
  const permission = await checkEntryPermissions({
1034
1128
  rwd: "d"
1035
1129
  });
@@ -1053,7 +1147,8 @@ const createContentEntryCrud = params => {
1053
1147
  entry
1054
1148
  });
1055
1149
  },
1056
- publishEntry: async (initialModel, id) => {
1150
+
1151
+ async publishEntry(initialModel, id) {
1057
1152
  const permission = await checkEntryPermissions({
1058
1153
  pw: "p"
1059
1154
  });
@@ -1073,18 +1168,16 @@ const createContentEntryCrud = params => {
1073
1168
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1074
1169
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1075
1170
  const currentDate = new Date().toISOString();
1076
-
1077
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1171
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
1078
1172
  status: STATUS_PUBLISHED,
1079
1173
  locked: true,
1080
1174
  savedOn: currentDate,
1081
1175
  publishedOn: currentDate
1082
1176
  });
1083
-
1084
1177
  let storageEntry = null;
1085
1178
 
1086
1179
  try {
1087
- await onBeforeEntryPublish.publish({
1180
+ await onEntryBeforePublish.publish({
1088
1181
  entry,
1089
1182
  model
1090
1183
  });
@@ -1093,13 +1186,18 @@ const createContentEntryCrud = params => {
1093
1186
  entry,
1094
1187
  storageEntry
1095
1188
  });
1096
- await onAfterEntryPublish.publish({
1189
+ await onEntryAfterPublish.publish({
1097
1190
  entry,
1098
1191
  storageEntry: result,
1099
1192
  model
1100
1193
  });
1101
1194
  return result;
1102
1195
  } catch (ex) {
1196
+ await onEntryPublishError.publish({
1197
+ entry,
1198
+ model,
1199
+ error: ex
1200
+ });
1103
1201
  throw new _error.default(ex.message || "Could not publish entry.", ex.code || "PUBLISH_ERROR", {
1104
1202
  error: ex,
1105
1203
  entry,
@@ -1109,130 +1207,8 @@ const createContentEntryCrud = params => {
1109
1207
  });
1110
1208
  }
1111
1209
  },
1112
- requestEntryChanges: async (initialModel, id) => {
1113
- const permission = await checkEntryPermissions({
1114
- pw: "c"
1115
- });
1116
- const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1117
- model: initialModel,
1118
- plugins
1119
- });
1120
- const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
1121
- id
1122
- });
1123
-
1124
- if (!originalStorageEntry) {
1125
- throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
1126
- }
1127
-
1128
- const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1129
-
1130
- if (originalEntry.status !== STATUS_REVIEW_REQUESTED) {
1131
- throw new _error.default("Cannot request changes on an entry that's not under review.", "ENTRY_NOT_UNDER_REVIEW");
1132
- }
1133
-
1134
- const identity = context.security.getIdentity();
1135
-
1136
- if (originalEntry.ownedBy.id === identity.id) {
1137
- throw new _error.default("You cannot request changes on your own entry.", "CANNOT_REQUEST_CHANGES_ON_OWN_ENTRY");
1138
- }
1139
-
1140
- (0, _ownership.checkOwnership)(context, permission, originalEntry);
1141
1210
 
1142
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1143
- status: STATUS_CHANGES_REQUESTED
1144
- });
1145
-
1146
- let storageEntry = null;
1147
-
1148
- try {
1149
- await onBeforeEntryRequestChanges.publish({
1150
- entry,
1151
- model
1152
- });
1153
- storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
1154
- const result = await storageOperations.entries.requestChanges(model, {
1155
- entry,
1156
- storageEntry
1157
- });
1158
- await onAfterEntryRequestChanges.publish({
1159
- entry,
1160
- storageEntry: result,
1161
- model
1162
- });
1163
- return result;
1164
- } catch (ex) {
1165
- throw new _error.default(ex.message || "Could not request changes for the entry.", ex.code || "REQUEST_CHANGES_ERROR", {
1166
- entry,
1167
- originalEntry
1168
- });
1169
- }
1170
- },
1171
- requestEntryReview: async (initialModel, id) => {
1172
- const permission = await checkEntryPermissions({
1173
- pw: "r"
1174
- });
1175
- const {
1176
- id: entryId
1177
- } = (0, _utils.parseIdentifier)(id);
1178
- const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1179
- model: initialModel,
1180
- plugins
1181
- });
1182
- const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
1183
- id
1184
- });
1185
- const latestEntryRevision = await storageOperations.entries.getLatestRevisionByEntryId(model, {
1186
- id: entryId
1187
- });
1188
-
1189
- if (!originalStorageEntry) {
1190
- throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
1191
- } else if (!latestEntryRevision) {
1192
- throw new _handlerGraphql.NotFoundError(`Entry "${id}" does not have latest record`);
1193
- }
1194
-
1195
- const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1196
- const allowedStatuses = [STATUS_DRAFT, STATUS_CHANGES_REQUESTED];
1197
-
1198
- if (!allowedStatuses.includes(originalEntry.status)) {
1199
- throw new _error.default("Cannot request review - entry is not a draft nor was a change request issued.", "REQUEST_REVIEW_ERROR", {
1200
- entry: originalEntry
1201
- });
1202
- }
1203
-
1204
- (0, _ownership.checkOwnership)(context, permission, originalEntry);
1205
-
1206
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1207
- status: STATUS_REVIEW_REQUESTED
1208
- });
1209
-
1210
- let storageEntry = null;
1211
-
1212
- try {
1213
- await onBeforeEntryRequestReview.publish({
1214
- entry,
1215
- model
1216
- });
1217
- storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
1218
- const result = await storageOperations.entries.requestReview(model, {
1219
- entry,
1220
- storageEntry
1221
- });
1222
- await onAfterEntryRequestReview.publish({
1223
- entry,
1224
- storageEntry: result,
1225
- model
1226
- });
1227
- return result;
1228
- } catch (ex) {
1229
- throw new _error.default(ex.message || "Could not request review on the entry.", ex.code || "REQUEST_REVIEW_ERROR", {
1230
- originalEntry,
1231
- entry
1232
- });
1233
- }
1234
- },
1235
- unpublishEntry: async (initialModel, id) => {
1211
+ async unpublishEntry(initialModel, id) {
1236
1212
  const permission = await checkEntryPermissions({
1237
1213
  pw: "u"
1238
1214
  });
@@ -1259,15 +1235,13 @@ const createContentEntryCrud = params => {
1259
1235
 
1260
1236
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1261
1237
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1262
-
1263
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1238
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
1264
1239
  status: STATUS_UNPUBLISHED
1265
1240
  });
1266
-
1267
1241
  let storageEntry = null;
1268
1242
 
1269
1243
  try {
1270
- await onBeforeEntryUnpublish.publish({
1244
+ await onEntryBeforeUnpublish.publish({
1271
1245
  entry,
1272
1246
  model
1273
1247
  });
@@ -1276,13 +1250,18 @@ const createContentEntryCrud = params => {
1276
1250
  entry,
1277
1251
  storageEntry
1278
1252
  });
1279
- await onAfterEntryUnpublish.publish({
1253
+ await onEntryAfterUnpublish.publish({
1280
1254
  entry,
1281
1255
  storageEntry: result,
1282
1256
  model
1283
1257
  });
1284
1258
  return result;
1285
1259
  } catch (ex) {
1260
+ await onEntryUnpublishError.publish({
1261
+ entry,
1262
+ model,
1263
+ error: ex
1264
+ });
1286
1265
  throw new _error.default(ex.message || "Could not unpublish entry.", ex.code || "UNPUBLISH_ERROR", {
1287
1266
  originalEntry,
1288
1267
  originalStorageEntry,
@@ -1291,6 +1270,7 @@ const createContentEntryCrud = params => {
1291
1270
  });
1292
1271
  }
1293
1272
  }
1273
+
1294
1274
  };
1295
1275
  };
1296
1276