@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.6e5425ee89

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