@webiny/api-headless-cms 0.0.0-unstable.d4f203fa97 → 0.0.0-unstable.d7f521b032

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 (343) 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 +16 -29
  13. package/crud/contentEntry/markLockedFields.js.map +1 -1
  14. package/crud/contentEntry/referenceFieldsMapping.js +12 -64
  15. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  16. package/crud/contentEntry/searchableFields.d.ts +9 -0
  17. package/crud/contentEntry/searchableFields.js +72 -0
  18. package/crud/contentEntry/searchableFields.js.map +1 -0
  19. package/crud/contentEntry.crud.js +120 -181
  20. package/crud/contentEntry.crud.js.map +1 -1
  21. package/crud/contentModel/afterCreate.js +0 -2
  22. package/crud/contentModel/afterCreate.js.map +1 -1
  23. package/crud/contentModel/afterCreateFrom.js +0 -2
  24. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  25. package/crud/contentModel/afterDelete.js +0 -2
  26. package/crud/contentModel/afterDelete.js.map +1 -1
  27. package/crud/contentModel/afterUpdate.js +0 -2
  28. package/crud/contentModel/afterUpdate.js.map +1 -1
  29. package/crud/contentModel/beforeCreate.d.ts +2 -3
  30. package/crud/contentModel/beforeCreate.js +7 -36
  31. package/crud/contentModel/beforeCreate.js.map +1 -1
  32. package/crud/contentModel/beforeDelete.js +0 -10
  33. package/crud/contentModel/beforeDelete.js.map +1 -1
  34. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  35. package/crud/contentModel/beforeUpdate.js +2 -7
  36. package/crud/contentModel/beforeUpdate.js.map +1 -1
  37. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  38. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  39. package/crud/contentModel/createFieldStorageId.js +4 -3
  40. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  41. package/crud/contentModel/models.js +12 -0
  42. package/crud/contentModel/models.js.map +1 -1
  43. package/crud/contentModel/systemFields.js.map +1 -1
  44. package/crud/contentModel/validateLayout.js +0 -8
  45. package/crud/contentModel/validateLayout.js.map +1 -1
  46. package/crud/contentModel/validateModel.d.ts +3 -4
  47. package/crud/contentModel/validateModel.js +6 -11
  48. package/crud/contentModel/validateModel.js.map +1 -1
  49. package/crud/contentModel/validateModelFields.d.ts +3 -4
  50. package/crud/contentModel/validateModelFields.js +118 -97
  51. package/crud/contentModel/validateModelFields.js.map +1 -1
  52. package/crud/contentModel/validation.d.ts +477 -0
  53. package/crud/contentModel/validation.js +97 -0
  54. package/crud/contentModel/validation.js.map +1 -0
  55. package/crud/contentModel.crud.js +219 -269
  56. package/crud/contentModel.crud.js.map +1 -1
  57. package/crud/contentModelGroup/beforeCreate.js +0 -12
  58. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  59. package/crud/contentModelGroup/beforeDelete.js +0 -8
  60. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  61. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  62. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  63. package/crud/contentModelGroup/validation.d.ts +30 -0
  64. package/crud/contentModelGroup/validation.js +34 -0
  65. package/crud/contentModelGroup/validation.js.map +1 -0
  66. package/crud/contentModelGroup.crud.js +53 -95
  67. package/crud/contentModelGroup.crud.js.map +1 -1
  68. package/crud/settings.crud.js +0 -12
  69. package/crud/settings.crud.js.map +1 -1
  70. package/crud/system.crud.js +2 -37
  71. package/crud/system.crud.js.map +1 -1
  72. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  73. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  74. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  75. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  76. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  77. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  78. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  79. package/fieldConverters/index.d.ts +2 -1
  80. package/fieldConverters/index.js +2 -5
  81. package/fieldConverters/index.js.map +1 -1
  82. package/graphql/buildSchemaPlugins.d.ts +8 -3
  83. package/graphql/buildSchemaPlugins.js +6 -14
  84. package/graphql/buildSchemaPlugins.js.map +1 -1
  85. package/graphql/createExecutableSchema.d.ts +7 -0
  86. package/graphql/createExecutableSchema.js +29 -0
  87. package/graphql/createExecutableSchema.js.map +1 -0
  88. package/graphql/generateSchema.d.ts +8 -0
  89. package/graphql/generateSchema.js +31 -0
  90. package/graphql/generateSchema.js.map +1 -0
  91. package/graphql/graphQLHandlerFactory.js +90 -74
  92. package/graphql/graphQLHandlerFactory.js.map +1 -1
  93. package/graphql/index.d.ts +1 -3
  94. package/graphql/index.js +2 -46
  95. package/graphql/index.js.map +1 -1
  96. package/graphql/schema/baseContentSchema.d.ts +6 -2
  97. package/graphql/schema/baseContentSchema.js +9 -13
  98. package/graphql/schema/baseContentSchema.js.map +1 -1
  99. package/graphql/schema/baseSchema.d.ts +3 -0
  100. package/graphql/schema/baseSchema.js +53 -0
  101. package/graphql/schema/baseSchema.js.map +1 -0
  102. package/graphql/schema/contentEntries.d.ts +6 -2
  103. package/graphql/schema/contentEntries.js +39 -65
  104. package/graphql/schema/contentEntries.js.map +1 -1
  105. package/graphql/schema/contentModelGroups.d.ts +6 -2
  106. package/graphql/schema/contentModelGroups.js +9 -22
  107. package/graphql/schema/contentModelGroups.js.map +1 -1
  108. package/graphql/schema/contentModels.d.ts +6 -2
  109. package/graphql/schema/contentModels.js +42 -25
  110. package/graphql/schema/contentModels.js.map +1 -1
  111. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  112. package/graphql/schema/createFieldResolvers.js +20 -27
  113. package/graphql/schema/createFieldResolvers.js.map +1 -1
  114. package/graphql/schema/createManageResolvers.js +0 -26
  115. package/graphql/schema/createManageResolvers.js.map +1 -1
  116. package/graphql/schema/createManageSDL.d.ts +2 -0
  117. package/graphql/schema/createManageSDL.js +8 -19
  118. package/graphql/schema/createManageSDL.js.map +1 -1
  119. package/graphql/schema/createPreviewResolvers.js +0 -10
  120. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  121. package/graphql/schema/createReadResolvers.js +5 -10
  122. package/graphql/schema/createReadResolvers.js.map +1 -1
  123. package/graphql/schema/createReadSDL.d.ts +2 -0
  124. package/graphql/schema/createReadSDL.js +11 -15
  125. package/graphql/schema/createReadSDL.js.map +1 -1
  126. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
  127. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  128. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  129. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  130. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  131. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  132. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  133. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  134. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  135. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  136. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  137. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  138. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  139. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  140. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  141. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  142. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  143. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  144. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  145. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  146. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  147. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  148. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  149. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  150. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  151. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  152. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  153. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  154. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  155. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  156. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  157. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  158. package/graphql/schema/schemaPlugins.d.ts +8 -3
  159. package/graphql/schema/schemaPlugins.js +63 -65
  160. package/graphql/schema/schemaPlugins.js.map +1 -1
  161. package/graphql/system.js +69 -85
  162. package/graphql/system.js.map +1 -1
  163. package/graphqlFields/boolean.js +0 -12
  164. package/graphqlFields/boolean.js.map +1 -1
  165. package/graphqlFields/datetime.js +0 -17
  166. package/graphqlFields/datetime.js.map +1 -1
  167. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  168. package/graphqlFields/dynamicZone/dynamicZoneField.js +208 -0
  169. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  170. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  171. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  172. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  173. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  174. package/graphqlFields/dynamicZone/index.js +19 -0
  175. package/graphqlFields/dynamicZone/index.js.map +1 -0
  176. package/graphqlFields/file.js +0 -8
  177. package/graphqlFields/file.js.map +1 -1
  178. package/graphqlFields/helpers.js +0 -10
  179. package/graphqlFields/helpers.js.map +1 -1
  180. package/graphqlFields/index.d.ts +1 -1
  181. package/graphqlFields/index.js +2 -12
  182. package/graphqlFields/index.js.map +1 -1
  183. package/graphqlFields/longText.js +0 -10
  184. package/graphqlFields/longText.js.map +1 -1
  185. package/graphqlFields/number.js +0 -12
  186. package/graphqlFields/number.js.map +1 -1
  187. package/graphqlFields/object.js +112 -98
  188. package/graphqlFields/object.js.map +1 -1
  189. package/graphqlFields/ref.js +48 -96
  190. package/graphqlFields/ref.js.map +1 -1
  191. package/graphqlFields/richText.js +0 -9
  192. package/graphqlFields/richText.js.map +1 -1
  193. package/graphqlFields/text.js +0 -11
  194. package/graphqlFields/text.js.map +1 -1
  195. package/index.d.ts +3 -3
  196. package/index.js +3 -26
  197. package/index.js.map +1 -1
  198. package/modelManager/DefaultCmsModelManager.js +0 -16
  199. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  200. package/modelManager/index.js +0 -4
  201. package/modelManager/index.js.map +1 -1
  202. package/package.json +28 -28
  203. package/parameters/context.js +0 -4
  204. package/parameters/context.js.map +1 -1
  205. package/parameters/header.js +0 -11
  206. package/parameters/header.js.map +1 -1
  207. package/parameters/index.js +0 -8
  208. package/parameters/index.js.map +1 -1
  209. package/parameters/manual.js +1 -8
  210. package/parameters/manual.js.map +1 -1
  211. package/parameters/path.js +0 -11
  212. package/parameters/path.js.map +1 -1
  213. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  214. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  215. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  216. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  217. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  218. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  219. package/plugins/CmsGroupPlugin.js +0 -8
  220. package/plugins/CmsGroupPlugin.js.map +1 -1
  221. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  222. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  223. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  224. package/plugins/CmsModelPlugin.js +2 -38
  225. package/plugins/CmsModelPlugin.js.map +1 -1
  226. package/plugins/CmsParametersPlugin.js +0 -7
  227. package/plugins/CmsParametersPlugin.js.map +1 -1
  228. package/plugins/StorageTransformPlugin.d.ts +11 -11
  229. package/plugins/StorageTransformPlugin.js +0 -9
  230. package/plugins/StorageTransformPlugin.js.map +1 -1
  231. package/plugins/index.d.ts +2 -0
  232. package/plugins/index.js +22 -10
  233. package/plugins/index.js.map +1 -1
  234. package/storage/default.js +0 -3
  235. package/storage/default.js.map +1 -1
  236. package/storage/object.js +4 -20
  237. package/storage/object.js.map +1 -1
  238. package/types.d.ts +235 -57
  239. package/types.js +62 -69
  240. package/types.js.map +1 -1
  241. package/upgrades/5.33.0/index.js +3 -26
  242. package/upgrades/5.33.0/index.js.map +1 -1
  243. package/upgrades/index.js +0 -3
  244. package/upgrades/index.js.map +1 -1
  245. package/utils/access.js +11 -25
  246. package/utils/access.js.map +1 -1
  247. package/utils/converters/Converter.js +0 -13
  248. package/utils/converters/Converter.js.map +1 -1
  249. package/utils/converters/ConverterCollection.js +14 -34
  250. package/utils/converters/ConverterCollection.js.map +1 -1
  251. package/utils/converters/valueKeyStorageConverter.js +0 -26
  252. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  253. package/utils/createTypeFromFields.d.ts +15 -0
  254. package/utils/createTypeFromFields.js +64 -0
  255. package/utils/createTypeFromFields.js.map +1 -0
  256. package/utils/createTypeName.js +2 -9
  257. package/utils/createTypeName.js.map +1 -1
  258. package/utils/entryStorage.js +22 -35
  259. package/utils/entryStorage.js.map +1 -1
  260. package/utils/filterAsync.js +0 -5
  261. package/utils/filterAsync.js.map +1 -1
  262. package/utils/getBaseFieldType.d.ts +4 -0
  263. package/utils/getBaseFieldType.js +10 -0
  264. package/utils/getBaseFieldType.js.map +1 -0
  265. package/utils/getEntryTitle.js +0 -9
  266. package/utils/getEntryTitle.js.map +1 -1
  267. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  268. package/utils/getSchemaFromFieldPlugins.js +23 -19
  269. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  270. package/utils/ownership.js +0 -8
  271. package/utils/ownership.js.map +1 -1
  272. package/utils/permissions.js +8 -23
  273. package/utils/permissions.js.map +1 -1
  274. package/utils/pluralizedTypeName.js +0 -6
  275. package/utils/pluralizedTypeName.js.map +1 -1
  276. package/utils/renderFields.js +2 -9
  277. package/utils/renderFields.js.map +1 -1
  278. package/utils/renderGetFilterFields.js +6 -14
  279. package/utils/renderGetFilterFields.js.map +1 -1
  280. package/utils/renderInputFields.js +2 -9
  281. package/utils/renderInputFields.js.map +1 -1
  282. package/utils/renderListFilterFields.js +4 -10
  283. package/utils/renderListFilterFields.js.map +1 -1
  284. package/utils/renderSortEnum.d.ts +7 -4
  285. package/utils/renderSortEnum.js +21 -11
  286. package/utils/renderSortEnum.js.map +1 -1
  287. package/utils/toSlug.js +0 -4
  288. package/utils/toSlug.js.map +1 -1
  289. package/validators/dateGte.js +0 -7
  290. package/validators/dateGte.js.map +1 -1
  291. package/validators/dateLte.js +0 -7
  292. package/validators/dateLte.js.map +1 -1
  293. package/validators/dynamicZone.d.ts +2 -0
  294. package/validators/dynamicZone.js +20 -0
  295. package/validators/dynamicZone.js.map +1 -0
  296. package/validators/gte.js +0 -8
  297. package/validators/gte.js.map +1 -1
  298. package/validators/in.js +0 -8
  299. package/validators/in.js.map +1 -1
  300. package/validators/index.js +2 -16
  301. package/validators/index.js.map +1 -1
  302. package/validators/lte.js +0 -8
  303. package/validators/lte.js.map +1 -1
  304. package/validators/maxLength.js +0 -8
  305. package/validators/maxLength.js.map +1 -1
  306. package/validators/minLength.js +0 -8
  307. package/validators/minLength.js.map +1 -1
  308. package/validators/pattern.js +0 -9
  309. package/validators/pattern.js.map +1 -1
  310. package/validators/patternPlugins/email.js +0 -2
  311. package/validators/patternPlugins/email.js.map +1 -1
  312. package/validators/patternPlugins/index.js +0 -8
  313. package/validators/patternPlugins/index.js.map +1 -1
  314. package/validators/patternPlugins/lowerCase.js +0 -2
  315. package/validators/patternPlugins/lowerCase.js.map +1 -1
  316. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  317. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  318. package/validators/patternPlugins/upperCase.js +0 -2
  319. package/validators/patternPlugins/upperCase.js.map +1 -1
  320. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  321. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  322. package/validators/patternPlugins/url.js +0 -2
  323. package/validators/patternPlugins/url.js.map +1 -1
  324. package/validators/required.js +0 -5
  325. package/validators/required.js.map +1 -1
  326. package/validators/timeGte.js +0 -8
  327. package/validators/timeGte.js.map +1 -1
  328. package/validators/timeLte.js +0 -8
  329. package/validators/timeLte.js.map +1 -1
  330. package/validators/unique.js +0 -7
  331. package/validators/unique.js.map +1 -1
  332. package/crud/index.d.ts +0 -6
  333. package/crud/index.js +0 -85
  334. package/crud/index.js.map +0 -1
  335. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  336. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  337. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  338. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  339. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  340. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  341. package/utils/filterModelFields.d.ts +0 -16
  342. package/utils/filterModelFields.js +0 -77
  343. package/utils/filterModelFields.js.map +0 -1
@@ -1,57 +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
-
25
+ var _searchableFields = require("./contentEntry/searchableFields");
44
26
  /**
45
27
  * Package mdbid does not have types.
46
28
  */
47
29
  // @ts-ignore
30
+
48
31
  const STATUS_DRAFT = "draft";
49
32
  exports.STATUS_DRAFT = STATUS_DRAFT;
50
33
  const STATUS_PUBLISHED = "published";
51
34
  exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
52
35
  const STATUS_UNPUBLISHED = "unpublished";
53
36
  exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
54
-
55
37
  /**
56
38
  * Used for some fields to convert their values.
57
39
  */
@@ -59,45 +41,35 @@ const convertDefaultValue = (field, value) => {
59
41
  switch (field.type) {
60
42
  case "boolean":
61
43
  return Boolean(value);
62
-
63
44
  case "number":
64
45
  return Number(value);
65
-
66
46
  default:
67
47
  return value;
68
48
  }
69
49
  };
70
-
71
50
  const getDefaultValue = field => {
72
51
  const {
73
52
  settings,
74
53
  multipleValues
75
54
  } = field;
76
-
77
55
  if (settings && settings.defaultValue !== undefined) {
78
56
  return convertDefaultValue(field, settings.defaultValue);
79
57
  }
80
-
81
58
  const {
82
59
  predefinedValues
83
60
  } = field;
84
-
85
61
  if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
86
62
  return undefined;
87
63
  }
88
-
89
64
  if (!multipleValues) {
90
65
  const selectedValue = predefinedValues.values.find(value => {
91
66
  return !!value.selected;
92
67
  });
93
-
94
68
  if (selectedValue) {
95
69
  return convertDefaultValue(field, selectedValue.value);
96
70
  }
97
-
98
71
  return undefined;
99
72
  }
100
-
101
73
  return predefinedValues.values.filter(({
102
74
  selected
103
75
  }) => !!selected).map(({
@@ -109,8 +81,6 @@ const getDefaultValue = field => {
109
81
  /**
110
82
  * Cleans and adds default values to create input data.
111
83
  */
112
-
113
-
114
84
  const mapAndCleanCreateInputData = (model, input) => {
115
85
  return model.fields.reduce((acc, field) => {
116
86
  /**
@@ -122,12 +92,10 @@ const mapAndCleanCreateInputData = (model, input) => {
122
92
  field
123
93
  });
124
94
  }
125
-
126
95
  const value = input[field.fieldId];
127
96
  /**
128
97
  * We set the default value on create input if value is not defined.
129
98
  */
130
-
131
99
  acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;
132
100
  return acc;
133
101
  }, {});
@@ -135,8 +103,6 @@ const mapAndCleanCreateInputData = (model, input) => {
135
103
  /**
136
104
  * Cleans the update input entry data.
137
105
  */
138
-
139
-
140
106
  const mapAndCleanUpdatedInputData = (model, input) => {
141
107
  return model.fields.reduce((acc, field) => {
142
108
  /**
@@ -151,14 +117,10 @@ const mapAndCleanUpdatedInputData = (model, input) => {
151
117
  /**
152
118
  * We cannot set default value here because user might want to update only certain field values.
153
119
  */
154
-
155
-
156
120
  const value = input[field.fieldId];
157
-
158
121
  if (value === undefined) {
159
122
  return acc;
160
123
  }
161
-
162
124
  acc[field.fieldId] = value;
163
125
  return acc;
164
126
  }, {});
@@ -167,26 +129,29 @@ const mapAndCleanUpdatedInputData = (model, input) => {
167
129
  * This method takes original entry meta and new input.
168
130
  * When new meta is merged onto the existing one, everything that has undefined or null value is removed.
169
131
  */
170
-
171
-
172
132
  const createEntryMeta = (input, original) => {
173
133
  const meta = (0, _merge.default)(original || {}, input || {});
174
-
175
134
  for (const key in meta) {
176
135
  if (meta[key] !== undefined || meta[key] !== null) {
177
136
  continue;
178
137
  }
179
-
180
138
  delete meta[key];
181
139
  }
182
-
183
140
  return meta;
184
141
  };
185
-
186
- const createEntryId = version => {
187
- 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;
188
153
  return {
189
- entryId,
154
+ entryId: entryId,
190
155
  version,
191
156
  id: (0, _utils.createIdentifier)({
192
157
  id: entryId,
@@ -194,19 +159,16 @@ const createEntryId = version => {
194
159
  })
195
160
  };
196
161
  };
197
-
198
162
  const increaseEntryIdVersion = id => {
199
163
  const {
200
164
  id: entryId,
201
165
  version
202
166
  } = (0, _utils.parseIdentifier)(id);
203
-
204
167
  if (!version) {
205
168
  throw new _error.default("Cannot increase version on the ID without the version part.", "WRONG_ID", {
206
169
  id
207
170
  });
208
171
  }
209
-
210
172
  return {
211
173
  entryId,
212
174
  version: version + 1,
@@ -216,42 +178,10 @@ const increaseEntryIdVersion = id => {
216
178
  })
217
179
  };
218
180
  };
219
-
220
- const getSearchableFields = params => {
221
- const {
222
- plugins,
223
- model,
224
- fields
225
- } = params;
226
- const fieldPluginMap = plugins.byType("cms-model-field-to-graphql").reduce((collection, field) => {
227
- collection[field.fieldType] = field;
228
- return collection;
229
- }, {});
230
- return model.fields.filter(field => {
231
- if (!field.fieldId) {
232
- return false;
233
- }
234
-
235
- const plugin = fieldPluginMap[field.type];
236
-
237
- if (!plugin) {
238
- return false;
239
- } else if (!plugin.fullTextSearch) {
240
- return false;
241
- } else if (!fields || fields.length === 0) {
242
- return true;
243
- }
244
-
245
- return fields.includes(field.fieldId);
246
- }).map(field => field.fieldId);
247
- };
248
-
249
181
  const allowedEntryStatus = ["draft", "published", "unpublished"];
250
-
251
182
  const transformEntryStatus = status => {
252
183
  return allowedEntryStatus.includes(status) ? status : "draft";
253
184
  };
254
-
255
185
  const createContentEntryCrud = params => {
256
186
  const {
257
187
  storageOperations,
@@ -261,43 +191,71 @@ const createContentEntryCrud = params => {
261
191
  } = params;
262
192
  const {
263
193
  plugins
264
- } = context; // create
194
+ } = context;
265
195
 
196
+ /**
197
+ * Create
198
+ */
266
199
  const onEntryBeforeCreate = (0, _pubsub.createTopic)("cms.onEntryBeforeCreate");
267
200
  const onEntryAfterCreate = (0, _pubsub.createTopic)("cms.onEntryAfterCreate");
268
- const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError"); // create revision
201
+ const onEntryCreateError = (0, _pubsub.createTopic)("cms.onEntryCreateError");
269
202
 
203
+ /**
204
+ * Create new revision
205
+ */
270
206
  const onEntryBeforeCreateRevision = (0, _pubsub.createTopic)("cms.onEntryBeforeCreateRevision");
271
207
  const onEntryRevisionAfterCreate = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterCreate");
272
- const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError"); // update
208
+ const onEntryCreateRevisionError = (0, _pubsub.createTopic)("cms.onEntryCreateRevisionError");
273
209
 
210
+ /**
211
+ * Update
212
+ */
274
213
  const onEntryBeforeUpdate = (0, _pubsub.createTopic)("cms.onEntryBeforeUpdate");
275
214
  const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
276
- const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError"); // publish
215
+ const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
277
216
 
217
+ /**
218
+ * Publish
219
+ */
278
220
  const onEntryBeforePublish = (0, _pubsub.createTopic)("cms.onEntryBeforePublish");
279
- const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublic");
280
- const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError"); // unpublish
221
+ const onEntryAfterPublish = (0, _pubsub.createTopic)("cms.onEntryAfterPublish");
222
+ const onEntryPublishError = (0, _pubsub.createTopic)("cms.onEntryPublishError");
281
223
 
224
+ /**
225
+ * Republish
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");
230
+
231
+ /**
232
+ * Unpublish
233
+ */
282
234
  const onEntryBeforeUnpublish = (0, _pubsub.createTopic)("cms.onEntryBeforeUnpublish");
283
235
  const onEntryAfterUnpublish = (0, _pubsub.createTopic)("cms.onEntryAfterUnpublish");
284
- const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError"); // delete
236
+ const onEntryUnpublishError = (0, _pubsub.createTopic)("cms.onEntryUnpublishError");
285
237
 
238
+ /**
239
+ * Delete
240
+ */
286
241
  const onEntryBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryBeforeDelete");
287
242
  const onEntryAfterDelete = (0, _pubsub.createTopic)("cms.onEntryAfterDelete");
288
- const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError"); // delete revision
243
+ const onEntryDeleteError = (0, _pubsub.createTopic)("cms.onEntryDeleteError");
289
244
 
245
+ // delete revision
290
246
  const onEntryRevisionBeforeDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionBeforeDelete");
291
247
  const onEntryRevisionAfterDelete = (0, _pubsub.createTopic)("cms.onEntryRevisionAfterDelete");
292
- const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError"); // get
248
+ const onEntryRevisionDeleteError = (0, _pubsub.createTopic)("cms.onEntryRevisionDeleteError");
293
249
 
294
- const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet"); // list
250
+ // get
251
+ const onEntryBeforeGet = (0, _pubsub.createTopic)("cms.onEntryBeforeGet");
295
252
 
253
+ // list
296
254
  const onEntryBeforeList = (0, _pubsub.createTopic)("cms.onEntryBeforeList");
255
+
297
256
  /**
298
257
  * We need to assign some default behaviors.
299
258
  */
300
-
301
259
  (0, _beforeCreate.assignBeforeEntryCreate)({
302
260
  context,
303
261
  onEntryBeforeCreate
@@ -310,21 +268,18 @@ const createContentEntryCrud = params => {
310
268
  context,
311
269
  onEntryAfterDelete
312
270
  });
313
-
314
271
  const checkEntryPermissions = check => {
315
272
  return (0, _permissions.checkPermissions)(context, "cms.contentEntry", check);
316
273
  };
274
+
317
275
  /**
318
276
  * A helper to delete the entire entry.
319
277
  */
320
-
321
-
322
278
  const deleteEntry = async params => {
323
279
  const {
324
280
  model,
325
281
  entry
326
282
  } = params;
327
-
328
283
  try {
329
284
  await onEntryBeforeDelete.publish({
330
285
  entry,
@@ -351,8 +306,6 @@ const createContentEntryCrud = params => {
351
306
  /**
352
307
  * A helper to get entries by revision IDs
353
308
  */
354
-
355
-
356
309
  const getEntriesByIds = async (initialModel, ids) => {
357
310
  const permission = await checkEntryPermissions({
358
311
  rwd: "r"
@@ -367,7 +320,6 @@ const createContentEntryCrud = params => {
367
320
  });
368
321
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
369
322
  };
370
-
371
323
  return {
372
324
  /**
373
325
  * Deprecated - will be removed in 5.35.0
@@ -388,39 +340,62 @@ const createContentEntryCrud = params => {
388
340
  onAfterEntryUnpublish: onEntryAfterUnpublish,
389
341
  onBeforeEntryGet: onEntryBeforeGet,
390
342
  onBeforeEntryList: onEntryBeforeList,
391
-
392
343
  /**
393
344
  * Released in 5.34.0
345
+ *
346
+ * Create
394
347
  */
395
348
  onEntryBeforeCreate,
396
349
  onEntryAfterCreate,
397
350
  onEntryCreateError,
351
+ /**
352
+ * Create revision
353
+ */
398
354
  onEntryRevisionBeforeCreate: onEntryBeforeCreateRevision,
399
355
  onEntryRevisionAfterCreate,
400
356
  onEntryRevisionCreateError: onEntryCreateRevisionError,
357
+ /**
358
+ * Update
359
+ */
401
360
  onEntryBeforeUpdate,
402
361
  onEntryAfterUpdate,
403
362
  onEntryUpdateError,
363
+ /**
364
+ * Delete whole entry
365
+ */
404
366
  onEntryBeforeDelete,
405
367
  onEntryAfterDelete,
406
368
  onEntryDeleteError,
369
+ /**
370
+ * Delete entry revision
371
+ */
407
372
  onEntryRevisionBeforeDelete,
408
373
  onEntryRevisionAfterDelete,
409
374
  onEntryRevisionDeleteError,
375
+ /**
376
+ * Publish
377
+ */
410
378
  onEntryBeforePublish,
411
379
  onEntryAfterPublish,
412
380
  onEntryPublishError,
381
+ /**
382
+ * Republish
383
+ */
384
+ onEntryBeforeRepublish,
385
+ onEntryAfterRepublish,
386
+ onEntryRepublishError,
387
+ /**
388
+ * Unpublish
389
+ */
413
390
  onEntryBeforeUnpublish,
414
391
  onEntryAfterUnpublish,
415
392
  onEntryUnpublishError,
416
393
  onEntryBeforeGet,
417
394
  onEntryBeforeList,
418
-
419
395
  /**
420
396
  * Get entries by exact revision IDs from the database.
421
397
  */
422
398
  getEntriesByIds: getEntriesByIds,
423
-
424
399
  /**
425
400
  * Get a single entry by revision ID from the database.
426
401
  */
@@ -437,14 +412,11 @@ const createContentEntryCrud = params => {
437
412
  model
438
413
  });
439
414
  const [entry] = await getEntriesByIds(model, [id]);
440
-
441
415
  if (!entry) {
442
416
  throw new _handlerGraphql.NotFoundError(`Entry by ID "${id}" not found.`);
443
417
  }
444
-
445
418
  return entry;
446
419
  },
447
-
448
420
  /**
449
421
  * Get published revisions by entry IDs.
450
422
  */
@@ -462,9 +434,8 @@ const createContentEntryCrud = params => {
462
434
  });
463
435
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
464
436
  },
465
-
466
437
  /**
467
- * Get latest revisions by entry IDs.
438
+ * Get the latest revisions by entry IDs.
468
439
  */
469
440
  async getLatestEntriesByIds(initialModel, ids) {
470
441
  const permission = await checkEntryPermissions({
@@ -480,7 +451,6 @@ const createContentEntryCrud = params => {
480
451
  });
481
452
  return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
482
453
  },
483
-
484
454
  async getEntryRevisions(initialModel, entryId) {
485
455
  const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
486
456
  model: initialModel,
@@ -490,7 +460,6 @@ const createContentEntryCrud = params => {
490
460
  id: entryId
491
461
  });
492
462
  },
493
-
494
463
  /**
495
464
  * TODO determine if this method is required at all.
496
465
  *
@@ -517,14 +486,11 @@ const createContentEntryCrud = params => {
517
486
  sort,
518
487
  limit: 1
519
488
  });
520
-
521
489
  if (items.length === 0) {
522
490
  throw new _handlerGraphql.NotFoundError(`Entry not found!`);
523
491
  }
524
-
525
492
  return items[0];
526
493
  },
527
-
528
494
  /**
529
495
  * @description Should not be used directly. Internal use only!
530
496
  *
@@ -540,20 +506,19 @@ const createContentEntryCrud = params => {
540
506
  plugins
541
507
  });
542
508
  const {
543
- where: initialWhere
509
+ where: initialWhere,
510
+ limit: initialLimit
544
511
  } = params;
512
+ const limit = initialLimit && initialLimit > 0 ? initialLimit : 50;
545
513
  /**
546
514
  * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
547
515
  */
548
-
549
516
  const where = (0, _objectSpread2.default)({}, initialWhere);
550
517
  /**
551
518
  * Possibly only get records which are owned by current user.
552
519
  * Or if searching for the owner set that value - in the case that user can see other entries than their own.
553
520
  */
554
-
555
521
  const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
556
-
557
522
  if (ownedBy !== undefined) {
558
523
  where.ownedBy = ownedBy;
559
524
  }
@@ -561,8 +526,6 @@ const createContentEntryCrud = params => {
561
526
  * Where must contain either latest or published keys.
562
527
  * We cannot list entries without one of those
563
528
  */
564
-
565
-
566
529
  if (where.latest && where.published) {
567
530
  throw new _error.default("Cannot list entries that are both published and latest.", "LIST_ENTRIES_ERROR", {
568
531
  where
@@ -572,13 +535,11 @@ const createContentEntryCrud = params => {
572
535
  where
573
536
  });
574
537
  }
575
-
576
- const fields = getSearchableFields({
577
- model,
538
+ const fields = (0, _searchableFields.getSearchableFields)({
539
+ fields: model.fields,
578
540
  plugins: context.plugins,
579
- fields: params.fields || []
541
+ input: params.fields || []
580
542
  });
581
-
582
543
  try {
583
544
  await onEntryBeforeList.publish({
584
545
  where,
@@ -590,13 +551,13 @@ const createContentEntryCrud = params => {
590
551
  cursor,
591
552
  items
592
553
  } = await storageOperations.entries.list(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, params), {}, {
554
+ limit,
593
555
  where,
594
556
  fields
595
557
  }));
596
558
  const meta = {
597
559
  hasMoreItems,
598
560
  totalCount,
599
-
600
561
  /**
601
562
  * Cursor should be null if there are no more items to load.
602
563
  * Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.
@@ -617,7 +578,6 @@ const createContentEntryCrud = params => {
617
578
  });
618
579
  }
619
580
  },
620
-
621
581
  async listLatestEntries(model, params) {
622
582
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
623
583
  return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
@@ -628,7 +588,6 @@ const createContentEntryCrud = params => {
628
588
  })
629
589
  }));
630
590
  },
631
-
632
591
  async listPublishedEntries(model, params) {
633
592
  const where = (params === null || params === void 0 ? void 0 : params.where) || {};
634
593
  return this.listEntries(model, (0, _objectSpread2.default)((0, _objectSpread2.default)({
@@ -639,7 +598,6 @@ const createContentEntryCrud = params => {
639
598
  })
640
599
  }));
641
600
  },
642
-
643
601
  async createEntry(initialModel, inputData) {
644
602
  await checkEntryPermissions({
645
603
  rwd: "w"
@@ -649,10 +607,10 @@ const createContentEntryCrud = params => {
649
607
  model: initialModel,
650
608
  plugins
651
609
  });
610
+
652
611
  /**
653
612
  * Make sure we only work with fields that are defined in the model.
654
613
  */
655
-
656
614
  const initialInput = mapAndCleanCreateInputData(model, inputData);
657
615
  await (0, _entryDataValidation.validateModelEntryData)({
658
616
  context,
@@ -672,11 +630,15 @@ const createContentEntryCrud = params => {
672
630
  displayName: identity.displayName,
673
631
  type: identity.type
674
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
+ */
675
637
  const {
676
638
  id,
677
639
  entryId,
678
640
  version
679
- } = createEntryId(1);
641
+ } = createEntryId(inputData);
680
642
  const entry = {
681
643
  webinyVersion: context.WEBINY_VERSION,
682
644
  tenant: getTenant().id,
@@ -694,7 +656,6 @@ const createContentEntryCrud = params => {
694
656
  values: input
695
657
  };
696
658
  let storageEntry = null;
697
-
698
659
  try {
699
660
  await onEntryBeforeCreate.publish({
700
661
  entry,
@@ -728,7 +689,6 @@ const createContentEntryCrud = params => {
728
689
  });
729
690
  }
730
691
  },
731
-
732
692
  async createEntryRevisionFrom(initialModel, sourceId, inputData) {
733
693
  const permission = await checkEntryPermissions({
734
694
  rwd: "w"
@@ -738,15 +698,15 @@ const createContentEntryCrud = params => {
738
698
  model: initialModel,
739
699
  plugins
740
700
  });
701
+
741
702
  /**
742
703
  * Make sure we only work with fields that are defined in the model.
743
704
  */
744
-
745
705
  const input = mapAndCleanUpdatedInputData(model, inputData);
706
+
746
707
  /**
747
708
  * Entries are identified by a common parent ID + Revision number.
748
709
  */
749
-
750
710
  const {
751
711
  id: uniqueId
752
712
  } = (0, _utils.parseIdentifier)(sourceId);
@@ -756,15 +716,13 @@ const createContentEntryCrud = params => {
756
716
  const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
757
717
  id: uniqueId
758
718
  });
759
-
760
719
  if (!originalStorageEntry) {
761
720
  throw new _handlerGraphql.NotFoundError(`Entry "${sourceId}" of model "${model.modelId}" was not found.`);
762
721
  }
722
+
763
723
  /**
764
724
  * We need to convert data from DB to its original form before using it further.
765
725
  */
766
-
767
-
768
726
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
769
727
  const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
770
728
  await (0, _entryDataValidation.validateModelEntryData)({
@@ -802,7 +760,6 @@ const createContentEntryCrud = params => {
802
760
  values
803
761
  });
804
762
  let storageEntry = null;
805
-
806
763
  try {
807
764
  await onEntryBeforeCreateRevision.publish({
808
765
  input,
@@ -826,6 +783,7 @@ const createContentEntryCrud = params => {
826
783
  } catch (ex) {
827
784
  await onEntryCreateRevisionError.publish({
828
785
  entry,
786
+ original: originalEntry,
829
787
  model,
830
788
  input,
831
789
  error: ex
@@ -839,7 +797,6 @@ const createContentEntryCrud = params => {
839
797
  });
840
798
  }
841
799
  },
842
-
843
800
  async updateEntry(initialModel, id, inputData, metaInput) {
844
801
  const permission = await checkEntryPermissions({
845
802
  rwd: "w"
@@ -849,27 +806,24 @@ const createContentEntryCrud = params => {
849
806
  model: initialModel,
850
807
  plugins
851
808
  });
809
+
852
810
  /**
853
811
  * Make sure we only work with fields that are defined in the model.
854
812
  */
855
-
856
813
  const input = mapAndCleanUpdatedInputData(model, inputData);
814
+
857
815
  /**
858
816
  * The entry we are going to update.
859
817
  */
860
-
861
818
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
862
819
  id
863
820
  });
864
-
865
821
  if (!originalStorageEntry) {
866
822
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
867
823
  }
868
-
869
824
  if (originalStorageEntry.locked) {
870
825
  throw new _error.default(`Cannot update entry because it's locked.`, "CONTENT_ENTRY_UPDATE_ERROR");
871
826
  }
872
-
873
827
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
874
828
  await (0, _entryDataValidation.validateModelEntryData)({
875
829
  context,
@@ -888,12 +842,10 @@ const createContentEntryCrud = params => {
888
842
  /**
889
843
  * If users wants to remove a key from meta values, they need to send meta key with the null value.
890
844
  */
891
-
892
845
  const meta = createEntryMeta(metaInput, originalEntry.meta);
893
846
  /**
894
847
  * We always send the full entry to the hooks and storage operations update.
895
848
  */
896
-
897
849
  const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
898
850
  savedOn: new Date().toISOString(),
899
851
  values,
@@ -901,7 +853,6 @@ const createContentEntryCrud = params => {
901
853
  status: transformEntryStatus(originalEntry.status)
902
854
  });
903
855
  let storageEntry = null;
904
-
905
856
  try {
906
857
  await onEntryBeforeUpdate.publish({
907
858
  entry,
@@ -938,7 +889,10 @@ const createContentEntryCrud = params => {
938
889
  });
939
890
  }
940
891
  },
941
-
892
+ /**
893
+ * Method used internally. Not documented and should not be used in users systems.
894
+ * @internal
895
+ */
942
896
  async republishEntry(initialModel, id) {
943
897
  await checkEntryPermissions({
944
898
  rwd: "w"
@@ -951,27 +905,22 @@ const createContentEntryCrud = params => {
951
905
  /**
952
906
  * Fetch the entry from the storage.
953
907
  */
954
-
955
908
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
956
909
  id
957
910
  });
958
-
959
911
  if (!originalStorageEntry) {
960
912
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found!`);
961
913
  }
962
-
963
914
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
964
915
  /**
965
916
  * We can only process published entries.
966
917
  */
967
-
968
918
  if (originalEntry.status !== "published") {
969
919
  throw new _error.default("Entry with given ID is not published!", "NOT_PUBLISHED_ERROR", {
970
920
  id,
971
921
  original: originalEntry
972
922
  });
973
923
  }
974
-
975
924
  const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
976
925
  context,
977
926
  model,
@@ -987,7 +936,6 @@ const createContentEntryCrud = params => {
987
936
  /**
988
937
  * First we need to update existing entry.
989
938
  */
990
-
991
939
  try {
992
940
  await storageOperations.entries.update(model, {
993
941
  entry,
@@ -1001,20 +949,32 @@ const createContentEntryCrud = params => {
1001
949
  /**
1002
950
  * Then we move onto publishing it again.
1003
951
  */
1004
-
1005
-
1006
952
  try {
1007
- return await storageOperations.entries.publish(model, {
953
+ await onEntryBeforeRepublish.publish({
954
+ entry,
955
+ model
956
+ });
957
+ const result = await storageOperations.entries.publish(model, {
1008
958
  entry,
1009
959
  storageEntry
1010
960
  });
961
+ await onEntryAfterRepublish.publish({
962
+ entry,
963
+ model,
964
+ storageEntry
965
+ });
966
+ return result;
1011
967
  } catch (ex) {
968
+ await onEntryRepublishError.publish({
969
+ entry,
970
+ model,
971
+ error: ex
972
+ });
1012
973
  throw new _error.default("Could not publish existing entry while re-publishing.", "REPUBLISH_PUBLISH_ERROR", {
1013
974
  entry
1014
975
  });
1015
976
  }
1016
977
  },
1017
-
1018
978
  async deleteEntryRevision(initialModel, revisionId) {
1019
979
  const permission = await checkEntryPermissions({
1020
980
  rwd: "d"
@@ -1038,11 +998,9 @@ const createContentEntryCrud = params => {
1038
998
  entryId,
1039
999
  version: version
1040
1000
  });
1041
-
1042
1001
  if (!storageEntryToDelete) {
1043
1002
  throw new _handlerGraphql.NotFoundError(`Entry "${revisionId}" was not found!`);
1044
1003
  }
1045
-
1046
1004
  (0, _ownership.checkOwnership)(context, permission, storageEntryToDelete);
1047
1005
  const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;
1048
1006
  const entryToDelete = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntryToDelete);
@@ -1050,7 +1008,6 @@ const createContentEntryCrud = params => {
1050
1008
  * If targeted record is the latest entry record and there is no previous one, we need to run full delete with hooks.
1051
1009
  * At this point deleteRevision hooks are not fired.
1052
1010
  */
1053
-
1054
1011
  if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {
1055
1012
  return await deleteEntry({
1056
1013
  model,
@@ -1060,16 +1017,12 @@ const createContentEntryCrud = params => {
1060
1017
  /**
1061
1018
  * If targeted record is latest entry revision, set the previous one as the new latest
1062
1019
  */
1063
-
1064
-
1065
1020
  let entryToSetAsLatest = null;
1066
1021
  let storageEntryToSetAsLatest = null;
1067
-
1068
1022
  if (entryToDelete.id === latestEntryRevisionId && previousStorageEntry) {
1069
1023
  entryToSetAsLatest = await (0, _entryStorage.entryFromStorageTransform)(context, model, previousStorageEntry);
1070
1024
  storageEntryToSetAsLatest = previousStorageEntry;
1071
1025
  }
1072
-
1073
1026
  try {
1074
1027
  await onEntryRevisionBeforeDelete.publish({
1075
1028
  entry: entryToDelete,
@@ -1100,7 +1053,6 @@ const createContentEntryCrud = params => {
1100
1053
  });
1101
1054
  }
1102
1055
  },
1103
-
1104
1056
  async deleteEntry(initialModel, entryId) {
1105
1057
  const permission = await checkEntryPermissions({
1106
1058
  rwd: "d"
@@ -1113,11 +1065,9 @@ const createContentEntryCrud = params => {
1113
1065
  const storageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
1114
1066
  id: entryId
1115
1067
  });
1116
-
1117
1068
  if (!storageEntry) {
1118
1069
  throw new _handlerGraphql.NotFoundError(`Entry "${entryId}" was not found!`);
1119
1070
  }
1120
-
1121
1071
  (0, _ownership.checkOwnership)(context, permission, storageEntry);
1122
1072
  const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntry);
1123
1073
  return await deleteEntry({
@@ -1125,7 +1075,6 @@ const createContentEntryCrud = params => {
1125
1075
  entry
1126
1076
  });
1127
1077
  },
1128
-
1129
1078
  async publishEntry(initialModel, id) {
1130
1079
  const permission = await checkEntryPermissions({
1131
1080
  pw: "p"
@@ -1138,11 +1087,9 @@ const createContentEntryCrud = params => {
1138
1087
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
1139
1088
  id
1140
1089
  });
1141
-
1142
1090
  if (!originalStorageEntry) {
1143
1091
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
1144
1092
  }
1145
-
1146
1093
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1147
1094
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1148
1095
  const currentDate = new Date().toISOString();
@@ -1153,7 +1100,6 @@ const createContentEntryCrud = params => {
1153
1100
  publishedOn: currentDate
1154
1101
  });
1155
1102
  let storageEntry = null;
1156
-
1157
1103
  try {
1158
1104
  await onEntryBeforePublish.publish({
1159
1105
  entry,
@@ -1185,7 +1131,6 @@ const createContentEntryCrud = params => {
1185
1131
  });
1186
1132
  }
1187
1133
  },
1188
-
1189
1134
  async unpublishEntry(initialModel, id) {
1190
1135
  const permission = await checkEntryPermissions({
1191
1136
  pw: "u"
@@ -1200,24 +1145,20 @@ const createContentEntryCrud = params => {
1200
1145
  const originalStorageEntry = await storageOperations.entries.getPublishedRevisionByEntryId(model, {
1201
1146
  id: entryId
1202
1147
  });
1203
-
1204
1148
  if (!originalStorageEntry) {
1205
1149
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
1206
1150
  }
1207
-
1208
1151
  if (originalStorageEntry.id !== id) {
1209
1152
  throw new _error.default(`Entry is not published.`, "UNPUBLISH_ERROR", {
1210
1153
  entry: originalStorageEntry
1211
1154
  });
1212
1155
  }
1213
-
1214
1156
  (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
1215
1157
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
1216
1158
  const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
1217
1159
  status: STATUS_UNPUBLISHED
1218
1160
  });
1219
1161
  let storageEntry = null;
1220
-
1221
1162
  try {
1222
1163
  await onEntryBeforeUnpublish.publish({
1223
1164
  entry,
@@ -1248,8 +1189,6 @@ const createContentEntryCrud = params => {
1248
1189
  });
1249
1190
  }
1250
1191
  }
1251
-
1252
1192
  };
1253
1193
  };
1254
-
1255
1194
  exports.createContentEntryCrud = createContentEntryCrud;