@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.60e968001a

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 (232) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +63 -8
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/afterDelete.d.ts +2 -2
  5. package/crud/contentEntry/afterDelete.js +2 -2
  6. package/crud/contentEntry/afterDelete.js.map +1 -1
  7. package/crud/contentEntry/beforeCreate.d.ts +2 -2
  8. package/crud/contentEntry/beforeCreate.js +2 -2
  9. package/crud/contentEntry/beforeCreate.js.map +1 -1
  10. package/crud/contentEntry/beforeUpdate.d.ts +2 -2
  11. package/crud/contentEntry/beforeUpdate.js +2 -2
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataValidation.js +3 -7
  14. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  15. package/crud/contentEntry/markLockedFields.js +10 -11
  16. package/crud/contentEntry/markLockedFields.js.map +1 -1
  17. package/crud/contentEntry/referenceFieldsMapping.js +11 -13
  18. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  19. package/crud/contentEntry/searchableFields.d.ts +9 -0
  20. package/crud/contentEntry/searchableFields.js +83 -0
  21. package/crud/contentEntry/searchableFields.js.map +1 -0
  22. package/crud/contentEntry.crud.d.ts +0 -2
  23. package/crud/contentEntry.crud.js +253 -270
  24. package/crud/contentEntry.crud.js.map +1 -1
  25. package/crud/contentModel/afterCreate.d.ts +3 -3
  26. package/crud/contentModel/afterCreate.js +5 -5
  27. package/crud/contentModel/afterCreate.js.map +1 -1
  28. package/crud/contentModel/afterCreateFrom.d.ts +3 -3
  29. package/crud/contentModel/afterCreateFrom.js +5 -5
  30. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  31. package/crud/contentModel/afterDelete.d.ts +3 -3
  32. package/crud/contentModel/afterDelete.js +5 -5
  33. package/crud/contentModel/afterDelete.js.map +1 -1
  34. package/crud/contentModel/afterUpdate.d.ts +3 -3
  35. package/crud/contentModel/afterUpdate.js +5 -5
  36. package/crud/contentModel/afterUpdate.js.map +1 -1
  37. package/crud/contentModel/beforeCreate.d.ts +4 -4
  38. package/crud/contentModel/beforeCreate.js +10 -10
  39. package/crud/contentModel/beforeCreate.js.map +1 -1
  40. package/crud/contentModel/beforeDelete.d.ts +3 -3
  41. package/crud/contentModel/beforeDelete.js +6 -6
  42. package/crud/contentModel/beforeDelete.js.map +1 -1
  43. package/crud/contentModel/beforeUpdate.d.ts +3 -3
  44. package/crud/contentModel/beforeUpdate.js +5 -5
  45. package/crud/contentModel/beforeUpdate.js.map +1 -1
  46. package/crud/contentModel/createFieldStorageId.js +5 -1
  47. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  48. package/crud/contentModel/models.js +12 -0
  49. package/crud/contentModel/models.js.map +1 -1
  50. package/crud/contentModel/validateModel.js +1 -1
  51. package/crud/contentModel/validateModelFields.js +47 -42
  52. package/crud/contentModel/validateModelFields.js.map +1 -1
  53. package/crud/contentModel/validation.d.ts +477 -0
  54. package/crud/contentModel/validation.js +109 -0
  55. package/crud/contentModel/validation.js.map +1 -0
  56. package/crud/contentModel.crud.js +287 -211
  57. package/crud/contentModel.crud.js.map +1 -1
  58. package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
  59. package/crud/contentModelGroup/beforeCreate.js +3 -3
  60. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  61. package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
  62. package/crud/contentModelGroup/beforeDelete.js +3 -3
  63. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  64. package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
  65. package/crud/contentModelGroup/beforeUpdate.js +2 -2
  66. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  67. package/crud/contentModelGroup/validation.d.ts +30 -0
  68. package/crud/contentModelGroup/validation.js +43 -0
  69. package/crud/contentModelGroup/validation.js.map +1 -0
  70. package/crud/contentModelGroup.crud.js +102 -82
  71. package/crud/contentModelGroup.crud.js.map +1 -1
  72. package/crud/settings.crud.js +3 -8
  73. package/crud/settings.crud.js.map +1 -1
  74. package/crud/system.crud.js +63 -51
  75. package/crud/system.crud.js.map +1 -1
  76. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -1
  77. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  78. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
  79. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  80. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +17 -19
  81. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  82. package/fieldConverters/index.d.ts +2 -1
  83. package/fieldConverters/index.js +3 -1
  84. package/fieldConverters/index.js.map +1 -1
  85. package/graphql/buildSchemaPlugins.d.ts +2 -2
  86. package/graphql/buildSchemaPlugins.js.map +1 -1
  87. package/graphql/graphQLHandlerFactory.js +59 -29
  88. package/graphql/graphQLHandlerFactory.js.map +1 -1
  89. package/graphql/index.d.ts +2 -2
  90. package/graphql/index.js +49 -38
  91. package/graphql/index.js.map +1 -1
  92. package/graphql/schema/baseContentSchema.d.ts +2 -2
  93. package/graphql/schema/baseContentSchema.js +8 -12
  94. package/graphql/schema/baseContentSchema.js.map +1 -1
  95. package/graphql/schema/contentEntries.d.ts +2 -2
  96. package/graphql/schema/contentEntries.js +6 -6
  97. package/graphql/schema/contentEntries.js.map +1 -1
  98. package/graphql/schema/contentModelGroups.d.ts +2 -2
  99. package/graphql/schema/contentModelGroups.js +3 -3
  100. package/graphql/schema/contentModelGroups.js.map +1 -1
  101. package/graphql/schema/contentModels.d.ts +2 -2
  102. package/graphql/schema/contentModels.js +42 -4
  103. package/graphql/schema/contentModels.js.map +1 -1
  104. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  105. package/graphql/schema/createFieldResolvers.js +26 -16
  106. package/graphql/schema/createFieldResolvers.js.map +1 -1
  107. package/graphql/schema/createManageResolvers.js +4 -18
  108. package/graphql/schema/createManageResolvers.js.map +1 -1
  109. package/graphql/schema/createManageSDL.d.ts +2 -0
  110. package/graphql/schema/createManageSDL.js +11 -12
  111. package/graphql/schema/createManageSDL.js.map +1 -1
  112. package/graphql/schema/createPreviewResolvers.js +3 -7
  113. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  114. package/graphql/schema/createReadResolvers.js +8 -7
  115. package/graphql/schema/createReadResolvers.js.map +1 -1
  116. package/graphql/schema/createReadSDL.d.ts +2 -0
  117. package/graphql/schema/createReadSDL.js +11 -5
  118. package/graphql/schema/createReadSDL.js.map +1 -1
  119. package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
  120. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  121. package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
  122. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  123. package/graphql/schema/resolvers/read/resolveGet.js +3 -7
  124. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  125. package/graphql/schema/schemaPlugins.d.ts +2 -2
  126. package/graphql/schema/schemaPlugins.js +11 -8
  127. package/graphql/schema/schemaPlugins.js.map +1 -1
  128. package/graphql/system.js +79 -82
  129. package/graphql/system.js.map +1 -1
  130. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  131. package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
  132. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  133. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  134. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
  135. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  136. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  137. package/graphqlFields/dynamicZone/index.js +21 -0
  138. package/graphqlFields/dynamicZone/index.js.map +1 -0
  139. package/graphqlFields/index.d.ts +1 -1
  140. package/graphqlFields/index.js +3 -1
  141. package/graphqlFields/index.js.map +1 -1
  142. package/graphqlFields/number.js +4 -0
  143. package/graphqlFields/number.js.map +1 -1
  144. package/graphqlFields/object.js +123 -73
  145. package/graphqlFields/object.js.map +1 -1
  146. package/graphqlFields/ref.js +38 -56
  147. package/graphqlFields/ref.js.map +1 -1
  148. package/index.d.ts +3 -3
  149. package/index.js +4 -8
  150. package/index.js.map +1 -1
  151. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  152. package/modelManager/DefaultCmsModelManager.js +1 -1
  153. package/package.json +30 -31
  154. package/parameters/header.js +1 -1
  155. package/parameters/manual.js +7 -8
  156. package/parameters/manual.js.map +1 -1
  157. package/parameters/path.js +1 -1
  158. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  159. package/plugins/CmsGraphQLSchemaPlugin.js +17 -0
  160. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  161. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  162. package/plugins/CmsGraphQLSchemaSorterPlugin.js +38 -0
  163. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  164. package/plugins/CmsGroupPlugin.js +1 -1
  165. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  166. package/plugins/CmsModelFieldConverterPlugin.js +1 -1
  167. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  168. package/plugins/CmsModelPlugin.d.ts +6 -2
  169. package/plugins/CmsModelPlugin.js +18 -13
  170. package/plugins/CmsModelPlugin.js.map +1 -1
  171. package/plugins/CmsParametersPlugin.js +1 -1
  172. package/plugins/StorageTransformPlugin.d.ts +11 -11
  173. package/plugins/StorageTransformPlugin.js +1 -1
  174. package/plugins/StorageTransformPlugin.js.map +1 -1
  175. package/plugins/index.d.ts +2 -0
  176. package/plugins/index.js +26 -0
  177. package/plugins/index.js.map +1 -1
  178. package/storage/object.js +7 -8
  179. package/storage/object.js.map +1 -1
  180. package/types.d.ts +469 -180
  181. package/types.js +55 -9
  182. package/types.js.map +1 -1
  183. package/upgrades/5.33.0/index.js +5 -9
  184. package/upgrades/5.33.0/index.js.map +1 -1
  185. package/utils/converters/Converter.js +1 -1
  186. package/utils/converters/ConverterCollection.d.ts +7 -0
  187. package/utils/converters/ConverterCollection.js +36 -8
  188. package/utils/converters/ConverterCollection.js.map +1 -1
  189. package/utils/converters/valueKeyStorageConverter.js +3 -7
  190. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  191. package/utils/createTypeFromFields.d.ts +15 -0
  192. package/utils/createTypeFromFields.js +75 -0
  193. package/utils/createTypeFromFields.js.map +1 -0
  194. package/utils/createTypeName.js +4 -2
  195. package/utils/createTypeName.js.map +1 -1
  196. package/utils/entryStorage.js +17 -18
  197. package/utils/entryStorage.js.map +1 -1
  198. package/utils/filterModelFields.js +5 -9
  199. package/utils/filterModelFields.js.map +1 -1
  200. package/utils/getBaseFieldType.d.ts +4 -0
  201. package/utils/getBaseFieldType.js +12 -0
  202. package/utils/getBaseFieldType.js.map +1 -0
  203. package/utils/permissions.js +1 -5
  204. package/utils/permissions.js.map +1 -1
  205. package/utils/pluralizedTypeName.js +1 -1
  206. package/utils/renderFields.js +3 -1
  207. package/utils/renderFields.js.map +1 -1
  208. package/utils/renderGetFilterFields.js +8 -3
  209. package/utils/renderGetFilterFields.js.map +1 -1
  210. package/utils/renderInputFields.js +3 -1
  211. package/utils/renderInputFields.js.map +1 -1
  212. package/utils/renderListFilterFields.js +12 -2
  213. package/utils/renderListFilterFields.js.map +1 -1
  214. package/utils/renderSortEnum.d.ts +7 -4
  215. package/utils/renderSortEnum.js +23 -4
  216. package/utils/renderSortEnum.js.map +1 -1
  217. package/utils/toSlug.js +1 -1
  218. package/validators/dynamicZone.d.ts +2 -0
  219. package/validators/dynamicZone.js +24 -0
  220. package/validators/dynamicZone.js.map +1 -0
  221. package/validators/index.js +3 -1
  222. package/validators/index.js.map +1 -1
  223. package/validators/unique.js +1 -1
  224. package/crud/index.d.ts +0 -6
  225. package/crud/index.js +0 -89
  226. package/crud/index.js.map +0 -1
  227. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  228. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  229. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  230. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  231. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  232. 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
  });
@@ -494,19 +557,20 @@ const createContentEntryCrud = params => {
494
557
  plugins
495
558
  });
496
559
  const {
497
- where: initialWhere
560
+ where: initialWhere,
561
+ limit: initialLimit
498
562
  } = params;
563
+ const limit = initialLimit && initialLimit > 0 ? initialLimit : 50;
499
564
  /**
500
565
  * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
501
566
  */
502
567
 
503
- const where = _objectSpread({}, initialWhere);
568
+ const where = (0, _objectSpread2.default)({}, initialWhere);
504
569
  /**
505
570
  * Possibly only get records which are owned by current user.
506
571
  * Or if searching for the owner set that value - in the case that user can see other entries than their own.
507
572
  */
508
573
 
509
-
510
574
  const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
511
575
 
512
576
  if (ownedBy !== undefined) {
@@ -528,14 +592,14 @@ const createContentEntryCrud = params => {
528
592
  });
529
593
  }
530
594
 
531
- const fields = getSearchableFields({
532
- model,
595
+ const fields = (0, _searchableFields.getSearchableFields)({
596
+ fields: model.fields,
533
597
  plugins: context.plugins,
534
- fields: params.fields || []
598
+ input: params.fields || []
535
599
  });
536
600
 
537
601
  try {
538
- await onBeforeEntryList.publish({
602
+ await onEntryBeforeList.publish({
539
603
  where,
540
604
  model
541
605
  });
@@ -544,7 +608,8 @@ const createContentEntryCrud = params => {
544
608
  totalCount,
545
609
  cursor,
546
610
  items
547
- } = await storageOperations.entries.list(model, _objectSpread(_objectSpread({}, params), {}, {
611
+ } = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
612
+ limit,
548
613
  where,
549
614
  fields
550
615
  }));
@@ -562,33 +627,40 @@ const createContentEntryCrud = params => {
562
627
  } catch (ex) {
563
628
  throw new _error.default("Error while fetching entries from storage.", "LIST_ENTRIES_ERROR", {
564
629
  params,
565
- error: ex,
630
+ error: {
631
+ message: ex.message,
632
+ code: ex.code,
633
+ data: ex.data
634
+ },
566
635
  model,
567
636
  fields
568
637
  });
569
638
  }
570
639
  },
571
- listLatestEntries: async function (model, params) {
640
+
641
+ async listLatestEntries(model, params) {
572
642
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
573
- return context.cms.listEntries(model, _objectSpread(_objectSpread({
643
+ return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
574
644
  sort: ["createdOn_DESC"]
575
645
  }, params || {}), {}, {
576
- where: _objectSpread(_objectSpread({}, where), {}, {
646
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
577
647
  latest: true
578
648
  })
579
649
  }));
580
650
  },
581
- listPublishedEntries: async function (model, params) {
651
+
652
+ async listPublishedEntries(model, params) {
582
653
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
583
- return context.cms.listEntries(model, _objectSpread(_objectSpread({
654
+ return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
584
655
  sort: ["createdOn_DESC"]
585
656
  }, params || {}), {}, {
586
- where: _objectSpread(_objectSpread({}, where), {}, {
657
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where), {}, {
587
658
  published: true
588
659
  })
589
660
  }));
590
661
  },
591
- createEntry: async (initialModel, inputData) => {
662
+
663
+ async createEntry(initialModel, inputData) {
592
664
  await checkEntryPermissions({
593
665
  rwd: "w"
594
666
  });
@@ -614,7 +686,7 @@ const createContentEntryCrud = params => {
614
686
  validateEntries: true
615
687
  });
616
688
  const identity = context.security.getIdentity();
617
- const locale = context.cms.getLocale();
689
+ const locale = this.getLocale();
618
690
  const owner = {
619
691
  id: identity.id,
620
692
  displayName: identity.displayName,
@@ -644,7 +716,7 @@ const createContentEntryCrud = params => {
644
716
  let storageEntry = null;
645
717
 
646
718
  try {
647
- await onBeforeEntryCreate.publish({
719
+ await onEntryBeforeCreate.publish({
648
720
  entry,
649
721
  input,
650
722
  model
@@ -654,7 +726,7 @@ const createContentEntryCrud = params => {
654
726
  entry,
655
727
  storageEntry
656
728
  });
657
- await onAfterEntryCreate.publish({
729
+ await onEntryAfterCreate.publish({
658
730
  entry,
659
731
  storageEntry: result,
660
732
  model,
@@ -662,6 +734,12 @@ const createContentEntryCrud = params => {
662
734
  });
663
735
  return result;
664
736
  } catch (ex) {
737
+ await onEntryCreateError.publish({
738
+ error: ex,
739
+ entry,
740
+ model,
741
+ input
742
+ });
665
743
  throw new _error.default(ex.message || "Could not create content entry.", ex.code || "CREATE_ENTRY_ERROR", ex.data || {
666
744
  error: ex,
667
745
  input,
@@ -670,7 +748,8 @@ const createContentEntryCrud = params => {
670
748
  });
671
749
  }
672
750
  },
673
- createEntryRevisionFrom: async (initialModel, sourceId, inputData) => {
751
+
752
+ async createEntryRevisionFrom(initialModel, sourceId, inputData) {
674
753
  const permission = await checkEntryPermissions({
675
754
  rwd: "w"
676
755
  });
@@ -707,9 +786,7 @@ const createContentEntryCrud = params => {
707
786
 
708
787
 
709
788
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
710
-
711
- const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
712
-
789
+ const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
713
790
  await (0, _entryDataValidation.validateModelEntryData)({
714
791
  context,
715
792
  model,
@@ -729,8 +806,7 @@ const createContentEntryCrud = params => {
729
806
  id,
730
807
  version: nextVersion
731
808
  } = increaseEntryIdVersion(latestId);
732
-
733
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
809
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
734
810
  id,
735
811
  version: nextVersion,
736
812
  savedOn: new Date().toISOString(),
@@ -745,11 +821,10 @@ const createContentEntryCrud = params => {
745
821
  status: STATUS_DRAFT,
746
822
  values
747
823
  });
748
-
749
824
  let storageEntry = null;
750
825
 
751
826
  try {
752
- await onBeforeEntryCreateRevision.publish({
827
+ await onEntryBeforeCreateRevision.publish({
753
828
  input,
754
829
  entry,
755
830
  original: originalEntry,
@@ -760,7 +835,7 @@ const createContentEntryCrud = params => {
760
835
  entry,
761
836
  storageEntry
762
837
  });
763
- await onAfterEntryCreateRevision.publish({
838
+ await onEntryRevisionAfterCreate.publish({
764
839
  input,
765
840
  entry,
766
841
  model,
@@ -769,6 +844,13 @@ const createContentEntryCrud = params => {
769
844
  });
770
845
  return result;
771
846
  } catch (ex) {
847
+ await onEntryCreateRevisionError.publish({
848
+ entry,
849
+ original: originalEntry,
850
+ model,
851
+ input,
852
+ error: ex
853
+ });
772
854
  throw new _error.default(ex.message || "Could not create entry from existing one.", ex.code || "CREATE_FROM_REVISION_ERROR", {
773
855
  error: ex,
774
856
  entry,
@@ -778,7 +860,8 @@ const createContentEntryCrud = params => {
778
860
  });
779
861
  }
780
862
  },
781
- updateEntry: async (initialModel, id, inputData, metaInput) => {
863
+
864
+ async updateEntry(initialModel, id, inputData, metaInput) {
782
865
  const permission = await checkEntryPermissions({
783
866
  rwd: "w"
784
867
  });
@@ -816,9 +899,7 @@ const createContentEntryCrud = params => {
816
899
  entry: originalEntry
817
900
  });
818
901
  (0, _ownership.checkOwnership)(context, permission, originalEntry);
819
-
820
- const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
821
-
902
+ const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
822
903
  const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
823
904
  context,
824
905
  model,
@@ -834,16 +915,16 @@ const createContentEntryCrud = params => {
834
915
  * We always send the full entry to the hooks and storage operations update.
835
916
  */
836
917
 
837
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
918
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
838
919
  savedOn: new Date().toISOString(),
839
920
  values,
840
- meta
921
+ meta,
922
+ status: transformEntryStatus(originalEntry.status)
841
923
  });
842
-
843
924
  let storageEntry = null;
844
925
 
845
926
  try {
846
- await onBeforeEntryUpdate.publish({
927
+ await onEntryBeforeUpdate.publish({
847
928
  entry,
848
929
  model,
849
930
  input,
@@ -854,7 +935,7 @@ const createContentEntryCrud = params => {
854
935
  entry,
855
936
  storageEntry
856
937
  });
857
- await onAfterEntryUpdate.publish({
938
+ await onEntryAfterUpdate.publish({
858
939
  entry,
859
940
  storageEntry: result,
860
941
  model,
@@ -863,6 +944,12 @@ const createContentEntryCrud = params => {
863
944
  });
864
945
  return result;
865
946
  } catch (ex) {
947
+ await onEntryUpdateError.publish({
948
+ entry,
949
+ model,
950
+ input,
951
+ error: ex
952
+ });
866
953
  throw new _error.default(ex.message || "Could not update existing entry.", ex.code || "UPDATE_ERROR", {
867
954
  error: ex,
868
955
  entry,
@@ -872,7 +959,12 @@ const createContentEntryCrud = params => {
872
959
  });
873
960
  }
874
961
  },
875
- republishEntry: async (initialModel, id) => {
962
+
963
+ /**
964
+ * Method used internally. Not documented and should not be used in users systems.
965
+ * @internal
966
+ */
967
+ async republishEntry(initialModel, id) {
876
968
  await checkEntryPermissions({
877
969
  rwd: "w"
878
970
  });
@@ -911,13 +1003,11 @@ const createContentEntryCrud = params => {
911
1003
  input: originalEntry.values,
912
1004
  validateEntries: false
913
1005
  });
914
-
915
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1006
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
916
1007
  savedOn: new Date().toISOString(),
917
1008
  webinyVersion: context.WEBINY_VERSION,
918
1009
  values
919
1010
  });
920
-
921
1011
  const storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
922
1012
  /**
923
1013
  * First we need to update existing entry.
@@ -949,7 +1039,8 @@ const createContentEntryCrud = params => {
949
1039
  });
950
1040
  }
951
1041
  },
952
- deleteEntryRevision: async (initialModel, revisionId) => {
1042
+
1043
+ async deleteEntryRevision(initialModel, revisionId) {
953
1044
  const permission = await checkEntryPermissions({
954
1045
  rwd: "d"
955
1046
  });
@@ -1005,7 +1096,7 @@ const createContentEntryCrud = params => {
1005
1096
  }
1006
1097
 
1007
1098
  try {
1008
- await onBeforeEntryDeleteRevision.publish({
1099
+ await onEntryRevisionBeforeDelete.publish({
1009
1100
  entry: entryToDelete,
1010
1101
  model
1011
1102
  });
@@ -1015,11 +1106,16 @@ const createContentEntryCrud = params => {
1015
1106
  latestEntry: entryToSetAsLatest,
1016
1107
  latestStorageEntry: storageEntryToSetAsLatest
1017
1108
  });
1018
- await onAfterEntryDeleteRevision.publish({
1109
+ await onEntryRevisionAfterDelete.publish({
1019
1110
  entry: entryToDelete,
1020
1111
  model
1021
1112
  });
1022
1113
  } catch (ex) {
1114
+ await onEntryRevisionDeleteError.publish({
1115
+ entry: entryToDelete,
1116
+ model,
1117
+ error: ex
1118
+ });
1023
1119
  throw new _error.default(ex.message, ex.code || "DELETE_REVISION_ERROR", {
1024
1120
  error: ex,
1025
1121
  entry: entryToDelete,
@@ -1029,7 +1125,8 @@ const createContentEntryCrud = params => {
1029
1125
  });
1030
1126
  }
1031
1127
  },
1032
- deleteEntry: async (initialModel, entryId) => {
1128
+
1129
+ async deleteEntry(initialModel, entryId) {
1033
1130
  const permission = await checkEntryPermissions({
1034
1131
  rwd: "d"
1035
1132
  });
@@ -1053,7 +1150,8 @@ const createContentEntryCrud = params => {
1053
1150
  entry
1054
1151
  });
1055
1152
  },
1056
- publishEntry: async (initialModel, id) => {
1153
+
1154
+ async publishEntry(initialModel, id) {
1057
1155
  const permission = await checkEntryPermissions({
1058
1156
  pw: "p"
1059
1157
  });
@@ -1073,18 +1171,16 @@ const createContentEntryCrud = params => {
1073
1171
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1074
1172
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1075
1173
  const currentDate = new Date().toISOString();
1076
-
1077
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1174
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
1078
1175
  status: STATUS_PUBLISHED,
1079
1176
  locked: true,
1080
1177
  savedOn: currentDate,
1081
1178
  publishedOn: currentDate
1082
1179
  });
1083
-
1084
1180
  let storageEntry = null;
1085
1181
 
1086
1182
  try {
1087
- await onBeforeEntryPublish.publish({
1183
+ await onEntryBeforePublish.publish({
1088
1184
  entry,
1089
1185
  model
1090
1186
  });
@@ -1093,13 +1189,18 @@ const createContentEntryCrud = params => {
1093
1189
  entry,
1094
1190
  storageEntry
1095
1191
  });
1096
- await onAfterEntryPublish.publish({
1192
+ await onEntryAfterPublish.publish({
1097
1193
  entry,
1098
1194
  storageEntry: result,
1099
1195
  model
1100
1196
  });
1101
1197
  return result;
1102
1198
  } catch (ex) {
1199
+ await onEntryPublishError.publish({
1200
+ entry,
1201
+ model,
1202
+ error: ex
1203
+ });
1103
1204
  throw new _error.default(ex.message || "Could not publish entry.", ex.code || "PUBLISH_ERROR", {
1104
1205
  error: ex,
1105
1206
  entry,
@@ -1109,130 +1210,8 @@ const createContentEntryCrud = params => {
1109
1210
  });
1110
1211
  }
1111
1212
  },
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
1213
 
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) => {
1214
+ async unpublishEntry(initialModel, id) {
1236
1215
  const permission = await checkEntryPermissions({
1237
1216
  pw: "u"
1238
1217
  });
@@ -1259,15 +1238,13 @@ const createContentEntryCrud = params => {
1259
1238
 
1260
1239
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1261
1240
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1262
-
1263
- const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
1241
+ const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
1264
1242
  status: STATUS_UNPUBLISHED
1265
1243
  });
1266
-
1267
1244
  let storageEntry = null;
1268
1245
 
1269
1246
  try {
1270
- await onBeforeEntryUnpublish.publish({
1247
+ await onEntryBeforeUnpublish.publish({
1271
1248
  entry,
1272
1249
  model
1273
1250
  });
@@ -1276,13 +1253,18 @@ const createContentEntryCrud = params => {
1276
1253
  entry,
1277
1254
  storageEntry
1278
1255
  });
1279
- await onAfterEntryUnpublish.publish({
1256
+ await onEntryAfterUnpublish.publish({
1280
1257
  entry,
1281
1258
  storageEntry: result,
1282
1259
  model
1283
1260
  });
1284
1261
  return result;
1285
1262
  } catch (ex) {
1263
+ await onEntryUnpublishError.publish({
1264
+ entry,
1265
+ model,
1266
+ error: ex
1267
+ });
1286
1268
  throw new _error.default(ex.message || "Could not unpublish entry.", ex.code || "UNPUBLISH_ERROR", {
1287
1269
  originalEntry,
1288
1270
  originalStorageEntry,
@@ -1291,6 +1273,7 @@ const createContentEntryCrud = params => {
1291
1273
  });
1292
1274
  }
1293
1275
  }
1276
+
1294
1277
  };
1295
1278
  };
1296
1279