@webiny/api-headless-cms 0.0.0-unstable.40876133bb → 0.0.0-unstable.496cf268ac

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 (371) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +53 -19
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/afterDelete.js +0 -5
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.js +0 -3
  7. package/crud/contentEntry/beforeCreate.js.map +1 -1
  8. package/crud/contentEntry/beforeUpdate.js +0 -3
  9. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  10. package/crud/contentEntry/entryDataValidation.js +1 -40
  11. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  12. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  13. package/crud/contentEntry/markLockedFields.js +19 -29
  14. package/crud/contentEntry/markLockedFields.js.map +1 -1
  15. package/crud/contentEntry/referenceFieldsMapping.js +12 -64
  16. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  17. package/crud/contentEntry/searchableFields.d.ts +9 -0
  18. package/crud/contentEntry/searchableFields.js +72 -0
  19. package/crud/contentEntry/searchableFields.js.map +1 -0
  20. package/crud/contentEntry.crud.d.ts +2 -1
  21. package/crud/contentEntry.crud.js +140 -193
  22. package/crud/contentEntry.crud.js.map +1 -1
  23. package/crud/contentModel/afterCreate.js +0 -2
  24. package/crud/contentModel/afterCreate.js.map +1 -1
  25. package/crud/contentModel/afterCreateFrom.js +0 -2
  26. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  27. package/crud/contentModel/afterDelete.js +0 -2
  28. package/crud/contentModel/afterDelete.js.map +1 -1
  29. package/crud/contentModel/afterUpdate.js +0 -2
  30. package/crud/contentModel/afterUpdate.js.map +1 -1
  31. package/crud/contentModel/beforeCreate.d.ts +2 -3
  32. package/crud/contentModel/beforeCreate.js +11 -36
  33. package/crud/contentModel/beforeCreate.js.map +1 -1
  34. package/crud/contentModel/beforeDelete.js +0 -10
  35. package/crud/contentModel/beforeDelete.js.map +1 -1
  36. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  37. package/crud/contentModel/beforeUpdate.js +6 -7
  38. package/crud/contentModel/beforeUpdate.js.map +1 -1
  39. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  40. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  41. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  42. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  43. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  44. package/crud/contentModel/createFieldStorageId.js +4 -3
  45. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  46. package/crud/contentModel/defaultFields.d.ts +5 -0
  47. package/crud/contentModel/defaultFields.js +58 -0
  48. package/crud/contentModel/defaultFields.js.map +1 -0
  49. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  50. package/crud/contentModel/fields/descriptionField.js +42 -0
  51. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  52. package/crud/contentModel/fields/imageField.d.ts +2 -0
  53. package/crud/contentModel/fields/imageField.js +46 -0
  54. package/crud/contentModel/fields/imageField.js.map +1 -0
  55. package/crud/contentModel/fields/titleField.d.ts +2 -0
  56. package/crud/contentModel/fields/titleField.js +58 -0
  57. package/crud/contentModel/fields/titleField.js.map +1 -0
  58. package/crud/contentModel/models.js +12 -0
  59. package/crud/contentModel/models.js.map +1 -1
  60. package/crud/contentModel/validateLayout.js +0 -8
  61. package/crud/contentModel/validateLayout.js.map +1 -1
  62. package/crud/contentModel/validateModel.d.ts +4 -4
  63. package/crud/contentModel/validateModel.js +6 -11
  64. package/crud/contentModel/validateModel.js.map +1 -1
  65. package/crud/contentModel/validateModelFields.d.ts +4 -4
  66. package/crud/contentModel/validateModelFields.js +131 -147
  67. package/crud/contentModel/validateModelFields.js.map +1 -1
  68. package/crud/contentModel/validation.d.ts +519 -0
  69. package/crud/contentModel/validation.js +145 -0
  70. package/crud/contentModel/validation.js.map +1 -0
  71. package/crud/contentModel.crud.js +245 -272
  72. package/crud/contentModel.crud.js.map +1 -1
  73. package/crud/contentModelGroup/beforeCreate.js +0 -12
  74. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  75. package/crud/contentModelGroup/beforeDelete.js +0 -8
  76. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  77. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  78. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  79. package/crud/contentModelGroup/validation.d.ts +30 -0
  80. package/crud/contentModelGroup/validation.js +34 -0
  81. package/crud/contentModelGroup/validation.js.map +1 -0
  82. package/crud/contentModelGroup.crud.js +53 -95
  83. package/crud/contentModelGroup.crud.js.map +1 -1
  84. package/crud/settings.crud.js +0 -12
  85. package/crud/settings.crud.js.map +1 -1
  86. package/crud/system.crud.js +1 -96
  87. package/crud/system.crud.js.map +1 -1
  88. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  89. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  90. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  91. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  92. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  93. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  94. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  95. package/fieldConverters/index.d.ts +2 -1
  96. package/fieldConverters/index.js +2 -5
  97. package/fieldConverters/index.js.map +1 -1
  98. package/graphql/buildSchemaPlugins.d.ts +8 -3
  99. package/graphql/buildSchemaPlugins.js +6 -14
  100. package/graphql/buildSchemaPlugins.js.map +1 -1
  101. package/graphql/createExecutableSchema.d.ts +7 -0
  102. package/graphql/createExecutableSchema.js +29 -0
  103. package/graphql/createExecutableSchema.js.map +1 -0
  104. package/graphql/generateSchema.d.ts +8 -0
  105. package/graphql/generateSchema.js +31 -0
  106. package/graphql/generateSchema.js.map +1 -0
  107. package/graphql/graphQLHandlerFactory.js +95 -74
  108. package/graphql/graphQLHandlerFactory.js.map +1 -1
  109. package/graphql/index.d.ts +1 -3
  110. package/graphql/index.js +2 -46
  111. package/graphql/index.js.map +1 -1
  112. package/graphql/schema/baseContentSchema.d.ts +6 -2
  113. package/graphql/schema/baseContentSchema.js +10 -20
  114. package/graphql/schema/baseContentSchema.js.map +1 -1
  115. package/graphql/schema/baseSchema.d.ts +3 -0
  116. package/graphql/schema/baseSchema.js +53 -0
  117. package/graphql/schema/baseSchema.js.map +1 -0
  118. package/graphql/schema/contentEntries.d.ts +6 -2
  119. package/graphql/schema/contentEntries.js +118 -107
  120. package/graphql/schema/contentEntries.js.map +1 -1
  121. package/graphql/schema/contentModelGroups.d.ts +6 -2
  122. package/graphql/schema/contentModelGroups.js +10 -23
  123. package/graphql/schema/contentModelGroups.js.map +1 -1
  124. package/graphql/schema/contentModels.d.ts +6 -2
  125. package/graphql/schema/contentModels.js +62 -26
  126. package/graphql/schema/contentModels.js.map +1 -1
  127. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  128. package/graphql/schema/createFieldResolvers.js +20 -27
  129. package/graphql/schema/createFieldResolvers.js.map +1 -1
  130. package/graphql/schema/createManageResolvers.d.ts +1 -1
  131. package/graphql/schema/createManageResolvers.js +33 -43
  132. package/graphql/schema/createManageResolvers.js.map +1 -1
  133. package/graphql/schema/createManageSDL.d.ts +3 -0
  134. package/graphql/schema/createManageSDL.js +64 -67
  135. package/graphql/schema/createManageSDL.js.map +1 -1
  136. package/graphql/schema/createPreviewResolvers.js +3 -17
  137. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  138. package/graphql/schema/createReadResolvers.js +8 -17
  139. package/graphql/schema/createReadResolvers.js.map +1 -1
  140. package/graphql/schema/createReadSDL.d.ts +3 -0
  141. package/graphql/schema/createReadSDL.js +33 -35
  142. package/graphql/schema/createReadSDL.js.map +1 -1
  143. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  144. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  145. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  146. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  147. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  148. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  149. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  150. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  151. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  152. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  153. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  154. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  155. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  156. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  157. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  158. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  159. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  160. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  161. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  162. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  163. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  164. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  165. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  166. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  167. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  168. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  169. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  170. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  171. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  172. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  173. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  174. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  175. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  176. package/graphql/schema/schemaPlugins.d.ts +8 -3
  177. package/graphql/schema/schemaPlugins.js +64 -66
  178. package/graphql/schema/schemaPlugins.js.map +1 -1
  179. package/graphql/system.js +55 -87
  180. package/graphql/system.js.map +1 -1
  181. package/graphqlFields/boolean.js +0 -12
  182. package/graphqlFields/boolean.js.map +1 -1
  183. package/graphqlFields/datetime.js +0 -17
  184. package/graphqlFields/datetime.js.map +1 -1
  185. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  186. package/graphqlFields/dynamicZone/dynamicZoneField.js +216 -0
  187. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  188. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  189. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  190. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  191. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  192. package/graphqlFields/dynamicZone/index.js +19 -0
  193. package/graphqlFields/dynamicZone/index.js.map +1 -0
  194. package/graphqlFields/file.js +0 -8
  195. package/graphqlFields/file.js.map +1 -1
  196. package/graphqlFields/helpers.js +0 -10
  197. package/graphqlFields/helpers.js.map +1 -1
  198. package/graphqlFields/index.d.ts +1 -1
  199. package/graphqlFields/index.js +2 -12
  200. package/graphqlFields/index.js.map +1 -1
  201. package/graphqlFields/longText.js +0 -10
  202. package/graphqlFields/longText.js.map +1 -1
  203. package/graphqlFields/number.js +4 -12
  204. package/graphqlFields/number.js.map +1 -1
  205. package/graphqlFields/object.js +118 -98
  206. package/graphqlFields/object.js.map +1 -1
  207. package/graphqlFields/ref.js +86 -106
  208. package/graphqlFields/ref.js.map +1 -1
  209. package/graphqlFields/richText.js +0 -9
  210. package/graphqlFields/richText.js.map +1 -1
  211. package/graphqlFields/text.js +0 -11
  212. package/graphqlFields/text.js.map +1 -1
  213. package/index.d.ts +3 -3
  214. package/index.js +3 -27
  215. package/index.js.map +1 -1
  216. package/modelManager/DefaultCmsModelManager.js +0 -16
  217. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  218. package/modelManager/index.js +0 -4
  219. package/modelManager/index.js.map +1 -1
  220. package/package.json +27 -28
  221. package/parameters/context.js +0 -4
  222. package/parameters/context.js.map +1 -1
  223. package/parameters/header.js +0 -11
  224. package/parameters/header.js.map +1 -1
  225. package/parameters/index.js +0 -8
  226. package/parameters/index.js.map +1 -1
  227. package/parameters/manual.js +1 -8
  228. package/parameters/manual.js.map +1 -1
  229. package/parameters/path.js +0 -11
  230. package/parameters/path.js.map +1 -1
  231. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  232. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  233. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  234. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  235. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  236. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  237. package/plugins/CmsGroupPlugin.js +0 -8
  238. package/plugins/CmsGroupPlugin.js.map +1 -1
  239. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  240. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  241. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  242. package/plugins/CmsModelPlugin.d.ts +11 -1
  243. package/plugins/CmsModelPlugin.js +15 -40
  244. package/plugins/CmsModelPlugin.js.map +1 -1
  245. package/plugins/CmsParametersPlugin.js +0 -7
  246. package/plugins/CmsParametersPlugin.js.map +1 -1
  247. package/plugins/StorageTransformPlugin.d.ts +11 -11
  248. package/plugins/StorageTransformPlugin.js +0 -9
  249. package/plugins/StorageTransformPlugin.js.map +1 -1
  250. package/plugins/index.d.ts +2 -0
  251. package/plugins/index.js +22 -10
  252. package/plugins/index.js.map +1 -1
  253. package/storage/default.js +0 -3
  254. package/storage/default.js.map +1 -1
  255. package/storage/object.js +4 -20
  256. package/storage/object.js.map +1 -1
  257. package/types.d.ts +315 -77
  258. package/types.js +63 -70
  259. package/types.js.map +1 -1
  260. package/utils/access.js +11 -25
  261. package/utils/access.js.map +1 -1
  262. package/utils/converters/Converter.js +0 -13
  263. package/utils/converters/Converter.js.map +1 -1
  264. package/utils/converters/ConverterCollection.js +14 -34
  265. package/utils/converters/ConverterCollection.js.map +1 -1
  266. package/utils/converters/valueKeyStorageConverter.js +2 -27
  267. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  268. package/utils/createTypeFromFields.d.ts +16 -0
  269. package/utils/createTypeFromFields.js +67 -0
  270. package/utils/createTypeFromFields.js.map +1 -0
  271. package/utils/createTypeName.js +2 -9
  272. package/utils/createTypeName.js.map +1 -1
  273. package/utils/entryStorage.js +22 -35
  274. package/utils/entryStorage.js.map +1 -1
  275. package/utils/filterAsync.js +0 -5
  276. package/utils/filterAsync.js.map +1 -1
  277. package/utils/getBaseFieldType.d.ts +4 -0
  278. package/utils/getBaseFieldType.js +10 -0
  279. package/utils/getBaseFieldType.js.map +1 -0
  280. package/utils/getEntryDescription.d.ts +2 -0
  281. package/utils/getEntryDescription.js +17 -0
  282. package/utils/getEntryDescription.js.map +1 -0
  283. package/utils/getEntryImage.d.ts +2 -0
  284. package/utils/getEntryImage.js +17 -0
  285. package/utils/getEntryImage.js.map +1 -0
  286. package/utils/getEntryTitle.js +0 -9
  287. package/utils/getEntryTitle.js.map +1 -1
  288. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  289. package/utils/getSchemaFromFieldPlugins.js +23 -19
  290. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  291. package/utils/ownership.d.ts +3 -3
  292. package/utils/ownership.js +0 -8
  293. package/utils/ownership.js.map +1 -1
  294. package/utils/permissions.js +8 -23
  295. package/utils/permissions.js.map +1 -1
  296. package/utils/removeNullValues.d.ts +1 -0
  297. package/utils/removeNullValues.js +17 -0
  298. package/utils/removeNullValues.js.map +1 -0
  299. package/utils/removeUndefinedValues.d.ts +1 -0
  300. package/utils/removeUndefinedValues.js +17 -0
  301. package/utils/removeUndefinedValues.js.map +1 -0
  302. package/utils/renderFields.d.ts +2 -1
  303. package/utils/renderFields.js +10 -10
  304. package/utils/renderFields.js.map +1 -1
  305. package/utils/renderGetFilterFields.js +6 -14
  306. package/utils/renderGetFilterFields.js.map +1 -1
  307. package/utils/renderInputFields.d.ts +2 -1
  308. package/utils/renderInputFields.js +6 -9
  309. package/utils/renderInputFields.js.map +1 -1
  310. package/utils/renderListFilterFields.js +4 -10
  311. package/utils/renderListFilterFields.js.map +1 -1
  312. package/utils/renderSortEnum.d.ts +7 -4
  313. package/utils/renderSortEnum.js +21 -11
  314. package/utils/renderSortEnum.js.map +1 -1
  315. package/utils/toSlug.js +0 -4
  316. package/utils/toSlug.js.map +1 -1
  317. package/validators/dateGte.js +0 -7
  318. package/validators/dateGte.js.map +1 -1
  319. package/validators/dateLte.js +0 -7
  320. package/validators/dateLte.js.map +1 -1
  321. package/validators/dynamicZone.d.ts +2 -0
  322. package/validators/dynamicZone.js +20 -0
  323. package/validators/dynamicZone.js.map +1 -0
  324. package/validators/gte.js +0 -8
  325. package/validators/gte.js.map +1 -1
  326. package/validators/in.js +0 -8
  327. package/validators/in.js.map +1 -1
  328. package/validators/index.js +2 -16
  329. package/validators/index.js.map +1 -1
  330. package/validators/lte.js +0 -8
  331. package/validators/lte.js.map +1 -1
  332. package/validators/maxLength.js +0 -8
  333. package/validators/maxLength.js.map +1 -1
  334. package/validators/minLength.js +0 -8
  335. package/validators/minLength.js.map +1 -1
  336. package/validators/pattern.js +0 -9
  337. package/validators/pattern.js.map +1 -1
  338. package/validators/patternPlugins/email.js +0 -2
  339. package/validators/patternPlugins/email.js.map +1 -1
  340. package/validators/patternPlugins/index.js +0 -8
  341. package/validators/patternPlugins/index.js.map +1 -1
  342. package/validators/patternPlugins/lowerCase.js +0 -2
  343. package/validators/patternPlugins/lowerCase.js.map +1 -1
  344. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  345. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  346. package/validators/patternPlugins/upperCase.js +0 -2
  347. package/validators/patternPlugins/upperCase.js.map +1 -1
  348. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  349. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  350. package/validators/patternPlugins/url.js +0 -2
  351. package/validators/patternPlugins/url.js.map +1 -1
  352. package/validators/required.js +0 -5
  353. package/validators/required.js.map +1 -1
  354. package/validators/timeGte.js +0 -8
  355. package/validators/timeGte.js.map +1 -1
  356. package/validators/timeLte.js +0 -8
  357. package/validators/timeLte.js.map +1 -1
  358. package/validators/unique.js +0 -7
  359. package/validators/unique.js.map +1 -1
  360. package/crud/index.d.ts +0 -6
  361. package/crud/index.js +0 -85
  362. package/crud/index.js.map +0 -1
  363. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  364. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  365. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  366. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  367. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  368. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  369. package/utils/filterModelFields.d.ts +0 -16
  370. package/utils/filterModelFields.js +0 -77
  371. package/utils/filterModelFields.js.map +0 -1
@@ -1,106 +1,47 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createModelsCrud = void 0;
9
-
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
10
  var _dataloader = _interopRequireDefault(require("dataloader"));
13
-
11
+ var _error = _interopRequireDefault(require("@webiny/error"));
14
12
  var _handlerGraphql = require("@webiny/handler-graphql");
15
-
16
13
  var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
17
-
18
- var _models = require("./contentModel/models");
19
-
20
- var _createFieldModels = require("./contentModel/createFieldModels");
21
-
22
- var _error = _interopRequireDefault(require("@webiny/error"));
23
-
24
14
  var _pubsub = require("@webiny/pubsub");
25
-
26
15
  var _beforeCreate = require("./contentModel/beforeCreate");
27
-
28
16
  var _beforeUpdate = require("./contentModel/beforeUpdate");
29
-
30
17
  var _beforeDelete = require("./contentModel/beforeDelete");
31
-
32
18
  var _afterCreate = require("./contentModel/afterCreate");
33
-
34
19
  var _afterUpdate = require("./contentModel/afterUpdate");
35
-
36
20
  var _afterDelete = require("./contentModel/afterDelete");
37
-
38
21
  var _afterCreateFrom = require("./contentModel/afterCreateFrom");
39
-
40
22
  var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
41
-
42
23
  var _permissions = require("../utils/permissions");
43
-
44
24
  var _filterAsync = require("../utils/filterAsync");
45
-
46
25
  var _ownership = require("../utils/ownership");
47
-
48
26
  var _access = require("../utils/access");
49
-
50
- var _validateModelFields = require("./contentModel/validateModelFields");
51
-
52
- var _semver = _interopRequireDefault(require("semver"));
53
-
27
+ var _validation = require("./contentModel/validation");
28
+ var _utils = require("@webiny/utils");
29
+ var _defaultFields = require("./contentModel/defaultFields");
30
+ var _removeUndefinedValues = require("../utils/removeUndefinedValues");
31
+ var _modelApiName = require("./contentModel/compatibility/modelApiName");
32
+ const _excluded = ["defaultFields"];
54
33
  /**
55
- * TODO: remove for 5.34.0
56
- * Required because of the 5.33.0 upgrade.
57
- * Until the upgrade is done, API will break because there is no storageId assigned.
34
+ * Given a model, return an array of tags ensuring the `type` tag is set.
58
35
  */
59
- const featureVersion = _semver.default.coerce("5.33.0");
60
-
61
- const attachStorageIdToFields = fields => {
62
- return fields.map(field => {
63
- var _field$settings;
64
-
65
- if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
66
- field.settings.fields = attachStorageIdToFields(field.settings.fields);
67
- }
68
-
69
- if (!field.storageId) {
70
- field.storageId = field.fieldId;
71
- }
72
-
73
- return field;
74
- });
75
- };
76
-
77
- const attachStorageIdToModelFields = model => {
78
- if (!model.webinyVersion) {
79
- return model.fields;
80
- }
81
-
82
- const version = _semver.default.coerce(model.webinyVersion);
83
-
84
- if (!version) {
85
- return model.fields;
86
- }
87
- /**
88
- * Unfortunately we need to check for beta and next.
89
- * TODO remove after 5.33.0
90
- */
91
-
92
-
93
- if (model.webinyVersion.match(/beta|next/)) {
94
- return attachStorageIdToFields(model.fields);
95
- }
96
-
97
- if (_semver.default.compare(version, featureVersion) >= 0) {
98
- return model.fields;
36
+ const ensureTypeTag = model => {
37
+ // Let's make sure we have a `type` tag assigned.
38
+ // If `type` tag is not set, set it to a default one (`model`).
39
+ const tags = model.tags || [];
40
+ if (!tags.some(tag => tag.startsWith("type:"))) {
41
+ tags.push("type:model");
99
42
  }
100
-
101
- return attachStorageIdToFields(model.fields);
43
+ return tags;
102
44
  };
103
-
104
45
  const createModelsCrud = params => {
105
46
  const {
106
47
  getTenant,
@@ -119,105 +60,86 @@ const createModelsCrud = params => {
119
60
  });
120
61
  return [models.map(model => {
121
62
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
122
- fields: attachStorageIdToModelFields(model),
63
+ tags: ensureTypeTag(model),
123
64
  tenant: model.tenant || getTenant().id,
124
- locale: model.locale || getLocale().code
65
+ locale: model.locale || getLocale().code,
66
+ /**
67
+ * TODO: remove in v5.36.0
68
+ * This is for backward compatibility while migrations are not yet executed.
69
+ */
70
+ singularApiName: (0, _modelApiName.ensureSingularApiName)(model),
71
+ pluralApiName: (0, _modelApiName.ensurePluralApiName)(model)
125
72
  });
126
73
  })];
127
74
  })
128
75
  };
129
-
130
76
  const clearModelsCache = () => {
131
77
  for (const loader of Object.values(loaders)) {
132
78
  loader.clearAll();
133
79
  }
134
80
  };
135
-
136
81
  const managers = new Map();
137
-
138
82
  const updateManager = async (context, model) => {
139
83
  const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
140
84
  managers.set(model.modelId, manager);
141
85
  return manager;
142
86
  };
143
-
144
87
  const checkModelPermissions = check => {
145
88
  return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
146
89
  rwd: check
147
90
  });
148
91
  };
149
-
150
92
  const getModelsAsPlugins = () => {
151
93
  const tenant = getTenant().id;
152
94
  const locale = getLocale().code;
153
- const models = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
95
+ return context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
154
96
  /**
155
97
  * We need to filter out models that are not for this tenant or locale.
156
98
  * If it does not have tenant or locale define, it is for every locale and tenant
157
- */
158
- .filter(plugin => {
99
+ */.filter(plugin => {
159
100
  const {
160
- tenant: t,
161
- locale: l
101
+ tenant: modelTenant,
102
+ locale: modelLocale
162
103
  } = plugin.contentModel;
163
-
164
- if (t && t !== tenant) {
104
+ if (modelTenant && modelTenant !== tenant) {
165
105
  return false;
166
- } else if (l && l !== locale) {
106
+ } else if (modelLocale && modelLocale !== locale) {
167
107
  return false;
168
108
  }
169
-
170
109
  return true;
171
110
  }).map(plugin => {
172
111
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
112
+ tags: ensureTypeTag(plugin.contentModel),
173
113
  tenant,
174
114
  locale,
175
115
  webinyVersion: context.WEBINY_VERSION
176
116
  });
177
117
  });
178
- /**
179
- * Only point where we can truly validate the user model is in the runtime.
180
- */
181
-
182
- for (const model of models) {
183
- (0, _validateModelFields.validateModelFields)({
184
- model,
185
- plugins: context.plugins
186
- });
187
- }
188
-
189
- return models;
190
118
  };
191
-
192
119
  const modelsGet = async modelId => {
193
120
  const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
194
-
195
121
  if (pluginModel) {
196
122
  return pluginModel;
197
123
  }
198
-
199
124
  const model = await storageOperations.models.get({
200
125
  tenant: getTenant().id,
201
126
  locale: getLocale().code,
202
127
  modelId
203
128
  });
204
-
205
129
  if (!model) {
206
130
  throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
207
131
  }
208
-
209
132
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
133
+ tags: ensureTypeTag(model),
210
134
  tenant: model.tenant || getTenant().id,
211
135
  locale: model.locale || getLocale().code
212
136
  });
213
137
  };
214
-
215
138
  const modelsList = async () => {
216
139
  const databaseModels = await loaders.listModels.load("listModels");
217
140
  const pluginsModels = getModelsAsPlugins();
218
141
  return databaseModels.concat(pluginsModels);
219
142
  };
220
-
221
143
  const listModels = async () => {
222
144
  const permission = await checkModelPermissions("r");
223
145
  const models = await modelsList();
@@ -225,11 +147,9 @@ const createModelsCrud = params => {
225
147
  if (!(0, _ownership.validateOwnership)(context, permission, model)) {
226
148
  return false;
227
149
  }
228
-
229
150
  return (0, _access.validateModelAccess)(context, model);
230
151
  });
231
152
  };
232
-
233
153
  const getModel = async modelId => {
234
154
  const permission = await checkModelPermissions("r");
235
155
  const model = await modelsGet(modelId);
@@ -237,45 +157,54 @@ const createModelsCrud = params => {
237
157
  await (0, _access.checkModelAccess)(context, model);
238
158
  return model;
239
159
  };
240
-
241
160
  const getModelManager = async target => {
242
161
  const modelId = typeof target === "string" ? target : target.modelId;
243
-
244
162
  if (managers.has(modelId)) {
245
163
  return managers.get(modelId);
246
164
  }
247
-
248
165
  const models = await modelsList();
249
166
  const model = models.find(m => m.modelId === modelId);
250
-
251
167
  if (!model) {
252
168
  throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
253
169
  }
254
-
255
170
  return await updateManager(context, model);
256
- }; // create
257
-
171
+ };
258
172
 
173
+ /**
174
+ * Create
175
+ */
259
176
  const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
260
- const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate"); // create from
261
-
177
+ const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
178
+ const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
179
+ /**
180
+ * Create from / clone
181
+ */
262
182
  const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
263
- const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom"); // update
264
-
183
+ const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
184
+ const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
185
+ /**
186
+ * Update
187
+ */
265
188
  const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
266
- const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate"); // delete
267
-
189
+ const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
190
+ const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
191
+ /**
192
+ * Delete
193
+ */
268
194
  const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
269
195
  const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
196
+ const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
197
+ /**
198
+ * Initialize
199
+ */
270
200
  const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
271
201
  /**
272
202
  * We need to assign some default behaviors.
273
203
  */
274
-
275
204
  (0, _beforeCreate.assignModelBeforeCreate)({
276
205
  onModelBeforeCreate,
277
206
  onModelBeforeCreateFrom,
278
- plugins: context.plugins,
207
+ context,
279
208
  storageOperations
280
209
  });
281
210
  (0, _afterCreate.assignModelAfterCreate)({
@@ -284,8 +213,7 @@ const createModelsCrud = params => {
284
213
  });
285
214
  (0, _beforeUpdate.assignModelBeforeUpdate)({
286
215
  onModelBeforeUpdate,
287
- plugins: context.plugins,
288
- storageOperations
216
+ context
289
217
  });
290
218
  (0, _afterUpdate.assignModelAfterUpdate)({
291
219
  context,
@@ -316,43 +244,57 @@ const createModelsCrud = params => {
316
244
  onAfterModelUpdate: onModelAfterUpdate,
317
245
  onBeforeModelDelete: onModelBeforeDelete,
318
246
  onAfterModelDelete: onModelAfterDelete,
319
-
320
247
  /**
321
248
  * Released in 5.34.0
322
249
  */
323
250
  onModelBeforeCreate,
324
251
  onModelAfterCreate,
252
+ onModelCreateError,
325
253
  onModelBeforeCreateFrom,
326
254
  onModelAfterCreateFrom,
255
+ onModelCreateFromError,
327
256
  onModelBeforeUpdate,
328
257
  onModelAfterUpdate,
258
+ onModelUpdateError,
329
259
  onModelBeforeDelete,
330
260
  onModelAfterDelete,
261
+ onModelDeleteError,
331
262
  onModelInitialize,
332
263
  clearModelsCache,
333
264
  getModel,
334
265
  listModels,
335
-
336
- async createModel(inputData) {
266
+ async createModel(input) {
337
267
  await checkModelPermissions("w");
338
- const createdData = new _models.CreateContentModelModel().populate(inputData);
339
- await createdData.validate();
340
- const input = await createdData.toJSON();
268
+ const result = await (0, _validation.createModelCreateValidation)().safeParseAsync(input);
269
+ if (!result.success) {
270
+ throw (0, _utils.createZodError)(result.error);
271
+ }
272
+ /**
273
+ * We need to extract the defaultFields because it is not for the CmsModel object.
274
+ */
275
+ const _removeUndefinedValue = (0, _removeUndefinedValues.removeUndefinedValues)(result.data),
276
+ {
277
+ defaultFields
278
+ } = _removeUndefinedValue,
279
+ data = (0, _objectWithoutProperties2.default)(_removeUndefinedValue, _excluded);
280
+ if (defaultFields) {
281
+ (0, _defaultFields.assignModelDefaultFields)(data);
282
+ }
341
283
  context.security.disableAuthorization();
342
- const group = await context.cms.getGroup(input.group);
284
+ const group = await context.cms.getGroup(data.group);
343
285
  context.security.enableAuthorization();
344
-
345
286
  if (!group) {
346
- throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
287
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
347
288
  }
348
-
349
- const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
350
289
  const identity = getIdentity();
351
- const model = {
352
- name: input.name,
353
- description: input.description || "",
354
- modelId: input.modelId || "",
290
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
291
+ modelId: data.modelId || "",
292
+ singularApiName: data.singularApiName,
293
+ pluralApiName: data.pluralApiName,
355
294
  titleFieldId: "id",
295
+ descriptionFieldId: null,
296
+ imageFieldId: null,
297
+ description: data.description || "",
356
298
  locale: getLocale().code,
357
299
  tenant: getTenant().id,
358
300
  group: {
@@ -366,27 +308,34 @@ const createModelsCrud = params => {
366
308
  },
367
309
  createdOn: new Date().toISOString(),
368
310
  savedOn: new Date().toISOString(),
369
- fields,
370
311
  lockedFields: [],
371
- layout: input.layout || [],
372
312
  webinyVersion: context.WEBINY_VERSION
373
- };
374
- await onModelBeforeCreate.publish({
375
- input,
376
- model
377
- });
378
- const createdModel = await storageOperations.models.create({
379
- model
380
313
  });
381
- loaders.listModels.clearAll();
382
- await updateManager(context, model);
383
- await onModelAfterCreate.publish({
384
- input,
385
- model: createdModel
386
- });
387
- return createdModel;
314
+ model.tags = ensureTypeTag(model);
315
+ try {
316
+ await onModelBeforeCreate.publish({
317
+ input: data,
318
+ model
319
+ });
320
+ const createdModel = await storageOperations.models.create({
321
+ model
322
+ });
323
+ loaders.listModels.clearAll();
324
+ await updateManager(context, model);
325
+ await onModelAfterCreate.publish({
326
+ input: data,
327
+ model: createdModel
328
+ });
329
+ return createdModel;
330
+ } catch (ex) {
331
+ await onModelCreateError.publish({
332
+ input: data,
333
+ model,
334
+ error: ex
335
+ });
336
+ throw ex;
337
+ }
388
338
  },
389
-
390
339
  /**
391
340
  * Method does not check for permissions or ownership.
392
341
  * @internal
@@ -401,70 +350,74 @@ const createModelsCrud = params => {
401
350
  locale: initialModel.locale || getLocale().code,
402
351
  webinyVersion: context.WEBINY_VERSION
403
352
  });
404
- await onModelBeforeUpdate.publish({
405
- input: {},
406
- original,
407
- model
408
- });
409
- const resultModel = await storageOperations.models.update({
410
- model
411
- });
412
- await updateManager(context, resultModel);
413
- loaders.listModels.clearAll();
414
- await onModelAfterUpdate.publish({
415
- input: {},
416
- original,
417
- model: resultModel
418
- });
419
- return resultModel;
353
+ try {
354
+ await onModelBeforeUpdate.publish({
355
+ input: {},
356
+ original,
357
+ model
358
+ });
359
+ const resultModel = await storageOperations.models.update({
360
+ model
361
+ });
362
+ await updateManager(context, resultModel);
363
+ loaders.listModels.clearAll();
364
+ await onModelAfterUpdate.publish({
365
+ input: {},
366
+ original,
367
+ model: resultModel
368
+ });
369
+ return resultModel;
370
+ } catch (ex) {
371
+ await onModelUpdateError.publish({
372
+ input: {},
373
+ original,
374
+ model,
375
+ error: ex
376
+ });
377
+ throw ex;
378
+ }
420
379
  },
421
-
422
- async createModelFrom(modelId, data) {
380
+ async createModelFrom(modelId, userInput) {
423
381
  await checkModelPermissions("w");
424
382
  /**
425
383
  * Get a model record; this will also perform ownership validation.
426
384
  */
427
-
428
385
  const original = await getModel(modelId);
429
- const createdData = new _models.CreateContentModelModelFrom().populate({
430
- name: data.name,
431
- modelId: data.modelId,
432
- description: data.description || original.description,
433
- group: data.group,
434
- locale: data.locale
435
- });
436
- await createdData.validate();
437
- const input = await createdData.toJSON();
438
- const locale = await context.i18n.getLocale(input.locale || original.locale);
439
-
386
+ const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync((0, _objectSpread2.default)((0, _objectSpread2.default)({}, userInput), {}, {
387
+ description: userInput.description || original.description
388
+ }));
389
+ if (!result.success) {
390
+ throw (0, _utils.createZodError)(result.error);
391
+ }
392
+ const data = (0, _removeUndefinedValues.removeUndefinedValues)(result.data);
393
+ const locale = await context.i18n.getLocale(data.locale || original.locale);
440
394
  if (!locale) {
441
- throw new _handlerGraphql.NotFoundError(`There is no locale "${input.locale}".`);
395
+ throw new _handlerGraphql.NotFoundError(`There is no locale "${data.locale}".`);
442
396
  }
443
397
  /**
444
398
  * Use storage operations directly because we cannot get group from different locale via context methods.
445
399
  */
446
-
447
-
448
400
  const group = await context.cms.storageOperations.groups.get({
449
- id: input.group,
401
+ id: data.group,
450
402
  tenant: original.tenant,
451
403
  locale: locale.code
452
404
  });
453
-
454
405
  if (!group) {
455
- throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
406
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
456
407
  }
457
-
458
408
  const identity = getIdentity();
459
409
  const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
410
+ singularApiName: data.singularApiName,
411
+ pluralApiName: data.pluralApiName,
460
412
  locale: locale.code,
461
413
  group: {
462
414
  id: group.id,
463
415
  name: group.name
464
416
  },
465
- name: input.name,
466
- modelId: input.modelId || "",
467
- description: input.description || "",
417
+ icon: data.icon,
418
+ name: data.name,
419
+ modelId: data.modelId || "",
420
+ description: data.description || "",
468
421
  createdBy: {
469
422
  id: identity.id,
470
423
  displayName: identity.displayName,
@@ -475,112 +428,133 @@ const createModelsCrud = params => {
475
428
  lockedFields: [],
476
429
  webinyVersion: context.WEBINY_VERSION
477
430
  });
478
- await onModelBeforeCreateFrom.publish({
479
- input,
480
- model,
481
- original
482
- });
483
- const createdModel = await storageOperations.models.create({
484
- model
485
- });
486
- loaders.listModels.clearAll();
487
- await updateManager(context, model);
488
- await onModelAfterCreateFrom.publish({
489
- input,
490
- original,
491
- model: createdModel
492
- });
493
- return createdModel;
431
+ try {
432
+ await onModelBeforeCreateFrom.publish({
433
+ input: data,
434
+ model,
435
+ original
436
+ });
437
+ const createdModel = await storageOperations.models.create({
438
+ model
439
+ });
440
+ loaders.listModels.clearAll();
441
+ await updateManager(context, model);
442
+ await onModelAfterCreateFrom.publish({
443
+ input: data,
444
+ original,
445
+ model: createdModel
446
+ });
447
+ return createdModel;
448
+ } catch (ex) {
449
+ await onModelCreateFromError.publish({
450
+ input: data,
451
+ original,
452
+ model,
453
+ error: ex
454
+ });
455
+ throw ex;
456
+ }
494
457
  },
458
+ async updateModel(modelId, input) {
459
+ await checkModelPermissions("w");
495
460
 
496
- async updateModel(modelId, inputData) {
497
- await checkModelPermissions("w"); // Get a model record; this will also perform ownership validation.
498
-
461
+ // Get a model record; this will also perform ownership validation.
499
462
  const original = await getModel(modelId);
500
- const updatedData = new _models.UpdateContentModelModel().populate(inputData);
501
- await updatedData.validate();
502
- const input = await updatedData.toJSON({
503
- onlyDirty: true
504
- });
505
-
506
- if (Object.keys(input).length === 0) {
463
+ const result = await (0, _validation.createModelUpdateValidation)().safeParseAsync(input);
464
+ if (!result.success) {
465
+ throw (0, _utils.createZodError)(result.error);
466
+ }
467
+ const data = (0, _removeUndefinedValues.removeUndefinedValues)(result.data);
468
+ if (Object.keys(data).length === 0) {
507
469
  /**
508
470
  * We need to return the original if nothing is to be updated.
509
471
  */
510
472
  return original;
511
473
  }
512
-
513
474
  let group = {
514
475
  id: original.group.id,
515
476
  name: original.group.name
516
477
  };
517
-
518
- if (input.group) {
478
+ if (data.group) {
519
479
  context.security.disableAuthorization();
520
- const groupData = await context.cms.getGroup(input.group);
480
+ const groupData = await context.cms.getGroup(data.group);
521
481
  context.security.enableAuthorization();
522
-
523
482
  if (!groupData) {
524
- throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
483
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
525
484
  }
526
-
527
485
  group = {
528
486
  id: groupData.id,
529
487
  name: groupData.name
530
488
  };
531
489
  }
532
-
533
- const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
534
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
490
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
491
+ titleFieldId: data.titleFieldId === undefined ? original.titleFieldId : data.titleFieldId,
492
+ descriptionFieldId: data.descriptionFieldId === undefined ? original.descriptionFieldId : data.descriptionFieldId,
493
+ imageFieldId: data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,
535
494
  group,
495
+ description: data.description || original.description,
536
496
  tenant: original.tenant || getTenant().id,
537
497
  locale: original.locale || getLocale().code,
538
498
  webinyVersion: context.WEBINY_VERSION,
539
- fields,
540
499
  savedOn: new Date().toISOString()
541
500
  });
542
- await onModelBeforeUpdate.publish({
543
- input,
544
- original,
545
- model
546
- });
547
- const resultModel = await storageOperations.models.update({
548
- model
549
- });
550
- await updateManager(context, resultModel);
551
- await onModelAfterUpdate.publish({
552
- input,
553
- original,
554
- model: resultModel
555
- });
556
- return resultModel;
501
+ model.tags = ensureTypeTag(model);
502
+ try {
503
+ await onModelBeforeUpdate.publish({
504
+ input: data,
505
+ original,
506
+ model
507
+ });
508
+ const resultModel = await storageOperations.models.update({
509
+ model
510
+ });
511
+ await updateManager(context, resultModel);
512
+ await onModelAfterUpdate.publish({
513
+ input: data,
514
+ original,
515
+ model: resultModel
516
+ });
517
+ return resultModel;
518
+ } catch (ex) {
519
+ await onModelUpdateError.publish({
520
+ input: data,
521
+ model,
522
+ original,
523
+ error: ex
524
+ });
525
+ throw ex;
526
+ }
557
527
  },
558
-
559
528
  async deleteModel(modelId) {
560
529
  await checkModelPermissions("d");
561
530
  const model = await getModel(modelId);
562
- await onModelBeforeDelete.publish({
563
- model
564
- });
565
-
566
531
  try {
567
- await storageOperations.models.delete({
532
+ await onModelBeforeDelete.publish({
533
+ model
534
+ });
535
+ try {
536
+ await storageOperations.models.delete({
537
+ model
538
+ });
539
+ } catch (ex) {
540
+ throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
541
+ error: ex,
542
+ modelId: model.modelId
543
+ });
544
+ }
545
+ await onModelAfterDelete.publish({
568
546
  model
569
547
  });
548
+ managers.delete(model.modelId);
570
549
  } catch (ex) {
571
- throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
572
- error: ex,
573
- modelId: model.modelId
550
+ await onModelDeleteError.publish({
551
+ model,
552
+ error: ex
574
553
  });
554
+ throw ex;
575
555
  }
576
-
577
- await onModelAfterDelete.publish({
578
- model
579
- });
580
- managers.delete(model.modelId);
581
556
  },
582
-
583
- async initializeModel(modelId) {
557
+ async initializeModel(modelId, data) {
584
558
  /**
585
559
  * We require that users have write permissions to initialize models.
586
560
  * Maybe introduce another permission for it?
@@ -588,11 +562,11 @@ const createModelsCrud = params => {
588
562
  await checkModelPermissions("w");
589
563
  const model = await getModel(modelId);
590
564
  await onModelInitialize.publish({
591
- model
565
+ model,
566
+ data
592
567
  });
593
568
  return true;
594
569
  },
595
-
596
570
  getModelManager,
597
571
  getEntryManager: async model => {
598
572
  return getModelManager(model);
@@ -601,5 +575,4 @@ const createModelsCrud = params => {
601
575
  getEntryManagers: () => managers
602
576
  };
603
577
  };
604
-
605
578
  exports.createModelsCrud = createModelsCrud;