@webiny/api-headless-cms 0.0.0-unstable.d16f688daf → 0.0.0-unstable.d65ec29d44

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