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

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