@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,59 +1,39 @@
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.createContentEntryCrud = exports.STATUS_UNPUBLISHED = exports.STATUS_PUBLISHED = exports.STATUS_DRAFT = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
9
  var _mdbid = _interopRequireDefault(require("mdbid"));
13
-
14
10
  var _handlerGraphql = require("@webiny/handler-graphql");
15
-
16
11
  var _entryDataValidation = require("./contentEntry/entryDataValidation");
17
-
18
12
  var _error = _interopRequireDefault(require("@webiny/error"));
19
-
20
13
  var _pubsub = require("@webiny/pubsub");
21
-
22
14
  var _beforeCreate = require("./contentEntry/beforeCreate");
23
-
24
15
  var _beforeUpdate = require("./contentEntry/beforeUpdate");
25
-
26
16
  var _utils = require("@webiny/utils");
27
-
28
17
  var _afterDelete = require("./contentEntry/afterDelete");
29
-
30
18
  var _referenceFieldsMapping = require("./contentEntry/referenceFieldsMapping");
31
-
32
19
  var _merge = _interopRequireDefault(require("lodash/merge"));
33
-
34
20
  var _permissions = require("../utils/permissions");
35
-
36
21
  var _access = require("../utils/access");
37
-
38
22
  var _ownership = require("../utils/ownership");
39
-
40
23
  var _entryStorage = require("../utils/entryStorage");
41
-
42
24
  var _valueKeyStorageConverter = require("../utils/converters/valueKeyStorageConverter");
43
-
44
25
  var _searchableFields = require("./contentEntry/searchableFields");
45
-
46
26
  /**
47
27
  * Package mdbid does not have types.
48
28
  */
49
29
  // @ts-ignore
30
+
50
31
  const STATUS_DRAFT = "draft";
51
32
  exports.STATUS_DRAFT = STATUS_DRAFT;
52
33
  const STATUS_PUBLISHED = "published";
53
34
  exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
54
35
  const STATUS_UNPUBLISHED = "unpublished";
55
36
  exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
56
-
57
37
  /**
58
38
  * Used for some fields to convert their values.
59
39
  */
@@ -61,45 +41,35 @@ const convertDefaultValue = (field, value) => {
61
41
  switch (field.type) {
62
42
  case "boolean":
63
43
  return Boolean(value);
64
-
65
44
  case "number":
66
45
  return Number(value);
67
-
68
46
  default:
69
47
  return value;
70
48
  }
71
49
  };
72
-
73
50
  const getDefaultValue = field => {
74
51
  const {
75
52
  settings,
76
53
  multipleValues
77
54
  } = field;
78
-
79
55
  if (settings && settings.defaultValue !== undefined) {
80
56
  return convertDefaultValue(field, settings.defaultValue);
81
57
  }
82
-
83
58
  const {
84
59
  predefinedValues
85
60
  } = field;
86
-
87
61
  if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
88
62
  return undefined;
89
63
  }
90
-
91
64
  if (!multipleValues) {
92
65
  const selectedValue = predefinedValues.values.find(value => {
93
66
  return !!value.selected;
94
67
  });
95
-
96
68
  if (selectedValue) {
97
69
  return convertDefaultValue(field, selectedValue.value);
98
70
  }
99
-
100
71
  return undefined;
101
72
  }
102
-
103
73
  return predefinedValues.values.filter(({
104
74
  selected
105
75
  }) => !!selected).map(({
@@ -111,8 +81,6 @@ const getDefaultValue = field => {
111
81
  /**
112
82
  * Cleans and adds default values to create input data.
113
83
  */
114
-
115
-
116
84
  const mapAndCleanCreateInputData = (model, input) => {
117
85
  return model.fields.reduce((acc, field) => {
118
86
  /**
@@ -124,12 +92,10 @@ const mapAndCleanCreateInputData = (model, input) => {
124
92
  field
125
93
  });
126
94
  }
127
-
128
95
  const value = input[field.fieldId];
129
96
  /**
130
97
  * We set the default value on create input if value is not defined.
131
98
  */
132
-
133
99
  acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;
134
100
  return acc;
135
101
  }, {});
@@ -137,8 +103,6 @@ const mapAndCleanCreateInputData = (model, input) => {
137
103
  /**
138
104
  * Cleans the update input entry data.
139
105
  */
140
-
141
-
142
106
  const mapAndCleanUpdatedInputData = (model, input) => {
143
107
  return model.fields.reduce((acc, field) => {
144
108
  /**
@@ -153,14 +117,10 @@ const mapAndCleanUpdatedInputData = (model, input) => {
153
117
  /**
154
118
  * We cannot set default value here because user might want to update only certain field values.
155
119
  */
156
-
157
-
158
120
  const value = input[field.fieldId];
159
-
160
121
  if (value === undefined) {
161
122
  return acc;
162
123
  }
163
-
164
124
  acc[field.fieldId] = value;
165
125
  return acc;
166
126
  }, {});
@@ -169,26 +129,29 @@ const mapAndCleanUpdatedInputData = (model, input) => {
169
129
  * This method takes original entry meta and new input.
170
130
  * When new meta is merged onto the existing one, everything that has undefined or null value is removed.
171
131
  */
172
-
173
-
174
132
  const createEntryMeta = (input, original) => {
175
133
  const meta = (0, _merge.default)(original || {}, input || {});
176
-
177
134
  for (const key in meta) {
178
135
  if (meta[key] !== undefined || meta[key] !== null) {
179
136
  continue;
180
137
  }
181
-
182
138
  delete meta[key];
183
139
  }
184
-
185
140
  return meta;
186
141
  };
187
-
188
- const createEntryId = version => {
189
- const entryId = (0, _mdbid.default)();
142
+ const createEntryId = input => {
143
+ let entryId = (0, _mdbid.default)();
144
+ if (input.id) {
145
+ if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9\-]+)([a-zA-Z0-9])$/) === null) {
146
+ throw new _error.default("The provided ID is not valid. It must be a string which can A-Z, a-z, 0-9, - and it cannot start or end with a -.", "INVALID_ID", {
147
+ id: input.id
148
+ });
149
+ }
150
+ entryId = input.id;
151
+ }
152
+ const version = 1;
190
153
  return {
191
- entryId,
154
+ entryId: entryId,
192
155
  version,
193
156
  id: (0, _utils.createIdentifier)({
194
157
  id: entryId,
@@ -196,19 +159,16 @@ const createEntryId = version => {
196
159
  })
197
160
  };
198
161
  };
199
-
200
162
  const increaseEntryIdVersion = id => {
201
163
  const {
202
164
  id: entryId,
203
165
  version
204
166
  } = (0, _utils.parseIdentifier)(id);
205
-
206
167
  if (!version) {
207
168
  throw new _error.default("Cannot increase version on the ID without the version part.", "WRONG_ID", {
208
169
  id
209
170
  });
210
171
  }
211
-
212
172
  return {
213
173
  entryId,
214
174
  version: version + 1,
@@ -218,13 +178,10 @@ const increaseEntryIdVersion = id => {
218
178
  })
219
179
  };
220
180
  };
221
-
222
181
  const allowedEntryStatus = ["draft", "published", "unpublished"];
223
-
224
182
  const transformEntryStatus = status => {
225
183
  return allowedEntryStatus.includes(status) ? status : "draft";
226
184
  };
227
-
228
185
  const createContentEntryCrud = params => {
229
186
  const {
230
187
  storageOperations,
@@ -235,60 +192,70 @@ const createContentEntryCrud = params => {
235
192
  const {
236
193
  plugins
237
194
  } = context;
195
+
238
196
  /**
239
197
  * Create
240
198
  */
241
-
242
199
  const onEntryBeforeCreate = (0, _pubsub.createTopic)("cms.onEntryBeforeCreate");
243
200
  const onEntryAfterCreate = (0, _pubsub.createTopic)("cms.onEntryAfterCreate");
244
201
  const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
202
+
245
203
  /**
246
204
  * Create new revision
247
205
  */
248
-
249
206
  const onEntryBeforeCreateRevision = (0, _pubsub.createTopic)("cms.onEntryBeforeCreateRevision");
250
207
  const onEntryRevisionAfterCreate = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterCreate");
251
208
  const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
209
+
252
210
  /**
253
211
  * Update
254
212
  */
255
-
256
213
  const onEntryBeforeUpdate = (0, _pubsub.createTopic)("cms.onEntryBeforeUpdate");
257
214
  const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
258
215
  const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
216
+
259
217
  /**
260
218
  * Publish
261
219
  */
262
-
263
220
  const onEntryBeforePublish = (0, _pubsub.createTopic)("cms.onEntryBeforePublish");
264
- const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublic");
221
+ const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublish");
265
222
  const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
223
+
266
224
  /**
267
- * Unpublish
225
+ * Republish
268
226
  */
227
+ const onEntryBeforeRepublish = (0, _pubsub.createTopic)("cms.onEntryBeforeRepublish");
228
+ const onEntryAfterRepublish = (0, _pubsub.createTopic)("cms.onEntryAfterRepublish");
229
+ const onEntryRepublishError = (0, _pubsub.createTopic)("cms.onEntryRepublishError");
269
230
 
231
+ /**
232
+ * Unpublish
233
+ */
270
234
  const onEntryBeforeUnpublish = (0, _pubsub.createTopic)("cms.onEntryBeforeUnpublish");
271
235
  const onEntryAfterUnpublish = (0, _pubsub.createTopic)("cms.onEntryAfterUnpublish");
272
236
  const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
237
+
273
238
  /**
274
239
  * Delete
275
240
  */
276
-
277
241
  const onEntryBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryBeforeDelete");
278
242
  const onEntryAfterDelete = (0, _pubsub.createTopic)("cms.onEntryAfterDelete");
279
- const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError"); // delete revision
243
+ const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError");
280
244
 
245
+ // delete revision
281
246
  const onEntryRevisionBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionBeforeDelete");
282
247
  const onEntryRevisionAfterDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterDelete");
283
- const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError"); // get
248
+ const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError");
284
249
 
285
- const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet"); // list
250
+ // get
251
+ const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet");
286
252
 
253
+ // list
287
254
  const onEntryBeforeList = (0, _pubsub.createTopic)("cms.onEntryBeforeList");
255
+
288
256
  /**
289
257
  * We need to assign some default behaviors.
290
258
  */
291
-
292
259
  (0, _beforeCreate.assignBeforeEntryCreate)({
293
260
  context,
294
261
  onEntryBeforeCreate
@@ -301,21 +268,18 @@ const createContentEntryCrud = params => {
301
268
  context,
302
269
  onEntryAfterDelete
303
270
  });
304
-
305
271
  const checkEntryPermissions = check => {
306
272
  return (0, _permissions.checkPermissions)(context, "cms.contentEntry", check);
307
273
  };
274
+
308
275
  /**
309
276
  * A helper to delete the entire entry.
310
277
  */
311
-
312
-
313
278
  const deleteEntry = async params => {
314
279
  const {
315
280
  model,
316
281
  entry
317
282
  } = params;
318
-
319
283
  try {
320
284
  await onEntryBeforeDelete.publish({
321
285
  entry,
@@ -342,8 +306,6 @@ const createContentEntryCrud = params => {
342
306
  /**
343
307
  * A helper to get entries by revision IDs
344
308
  */
345
-
346
-
347
309
  const getEntriesByIds = async (initialModel, ids) => {
348
310
  const permission = await checkEntryPermissions({
349
311
  rwd: "r"
@@ -358,7 +320,6 @@ const createContentEntryCrud = params => {
358
320
  });
359
321
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
360
322
  };
361
-
362
323
  return {
363
324
  /**
364
325
  * Deprecated - will be removed in 5.35.0
@@ -379,7 +340,6 @@ const createContentEntryCrud = params => {
379
340
  onAfterEntryUnpublish: onEntryAfterUnpublish,
380
341
  onBeforeEntryGet: onEntryBeforeGet,
381
342
  onBeforeEntryList: onEntryBeforeList,
382
-
383
343
  /**
384
344
  * Released in 5.34.0
385
345
  *
@@ -388,42 +348,42 @@ const createContentEntryCrud = params => {
388
348
  onEntryBeforeCreate,
389
349
  onEntryAfterCreate,
390
350
  onEntryCreateError,
391
-
392
351
  /**
393
352
  * Create revision
394
353
  */
395
354
  onEntryRevisionBeforeCreate: onEntryBeforeCreateRevision,
396
355
  onEntryRevisionAfterCreate,
397
356
  onEntryRevisionCreateError: onEntryCreateRevisionError,
398
-
399
357
  /**
400
358
  * Update
401
359
  */
402
360
  onEntryBeforeUpdate,
403
361
  onEntryAfterUpdate,
404
362
  onEntryUpdateError,
405
-
406
363
  /**
407
364
  * Delete whole entry
408
365
  */
409
366
  onEntryBeforeDelete,
410
367
  onEntryAfterDelete,
411
368
  onEntryDeleteError,
412
-
413
369
  /**
414
370
  * Delete entry revision
415
371
  */
416
372
  onEntryRevisionBeforeDelete,
417
373
  onEntryRevisionAfterDelete,
418
374
  onEntryRevisionDeleteError,
419
-
420
375
  /**
421
376
  * Publish
422
377
  */
423
378
  onEntryBeforePublish,
424
379
  onEntryAfterPublish,
425
380
  onEntryPublishError,
426
-
381
+ /**
382
+ * Republish
383
+ */
384
+ onEntryBeforeRepublish,
385
+ onEntryAfterRepublish,
386
+ onEntryRepublishError,
427
387
  /**
428
388
  * Unpublish
429
389
  */
@@ -432,12 +392,10 @@ const createContentEntryCrud = params => {
432
392
  onEntryUnpublishError,
433
393
  onEntryBeforeGet,
434
394
  onEntryBeforeList,
435
-
436
395
  /**
437
396
  * Get entries by exact revision IDs from the database.
438
397
  */
439
398
  getEntriesByIds: getEntriesByIds,
440
-
441
399
  /**
442
400
  * Get a single entry by revision ID from the database.
443
401
  */
@@ -454,14 +412,11 @@ const createContentEntryCrud = params => {
454
412
  model
455
413
  });
456
414
  const [entry] = await getEntriesByIds(model, [id]);
457
-
458
415
  if (!entry) {
459
416
  throw new _handlerGraphql.NotFoundError(`Entry by ID "${id}" not found.`);
460
417
  }
461
-
462
418
  return entry;
463
419
  },
464
-
465
420
  /**
466
421
  * Get published revisions by entry IDs.
467
422
  */
@@ -479,7 +434,6 @@ const createContentEntryCrud = params => {
479
434
  });
480
435
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
481
436
  },
482
-
483
437
  /**
484
438
  * Get the latest revisions by entry IDs.
485
439
  */
@@ -497,7 +451,6 @@ const createContentEntryCrud = params => {
497
451
  });
498
452
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
499
453
  },
500
-
501
454
  async getEntryRevisions(initialModel, entryId) {
502
455
  const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
503
456
  model: initialModel,
@@ -507,7 +460,6 @@ const createContentEntryCrud = params => {
507
460
  id: entryId
508
461
  });
509
462
  },
510
-
511
463
  /**
512
464
  * TODO determine if this method is required at all.
513
465
  *
@@ -534,14 +486,11 @@ const createContentEntryCrud = params => {
534
486
  sort,
535
487
  limit: 1
536
488
  });
537
-
538
489
  if (items.length === 0) {
539
490
  throw new _handlerGraphql.NotFoundError(`Entry not found!`);
540
491
  }
541
-
542
492
  return items[0];
543
493
  },
544
-
545
494
  /**
546
495
  * @description Should not be used directly. Internal use only!
547
496
  *
@@ -557,20 +506,19 @@ const createContentEntryCrud = params => {
557
506
  plugins
558
507
  });
559
508
  const {
560
- where: initialWhere
509
+ where: initialWhere,
510
+ limit: initialLimit
561
511
  } = params;
512
+ const limit = initialLimit && initialLimit > 0 ? initialLimit : 50;
562
513
  /**
563
514
  * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
564
515
  */
565
-
566
516
  const where = (0, _objectSpread2.default)({}, initialWhere);
567
517
  /**
568
518
  * Possibly only get records which are owned by current user.
569
519
  * Or if searching for the owner set that value - in the case that user can see other entries than their own.
570
520
  */
571
-
572
521
  const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
573
-
574
522
  if (ownedBy !== undefined) {
575
523
  where.ownedBy = ownedBy;
576
524
  }
@@ -578,8 +526,6 @@ const createContentEntryCrud = params => {
578
526
  * Where must contain either latest or published keys.
579
527
  * We cannot list entries without one of those
580
528
  */
581
-
582
-
583
529
  if (where.latest && where.published) {
584
530
  throw new _error.default("Cannot list entries that are both published and latest.", "LIST_ENTRIES_ERROR", {
585
531
  where
@@ -589,13 +535,11 @@ const createContentEntryCrud = params => {
589
535
  where
590
536
  });
591
537
  }
592
-
593
538
  const fields = (0, _searchableFields.getSearchableFields)({
594
539
  fields: model.fields,
595
540
  plugins: context.plugins,
596
541
  input: params.fields || []
597
542
  });
598
-
599
543
  try {
600
544
  await onEntryBeforeList.publish({
601
545
  where,
@@ -607,13 +551,13 @@ const createContentEntryCrud = params => {
607
551
  cursor,
608
552
  items
609
553
  } = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
554
+ limit,
610
555
  where,
611
556
  fields
612
557
  }));
613
558
  const meta = {
614
559
  hasMoreItems,
615
560
  totalCount,
616
-
617
561
  /**
618
562
  * Cursor should be null if there are no more items to load.
619
563
  * Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.
@@ -634,7 +578,6 @@ const createContentEntryCrud = params => {
634
578
  });
635
579
  }
636
580
  },
637
-
638
581
  async listLatestEntries(model, params) {
639
582
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
640
583
  return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
@@ -645,7 +588,6 @@ const createContentEntryCrud = params => {
645
588
  })
646
589
  }));
647
590
  },
648
-
649
591
  async listPublishedEntries(model, params) {
650
592
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
651
593
  return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
@@ -656,7 +598,6 @@ const createContentEntryCrud = params => {
656
598
  })
657
599
  }));
658
600
  },
659
-
660
601
  async createEntry(initialModel, inputData) {
661
602
  await checkEntryPermissions({
662
603
  rwd: "w"
@@ -666,10 +607,10 @@ const createContentEntryCrud = params => {
666
607
  model: initialModel,
667
608
  plugins
668
609
  });
610
+
669
611
  /**
670
612
  * Make sure we only work with fields that are defined in the model.
671
613
  */
672
-
673
614
  const initialInput = mapAndCleanCreateInputData(model, inputData);
674
615
  await (0, _entryDataValidation.validateModelEntryData)({
675
616
  context,
@@ -689,11 +630,15 @@ const createContentEntryCrud = params => {
689
630
  displayName: identity.displayName,
690
631
  type: identity.type
691
632
  };
633
+ /**
634
+ * There is a possibility that user sends an ID in the input, so we will use that one.
635
+ * There is no check if the ID is unique or not, that is up to the user.
636
+ */
692
637
  const {
693
638
  id,
694
639
  entryId,
695
640
  version
696
- } = createEntryId(1);
641
+ } = createEntryId(inputData);
697
642
  const entry = {
698
643
  webinyVersion: context.WEBINY_VERSION,
699
644
  tenant: getTenant().id,
@@ -711,7 +656,6 @@ const createContentEntryCrud = params => {
711
656
  values: input
712
657
  };
713
658
  let storageEntry = null;
714
-
715
659
  try {
716
660
  await onEntryBeforeCreate.publish({
717
661
  entry,
@@ -745,7 +689,6 @@ const createContentEntryCrud = params => {
745
689
  });
746
690
  }
747
691
  },
748
-
749
692
  async createEntryRevisionFrom(initialModel, sourceId, inputData) {
750
693
  const permission = await checkEntryPermissions({
751
694
  rwd: "w"
@@ -755,15 +698,15 @@ const createContentEntryCrud = params => {
755
698
  model: initialModel,
756
699
  plugins
757
700
  });
701
+
758
702
  /**
759
703
  * Make sure we only work with fields that are defined in the model.
760
704
  */
761
-
762
705
  const input = mapAndCleanUpdatedInputData(model, inputData);
706
+
763
707
  /**
764
708
  * Entries are identified by a common parent ID + Revision number.
765
709
  */
766
-
767
710
  const {
768
711
  id: uniqueId
769
712
  } = (0, _utils.parseIdentifier)(sourceId);
@@ -773,15 +716,13 @@ const createContentEntryCrud = params => {
773
716
  const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
774
717
  id: uniqueId
775
718
  });
776
-
777
719
  if (!originalStorageEntry) {
778
720
  throw new _handlerGraphql.NotFoundError(`Entry "${sourceId}" of model "${model.modelId}" was not found.`);
779
721
  }
722
+
780
723
  /**
781
724
  * We need to convert data from DB to its original form before using it further.
782
725
  */
783
-
784
-
785
726
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
786
727
  const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
787
728
  await (0, _entryDataValidation.validateModelEntryData)({
@@ -819,7 +760,6 @@ const createContentEntryCrud = params => {
819
760
  values
820
761
  });
821
762
  let storageEntry = null;
822
-
823
763
  try {
824
764
  await onEntryBeforeCreateRevision.publish({
825
765
  input,
@@ -857,7 +797,6 @@ const createContentEntryCrud = params => {
857
797
  });
858
798
  }
859
799
  },
860
-
861
800
  async updateEntry(initialModel, id, inputData, metaInput) {
862
801
  const permission = await checkEntryPermissions({
863
802
  rwd: "w"
@@ -867,27 +806,24 @@ const createContentEntryCrud = params => {
867
806
  model: initialModel,
868
807
  plugins
869
808
  });
809
+
870
810
  /**
871
811
  * Make sure we only work with fields that are defined in the model.
872
812
  */
873
-
874
813
  const input = mapAndCleanUpdatedInputData(model, inputData);
814
+
875
815
  /**
876
816
  * The entry we are going to update.
877
817
  */
878
-
879
818
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
880
819
  id
881
820
  });
882
-
883
821
  if (!originalStorageEntry) {
884
822
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
885
823
  }
886
-
887
824
  if (originalStorageEntry.locked) {
888
825
  throw new _error.default(`Cannot update entry because it's locked.`, "CONTENT_ENTRY_UPDATE_ERROR");
889
826
  }
890
-
891
827
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
892
828
  await (0, _entryDataValidation.validateModelEntryData)({
893
829
  context,
@@ -906,12 +842,10 @@ const createContentEntryCrud = params => {
906
842
  /**
907
843
  * If users wants to remove a key from meta values, they need to send meta key with the null value.
908
844
  */
909
-
910
845
  const meta = createEntryMeta(metaInput, originalEntry.meta);
911
846
  /**
912
847
  * We always send the full entry to the hooks and storage operations update.
913
848
  */
914
-
915
849
  const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
916
850
  savedOn: new Date().toISOString(),
917
851
  values,
@@ -919,7 +853,6 @@ const createContentEntryCrud = params => {
919
853
  status: transformEntryStatus(originalEntry.status)
920
854
  });
921
855
  let storageEntry = null;
922
-
923
856
  try {
924
857
  await onEntryBeforeUpdate.publish({
925
858
  entry,
@@ -956,7 +889,6 @@ const createContentEntryCrud = params => {
956
889
  });
957
890
  }
958
891
  },
959
-
960
892
  /**
961
893
  * Method used internally. Not documented and should not be used in users systems.
962
894
  * @internal
@@ -973,27 +905,22 @@ const createContentEntryCrud = params => {
973
905
  /**
974
906
  * Fetch the entry from the storage.
975
907
  */
976
-
977
908
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
978
909
  id
979
910
  });
980
-
981
911
  if (!originalStorageEntry) {
982
912
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found!`);
983
913
  }
984
-
985
914
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
986
915
  /**
987
916
  * We can only process published entries.
988
917
  */
989
-
990
918
  if (originalEntry.status !== "published") {
991
919
  throw new _error.default("Entry with given ID is not published!", "NOT_PUBLISHED_ERROR", {
992
920
  id,
993
921
  original: originalEntry
994
922
  });
995
923
  }
996
-
997
924
  const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
998
925
  context,
999
926
  model,
@@ -1009,7 +936,6 @@ const createContentEntryCrud = params => {
1009
936
  /**
1010
937
  * First we need to update existing entry.
1011
938
  */
1012
-
1013
939
  try {
1014
940
  await storageOperations.entries.update(model, {
1015
941
  entry,
@@ -1023,20 +949,32 @@ const createContentEntryCrud = params => {
1023
949
  /**
1024
950
  * Then we move onto publishing it again.
1025
951
  */
1026
-
1027
-
1028
952
  try {
1029
- return await storageOperations.entries.publish(model, {
953
+ await onEntryBeforeRepublish.publish({
954
+ entry,
955
+ model
956
+ });
957
+ const result = await storageOperations.entries.publish(model, {
1030
958
  entry,
1031
959
  storageEntry
1032
960
  });
961
+ await onEntryAfterRepublish.publish({
962
+ entry,
963
+ model,
964
+ storageEntry
965
+ });
966
+ return result;
1033
967
  } catch (ex) {
968
+ await onEntryRepublishError.publish({
969
+ entry,
970
+ model,
971
+ error: ex
972
+ });
1034
973
  throw new _error.default("Could not publish existing entry while re-publishing.", "REPUBLISH_PUBLISH_ERROR", {
1035
974
  entry
1036
975
  });
1037
976
  }
1038
977
  },
1039
-
1040
978
  async deleteEntryRevision(initialModel, revisionId) {
1041
979
  const permission = await checkEntryPermissions({
1042
980
  rwd: "d"
@@ -1060,11 +998,9 @@ const createContentEntryCrud = params => {
1060
998
  entryId,
1061
999
  version: version
1062
1000
  });
1063
-
1064
1001
  if (!storageEntryToDelete) {
1065
1002
  throw new _handlerGraphql.NotFoundError(`Entry "${revisionId}" was not found!`);
1066
1003
  }
1067
-
1068
1004
  (0, _ownership.checkOwnership)(context, permission, storageEntryToDelete);
1069
1005
  const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;
1070
1006
  const entryToDelete = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntryToDelete);
@@ -1072,7 +1008,6 @@ const createContentEntryCrud = params => {
1072
1008
  * If targeted record is the latest entry record and there is no previous one, we need to run full delete with hooks.
1073
1009
  * At this point deleteRevision hooks are not fired.
1074
1010
  */
1075
-
1076
1011
  if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {
1077
1012
  return await deleteEntry({
1078
1013
  model,
@@ -1082,16 +1017,12 @@ const createContentEntryCrud = params => {
1082
1017
  /**
1083
1018
  * If targeted record is latest entry revision, set the previous one as the new latest
1084
1019
  */
1085
-
1086
-
1087
1020
  let entryToSetAsLatest = null;
1088
1021
  let storageEntryToSetAsLatest = null;
1089
-
1090
1022
  if (entryToDelete.id === latestEntryRevisionId && previousStorageEntry) {
1091
1023
  entryToSetAsLatest = await (0, _entryStorage.entryFromStorageTransform)(context, model, previousStorageEntry);
1092
1024
  storageEntryToSetAsLatest = previousStorageEntry;
1093
1025
  }
1094
-
1095
1026
  try {
1096
1027
  await onEntryRevisionBeforeDelete.publish({
1097
1028
  entry: entryToDelete,
@@ -1122,7 +1053,6 @@ const createContentEntryCrud = params => {
1122
1053
  });
1123
1054
  }
1124
1055
  },
1125
-
1126
1056
  async deleteEntry(initialModel, entryId) {
1127
1057
  const permission = await checkEntryPermissions({
1128
1058
  rwd: "d"
@@ -1135,11 +1065,9 @@ const createContentEntryCrud = params => {
1135
1065
  const storageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
1136
1066
  id: entryId
1137
1067
  });
1138
-
1139
1068
  if (!storageEntry) {
1140
1069
  throw new _handlerGraphql.NotFoundError(`Entry "${entryId}" was not found!`);
1141
1070
  }
1142
-
1143
1071
  (0, _ownership.checkOwnership)(context, permission, storageEntry);
1144
1072
  const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntry);
1145
1073
  return await deleteEntry({
@@ -1147,7 +1075,6 @@ const createContentEntryCrud = params => {
1147
1075
  entry
1148
1076
  });
1149
1077
  },
1150
-
1151
1078
  async publishEntry(initialModel, id) {
1152
1079
  const permission = await checkEntryPermissions({
1153
1080
  pw: "p"
@@ -1160,11 +1087,9 @@ const createContentEntryCrud = params => {
1160
1087
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
1161
1088
  id
1162
1089
  });
1163
-
1164
1090
  if (!originalStorageEntry) {
1165
1091
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
1166
1092
  }
1167
-
1168
1093
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1169
1094
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1170
1095
  const currentDate = new Date().toISOString();
@@ -1175,7 +1100,6 @@ const createContentEntryCrud = params => {
1175
1100
  publishedOn: currentDate
1176
1101
  });
1177
1102
  let storageEntry = null;
1178
-
1179
1103
  try {
1180
1104
  await onEntryBeforePublish.publish({
1181
1105
  entry,
@@ -1207,7 +1131,6 @@ const createContentEntryCrud = params => {
1207
1131
  });
1208
1132
  }
1209
1133
  },
1210
-
1211
1134
  async unpublishEntry(initialModel, id) {
1212
1135
  const permission = await checkEntryPermissions({
1213
1136
  pw: "u"
@@ -1222,24 +1145,20 @@ const createContentEntryCrud = params => {
1222
1145
  const originalStorageEntry = await storageOperations.entries.getPublishedRevisionByEntryId(model, {
1223
1146
  id: entryId
1224
1147
  });
1225
-
1226
1148
  if (!originalStorageEntry) {
1227
1149
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
1228
1150
  }
1229
-
1230
1151
  if (originalStorageEntry.id !== id) {
1231
1152
  throw new _error.default(`Entry is not published.`, "UNPUBLISH_ERROR", {
1232
1153
  entry: originalStorageEntry
1233
1154
  });
1234
1155
  }
1235
-
1236
1156
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1237
1157
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1238
1158
  const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
1239
1159
  status: STATUS_UNPUBLISHED
1240
1160
  });
1241
1161
  let storageEntry = null;
1242
-
1243
1162
  try {
1244
1163
  await onEntryBeforeUnpublish.publish({
1245
1164
  entry,
@@ -1270,8 +1189,6 @@ const createContentEntryCrud = params => {
1270
1189
  });
1271
1190
  }
1272
1191
  }
1273
-
1274
1192
  };
1275
1193
  };
1276
-
1277
1194
  exports.createContentEntryCrud = createContentEntryCrud;