@webiny/api-headless-cms 5.39.0-beta.0 → 5.39.0-beta.2

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 (250) hide show
  1. package/constants.d.ts +31 -0
  2. package/constants.js +48 -1
  3. package/constants.js.map +1 -1
  4. package/context.js +40 -34
  5. package/context.js.map +1 -1
  6. package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
  7. package/crud/contentEntry/entryDataFactories/createEntryData.js +228 -0
  8. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
  9. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +21 -0
  10. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +114 -0
  11. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
  12. package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
  13. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +61 -0
  14. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
  15. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
  16. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +57 -0
  17. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
  18. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
  19. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +38 -0
  20. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
  21. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
  22. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +122 -0
  23. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
  24. package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
  25. package/crud/contentEntry/entryDataFactories/index.js +95 -0
  26. package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
  27. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
  28. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
  29. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
  30. package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
  31. package/crud/contentEntry/entryDataFactories/statuses.js +15 -0
  32. package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
  33. package/crud/contentEntry/entryDataValidation.js +29 -24
  34. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  35. package/crud/contentEntry/markLockedFields.js +14 -9
  36. package/crud/contentEntry/markLockedFields.js.map +1 -1
  37. package/crud/contentEntry/referenceFieldsMapping.js +10 -12
  38. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  39. package/crud/contentEntry/searchableFields.js +2 -3
  40. package/crud/contentEntry/searchableFields.js.map +1 -1
  41. package/crud/contentEntry.crud.d.ts +1 -4
  42. package/crud/contentEntry.crud.js +140 -383
  43. package/crud/contentEntry.crud.js.map +1 -1
  44. package/crud/contentModel/fields/descriptionField.js +1 -1
  45. package/crud/contentModel/fields/descriptionField.js.map +1 -1
  46. package/crud/contentModel/fields/imageField.js +3 -7
  47. package/crud/contentModel/fields/imageField.js.map +1 -1
  48. package/crud/contentModel/fields/titleField.js +1 -1
  49. package/crud/contentModel/fields/titleField.js.map +1 -1
  50. package/crud/contentModel/listModelsFromDatabase.js +3 -4
  51. package/crud/contentModel/listModelsFromDatabase.js.map +1 -1
  52. package/crud/contentModel/validateModelFields.js +4 -5
  53. package/crud/contentModel/validateModelFields.js.map +1 -1
  54. package/crud/contentModel/validation.d.ts +96 -96
  55. package/crud/contentModel.crud.js +28 -26
  56. package/crud/contentModel.crud.js.map +1 -1
  57. package/crud/contentModelGroup/validation.d.ts +1 -1
  58. package/crud/contentModelGroup.crud.js +18 -15
  59. package/crud/contentModelGroup.crud.js.map +1 -1
  60. package/crud/system.crud.js +4 -4
  61. package/crud/system.crud.js.map +1 -1
  62. package/export/crud/exporting.js +2 -3
  63. package/export/crud/exporting.js.map +1 -1
  64. package/export/crud/importing.js +3 -3
  65. package/export/crud/importing.js.map +1 -1
  66. package/export/crud/imports/importData.js +30 -3
  67. package/export/crud/imports/importData.js.map +1 -1
  68. package/export/crud/imports/importGroups.js +15 -10
  69. package/export/crud/imports/importGroups.js.map +1 -1
  70. package/export/crud/imports/importModels.js +14 -12
  71. package/export/crud/imports/importModels.js.map +1 -1
  72. package/export/crud/imports/validateGroups.js +13 -7
  73. package/export/crud/imports/validateGroups.js.map +1 -1
  74. package/export/crud/imports/validateInput.js +15 -9
  75. package/export/crud/imports/validateInput.js.map +1 -1
  76. package/export/crud/imports/validateModels.d.ts +4 -1
  77. package/export/crud/imports/validateModels.js +24 -25
  78. package/export/crud/imports/validateModels.js.map +1 -1
  79. package/export/types.d.ts +2 -0
  80. package/export/types.js.map +1 -1
  81. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -6
  82. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  83. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +2 -7
  84. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  85. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +44 -37
  86. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  87. package/graphql/getSchema.js +15 -9
  88. package/graphql/getSchema.js.map +1 -1
  89. package/graphql/index.d.ts +1 -1
  90. package/graphql/schema/baseContentSchema.js +6 -7
  91. package/graphql/schema/baseContentSchema.js.map +1 -1
  92. package/graphql/schema/baseSchema.js +1 -8
  93. package/graphql/schema/baseSchema.js.map +1 -1
  94. package/graphql/schema/contentEntries.js +44 -13
  95. package/graphql/schema/contentEntries.js.map +1 -1
  96. package/graphql/schema/contentModelGroups.js +1 -1
  97. package/graphql/schema/contentModelGroups.js.map +1 -1
  98. package/graphql/schema/contentModels.js +5 -5
  99. package/graphql/schema/contentModels.js.map +1 -1
  100. package/graphql/schema/createFieldResolvers.js +11 -11
  101. package/graphql/schema/createFieldResolvers.js.map +1 -1
  102. package/graphql/schema/createManageResolvers.js +6 -9
  103. package/graphql/schema/createManageResolvers.js.map +1 -1
  104. package/graphql/schema/createManageSDL.js +30 -24
  105. package/graphql/schema/createManageSDL.js.map +1 -1
  106. package/graphql/schema/createPreviewResolvers.js +4 -5
  107. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  108. package/graphql/schema/createReadResolvers.js +4 -5
  109. package/graphql/schema/createReadResolvers.js.map +1 -1
  110. package/graphql/schema/createReadSDL.js +9 -4
  111. package/graphql/schema/createReadSDL.js.map +1 -1
  112. package/graphql/schema/resolvers/manage/resolveDelete.js +1 -1
  113. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  114. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +1 -1
  115. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
  116. package/graphql/schema/resolvers/manage/resolveGet.js +9 -4
  117. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  118. package/graphql/schema/resolvers/manage/resolvePublish.d.ts +1 -2
  119. package/graphql/schema/resolvers/manage/resolvePublish.js +1 -1
  120. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  121. package/graphql/schema/resolvers/preview/resolveGet.js +3 -4
  122. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  123. package/graphql/schema/resolvers/read/resolveGet.js +3 -4
  124. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  125. package/graphqlFields/datetime.js +1 -2
  126. package/graphqlFields/datetime.js.map +1 -1
  127. package/graphqlFields/dynamicZone/dynamicZoneField.js +13 -13
  128. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  129. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +6 -6
  130. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  131. package/graphqlFields/index.js +2 -1
  132. package/graphqlFields/index.js.map +1 -1
  133. package/graphqlFields/json.d.ts +2 -0
  134. package/graphqlFields/json.js +49 -0
  135. package/graphqlFields/json.js.map +1 -0
  136. package/graphqlFields/object.js +20 -28
  137. package/graphqlFields/object.js.map +1 -1
  138. package/graphqlFields/ref.js +24 -14
  139. package/graphqlFields/ref.js.map +1 -1
  140. package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +6 -0
  141. package/graphqlFields/richText/RichTextPluginsProcessor.js +34 -0
  142. package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -0
  143. package/graphqlFields/richText/richTextResolver.d.ts +7 -0
  144. package/graphqlFields/richText/richTextResolver.js +39 -0
  145. package/graphqlFields/richText/richTextResolver.js.map +1 -0
  146. package/graphqlFields/richText.js +8 -2
  147. package/graphqlFields/richText.js.map +1 -1
  148. package/htmlRenderer/LexicalRenderer.d.ts +5 -0
  149. package/htmlRenderer/LexicalRenderer.js +28 -0
  150. package/htmlRenderer/LexicalRenderer.js.map +1 -0
  151. package/htmlRenderer/createLexicalHTMLRenderer.d.ts +2 -0
  152. package/htmlRenderer/createLexicalHTMLRenderer.js +31 -0
  153. package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -0
  154. package/index.d.ts +1 -1
  155. package/index.js +4 -4
  156. package/index.js.map +1 -1
  157. package/modelManager/DefaultCmsModelManager.js +0 -4
  158. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  159. package/package.json +21 -19
  160. package/parameters/context.js +1 -1
  161. package/parameters/context.js.map +1 -1
  162. package/parameters/header.js +1 -2
  163. package/parameters/header.js.map +1 -1
  164. package/parameters/manual.js +6 -3
  165. package/parameters/manual.js.map +1 -1
  166. package/parameters/path.js +1 -2
  167. package/parameters/path.js.map +1 -1
  168. package/plugins/CmsGraphQLSchemaPlugin.js +3 -4
  169. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -1
  170. package/plugins/CmsGraphQLSchemaSorterPlugin.js +1 -4
  171. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -1
  172. package/plugins/CmsGroupPlugin.js +4 -7
  173. package/plugins/CmsGroupPlugin.js.map +1 -1
  174. package/plugins/CmsModelFieldConverterPlugin.js +3 -4
  175. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  176. package/plugins/CmsModelPlugin.d.ts +6 -4
  177. package/plugins/CmsModelPlugin.js +52 -27
  178. package/plugins/CmsModelPlugin.js.map +1 -1
  179. package/plugins/CmsParametersPlugin.js +1 -4
  180. package/plugins/CmsParametersPlugin.js.map +1 -1
  181. package/plugins/CmsRichTextRendererPlugin.d.ts +24 -0
  182. package/plugins/CmsRichTextRendererPlugin.js +28 -0
  183. package/plugins/CmsRichTextRendererPlugin.js.map +1 -0
  184. package/plugins/StorageOperationsCmsModelPlugin.js +3 -6
  185. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -1
  186. package/plugins/StorageTransformPlugin.d.ts +2 -2
  187. package/plugins/StorageTransformPlugin.js +1 -4
  188. package/plugins/StorageTransformPlugin.js.map +1 -1
  189. package/plugins/index.d.ts +1 -0
  190. package/plugins/index.js +11 -0
  191. package/plugins/index.js.map +1 -1
  192. package/storage/index.d.ts +1 -0
  193. package/storage/index.js +15 -0
  194. package/storage/index.js.map +1 -0
  195. package/storage/json.d.ts +2 -0
  196. package/storage/json.js +27 -0
  197. package/storage/json.js.map +1 -0
  198. package/storage/object.js +5 -7
  199. package/storage/object.js.map +1 -1
  200. package/types.d.ts +182 -53
  201. package/types.js +0 -3
  202. package/types.js.map +1 -1
  203. package/utils/access.d.ts +0 -1
  204. package/utils/access.js +1 -10
  205. package/utils/access.js.map +1 -1
  206. package/utils/caching/Cache.js +3 -5
  207. package/utils/caching/Cache.js.map +1 -1
  208. package/utils/caching/CacheKey.js +0 -3
  209. package/utils/caching/CacheKey.js.map +1 -1
  210. package/utils/converters/Converter.js +1 -4
  211. package/utils/converters/Converter.js.map +1 -1
  212. package/utils/converters/ConverterCollection.js +10 -6
  213. package/utils/converters/ConverterCollection.js.map +1 -1
  214. package/utils/converters/valueKeyStorageConverter.js +3 -3
  215. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  216. package/utils/date.d.ts +2 -2
  217. package/utils/date.js +1 -1
  218. package/utils/date.js.map +1 -1
  219. package/utils/entryStorage.js +3 -3
  220. package/utils/entryStorage.js.map +1 -1
  221. package/utils/identity.d.ts +2 -0
  222. package/utils/identity.js +20 -0
  223. package/utils/identity.js.map +1 -0
  224. package/utils/permissions/ModelsPermissions.js +0 -3
  225. package/utils/permissions/ModelsPermissions.js.map +1 -1
  226. package/utils/renderGetFilterFields.js +2 -3
  227. package/utils/renderGetFilterFields.js.map +1 -1
  228. package/utils/renderListFilterFields.js +9 -3
  229. package/utils/renderListFilterFields.js.map +1 -1
  230. package/utils/renderSortEnum.js +2 -1
  231. package/utils/renderSortEnum.js.map +1 -1
  232. package/validators/gte.js +1 -2
  233. package/validators/gte.js.map +1 -1
  234. package/validators/in.js +1 -2
  235. package/validators/in.js.map +1 -1
  236. package/validators/lte.js +1 -2
  237. package/validators/lte.js.map +1 -1
  238. package/validators/maxLength.js +1 -2
  239. package/validators/maxLength.js.map +1 -1
  240. package/validators/minLength.js +1 -2
  241. package/validators/minLength.js.map +1 -1
  242. package/validators/pattern.js +2 -2
  243. package/validators/pattern.js.map +1 -1
  244. package/validators/timeGte.js +1 -2
  245. package/validators/timeGte.js.map +1 -1
  246. package/validators/timeLte.js +1 -2
  247. package/validators/timeLte.js.map +1 -1
  248. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +0 -7
  249. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -15
  250. package/graphql/schema/resolvers/commonFieldResolvers.js.map +0 -1
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createModelsCrud = void 0;
8
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
8
  var _error = _interopRequireDefault(require("@webiny/error"));
11
9
  var _handlerGraphql = require("@webiny/handler-graphql");
12
10
  var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
@@ -22,7 +20,6 @@ var _utils2 = require("../utils");
22
20
  var _ensureTypeTag = require("./contentModel/ensureTypeTag");
23
21
  var _listModelsFromDatabase = require("./contentModel/listModelsFromDatabase");
24
22
  var _filterAsync = require("../utils/filterAsync");
25
- const _excluded = ["defaultFields"];
26
23
  const createModelsCrud = params => {
27
24
  const {
28
25
  getTenant,
@@ -64,7 +61,6 @@ const createModelsCrud = params => {
64
61
  });
65
62
  };
66
63
  const listPluginModels = async (tenant, locale) => {
67
- var _getIdentity;
68
64
  const modelPlugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
69
65
  const cacheKey = (0, _utils2.createCacheKey)({
70
66
  tenant,
@@ -74,7 +70,7 @@ const createModelsCrud = params => {
74
70
  }) => {
75
71
  return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${model.savedOn || "unknown"}`;
76
72
  }).join("/"),
77
- identity: context.security.isAuthorizationEnabled() ? (_getIdentity = getIdentity()) === null || _getIdentity === void 0 ? void 0 : _getIdentity.id : undefined
73
+ identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
78
74
  });
79
75
  return listPluginModelsCache.getOrSet(cacheKey, async () => {
80
76
  const models = modelPlugins
@@ -93,12 +89,13 @@ const createModelsCrud = params => {
93
89
  }
94
90
  return true;
95
91
  }).map(plugin => {
96
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
92
+ return {
93
+ ...plugin.contentModel,
97
94
  tags: (0, _ensureTypeTag.ensureTypeTag)(plugin.contentModel),
98
95
  tenant,
99
96
  locale,
100
97
  webinyVersion: context.WEBINY_VERSION
101
- });
98
+ };
102
99
  });
103
100
  return (0, _filterAsync.filterAsync)(models, filterModel);
104
101
  });
@@ -109,11 +106,12 @@ const createModelsCrud = params => {
109
106
  if (!model) {
110
107
  throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
111
108
  }
112
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
109
+ return {
110
+ ...model,
113
111
  tags: (0, _ensureTypeTag.ensureTypeTag)(model),
114
112
  tenant: model.tenant || getTenant().id,
115
113
  locale: model.locale || getLocale().code
116
- });
114
+ };
117
115
  };
118
116
 
119
117
  /**
@@ -124,7 +122,6 @@ const createModelsCrud = params => {
124
122
  */
125
123
  const listModels = async () => {
126
124
  return context.benchmark.measure("headlessCms.crud.models.listModels", async () => {
127
- var _getIdentity2;
128
125
  /**
129
126
  * Maybe we can cache based on permissions, not the identity id?
130
127
  *
@@ -142,7 +139,7 @@ const createModelsCrud = params => {
142
139
  });
143
140
  const filteredCacheKey = (0, _utils2.createCacheKey)({
144
141
  dbCacheKey: dbCacheKey.get(),
145
- identity: context.security.isAuthorizationEnabled() ? (_getIdentity2 = getIdentity()) === null || _getIdentity2 === void 0 ? void 0 : _getIdentity2.id : undefined
142
+ identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
146
143
  });
147
144
  const filteredModels = await listFilteredModelsCache.getOrSet(filteredCacheKey, async () => {
148
145
  return (0, _filterAsync.filterAsync)(databaseModels, filterModel);
@@ -236,17 +233,17 @@ const createModelsCrud = params => {
236
233
  /**
237
234
  * We need to extract the defaultFields because it is not for the CmsModel object.
238
235
  */
239
- const _removeUndefinedValue = (0, _utils.removeUndefinedValues)(result.data),
240
- {
241
- defaultFields
242
- } = _removeUndefinedValue,
243
- data = (0, _objectWithoutProperties2.default)(_removeUndefinedValue, _excluded);
236
+ const {
237
+ defaultFields,
238
+ ...data
239
+ } = (0, _utils.removeUndefinedValues)(result.data);
244
240
  if (defaultFields) {
245
241
  (0, _defaultFields.assignModelDefaultFields)(data);
246
242
  }
247
243
  const group = await context.cms.getGroup(data.group);
248
244
  const identity = getIdentity();
249
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
245
+ const model = {
246
+ ...data,
250
247
  modelId: data.modelId || "",
251
248
  singularApiName: data.singularApiName,
252
249
  pluralApiName: data.pluralApiName,
@@ -269,7 +266,7 @@ const createModelsCrud = params => {
269
266
  savedOn: new Date().toISOString(),
270
267
  lockedFields: [],
271
268
  webinyVersion: context.WEBINY_VERSION
272
- });
269
+ };
273
270
  model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
274
271
  try {
275
272
  await onModelBeforeCreate.publish({
@@ -323,7 +320,9 @@ const createModelsCrud = params => {
323
320
  name: groupData.name
324
321
  };
325
322
  }
326
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
323
+ const model = {
324
+ ...original,
325
+ ...data,
327
326
  titleFieldId: data.titleFieldId === undefined ? original.titleFieldId : data.titleFieldId,
328
327
  descriptionFieldId: data.descriptionFieldId === undefined ? original.descriptionFieldId : data.descriptionFieldId,
329
328
  imageFieldId: data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,
@@ -333,7 +332,7 @@ const createModelsCrud = params => {
333
332
  locale: original.locale || getLocale().code,
334
333
  webinyVersion: context.WEBINY_VERSION,
335
334
  savedOn: new Date().toISOString()
336
- });
335
+ };
337
336
  model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
338
337
  try {
339
338
  await onModelBeforeUpdate.publish({
@@ -366,11 +365,12 @@ const createModelsCrud = params => {
366
365
  model: initialModel,
367
366
  original
368
367
  } = params;
369
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
368
+ const model = {
369
+ ...initialModel,
370
370
  tenant: initialModel.tenant || getTenant().id,
371
371
  locale: initialModel.locale || getLocale().code,
372
372
  webinyVersion: context.WEBINY_VERSION
373
- });
373
+ };
374
374
  try {
375
375
  await onModelBeforeUpdate.publish({
376
376
  input: {},
@@ -404,9 +404,10 @@ const createModelsCrud = params => {
404
404
  * Get a model record; this will also perform ownership validation.
405
405
  */
406
406
  const original = await getModel(modelId);
407
- const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync((0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
407
+ const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync({
408
+ ...input,
408
409
  description: input.description || original.description
409
- }));
410
+ });
410
411
  if (!result.success) {
411
412
  throw (0, _utils.createZodError)(result.error);
412
413
  }
@@ -427,7 +428,8 @@ const createModelsCrud = params => {
427
428
  throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
428
429
  }
429
430
  const identity = getIdentity();
430
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
431
+ const model = {
432
+ ...original,
431
433
  singularApiName: data.singularApiName,
432
434
  pluralApiName: data.pluralApiName,
433
435
  locale: locale.code,
@@ -448,7 +450,7 @@ const createModelsCrud = params => {
448
450
  savedOn: new Date().toISOString(),
449
451
  lockedFields: [],
450
452
  webinyVersion: context.WEBINY_VERSION
451
- });
453
+ };
452
454
  try {
453
455
  await onModelBeforeCreateFrom.publish({
454
456
  input: data,
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","_excluded","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelsPermissions","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","rwd","ensure","filterModel","ownsModel","owns","createdBy","throw","canAccessModel","listPluginModels","tenant","locale","_getIdentity","modelPlugins","plugins","byType","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","_objectSpread2","default","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","getModelFromCache","listModels","find","m","NotFoundError","code","benchmark","measure","_getIdentity2","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","_removeUndefinedValue","removeUndefinedValues","data","defaultFields","_objectWithoutProperties2","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelsPermissions: ModelsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, modelsPermissions, context } =\n params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async (\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager> => {\n const manager = await contentModelManagerFactory(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const checkModelPermissions = async (rwd: string) => {\n return modelsPermissions.ensure({ rwd });\n };\n\n const filterModel = async (model: CmsModel): Promise<boolean> => {\n const ownsModel = await modelsPermissions.ensure(\n { owns: model.createdBy },\n { throw: false }\n );\n\n if (!ownsModel) {\n return false;\n }\n\n return modelsPermissions.canAccessModel({\n model\n });\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"unknown\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n return filterAsync(models, filterModel);\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async () => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n const pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, filterModel);\n }\n );\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n await checkModelPermissions(\"r\");\n\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await modelsPermissions.ensure({ owns: model.createdBy });\n await modelsPermissions.ensureCanAccessModel({\n model\n });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager(context, model);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await checkModelPermissions(\"w\");\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelsPermissions","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","rwd","ensure","filterModel","ownsModel","owns","createdBy","throw","canAccessModel","listPluginModels","tenant","locale","modelPlugins","plugins","byType","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","getModelFromCache","listModels","find","m","NotFoundError","code","benchmark","measure","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","defaultFields","data","removeUndefinedValues","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelsPermissions: ModelsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, modelsPermissions, context } =\n params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async (\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager> => {\n const manager = await contentModelManagerFactory(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const checkModelPermissions = async (rwd: string) => {\n return modelsPermissions.ensure({ rwd });\n };\n\n const filterModel = async (model: CmsModel): Promise<boolean> => {\n const ownsModel = await modelsPermissions.ensure(\n { owns: model.createdBy },\n { throw: false }\n );\n\n if (!ownsModel) {\n return false;\n }\n\n return modelsPermissions.canAccessModel({\n model\n });\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"unknown\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n return filterAsync(models, filterModel);\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async () => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n const pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, filterModel);\n }\n );\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n await checkModelPermissions(\"r\");\n\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await modelsPermissions.ensure({ owns: model.createdBy });\n await modelsPermissions.ensureCanAccessModel({\n model\n });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager(context, model);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await checkModelPermissions(\"w\");\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await checkModelPermissions(\"w\");\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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"}
@@ -6,9 +6,9 @@ export declare const createGroupCreateValidation: () => zod.ZodObject<{
6
6
  description: zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>, string, string | null | undefined>;
7
7
  icon: zod.ZodString;
8
8
  }, "strip", zod.ZodTypeAny, {
9
+ description: string;
9
10
  name: string;
10
11
  slug: string;
11
- description: string;
12
12
  icon: string;
13
13
  id?: string | null | undefined;
14
14
  }, {
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.createModelGroupsCrud = void 0;
8
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
8
  var _error = _interopRequireDefault(require("@webiny/error"));
10
9
  var _CmsGroupPlugin = require("../plugins/CmsGroupPlugin");
11
10
  var _pubsub = require("@webiny/pubsub");
@@ -52,12 +51,11 @@ const createModelGroupsCrud = params => {
52
51
  listFilteredDatabaseGroupsCache.clear();
53
52
  };
54
53
  const fetchPluginGroups = (tenant, locale) => {
55
- var _getIdentity;
56
54
  const pluginGroups = context.plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type);
57
55
  const cacheKey = (0, _utils2.createCacheKey)({
58
56
  tenant,
59
57
  locale,
60
- identity: context.security.isAuthorizationEnabled() ? (_getIdentity = getIdentity()) === null || _getIdentity === void 0 ? void 0 : _getIdentity.id : undefined,
58
+ identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined,
61
59
  groups: pluginGroups.map(({
62
60
  contentModelGroup: group
63
61
  }) => {
@@ -81,17 +79,17 @@ const createModelGroupsCrud = params => {
81
79
  }
82
80
  return true;
83
81
  }).map(plugin => {
84
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModelGroup), {}, {
82
+ return {
83
+ ...plugin.contentModelGroup,
85
84
  tenant,
86
85
  locale,
87
86
  webinyVersion: context.WEBINY_VERSION
88
- });
87
+ };
89
88
  });
90
89
  return (0, _filterAsync.filterAsync)(groups, filterGroup);
91
90
  });
92
91
  };
93
92
  const fetchGroups = async (tenant, locale) => {
94
- var _getIdentity2;
95
93
  const pluginGroups = await fetchPluginGroups(tenant, locale);
96
94
  /**
97
95
  * Maybe we can cache based on permissions, not the identity id?
@@ -111,7 +109,7 @@ const createModelGroupsCrud = params => {
111
109
  });
112
110
  const filteredCacheKey = (0, _utils2.createCacheKey)({
113
111
  dbCacheKey: cacheKey.get(),
114
- identity: context.security.isAuthorizationEnabled() ? (_getIdentity2 = getIdentity()) === null || _getIdentity2 === void 0 ? void 0 : _getIdentity2.id : undefined
112
+ identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
115
113
  });
116
114
  const groups = await listFilteredDatabaseGroupsCache.getOrSet(filteredCacheKey, async () => {
117
115
  return (0, _filterAsync.filterAsync)(databaseGroups, filterGroup);
@@ -201,7 +199,8 @@ const createModelGroupsCrud = params => {
201
199
  const data = result.data;
202
200
  const identity = getIdentity();
203
201
  const id = data.id || (0, _utils.mdbid)();
204
- const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
202
+ const group = {
203
+ ...data,
205
204
  id,
206
205
  tenant: getTenant().id,
207
206
  locale: getLocale().code,
@@ -213,7 +212,7 @@ const createModelGroupsCrud = params => {
213
212
  type: identity.type
214
213
  },
215
214
  webinyVersion: context.WEBINY_VERSION
216
- });
215
+ };
217
216
  try {
218
217
  await onGroupBeforeCreate.publish({
219
218
  group
@@ -232,10 +231,11 @@ const createModelGroupsCrud = params => {
232
231
  group,
233
232
  error: ex
234
233
  });
235
- throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
234
+ throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", {
235
+ ...(ex.data || {}),
236
236
  group,
237
237
  input
238
- }));
238
+ });
239
239
  }
240
240
  };
241
241
  const updateGroup = async (id, input) => {
@@ -258,11 +258,13 @@ const createModelGroupsCrud = params => {
258
258
  if (Object.keys(data).length === 0) {
259
259
  return original;
260
260
  }
261
- const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
261
+ const group = {
262
+ ...original,
263
+ ...data,
262
264
  locale: getLocale().code,
263
265
  tenant: getTenant().id,
264
266
  savedOn: new Date().toISOString()
265
- });
267
+ };
266
268
  try {
267
269
  await onGroupBeforeUpdate.publish({
268
270
  original,
@@ -316,9 +318,10 @@ const createModelGroupsCrud = params => {
316
318
  group,
317
319
  error: ex
318
320
  });
319
- throw new _error.default(ex.message, ex.code || "DELETE_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
321
+ throw new _error.default(ex.message, ex.code || "DELETE_ERROR", {
322
+ ...(ex.data || {}),
320
323
  id
321
- }));
324
+ });
322
325
  }
323
326
  return true;
324
327
  };