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

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 (194) 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 +27 -17
  81. package/graphql/graphQLHandlerFactory.js.map +1 -1
  82. package/graphql/schema/baseContentSchema.js +4 -8
  83. package/graphql/schema/baseContentSchema.js.map +1 -1
  84. package/graphql/schema/contentEntries.js +1 -1
  85. package/graphql/schema/contentModels.js +18 -1
  86. package/graphql/schema/contentModels.js.map +1 -1
  87. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  88. package/graphql/schema/createFieldResolvers.js +12 -14
  89. package/graphql/schema/createFieldResolvers.js.map +1 -1
  90. package/graphql/schema/createManageResolvers.js +4 -18
  91. package/graphql/schema/createManageResolvers.js.map +1 -1
  92. package/graphql/schema/createManageSDL.js +7 -10
  93. package/graphql/schema/createManageSDL.js.map +1 -1
  94. package/graphql/schema/createPreviewResolvers.js +3 -7
  95. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  96. package/graphql/schema/createReadResolvers.js +3 -7
  97. package/graphql/schema/createReadResolvers.js.map +1 -1
  98. package/graphql/schema/createReadSDL.js +5 -3
  99. package/graphql/schema/createReadSDL.js.map +1 -1
  100. package/graphql/schema/resolvers/manage/resolveGet.js +5 -9
  101. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  102. package/graphql/schema/resolvers/preview/resolveGet.js +3 -7
  103. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  104. package/graphql/schema/resolvers/read/resolveGet.js +3 -7
  105. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  106. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  107. package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
  108. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  109. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  110. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
  111. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  112. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  113. package/graphqlFields/dynamicZone/index.js +21 -0
  114. package/graphqlFields/dynamicZone/index.js.map +1 -0
  115. package/graphqlFields/index.d.ts +1 -1
  116. package/graphqlFields/index.js +3 -1
  117. package/graphqlFields/index.js.map +1 -1
  118. package/graphqlFields/number.js +4 -0
  119. package/graphqlFields/number.js.map +1 -1
  120. package/graphqlFields/object.js +123 -73
  121. package/graphqlFields/object.js.map +1 -1
  122. package/graphqlFields/ref.js +23 -23
  123. package/graphqlFields/ref.js.map +1 -1
  124. package/index.d.ts +1 -1
  125. package/index.js +3 -1
  126. package/index.js.map +1 -1
  127. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  128. package/modelManager/DefaultCmsModelManager.js +1 -1
  129. package/package.json +27 -28
  130. package/parameters/header.js +1 -1
  131. package/parameters/manual.js +7 -8
  132. package/parameters/manual.js.map +1 -1
  133. package/parameters/path.js +1 -1
  134. package/plugins/CmsGroupPlugin.js +1 -1
  135. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  136. package/plugins/CmsModelFieldConverterPlugin.js +1 -1
  137. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  138. package/plugins/CmsModelPlugin.d.ts +6 -2
  139. package/plugins/CmsModelPlugin.js +18 -13
  140. package/plugins/CmsModelPlugin.js.map +1 -1
  141. package/plugins/CmsParametersPlugin.js +1 -1
  142. package/plugins/StorageTransformPlugin.d.ts +11 -11
  143. package/plugins/StorageTransformPlugin.js +1 -1
  144. package/plugins/StorageTransformPlugin.js.map +1 -1
  145. package/storage/object.js +7 -8
  146. package/storage/object.js.map +1 -1
  147. package/types.d.ts +436 -164
  148. package/types.js +50 -9
  149. package/types.js.map +1 -1
  150. package/upgrades/5.33.0/index.js +5 -9
  151. package/upgrades/5.33.0/index.js.map +1 -1
  152. package/utils/converters/Converter.js +1 -1
  153. package/utils/converters/ConverterCollection.js +10 -8
  154. package/utils/converters/ConverterCollection.js.map +1 -1
  155. package/utils/converters/valueKeyStorageConverter.js +3 -7
  156. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  157. package/utils/createTypeFromFields.d.ts +15 -0
  158. package/utils/createTypeFromFields.js +75 -0
  159. package/utils/createTypeFromFields.js.map +1 -0
  160. package/utils/createTypeName.js +4 -2
  161. package/utils/createTypeName.js.map +1 -1
  162. package/utils/entryStorage.js +17 -18
  163. package/utils/entryStorage.js.map +1 -1
  164. package/utils/filterModelFields.js +5 -9
  165. package/utils/filterModelFields.js.map +1 -1
  166. package/utils/getBaseFieldType.d.ts +4 -0
  167. package/utils/getBaseFieldType.js +12 -0
  168. package/utils/getBaseFieldType.js.map +1 -0
  169. package/utils/permissions.js +1 -5
  170. package/utils/permissions.js.map +1 -1
  171. package/utils/pluralizedTypeName.js +1 -1
  172. package/utils/renderFields.js +3 -1
  173. package/utils/renderFields.js.map +1 -1
  174. package/utils/renderGetFilterFields.js +8 -3
  175. package/utils/renderGetFilterFields.js.map +1 -1
  176. package/utils/renderInputFields.js +3 -1
  177. package/utils/renderInputFields.js.map +1 -1
  178. package/utils/renderListFilterFields.js +12 -2
  179. package/utils/renderListFilterFields.js.map +1 -1
  180. package/utils/renderSortEnum.js +3 -1
  181. package/utils/renderSortEnum.js.map +1 -1
  182. package/utils/toSlug.js +1 -1
  183. package/validators/dynamicZone.d.ts +2 -0
  184. package/validators/dynamicZone.js +24 -0
  185. package/validators/dynamicZone.js.map +1 -0
  186. package/validators/index.js +3 -1
  187. package/validators/index.js.map +1 -1
  188. package/validators/unique.js +1 -1
  189. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  190. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  191. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  192. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  193. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  194. 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
8
  exports.createModelsCrud = 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 _dataloader = _interopRequireDefault(require("dataloader"));
13
13
 
@@ -49,60 +49,19 @@ var _access = require("../utils/access");
49
49
 
50
50
  var _validateModelFields = require("./contentModel/validateModelFields");
51
51
 
52
- var _semver = _interopRequireDefault(require("semver"));
53
-
54
- 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; }
55
-
56
- 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; }
57
-
58
52
  /**
59
- * TODO: remove for 5.34.0
60
- * Required because of the 5.33.0 upgrade.
61
- * Until the upgrade is done, API will break because there is no storageId assigned.
53
+ * Given a model, return an array of tags ensuring the `type` tag is set.
62
54
  */
63
- const featureVersion = _semver.default.coerce("5.33.0");
64
-
65
- const attachStorageIdToFields = fields => {
66
- return fields.map(field => {
67
- var _field$settings;
68
-
69
- if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
70
- field.settings.fields = attachStorageIdToFields(field.settings.fields);
71
- }
72
-
73
- if (!field.storageId) {
74
- field.storageId = field.fieldId;
75
- }
76
-
77
- return field;
78
- });
79
- };
80
-
81
- const attachStorageIdToModelFields = model => {
82
- if (!model.webinyVersion) {
83
- return model.fields;
84
- }
55
+ const ensureTypeTag = model => {
56
+ // Let's make sure we have a `type` tag assigned.
57
+ // If `type` tag is not set, set it to a default one (`model`).
58
+ const tags = model.tags || [];
85
59
 
86
- const version = _semver.default.coerce(model.webinyVersion);
87
-
88
- if (!version) {
89
- return model.fields;
60
+ if (!tags.some(tag => tag.startsWith("type:"))) {
61
+ tags.push("type:model");
90
62
  }
91
- /**
92
- * Unfortunately we need to check for beta and next.
93
- * TODO remove after 5.33.0
94
- */
95
-
96
63
 
97
- if (model.webinyVersion.match(/beta|next/)) {
98
- return attachStorageIdToFields(model.fields);
99
- }
100
-
101
- if (_semver.default.compare(version, featureVersion) >= 0) {
102
- return model.fields;
103
- }
104
-
105
- return attachStorageIdToFields(model.fields);
64
+ return tags;
106
65
  };
107
66
 
108
67
  const createModelsCrud = params => {
@@ -122,8 +81,8 @@ const createModelsCrud = params => {
122
81
  }
123
82
  });
124
83
  return [models.map(model => {
125
- return _objectSpread(_objectSpread({}, model), {}, {
126
- fields: attachStorageIdToModelFields(model),
84
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
85
+ tags: ensureTypeTag(model),
127
86
  tenant: model.tenant || getTenant().id,
128
87
  locale: model.locale || getLocale().code
129
88
  });
@@ -161,19 +120,20 @@ const createModelsCrud = params => {
161
120
  */
162
121
  .filter(plugin => {
163
122
  const {
164
- tenant: t,
165
- locale: l
123
+ tenant: modelTenant,
124
+ locale: modelLocale
166
125
  } = plugin.contentModel;
167
126
 
168
- if (t && t !== tenant) {
127
+ if (modelTenant && modelTenant !== tenant) {
169
128
  return false;
170
- } else if (l && l !== locale) {
129
+ } else if (modelLocale && modelLocale !== locale) {
171
130
  return false;
172
131
  }
173
132
 
174
133
  return true;
175
134
  }).map(plugin => {
176
- return _objectSpread(_objectSpread({}, plugin.contentModel), {}, {
135
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
136
+ tags: ensureTypeTag(plugin.contentModel),
177
137
  tenant,
178
138
  locale,
179
139
  webinyVersion: context.WEBINY_VERSION
@@ -210,7 +170,8 @@ const createModelsCrud = params => {
210
170
  throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
211
171
  }
212
172
 
213
- return _objectSpread(_objectSpread({}, model), {}, {
173
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
174
+ tags: ensureTypeTag(model),
214
175
  tenant: model.tenant || getTenant().id,
215
176
  locale: model.locale || getLocale().code
216
177
  });
@@ -258,61 +219,104 @@ const createModelsCrud = params => {
258
219
 
259
220
  return await updateManager(context, model);
260
221
  };
222
+ /**
223
+ * Create
224
+ */
225
+
226
+
227
+ const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
228
+ const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
229
+ const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
230
+ /**
231
+ * Create from / clone
232
+ */
233
+
234
+ const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
235
+ const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
236
+ const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
237
+ /**
238
+ * Update
239
+ */
240
+
241
+ const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
242
+ const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
243
+ const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
244
+ /**
245
+ * Delete
246
+ */
247
+
248
+ const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
249
+ const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
250
+ const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
251
+ /**
252
+ * Initialize
253
+ */
261
254
 
262
- const onBeforeModelCreate = (0, _pubsub.createTopic)();
263
- const onAfterModelCreate = (0, _pubsub.createTopic)();
264
- const onBeforeModelCreateFrom = (0, _pubsub.createTopic)();
265
- const onAfterModelCreateFrom = (0, _pubsub.createTopic)();
266
- const onBeforeModelUpdate = (0, _pubsub.createTopic)();
267
- const onAfterModelUpdate = (0, _pubsub.createTopic)();
268
- const onBeforeModelDelete = (0, _pubsub.createTopic)();
269
- const onAfterModelDelete = (0, _pubsub.createTopic)();
270
255
  const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
271
256
  /**
272
257
  * We need to assign some default behaviors.
273
258
  */
274
259
 
275
- (0, _beforeCreate.assignBeforeModelCreate)({
276
- onBeforeModelCreate,
277
- onBeforeModelCreateFrom,
260
+ (0, _beforeCreate.assignModelBeforeCreate)({
261
+ onModelBeforeCreate,
262
+ onModelBeforeCreateFrom,
278
263
  plugins: context.plugins,
279
264
  storageOperations
280
265
  });
281
- (0, _afterCreate.assignAfterModelCreate)({
266
+ (0, _afterCreate.assignModelAfterCreate)({
282
267
  context,
283
- onAfterModelCreate
268
+ onModelAfterCreate
284
269
  });
285
- (0, _beforeUpdate.assignBeforeModelUpdate)({
286
- onBeforeModelUpdate,
270
+ (0, _beforeUpdate.assignModelBeforeUpdate)({
271
+ onModelBeforeUpdate,
287
272
  plugins: context.plugins,
288
273
  storageOperations
289
274
  });
290
- (0, _afterUpdate.assignAfterModelUpdate)({
275
+ (0, _afterUpdate.assignModelAfterUpdate)({
291
276
  context,
292
- onAfterModelUpdate
277
+ onModelAfterUpdate
293
278
  });
294
- (0, _afterCreateFrom.assignAfterModelCreateFrom)({
279
+ (0, _afterCreateFrom.assignModelAfterCreateFrom)({
295
280
  context,
296
- onAfterModelCreateFrom
281
+ onModelAfterCreateFrom
297
282
  });
298
- (0, _beforeDelete.assignBeforeModelDelete)({
299
- onBeforeModelDelete,
283
+ (0, _beforeDelete.assignModelBeforeDelete)({
284
+ onModelBeforeDelete,
300
285
  plugins: context.plugins,
301
286
  storageOperations
302
287
  });
303
- (0, _afterDelete.assignAfterModelDelete)({
288
+ (0, _afterDelete.assignModelAfterDelete)({
304
289
  context,
305
- onAfterModelDelete
290
+ onModelAfterDelete
306
291
  });
307
292
  return {
308
- onBeforeModelCreate,
309
- onAfterModelCreate,
310
- onBeforeModelCreateFrom,
311
- onAfterModelCreateFrom,
312
- onBeforeModelUpdate,
313
- onAfterModelUpdate,
314
- onBeforeModelDelete,
315
- onAfterModelDelete,
293
+ /**
294
+ * Deprecated - will be removed in 5.36.0
295
+ */
296
+ onBeforeModelCreate: onModelBeforeCreate,
297
+ onAfterModelCreate: onModelAfterCreate,
298
+ onBeforeModelCreateFrom: onModelBeforeCreateFrom,
299
+ onAfterModelCreateFrom: onModelAfterCreateFrom,
300
+ onBeforeModelUpdate: onModelBeforeUpdate,
301
+ onAfterModelUpdate: onModelAfterUpdate,
302
+ onBeforeModelDelete: onModelBeforeDelete,
303
+ onAfterModelDelete: onModelAfterDelete,
304
+
305
+ /**
306
+ * Released in 5.34.0
307
+ */
308
+ onModelBeforeCreate,
309
+ onModelAfterCreate,
310
+ onModelCreateError,
311
+ onModelBeforeCreateFrom,
312
+ onModelAfterCreateFrom,
313
+ onModelCreateFromError,
314
+ onModelBeforeUpdate,
315
+ onModelAfterUpdate,
316
+ onModelUpdateError,
317
+ onModelBeforeDelete,
318
+ onModelAfterDelete,
319
+ onModelDeleteError,
316
320
  onModelInitialize,
317
321
  clearModelsCache,
318
322
  getModel,
@@ -354,22 +358,34 @@ const createModelsCrud = params => {
354
358
  fields,
355
359
  lockedFields: [],
356
360
  layout: input.layout || [],
361
+ tags: [...(input.tags || [])],
357
362
  webinyVersion: context.WEBINY_VERSION
358
363
  };
359
- await onBeforeModelCreate.publish({
360
- input,
361
- model
362
- });
363
- const createdModel = await storageOperations.models.create({
364
- model
365
- });
366
- loaders.listModels.clearAll();
367
- await updateManager(context, model);
368
- await onAfterModelCreate.publish({
369
- input,
370
- model: createdModel
371
- });
372
- return createdModel;
364
+ model.tags = ensureTypeTag(model);
365
+
366
+ try {
367
+ await onModelBeforeCreate.publish({
368
+ input,
369
+ model
370
+ });
371
+ const createdModel = await storageOperations.models.create({
372
+ model
373
+ });
374
+ loaders.listModels.clearAll();
375
+ await updateManager(context, model);
376
+ await onModelAfterCreate.publish({
377
+ input,
378
+ model: createdModel
379
+ });
380
+ return createdModel;
381
+ } catch (ex) {
382
+ await onModelCreateError.publish({
383
+ input,
384
+ model,
385
+ error: ex
386
+ });
387
+ throw ex;
388
+ }
373
389
  },
374
390
 
375
391
  /**
@@ -381,29 +397,38 @@ const createModelsCrud = params => {
381
397
  model: initialModel,
382
398
  original
383
399
  } = params;
384
-
385
- const model = _objectSpread(_objectSpread({}, initialModel), {}, {
400
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
386
401
  tenant: initialModel.tenant || getTenant().id,
387
402
  locale: initialModel.locale || getLocale().code,
388
403
  webinyVersion: context.WEBINY_VERSION
389
404
  });
390
405
 
391
- await onBeforeModelUpdate.publish({
392
- input: {},
393
- original,
394
- model
395
- });
396
- const resultModel = await storageOperations.models.update({
397
- model
398
- });
399
- await updateManager(context, resultModel);
400
- loaders.listModels.clearAll();
401
- await onAfterModelUpdate.publish({
402
- input: {},
403
- original,
404
- model: resultModel
405
- });
406
- return resultModel;
406
+ try {
407
+ await onModelBeforeUpdate.publish({
408
+ input: {},
409
+ original,
410
+ model
411
+ });
412
+ const resultModel = await storageOperations.models.update({
413
+ model
414
+ });
415
+ await updateManager(context, resultModel);
416
+ loaders.listModels.clearAll();
417
+ await onModelAfterUpdate.publish({
418
+ input: {},
419
+ original,
420
+ model: resultModel
421
+ });
422
+ return resultModel;
423
+ } catch (ex) {
424
+ await onModelUpdateError.publish({
425
+ input: {},
426
+ original,
427
+ model,
428
+ error: ex
429
+ });
430
+ throw ex;
431
+ }
407
432
  },
408
433
 
409
434
  async createModelFrom(modelId, data) {
@@ -443,8 +468,7 @@ const createModelsCrud = params => {
443
468
  }
444
469
 
445
470
  const identity = getIdentity();
446
-
447
- const model = _objectSpread(_objectSpread({}, original), {}, {
471
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
448
472
  locale: locale.code,
449
473
  group: {
450
474
  id: group.id,
@@ -464,22 +488,32 @@ const createModelsCrud = params => {
464
488
  webinyVersion: context.WEBINY_VERSION
465
489
  });
466
490
 
467
- await onBeforeModelCreateFrom.publish({
468
- input,
469
- model,
470
- original
471
- });
472
- const createdModel = await storageOperations.models.create({
473
- model
474
- });
475
- loaders.listModels.clearAll();
476
- await updateManager(context, model);
477
- await onAfterModelCreateFrom.publish({
478
- input,
479
- original,
480
- model: createdModel
481
- });
482
- return createdModel;
491
+ try {
492
+ await onModelBeforeCreateFrom.publish({
493
+ input,
494
+ model,
495
+ original
496
+ });
497
+ const createdModel = await storageOperations.models.create({
498
+ model
499
+ });
500
+ loaders.listModels.clearAll();
501
+ await updateManager(context, model);
502
+ await onModelAfterCreateFrom.publish({
503
+ input,
504
+ original,
505
+ model: createdModel
506
+ });
507
+ return createdModel;
508
+ } catch (ex) {
509
+ await onModelCreateFromError.publish({
510
+ input,
511
+ original,
512
+ model,
513
+ error: ex
514
+ });
515
+ throw ex;
516
+ }
483
517
  },
484
518
 
485
519
  async updateModel(modelId, inputData) {
@@ -520,8 +554,7 @@ const createModelsCrud = params => {
520
554
  }
521
555
 
522
556
  const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
523
-
524
- const model = _objectSpread(_objectSpread(_objectSpread({}, original), input), {}, {
557
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
525
558
  group,
526
559
  tenant: original.tenant || getTenant().id,
527
560
  locale: original.locale || getLocale().code,
@@ -529,46 +562,66 @@ const createModelsCrud = params => {
529
562
  fields,
530
563
  savedOn: new Date().toISOString()
531
564
  });
565
+ model.tags = ensureTypeTag(model);
532
566
 
533
- await onBeforeModelUpdate.publish({
534
- input,
535
- original,
536
- model
537
- });
538
- const resultModel = await storageOperations.models.update({
539
- model
540
- });
541
- await updateManager(context, resultModel);
542
- await onAfterModelUpdate.publish({
543
- input,
544
- original,
545
- model: resultModel
546
- });
547
- return resultModel;
567
+ try {
568
+ await onModelBeforeUpdate.publish({
569
+ input,
570
+ original,
571
+ model
572
+ });
573
+ const resultModel = await storageOperations.models.update({
574
+ model
575
+ });
576
+ await updateManager(context, resultModel);
577
+ await onModelAfterUpdate.publish({
578
+ input,
579
+ original,
580
+ model: resultModel
581
+ });
582
+ return resultModel;
583
+ } catch (ex) {
584
+ await onModelUpdateError.publish({
585
+ input,
586
+ model,
587
+ original,
588
+ error: ex
589
+ });
590
+ throw ex;
591
+ }
548
592
  },
549
593
 
550
594
  async deleteModel(modelId) {
551
595
  await checkModelPermissions("d");
552
596
  const model = await getModel(modelId);
553
- await onBeforeModelDelete.publish({
554
- model
555
- });
556
597
 
557
598
  try {
558
- await storageOperations.models.delete({
599
+ await onModelBeforeDelete.publish({
600
+ model
601
+ });
602
+
603
+ try {
604
+ await storageOperations.models.delete({
605
+ model
606
+ });
607
+ } catch (ex) {
608
+ throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
609
+ error: ex,
610
+ modelId: model.modelId
611
+ });
612
+ }
613
+
614
+ await onModelAfterDelete.publish({
559
615
  model
560
616
  });
617
+ managers.delete(model.modelId);
561
618
  } catch (ex) {
562
- throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
563
- error: ex,
564
- modelId: model.modelId
619
+ await onModelDeleteError.publish({
620
+ model,
621
+ error: ex
565
622
  });
623
+ throw ex;
566
624
  }
567
-
568
- await onAfterModelDelete.publish({
569
- model
570
- });
571
- managers.delete(model.modelId);
572
625
  },
573
626
 
574
627
  async initializeModel(modelId, data) {