@webiny/api-headless-cms 0.0.0-mt-2 → 0.0.0-unstable.5e7233243f

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 (554) hide show
  1. package/context.d.ts +3 -0
  2. package/context.js +64 -0
  3. package/context.js.map +1 -0
  4. package/crud/contentEntry/afterDelete.d.ts +8 -0
  5. package/{content/plugins/crud → crud}/contentEntry/afterDelete.js +2 -2
  6. package/crud/contentEntry/afterDelete.js.map +1 -0
  7. package/crud/contentEntry/beforeCreate.d.ts +8 -0
  8. package/{content/plugins/crud → crud}/contentEntry/beforeCreate.js +2 -2
  9. package/crud/contentEntry/beforeCreate.js.map +1 -0
  10. package/crud/contentEntry/beforeUpdate.d.ts +8 -0
  11. package/{content/plugins/crud → crud}/contentEntry/beforeUpdate.js +2 -2
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -0
  13. package/crud/contentEntry/entryDataValidation.d.ts +10 -0
  14. package/{content/plugins/crud → crud}/contentEntry/entryDataValidation.js +26 -10
  15. package/crud/contentEntry/entryDataValidation.js.map +1 -0
  16. package/{content/plugins/crud → crud}/contentEntry/markLockedFields.d.ts +3 -2
  17. package/{content/plugins/crud → crud}/contentEntry/markLockedFields.js +6 -6
  18. package/crud/contentEntry/markLockedFields.js.map +1 -0
  19. package/crud/contentEntry/referenceFieldsMapping.d.ts +13 -0
  20. package/crud/contentEntry/referenceFieldsMapping.js +294 -0
  21. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
  22. package/{content/plugins/crud → crud}/contentEntry.crud.d.ts +5 -7
  23. package/{content/plugins/crud → crud}/contentEntry.crud.js +585 -219
  24. package/crud/contentEntry.crud.js.map +1 -0
  25. package/crud/contentModel/afterCreate.d.ts +8 -0
  26. package/{content/plugins/crud → crud}/contentModel/afterCreate.js +2 -2
  27. package/crud/contentModel/afterCreate.js.map +1 -0
  28. package/crud/contentModel/afterCreateFrom.d.ts +8 -0
  29. package/crud/contentModel/afterCreateFrom.js +18 -0
  30. package/crud/contentModel/afterCreateFrom.js.map +1 -0
  31. package/crud/contentModel/afterDelete.d.ts +8 -0
  32. package/{content/plugins/crud → crud}/contentModel/afterDelete.js +2 -2
  33. package/crud/contentModel/afterDelete.js.map +1 -0
  34. package/crud/contentModel/afterUpdate.d.ts +8 -0
  35. package/{content/plugins/crud → crud}/contentModel/afterUpdate.js +2 -2
  36. package/crud/contentModel/afterUpdate.js.map +1 -0
  37. package/crud/contentModel/beforeCreate.d.ts +15 -0
  38. package/{content/plugins/crud → crud}/contentModel/beforeCreate.js +58 -10
  39. package/crud/contentModel/beforeCreate.js.map +1 -0
  40. package/{content/plugins/crud → crud}/contentModel/beforeDelete.d.ts +5 -4
  41. package/{content/plugins/crud → crud}/contentModel/beforeDelete.js +10 -6
  42. package/crud/contentModel/beforeDelete.js.map +1 -0
  43. package/{content/plugins/crud → crud}/contentModel/beforeUpdate.d.ts +5 -4
  44. package/crud/contentModel/beforeUpdate.js +37 -0
  45. package/crud/contentModel/beforeUpdate.js.map +1 -0
  46. package/crud/contentModel/contentModelManagerFactory.d.ts +2 -0
  47. package/{content/plugins/crud → crud}/contentModel/contentModelManagerFactory.js +0 -0
  48. package/crud/contentModel/contentModelManagerFactory.js.map +1 -0
  49. package/crud/contentModel/createFieldModels.d.ts +2 -0
  50. package/{content/plugins/crud → crud}/contentModel/createFieldModels.js +6 -2
  51. package/crud/contentModel/createFieldModels.js.map +1 -0
  52. package/crud/contentModel/createFieldStorageId.d.ts +2 -0
  53. package/crud/contentModel/createFieldStorageId.js +16 -0
  54. package/crud/contentModel/createFieldStorageId.js.map +1 -0
  55. package/crud/contentModel/fieldIdValidation.d.ts +1 -0
  56. package/crud/contentModel/fieldIdValidation.js +25 -0
  57. package/crud/contentModel/fieldIdValidation.js.map +1 -0
  58. package/crud/contentModel/idValidation.d.ts +1 -0
  59. package/{content/plugins/crud → crud}/contentModel/idValidation.js +3 -3
  60. package/crud/contentModel/idValidation.js.map +1 -0
  61. package/{content/plugins/crud → crud}/contentModel/models.d.ts +2 -1
  62. package/{content/plugins/crud → crud}/contentModel/models.js +64 -25
  63. package/crud/contentModel/models.js.map +1 -0
  64. package/crud/contentModel/systemFields.d.ts +1 -0
  65. package/crud/contentModel/systemFields.js +8 -0
  66. package/crud/contentModel/systemFields.js.map +1 -0
  67. package/crud/contentModel/validateLayout.d.ts +2 -0
  68. package/{content/plugins/crud → crud}/contentModel/validateLayout.js +1 -3
  69. package/crud/contentModel/validateLayout.js.map +1 -0
  70. package/crud/contentModel/validateModel.d.ts +9 -0
  71. package/crud/contentModel/validateModel.js +32 -0
  72. package/crud/contentModel/validateModel.js.map +1 -0
  73. package/crud/contentModel/validateModelFields.d.ts +9 -0
  74. package/crud/contentModel/validateModelFields.js +363 -0
  75. package/crud/contentModel/validateModelFields.js.map +1 -0
  76. package/{content/plugins/crud → crud}/contentModel.crud.d.ts +3 -3
  77. package/{content/plugins/crud → crud}/contentModel.crud.js +251 -95
  78. package/crud/contentModel.crud.js.map +1 -0
  79. package/{content/plugins/crud → crud}/contentModelGroup/beforeCreate.d.ts +4 -3
  80. package/{content/plugins/crud → crud}/contentModelGroup/beforeCreate.js +6 -6
  81. package/crud/contentModelGroup/beforeCreate.js.map +1 -0
  82. package/{content/plugins/crud → crud}/contentModelGroup/beforeDelete.d.ts +4 -3
  83. package/{content/plugins/crud → crud}/contentModelGroup/beforeDelete.js +1 -1
  84. package/crud/contentModelGroup/beforeDelete.js.map +1 -0
  85. package/crud/contentModelGroup/beforeUpdate.d.ts +9 -0
  86. package/{content/plugins/crud → crud}/contentModelGroup/beforeUpdate.js +1 -1
  87. package/crud/contentModelGroup/beforeUpdate.js.map +1 -0
  88. package/{content/plugins/crud → crud}/contentModelGroup.crud.d.ts +3 -3
  89. package/{content/plugins/crud → crud}/contentModelGroup.crud.js +54 -59
  90. package/crud/contentModelGroup.crud.js.map +1 -0
  91. package/crud/index.d.ts +6 -0
  92. package/{content/plugins/crud → crud}/index.js +15 -26
  93. package/crud/index.js.map +1 -0
  94. package/{plugins/crud → crud}/settings.crud.d.ts +3 -3
  95. package/crud/settings.crud.js +88 -0
  96. package/crud/settings.crud.js.map +1 -0
  97. package/{plugins/crud → crud}/system.crud.d.ts +6 -3
  98. package/{plugins/crud → crud}/system.crud.js +43 -16
  99. package/crud/system.crud.js.map +1 -0
  100. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +7 -0
  101. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +66 -0
  102. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -0
  103. package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +11 -0
  104. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +306 -0
  105. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -0
  106. package/fieldConverters/index.d.ts +3 -0
  107. package/fieldConverters/index.js +16 -0
  108. package/fieldConverters/index.js.map +1 -0
  109. package/{content/plugins → graphql}/buildSchemaPlugins.d.ts +2 -3
  110. package/graphql/buildSchemaPlugins.js +27 -0
  111. package/graphql/buildSchemaPlugins.js.map +1 -0
  112. package/graphql/graphQLHandlerFactory.d.ts +5 -0
  113. package/graphql/graphQLHandlerFactory.js +158 -0
  114. package/graphql/graphQLHandlerFactory.js.map +1 -0
  115. package/graphql/index.d.ts +5 -0
  116. package/graphql/index.js +57 -0
  117. package/graphql/index.js.map +1 -0
  118. package/graphql/schema/baseContentSchema.d.ts +3 -0
  119. package/{content/plugins/schema/baseSchema.js → graphql/schema/baseContentSchema.js} +10 -28
  120. package/graphql/schema/baseContentSchema.js.map +1 -0
  121. package/graphql/schema/contentEntries.d.ts +3 -0
  122. package/graphql/schema/contentEntries.js +351 -0
  123. package/graphql/schema/contentEntries.js.map +1 -0
  124. package/graphql/schema/contentModelGroups.d.ts +3 -0
  125. package/{content/plugins → graphql}/schema/contentModelGroups.js +34 -15
  126. package/graphql/schema/contentModelGroups.js.map +1 -0
  127. package/graphql/schema/contentModels.d.ts +3 -0
  128. package/{content/plugins → graphql}/schema/contentModels.js +47 -10
  129. package/graphql/schema/contentModels.js.map +1 -0
  130. package/graphql/schema/createFieldResolvers.d.ts +20 -0
  131. package/{content/plugins → graphql}/schema/createFieldResolvers.js +48 -17
  132. package/graphql/schema/createFieldResolvers.js.map +1 -0
  133. package/graphql/schema/createManageResolvers.d.ts +12 -0
  134. package/{content/plugins → graphql}/schema/createManageResolvers.js +35 -19
  135. package/graphql/schema/createManageResolvers.js.map +1 -0
  136. package/graphql/schema/createManageSDL.d.ts +10 -0
  137. package/{content/plugins → graphql}/schema/createManageSDL.js +20 -9
  138. package/graphql/schema/createManageSDL.js.map +1 -0
  139. package/graphql/schema/createPreviewResolvers.d.ts +12 -0
  140. package/{content/plugins → graphql}/schema/createPreviewResolvers.js +16 -9
  141. package/graphql/schema/createPreviewResolvers.js.map +1 -0
  142. package/graphql/schema/createReadResolvers.d.ts +12 -0
  143. package/{content/plugins → graphql}/schema/createReadResolvers.js +16 -9
  144. package/graphql/schema/createReadResolvers.js.map +1 -0
  145. package/graphql/schema/createReadSDL.d.ts +10 -0
  146. package/{content/plugins → graphql}/schema/createReadSDL.js +14 -8
  147. package/graphql/schema/createReadSDL.js.map +1 -0
  148. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +6 -0
  149. package/{content/plugins → graphql}/schema/resolvers/commonFieldResolvers.js +0 -0
  150. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -0
  151. package/graphql/schema/resolvers/manage/resolveCreate.d.ts +7 -0
  152. package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreate.js +2 -4
  153. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -0
  154. package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +8 -0
  155. package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreateFrom.js +2 -4
  156. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
  157. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +7 -0
  158. package/{content/plugins → graphql}/schema/resolvers/manage/resolveDelete.js +10 -8
  159. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -0
  160. package/graphql/schema/resolvers/manage/resolveGet.d.ts +7 -0
  161. package/graphql/schema/resolvers/manage/resolveGet.js +83 -0
  162. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -0
  163. package/graphql/schema/resolvers/manage/resolveGetByIds.d.ts +7 -0
  164. package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetByIds.js +2 -4
  165. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
  166. package/graphql/schema/resolvers/manage/resolveGetRevisions.d.ts +7 -0
  167. package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetRevisions.js +2 -4
  168. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
  169. package/graphql/schema/resolvers/manage/resolveList.d.ts +4 -0
  170. package/{content/plugins/schema/resolvers/read → graphql/schema/resolvers/manage}/resolveList.js +2 -4
  171. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -0
  172. package/graphql/schema/resolvers/manage/resolvePublish.d.ts +7 -0
  173. package/{content/plugins → graphql}/schema/resolvers/manage/resolvePublish.js +0 -0
  174. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -0
  175. package/graphql/schema/resolvers/manage/resolveRepublish.d.ts +7 -0
  176. package/{content/plugins/schema/resolvers/manage/resolveGet.js → graphql/schema/resolvers/manage/resolveRepublish.js} +4 -4
  177. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -0
  178. package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestChanges.d.ts +4 -3
  179. package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestChanges.js +2 -4
  180. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +1 -0
  181. package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestReview.d.ts +4 -3
  182. package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestReview.js +2 -4
  183. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +1 -0
  184. package/graphql/schema/resolvers/manage/resolveUnpublish.d.ts +7 -0
  185. package/{content/plugins → graphql}/schema/resolvers/manage/resolveUnpublish.js +0 -0
  186. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
  187. package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +8 -0
  188. package/{content/plugins → graphql}/schema/resolvers/manage/resolveUpdate.js +2 -4
  189. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -0
  190. package/graphql/schema/resolvers/preview/resolveGet.d.ts +4 -0
  191. package/{content/plugins → graphql}/schema/resolvers/preview/resolveGet.js +2 -2
  192. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -0
  193. package/graphql/schema/resolvers/preview/resolveList.d.ts +4 -0
  194. package/{content/plugins → graphql}/schema/resolvers/preview/resolveList.js +2 -4
  195. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -0
  196. package/graphql/schema/resolvers/read/resolveGet.d.ts +4 -0
  197. package/{content/plugins → graphql}/schema/resolvers/read/resolveGet.js +2 -2
  198. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -0
  199. package/graphql/schema/resolvers/read/resolveList.d.ts +4 -0
  200. package/{content/plugins/schema/resolvers/manage → graphql/schema/resolvers/read}/resolveList.js +2 -4
  201. package/graphql/schema/resolvers/read/resolveList.js.map +1 -0
  202. package/{content/plugins → graphql}/schema/schemaPlugins.d.ts +1 -1
  203. package/{content/plugins → graphql}/schema/schemaPlugins.js +25 -6
  204. package/graphql/schema/schemaPlugins.js.map +1 -0
  205. package/graphql/system.d.ts +6 -0
  206. package/graphql/system.js +119 -0
  207. package/graphql/system.js.map +1 -0
  208. package/graphqlFields/boolean.d.ts +2 -0
  209. package/graphqlFields/boolean.js +69 -0
  210. package/graphqlFields/boolean.js.map +1 -0
  211. package/graphqlFields/datetime.d.ts +2 -0
  212. package/graphqlFields/datetime.js +95 -0
  213. package/graphqlFields/datetime.js.map +1 -0
  214. package/graphqlFields/file.d.ts +2 -0
  215. package/graphqlFields/file.js +50 -0
  216. package/graphqlFields/file.js.map +1 -0
  217. package/graphqlFields/helpers.d.ts +6 -0
  218. package/graphqlFields/helpers.js +49 -0
  219. package/graphqlFields/helpers.js.map +1 -0
  220. package/graphqlFields/index.d.ts +2 -0
  221. package/graphqlFields/index.js +28 -0
  222. package/graphqlFields/index.js.map +1 -0
  223. package/graphqlFields/longText.d.ts +2 -0
  224. package/graphqlFields/longText.js +63 -0
  225. package/graphqlFields/longText.js.map +1 -0
  226. package/graphqlFields/number.d.ts +2 -0
  227. package/graphqlFields/number.js +75 -0
  228. package/graphqlFields/number.js.map +1 -0
  229. package/graphqlFields/object.d.ts +2 -0
  230. package/graphqlFields/object.js +225 -0
  231. package/graphqlFields/object.js.map +1 -0
  232. package/graphqlFields/ref.d.ts +2 -0
  233. package/graphqlFields/ref.js +279 -0
  234. package/graphqlFields/ref.js.map +1 -0
  235. package/graphqlFields/richText.d.ts +2 -0
  236. package/graphqlFields/richText.js +56 -0
  237. package/graphqlFields/richText.js.map +1 -0
  238. package/graphqlFields/text.d.ts +2 -0
  239. package/graphqlFields/text.js +73 -0
  240. package/graphqlFields/text.js.map +1 -0
  241. package/index.d.ts +10 -12
  242. package/index.js +80 -37
  243. package/index.js.map +1 -0
  244. package/modelManager/DefaultCmsModelManager.d.ts +14 -0
  245. package/{content/plugins/modelManager → modelManager}/DefaultCmsModelManager.js +11 -9
  246. package/modelManager/DefaultCmsModelManager.js.map +1 -0
  247. package/modelManager/index.d.ts +2 -0
  248. package/{content/plugins/modelManager → modelManager}/index.js +3 -3
  249. package/modelManager/index.js.map +1 -0
  250. package/package.json +37 -36
  251. package/parameters/context.d.ts +2 -0
  252. package/parameters/context.js +22 -0
  253. package/parameters/context.js.map +1 -0
  254. package/parameters/header.d.ts +2 -0
  255. package/parameters/header.js +55 -0
  256. package/parameters/header.js.map +1 -0
  257. package/parameters/index.d.ts +4 -0
  258. package/parameters/index.js +57 -0
  259. package/parameters/index.js.map +1 -0
  260. package/parameters/manual.d.ts +6 -0
  261. package/parameters/manual.js +45 -0
  262. package/parameters/manual.js.map +1 -0
  263. package/parameters/path.d.ts +2 -0
  264. package/parameters/path.js +51 -0
  265. package/parameters/path.js.map +1 -0
  266. package/plugins/CmsGroupPlugin.d.ts +13 -0
  267. package/{content/plugins → plugins}/CmsGroupPlugin.js +8 -2
  268. package/plugins/CmsGroupPlugin.js.map +1 -0
  269. package/plugins/CmsModelFieldConverterPlugin.d.ts +14 -0
  270. package/plugins/CmsModelFieldConverterPlugin.js +17 -0
  271. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -0
  272. package/plugins/CmsModelPlugin.d.ts +41 -0
  273. package/plugins/CmsModelPlugin.js +189 -0
  274. package/plugins/CmsModelPlugin.js.map +1 -0
  275. package/plugins/CmsParametersPlugin.d.ts +20 -0
  276. package/plugins/CmsParametersPlugin.js +28 -0
  277. package/plugins/CmsParametersPlugin.js.map +1 -0
  278. package/{content/plugins/storage → plugins}/StorageTransformPlugin.d.ts +4 -3
  279. package/{content/plugins/storage → plugins}/StorageTransformPlugin.js +1 -0
  280. package/plugins/StorageTransformPlugin.js.map +1 -0
  281. package/plugins/index.d.ts +5 -0
  282. package/plugins/index.js +70 -0
  283. package/plugins/index.js.map +1 -0
  284. package/storage/default.d.ts +2 -0
  285. package/storage/default.js +27 -0
  286. package/storage/default.js.map +1 -0
  287. package/storage/object.d.ts +2 -0
  288. package/storage/object.js +128 -0
  289. package/storage/object.js.map +1 -0
  290. package/types.d.ts +413 -246
  291. package/types.js +52 -0
  292. package/types.js.map +1 -0
  293. package/upgrades/5.33.0/index.d.ts +3 -0
  294. package/upgrades/5.33.0/index.js +186 -0
  295. package/upgrades/5.33.0/index.js.map +1 -0
  296. package/upgrades/index.d.ts +1 -0
  297. package/upgrades/index.js +12 -0
  298. package/upgrades/index.js.map +1 -0
  299. package/utils/access.d.ts +8 -0
  300. package/utils/access.js +90 -0
  301. package/utils/access.js.map +1 -0
  302. package/utils/converters/Converter.d.ts +27 -0
  303. package/utils/converters/Converter.js +71 -0
  304. package/utils/converters/Converter.js.map +1 -0
  305. package/utils/converters/ConverterCollection.d.ts +24 -0
  306. package/utils/converters/ConverterCollection.js +115 -0
  307. package/utils/converters/ConverterCollection.js.map +1 -0
  308. package/utils/converters/valueKeyStorageConverter.d.ts +18 -0
  309. package/utils/converters/valueKeyStorageConverter.js +152 -0
  310. package/utils/converters/valueKeyStorageConverter.js.map +1 -0
  311. package/{content/plugins/utils → utils}/createTypeName.d.ts +3 -3
  312. package/{content/plugins/utils → utils}/createTypeName.js +0 -0
  313. package/utils/createTypeName.js.map +1 -0
  314. package/{content/plugins/utils → utils}/entryStorage.d.ts +3 -3
  315. package/{content/plugins/utils → utils}/entryStorage.js +3 -7
  316. package/utils/entryStorage.js.map +1 -0
  317. package/utils/filterAsync.d.ts +1 -0
  318. package/utils/filterAsync.js +23 -0
  319. package/utils/filterAsync.js.map +1 -0
  320. package/utils/filterModelFields.d.ts +16 -0
  321. package/utils/filterModelFields.js +81 -0
  322. package/utils/filterModelFields.js.map +1 -0
  323. package/utils/getEntryTitle.d.ts +2 -0
  324. package/{content/plugins/utils → utils}/getEntryTitle.js +7 -6
  325. package/utils/getEntryTitle.js.map +1 -0
  326. package/utils/getSchemaFromFieldPlugins.d.ts +12 -0
  327. package/utils/getSchemaFromFieldPlugins.js +35 -0
  328. package/utils/getSchemaFromFieldPlugins.js.map +1 -0
  329. package/utils/ownership.d.ts +8 -0
  330. package/utils/ownership.js +41 -0
  331. package/utils/ownership.js.map +1 -0
  332. package/utils/permissions.d.ts +7 -0
  333. package/utils/permissions.js +110 -0
  334. package/utils/permissions.js.map +1 -0
  335. package/utils/pluralizedTypeName.d.ts +1 -0
  336. package/{content/plugins/utils → utils}/pluralizedTypeName.js +0 -0
  337. package/utils/pluralizedTypeName.js.map +1 -0
  338. package/utils/renderFields.d.ts +15 -0
  339. package/{content/plugins/utils → utils}/renderFields.js +4 -2
  340. package/utils/renderFields.js.map +1 -0
  341. package/utils/renderGetFilterFields.d.ts +10 -0
  342. package/{content/plugins/utils → utils}/renderGetFilterFields.js +28 -13
  343. package/utils/renderGetFilterFields.js.map +1 -0
  344. package/utils/renderInputFields.d.ts +14 -0
  345. package/{content/plugins/utils → utils}/renderInputFields.js +1 -1
  346. package/utils/renderInputFields.js.map +1 -0
  347. package/utils/renderListFilterFields.d.ts +11 -0
  348. package/{content/plugins/utils → utils}/renderListFilterFields.js +30 -17
  349. package/utils/renderListFilterFields.js.map +1 -0
  350. package/{content/plugins/utils → utils}/renderSortEnum.d.ts +1 -1
  351. package/utils/renderSortEnum.js +32 -0
  352. package/utils/renderSortEnum.js.map +1 -0
  353. package/utils/toSlug.d.ts +1 -0
  354. package/utils/toSlug.js +20 -0
  355. package/utils/toSlug.js.map +1 -0
  356. package/validators/dateGte.d.ts +2 -0
  357. package/{content/plugins/validators → validators}/dateGte.js +4 -4
  358. package/validators/dateGte.js.map +1 -0
  359. package/validators/dateLte.d.ts +2 -0
  360. package/{content/plugins/validators → validators}/dateLte.js +4 -4
  361. package/validators/dateLte.js.map +1 -0
  362. package/validators/gte.d.ts +2 -0
  363. package/validators/gte.js +36 -0
  364. package/validators/gte.js.map +1 -0
  365. package/validators/in.d.ts +2 -0
  366. package/validators/in.js +36 -0
  367. package/validators/in.js.map +1 -0
  368. package/validators/index.d.ts +1 -0
  369. package/validators/index.js +36 -0
  370. package/validators/index.js.map +1 -0
  371. package/validators/lte.d.ts +2 -0
  372. package/validators/lte.js +36 -0
  373. package/validators/lte.js.map +1 -0
  374. package/validators/maxLength.d.ts +2 -0
  375. package/validators/maxLength.js +36 -0
  376. package/validators/maxLength.js.map +1 -0
  377. package/validators/minLength.d.ts +2 -0
  378. package/validators/minLength.js +36 -0
  379. package/validators/minLength.js.map +1 -0
  380. package/validators/pattern.d.ts +2 -0
  381. package/validators/pattern.js +50 -0
  382. package/validators/pattern.js.map +1 -0
  383. package/validators/patternPlugins/email.d.ts +2 -0
  384. package/validators/patternPlugins/email.js +20 -0
  385. package/validators/patternPlugins/email.js.map +1 -0
  386. package/validators/patternPlugins/index.d.ts +2 -0
  387. package/validators/patternPlugins/index.js +24 -0
  388. package/validators/patternPlugins/index.js.map +1 -0
  389. package/validators/patternPlugins/lowerCase.d.ts +2 -0
  390. package/validators/patternPlugins/lowerCase.js +20 -0
  391. package/validators/patternPlugins/lowerCase.js.map +1 -0
  392. package/validators/patternPlugins/lowerCaseSpace.d.ts +2 -0
  393. package/validators/patternPlugins/lowerCaseSpace.js +20 -0
  394. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  395. package/validators/patternPlugins/upperCase.d.ts +2 -0
  396. package/validators/patternPlugins/upperCase.js +20 -0
  397. package/validators/patternPlugins/upperCase.js.map +1 -0
  398. package/validators/patternPlugins/upperCaseSpace.d.ts +2 -0
  399. package/validators/patternPlugins/upperCaseSpace.js +20 -0
  400. package/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  401. package/validators/patternPlugins/url.d.ts +2 -0
  402. package/validators/patternPlugins/url.js +20 -0
  403. package/validators/patternPlugins/url.js.map +1 -0
  404. package/validators/required.d.ts +2 -0
  405. package/validators/required.js +27 -0
  406. package/validators/required.js.map +1 -0
  407. package/validators/timeGte.d.ts +2 -0
  408. package/{content/plugins/validators → validators}/timeGte.js +6 -4
  409. package/validators/timeGte.js.map +1 -0
  410. package/validators/timeLte.d.ts +2 -0
  411. package/{content/plugins/validators → validators}/timeLte.js +6 -4
  412. package/validators/timeLte.js.map +1 -0
  413. package/validators/unique.d.ts +6 -0
  414. package/validators/unique.js +63 -0
  415. package/validators/unique.js.map +1 -0
  416. package/content/contextSetup.d.ts +0 -4
  417. package/content/contextSetup.js +0 -65
  418. package/content/graphQLHandlerFactory.d.ts +0 -5
  419. package/content/graphQLHandlerFactory.js +0 -173
  420. package/content/plugins/CmsGroupPlugin.d.ts +0 -11
  421. package/content/plugins/CmsModelPlugin.d.ts +0 -11
  422. package/content/plugins/CmsModelPlugin.js +0 -24
  423. package/content/plugins/buildSchemaPlugins.js +0 -29
  424. package/content/plugins/crud/contentEntry/afterDelete.d.ts +0 -7
  425. package/content/plugins/crud/contentEntry/beforeCreate.d.ts +0 -7
  426. package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +0 -7
  427. package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +0 -4
  428. package/content/plugins/crud/contentModel/afterCreate.d.ts +0 -7
  429. package/content/plugins/crud/contentModel/afterDelete.d.ts +0 -7
  430. package/content/plugins/crud/contentModel/afterUpdate.d.ts +0 -7
  431. package/content/plugins/crud/contentModel/beforeCreate.d.ts +0 -9
  432. package/content/plugins/crud/contentModel/beforeUpdate.js +0 -128
  433. package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +0 -2
  434. package/content/plugins/crud/contentModel/createFieldModels.d.ts +0 -2
  435. package/content/plugins/crud/contentModel/idValidation.d.ts +0 -2
  436. package/content/plugins/crud/contentModel/validateLayout.d.ts +0 -2
  437. package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +0 -8
  438. package/content/plugins/crud/index.d.ts +0 -6
  439. package/content/plugins/graphqlFields/boolean.d.ts +0 -3
  440. package/content/plugins/graphqlFields/boolean.js +0 -69
  441. package/content/plugins/graphqlFields/datetime.d.ts +0 -3
  442. package/content/plugins/graphqlFields/datetime.js +0 -83
  443. package/content/plugins/graphqlFields/file.d.ts +0 -3
  444. package/content/plugins/graphqlFields/file.js +0 -49
  445. package/content/plugins/graphqlFields/index.d.ts +0 -2
  446. package/content/plugins/graphqlFields/index.js +0 -30
  447. package/content/plugins/graphqlFields/longText.d.ts +0 -3
  448. package/content/plugins/graphqlFields/longText.js +0 -62
  449. package/content/plugins/graphqlFields/number.d.ts +0 -3
  450. package/content/plugins/graphqlFields/number.js +0 -75
  451. package/content/plugins/graphqlFields/object.d.ts +0 -3
  452. package/content/plugins/graphqlFields/object.js +0 -180
  453. package/content/plugins/graphqlFields/ref.d.ts +0 -3
  454. package/content/plugins/graphqlFields/ref.js +0 -205
  455. package/content/plugins/graphqlFields/richText.d.ts +0 -3
  456. package/content/plugins/graphqlFields/richText.js +0 -55
  457. package/content/plugins/graphqlFields/text.d.ts +0 -3
  458. package/content/plugins/graphqlFields/text.js +0 -72
  459. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +0 -8
  460. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +0 -54
  461. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +0 -7
  462. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +0 -35
  463. package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +0 -15
  464. package/content/plugins/modelManager/index.d.ts +0 -3
  465. package/content/plugins/schema/baseSchema.d.ts +0 -4
  466. package/content/plugins/schema/contentEntries.d.ts +0 -4
  467. package/content/plugins/schema/contentEntries.js +0 -166
  468. package/content/plugins/schema/contentModelGroups.d.ts +0 -4
  469. package/content/plugins/schema/contentModels.d.ts +0 -4
  470. package/content/plugins/schema/createFieldResolvers.d.ts +0 -19
  471. package/content/plugins/schema/createManageResolvers.d.ts +0 -11
  472. package/content/plugins/schema/createManageSDL.d.ts +0 -9
  473. package/content/plugins/schema/createPreviewResolvers.d.ts +0 -10
  474. package/content/plugins/schema/createReadResolvers.d.ts +0 -10
  475. package/content/plugins/schema/createReadSDL.d.ts +0 -9
  476. package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +0 -6
  477. package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +0 -6
  478. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +0 -7
  479. package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +0 -2
  480. package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +0 -2
  481. package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +0 -2
  482. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +0 -2
  483. package/content/plugins/schema/resolvers/manage/resolveList.d.ts +0 -2
  484. package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +0 -2
  485. package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +0 -2
  486. package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +0 -7
  487. package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +0 -2
  488. package/content/plugins/schema/resolvers/preview/resolveList.d.ts +0 -2
  489. package/content/plugins/schema/resolvers/read/resolveGet.d.ts +0 -2
  490. package/content/plugins/schema/resolvers/read/resolveList.d.ts +0 -2
  491. package/content/plugins/storage/default.d.ts +0 -3
  492. package/content/plugins/storage/default.js +0 -28
  493. package/content/plugins/storage/object.d.ts +0 -3
  494. package/content/plugins/storage/object.js +0 -119
  495. package/content/plugins/utils/getEntryTitle.d.ts +0 -2
  496. package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +0 -11
  497. package/content/plugins/utils/getSchemaFromFieldPlugins.js +0 -30
  498. package/content/plugins/utils/pluralizedTypeName.d.ts +0 -1
  499. package/content/plugins/utils/renderFields.d.ts +0 -16
  500. package/content/plugins/utils/renderGetFilterFields.d.ts +0 -9
  501. package/content/plugins/utils/renderInputFields.d.ts +0 -14
  502. package/content/plugins/utils/renderListFilterFields.d.ts +0 -10
  503. package/content/plugins/utils/renderSortEnum.js +0 -32
  504. package/content/plugins/validators/dateGte.d.ts +0 -3
  505. package/content/plugins/validators/dateLte.d.ts +0 -3
  506. package/content/plugins/validators/gte.d.ts +0 -3
  507. package/content/plugins/validators/gte.js +0 -32
  508. package/content/plugins/validators/in.d.ts +0 -3
  509. package/content/plugins/validators/in.js +0 -32
  510. package/content/plugins/validators/index.d.ts +0 -2
  511. package/content/plugins/validators/index.js +0 -36
  512. package/content/plugins/validators/lte.d.ts +0 -3
  513. package/content/plugins/validators/lte.js +0 -32
  514. package/content/plugins/validators/maxLength.d.ts +0 -3
  515. package/content/plugins/validators/maxLength.js +0 -32
  516. package/content/plugins/validators/minLength.d.ts +0 -3
  517. package/content/plugins/validators/minLength.js +0 -32
  518. package/content/plugins/validators/pattern.d.ts +0 -3
  519. package/content/plugins/validators/pattern.js +0 -47
  520. package/content/plugins/validators/patternPlugins/email.d.ts +0 -3
  521. package/content/plugins/validators/patternPlugins/email.js +0 -17
  522. package/content/plugins/validators/patternPlugins/index.d.ts +0 -2
  523. package/content/plugins/validators/patternPlugins/index.js +0 -19
  524. package/content/plugins/validators/patternPlugins/lowerCase.d.ts +0 -3
  525. package/content/plugins/validators/patternPlugins/lowerCase.js +0 -17
  526. package/content/plugins/validators/patternPlugins/upperCase.d.ts +0 -3
  527. package/content/plugins/validators/patternPlugins/upperCase.js +0 -17
  528. package/content/plugins/validators/patternPlugins/url.d.ts +0 -3
  529. package/content/plugins/validators/patternPlugins/url.js +0 -17
  530. package/content/plugins/validators/required.d.ts +0 -3
  531. package/content/plugins/validators/required.js +0 -25
  532. package/content/plugins/validators/timeGte.d.ts +0 -3
  533. package/content/plugins/validators/timeLte.d.ts +0 -3
  534. package/migrateCMSPermissions.d.ts +0 -17
  535. package/migrateCMSPermissions.js +0 -193
  536. package/plugins/context.d.ts +0 -4
  537. package/plugins/context.js +0 -34
  538. package/plugins/crud/index.d.ts +0 -6
  539. package/plugins/crud/index.js +0 -100
  540. package/plugins/crud/settings.crud.js +0 -93
  541. package/plugins/graphql/system.d.ts +0 -17
  542. package/plugins/graphql/system.js +0 -72
  543. package/plugins/graphql.d.ts +0 -2
  544. package/plugins/graphql.js +0 -79
  545. package/plugins/upgrades/index.d.ts +0 -2
  546. package/plugins/upgrades/index.js +0 -14
  547. package/plugins/upgrades/v5.5.0/helpers.d.ts +0 -6
  548. package/plugins/upgrades/v5.5.0/helpers.js +0 -10
  549. package/plugins/upgrades/v5.5.0/index.d.ts +0 -4
  550. package/plugins/upgrades/v5.5.0/index.js +0 -129
  551. package/transformers.d.ts +0 -2
  552. package/transformers.js +0 -25
  553. package/utils.d.ts +0 -25
  554. package/utils.js +0 -251
@@ -13,8 +13,6 @@ var _mdbid = _interopRequireDefault(require("mdbid"));
13
13
 
14
14
  var _handlerGraphql = require("@webiny/handler-graphql");
15
15
 
16
- var utils = _interopRequireWildcard(require("../../../utils"));
17
-
18
16
  var _entryDataValidation = require("./contentEntry/entryDataValidation");
19
17
 
20
18
  var _error = _interopRequireDefault(require("@webiny/error"));
@@ -25,19 +23,27 @@ var _beforeCreate = require("./contentEntry/beforeCreate");
25
23
 
26
24
  var _beforeUpdate = require("./contentEntry/beforeUpdate");
27
25
 
28
- var _utils2 = require("@webiny/utils");
29
-
30
- var _entryStorage = require("../utils/entryStorage");
26
+ var _utils = require("@webiny/utils");
31
27
 
32
28
  var _afterDelete = require("./contentEntry/afterDelete");
33
29
 
34
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
30
+ var _referenceFieldsMapping = require("./contentEntry/referenceFieldsMapping");
31
+
32
+ var _merge = _interopRequireDefault(require("lodash/merge"));
35
33
 
36
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
34
+ var _permissions = require("../utils/permissions");
35
+
36
+ var _access = require("../utils/access");
37
+
38
+ var _ownership = require("../utils/ownership");
39
+
40
+ var _entryStorage = require("../utils/entryStorage");
37
41
 
38
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
42
+ var _valueKeyStorageConverter = require("../utils/converters/valueKeyStorageConverter");
39
43
 
40
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
44
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
45
+
46
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
47
 
42
48
  const STATUS_DRAFT = "draft";
43
49
  exports.STATUS_DRAFT = STATUS_DRAFT;
@@ -50,30 +56,143 @@ exports.STATUS_CHANGES_REQUESTED = STATUS_CHANGES_REQUESTED;
50
56
  const STATUS_REVIEW_REQUESTED = "reviewRequested";
51
57
  exports.STATUS_REVIEW_REQUESTED = STATUS_REVIEW_REQUESTED;
52
58
 
53
- const cleanInputData = (model, inputData) => {
59
+ /**
60
+ * Used for some fields to convert their values.
61
+ */
62
+ const convertDefaultValue = (field, value) => {
63
+ switch (field.type) {
64
+ case "boolean":
65
+ return Boolean(value);
66
+
67
+ case "number":
68
+ return Number(value);
69
+
70
+ default:
71
+ return value;
72
+ }
73
+ };
74
+
75
+ const getDefaultValue = field => {
76
+ const {
77
+ settings,
78
+ multipleValues
79
+ } = field;
80
+
81
+ if (settings && settings.defaultValue !== undefined) {
82
+ return convertDefaultValue(field, settings.defaultValue);
83
+ }
84
+
85
+ const {
86
+ predefinedValues
87
+ } = field;
88
+
89
+ if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
90
+ return undefined;
91
+ }
92
+
93
+ if (!multipleValues) {
94
+ const selectedValue = predefinedValues.values.find(value => {
95
+ return !!value.selected;
96
+ });
97
+
98
+ if (selectedValue) {
99
+ return convertDefaultValue(field, selectedValue.value);
100
+ }
101
+
102
+ return undefined;
103
+ }
104
+
105
+ return predefinedValues.values.filter(({
106
+ selected
107
+ }) => !!selected).map(({
108
+ value
109
+ }) => {
110
+ return convertDefaultValue(field, value);
111
+ });
112
+ };
113
+ /**
114
+ * Cleans and adds default values to create input data.
115
+ */
116
+
117
+
118
+ const mapAndCleanCreateInputData = (model, input) => {
54
119
  return model.fields.reduce((acc, field) => {
55
- acc[field.fieldId] = inputData[field.fieldId];
120
+ /**
121
+ * This should never happen, but let's make it sure.
122
+ * The fix would be for the user to add the fieldId on the field definition.
123
+ */
124
+ if (!field.fieldId) {
125
+ throw new _error.default("Field does not have an fieldId.", "MISSING_FIELD_ID", {
126
+ field
127
+ });
128
+ }
129
+
130
+ const value = input[field.fieldId];
131
+ /**
132
+ * We set the default value on create input if value is not defined.
133
+ */
134
+
135
+ acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;
56
136
  return acc;
57
137
  }, {});
58
138
  };
139
+ /**
140
+ * Cleans the update input entry data.
141
+ */
59
142
 
60
- const cleanUpdatedInputData = (model, input) => {
143
+
144
+ const mapAndCleanUpdatedInputData = (model, input) => {
61
145
  return model.fields.reduce((acc, field) => {
62
- if (input[field.fieldId] === undefined) {
146
+ /**
147
+ * This should never happen, but let's make it sure.
148
+ * The fix would be for the user to add the fieldId on the field definition.
149
+ */
150
+ if (!field.fieldId) {
151
+ throw new _error.default("Field does not have an fieldId.", "MISSING_FIELD_ID", {
152
+ field
153
+ });
154
+ }
155
+ /**
156
+ * We cannot set default value here because user might want to update only certain field values.
157
+ */
158
+
159
+
160
+ const value = input[field.fieldId];
161
+
162
+ if (value === undefined) {
63
163
  return acc;
64
164
  }
65
165
 
66
- acc[field.fieldId] = input[field.fieldId];
166
+ acc[field.fieldId] = value;
67
167
  return acc;
68
168
  }, {});
69
169
  };
170
+ /**
171
+ * This method takes original entry meta and new input.
172
+ * When new meta is merged onto the existing one, everything that has undefined or null value is removed.
173
+ */
174
+
175
+
176
+ const createEntryMeta = (input, original) => {
177
+ const meta = (0, _merge.default)(original || {}, input || {});
178
+
179
+ for (const key in meta) {
180
+ if (meta[key] !== undefined || meta[key] !== null) {
181
+ continue;
182
+ }
183
+
184
+ delete meta[key];
185
+ }
186
+
187
+ return meta;
188
+ };
70
189
 
71
190
  const createEntryId = version => {
72
191
  const entryId = (0, _mdbid.default)();
73
192
  return {
74
193
  entryId,
75
194
  version,
76
- id: (0, _utils2.createIdentifier)({
195
+ id: (0, _utils.createIdentifier)({
77
196
  id: entryId,
78
197
  version
79
198
  })
@@ -81,71 +200,105 @@ const createEntryId = version => {
81
200
  };
82
201
 
83
202
  const increaseEntryIdVersion = id => {
84
- if (id.includes("#") === false) {
203
+ const {
204
+ id: entryId,
205
+ version
206
+ } = (0, _utils.parseIdentifier)(id);
207
+
208
+ if (!version) {
85
209
  throw new _error.default("Cannot increase version on the ID without the version part.", "WRONG_ID", {
86
210
  id
87
211
  });
88
212
  }
89
213
 
90
- const [entryId, version] = id.split("#");
91
- const ver = parseInt(version) + 1;
92
214
  return {
93
215
  entryId,
94
- version: ver,
95
- id: (0, _utils2.createIdentifier)({
216
+ version: version + 1,
217
+ id: (0, _utils.createIdentifier)({
96
218
  id: entryId,
97
- version: ver
219
+ version: version + 1
98
220
  })
99
221
  };
100
222
  };
101
223
 
224
+ const getSearchableFields = params => {
225
+ const {
226
+ plugins,
227
+ model,
228
+ fields
229
+ } = params;
230
+ const fieldPluginMap = plugins.byType("cms-model-field-to-graphql").reduce((collection, field) => {
231
+ collection[field.fieldType] = field;
232
+ return collection;
233
+ }, {});
234
+ return model.fields.filter(field => {
235
+ if (!field.fieldId) {
236
+ return false;
237
+ }
238
+
239
+ const plugin = fieldPluginMap[field.type];
240
+
241
+ if (!plugin) {
242
+ return false;
243
+ } else if (!plugin.fullTextSearch) {
244
+ return false;
245
+ } else if (!fields || fields.length === 0) {
246
+ return true;
247
+ }
248
+
249
+ return fields.includes(field.fieldId);
250
+ }).map(field => field.fieldId);
251
+ };
252
+
102
253
  const createContentEntryCrud = params => {
103
254
  const {
104
255
  storageOperations,
105
256
  context,
106
- getTenant,
107
- getLocale,
108
- getIdentity
257
+ getIdentity,
258
+ getTenant
109
259
  } = params;
110
- const onBeforeCreate = (0, _pubsub.createTopic)();
111
- const onAfterCreate = (0, _pubsub.createTopic)();
112
- const onBeforeCreateRevision = (0, _pubsub.createTopic)();
113
- const onAfterCreateRevision = (0, _pubsub.createTopic)();
114
- const onBeforeUpdate = (0, _pubsub.createTopic)();
115
- const onAfterUpdate = (0, _pubsub.createTopic)();
116
- const onBeforePublish = (0, _pubsub.createTopic)();
117
- const onAfterPublish = (0, _pubsub.createTopic)();
118
- const onBeforeUnpublish = (0, _pubsub.createTopic)();
119
- const onAfterUnpublish = (0, _pubsub.createTopic)();
120
- const onBeforeRequestChanges = (0, _pubsub.createTopic)();
121
- const onAfterRequestChanges = (0, _pubsub.createTopic)();
122
- const onBeforeRequestReview = (0, _pubsub.createTopic)();
123
- const onAfterRequestReview = (0, _pubsub.createTopic)();
124
- const onBeforeDelete = (0, _pubsub.createTopic)();
125
- const onAfterDelete = (0, _pubsub.createTopic)();
126
- const onBeforeDeleteRevision = (0, _pubsub.createTopic)();
127
- const onAfterDeleteRevision = (0, _pubsub.createTopic)();
128
- const onBeforeGet = (0, _pubsub.createTopic)();
129
- const onBeforeList = (0, _pubsub.createTopic)();
260
+ const {
261
+ plugins
262
+ } = context;
263
+ const onBeforeEntryCreate = (0, _pubsub.createTopic)();
264
+ const onAfterEntryCreate = (0, _pubsub.createTopic)();
265
+ const onBeforeEntryCreateRevision = (0, _pubsub.createTopic)();
266
+ const onAfterEntryCreateRevision = (0, _pubsub.createTopic)();
267
+ const onBeforeEntryUpdate = (0, _pubsub.createTopic)();
268
+ const onAfterEntryUpdate = (0, _pubsub.createTopic)();
269
+ const onBeforeEntryPublish = (0, _pubsub.createTopic)();
270
+ const onAfterEntryPublish = (0, _pubsub.createTopic)();
271
+ const onBeforeEntryUnpublish = (0, _pubsub.createTopic)();
272
+ const onAfterEntryUnpublish = (0, _pubsub.createTopic)();
273
+ const onBeforeEntryRequestChanges = (0, _pubsub.createTopic)();
274
+ const onAfterEntryRequestChanges = (0, _pubsub.createTopic)();
275
+ const onBeforeEntryRequestReview = (0, _pubsub.createTopic)();
276
+ const onAfterEntryRequestReview = (0, _pubsub.createTopic)();
277
+ const onBeforeEntryDelete = (0, _pubsub.createTopic)();
278
+ const onAfterEntryDelete = (0, _pubsub.createTopic)();
279
+ const onBeforeEntryDeleteRevision = (0, _pubsub.createTopic)();
280
+ const onAfterEntryDeleteRevision = (0, _pubsub.createTopic)();
281
+ const onBeforeEntryGet = (0, _pubsub.createTopic)();
282
+ const onBeforeEntryList = (0, _pubsub.createTopic)();
130
283
  /**
131
284
  * We need to assign some default behaviors.
132
285
  */
133
286
 
134
287
  (0, _beforeCreate.assignBeforeEntryCreate)({
135
288
  context,
136
- onBeforeCreate
289
+ onBeforeEntryCreate
137
290
  });
138
291
  (0, _beforeUpdate.assignBeforeEntryUpdate)({
139
292
  context,
140
- onBeforeUpdate
293
+ onBeforeEntryUpdate
141
294
  });
142
295
  (0, _afterDelete.assignAfterEntryDelete)({
143
296
  context,
144
- onAfterDelete
297
+ onAfterEntryDelete
145
298
  });
146
299
 
147
300
  const checkEntryPermissions = check => {
148
- return utils.checkPermissions(context, "cms.contentEntry", check);
301
+ return (0, _permissions.checkPermissions)(context, "cms.contentEntry", check);
149
302
  };
150
303
  /**
151
304
  * A helper to delete the entire entry.
@@ -155,20 +308,18 @@ const createContentEntryCrud = params => {
155
308
  const deleteEntry = async params => {
156
309
  const {
157
310
  model,
158
- entry,
159
- storageEntry
311
+ entry
160
312
  } = params;
161
313
 
162
314
  try {
163
- await onBeforeDelete.publish({
315
+ await onBeforeEntryDelete.publish({
164
316
  entry,
165
317
  model
166
318
  });
167
319
  await storageOperations.entries.delete(model, {
168
- entry,
169
- storageEntry
320
+ entry
170
321
  });
171
- await onAfterDelete.publish({
322
+ await onAfterEntryDelete.publish({
172
323
  entry,
173
324
  model
174
325
  });
@@ -183,38 +334,42 @@ const createContentEntryCrud = params => {
183
334
  */
184
335
 
185
336
 
186
- const getEntriesByIds = async (model, ids) => {
337
+ const getEntriesByIds = async (initialModel, ids) => {
187
338
  const permission = await checkEntryPermissions({
188
339
  rwd: "r"
189
340
  });
190
- await utils.checkModelAccess(context, model);
341
+ await (0, _access.checkModelAccess)(context, initialModel);
342
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
343
+ model: initialModel,
344
+ plugins
345
+ });
191
346
  const entries = await storageOperations.entries.getByIds(model, {
192
347
  ids
193
348
  });
194
- return entries.filter(entry => utils.validateOwnership(context, permission, entry));
349
+ return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
195
350
  };
196
351
 
197
352
  return {
198
- onBeforeEntryCreate: onBeforeCreate,
199
- onAfterEntryCreate: onAfterCreate,
200
- onBeforeEntryRevisionCreate: onBeforeCreateRevision,
201
- onAfterEntryRevisionCreate: onAfterCreateRevision,
202
- onBeforeEntryUpdate: onBeforeUpdate,
203
- onAfterEntryUpdate: onAfterUpdate,
204
- onBeforeEntryDelete: onBeforeDelete,
205
- onAfterEntryDelete: onAfterDelete,
206
- onBeforeEntryRevisionDelete: onBeforeDeleteRevision,
207
- onAfterEntryRevisionDelete: onAfterDeleteRevision,
208
- onBeforeEntryPublish: onBeforePublish,
209
- onAfterEntryPublish: onAfterPublish,
210
- onBeforeEntryUnpublish: onBeforeUnpublish,
211
- onAfterEntryUnpublish: onAfterUnpublish,
212
- onBeforeEntryRequestChanges: onBeforeRequestChanges,
213
- onAfterEntryRequestChanges: onAfterRequestChanges,
214
- onBeforeEntryRequestReview: onBeforeRequestReview,
215
- onAfterEntryRequestReview: onAfterRequestReview,
216
- onBeforeEntryGet: onBeforeGet,
217
- onBeforeEntryList: onBeforeList,
353
+ onBeforeEntryCreate,
354
+ onAfterEntryCreate,
355
+ onBeforeEntryCreateRevision,
356
+ onAfterEntryCreateRevision,
357
+ onBeforeEntryUpdate,
358
+ onAfterEntryUpdate,
359
+ onBeforeEntryDelete,
360
+ onAfterEntryDelete,
361
+ onBeforeEntryDeleteRevision,
362
+ onAfterEntryDeleteRevision,
363
+ onBeforeEntryPublish,
364
+ onAfterEntryPublish,
365
+ onBeforeEntryUnpublish,
366
+ onAfterEntryUnpublish,
367
+ onBeforeEntryRequestChanges,
368
+ onAfterEntryRequestChanges,
369
+ onBeforeEntryRequestReview,
370
+ onAfterEntryRequestReview,
371
+ onBeforeEntryGet,
372
+ onBeforeEntryList,
218
373
 
219
374
  /**
220
375
  * Get entries by exact revision IDs from the database.
@@ -224,15 +379,19 @@ const createContentEntryCrud = params => {
224
379
  /**
225
380
  * Get a single entry by revision ID from the database.
226
381
  */
227
- getEntryById: async (model, id) => {
382
+ getEntryById: async (initialModel, id) => {
228
383
  const where = {
229
384
  id
230
385
  };
231
- await onBeforeGet.publish({
386
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
387
+ model: initialModel,
388
+ plugins
389
+ });
390
+ await onBeforeEntryGet.publish({
232
391
  where,
233
392
  model
234
393
  });
235
- const [entry] = await getEntriesByIds(model, [where.id]);
394
+ const [entry] = await getEntriesByIds(model, [id]);
236
395
 
237
396
  if (!entry) {
238
397
  throw new _handlerGraphql.NotFoundError(`Entry by ID "${id}" not found.`);
@@ -244,44 +403,66 @@ const createContentEntryCrud = params => {
244
403
  /**
245
404
  * Get published revisions by entry IDs.
246
405
  */
247
- getPublishedEntriesByIds: async (model, ids) => {
406
+ getPublishedEntriesByIds: async (initialModel, ids) => {
248
407
  const permission = await checkEntryPermissions({
249
408
  rwd: "r"
250
409
  });
251
- await utils.checkModelAccess(context, model);
410
+ await (0, _access.checkModelAccess)(context, initialModel);
411
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
412
+ model: initialModel,
413
+ plugins
414
+ });
252
415
  const entries = await storageOperations.entries.getPublishedByIds(model, {
253
416
  ids
254
417
  });
255
- return entries.filter(entry => utils.validateOwnership(context, permission, entry));
418
+ return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
256
419
  },
257
420
 
258
421
  /**
259
422
  * Get latest revisions by entry IDs.
260
423
  */
261
- getLatestEntriesByIds: async (model, ids) => {
424
+ getLatestEntriesByIds: async (initialModel, ids) => {
262
425
  const permission = await checkEntryPermissions({
263
426
  rwd: "r"
264
427
  });
265
- await utils.checkModelAccess(context, model);
428
+ await (0, _access.checkModelAccess)(context, initialModel);
429
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
430
+ model: initialModel,
431
+ plugins
432
+ });
266
433
  const entries = await storageOperations.entries.getLatestByIds(model, {
267
434
  ids
268
435
  });
269
- return entries.filter(entry => utils.validateOwnership(context, permission, entry));
436
+ return entries.filter(entry => (0, _ownership.validateOwnership)(context, permission, entry));
270
437
  },
271
- getEntryRevisions: async (model, entryId) => {
438
+ getEntryRevisions: async (initialModel, entryId) => {
439
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
440
+ model: initialModel,
441
+ plugins
442
+ });
272
443
  return storageOperations.entries.getRevisions(model, {
273
444
  id: entryId
274
445
  });
275
446
  },
276
- getEntry: async (model, params) => {
447
+
448
+ /**
449
+ * TODO determine if this method is required at all.
450
+ *
451
+ * @internal
452
+ */
453
+ getEntry: async (initialModel, params) => {
277
454
  await checkEntryPermissions({
278
455
  rwd: "r"
279
456
  });
457
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
458
+ model: initialModel,
459
+ plugins
460
+ });
280
461
  const {
281
462
  where,
282
463
  sort
283
464
  } = params;
284
- await onBeforeGet.publish({
465
+ await onBeforeEntryGet.publish({
285
466
  where,
286
467
  model
287
468
  });
@@ -297,54 +478,98 @@ const createContentEntryCrud = params => {
297
478
 
298
479
  return items[0];
299
480
  },
300
- listEntries: async (model, params) => {
481
+
482
+ /**
483
+ * @description Should not be used directly. Internal use only!
484
+ *
485
+ * @internal
486
+ */
487
+ listEntries: async (initialModel, params) => {
301
488
  const permission = await checkEntryPermissions({
302
489
  rwd: "r"
303
490
  });
304
- await utils.checkModelAccess(context, model);
305
- const where = params.where || {};
491
+ await (0, _access.checkModelAccess)(context, initialModel);
492
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
493
+ model: initialModel,
494
+ plugins
495
+ });
496
+ const {
497
+ where: initialWhere
498
+ } = params;
499
+ /**
500
+ * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.
501
+ */
502
+
503
+ const where = _objectSpread({}, initialWhere);
306
504
  /**
307
505
  * Possibly only get records which are owned by current user.
308
506
  * Or if searching for the owner set that value - in the case that user can see other entries than their own.
309
507
  */
310
508
 
311
- const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
312
509
 
313
- const listWhere = _objectSpread(_objectSpread({}, where), {}, {
314
- tenant: where.tenant || getTenant().id,
315
- locale: where.locale || getLocale().code
316
- });
510
+ const ownedBy = permission.own ? getIdentity().id : where.ownedBy;
317
511
 
318
512
  if (ownedBy !== undefined) {
319
- listWhere.ownedBy = ownedBy;
513
+ where.ownedBy = ownedBy;
320
514
  }
515
+ /**
516
+ * Where must contain either latest or published keys.
517
+ * We cannot list entries without one of those
518
+ */
321
519
 
322
- await onBeforeList.publish({
323
- where: listWhere,
324
- model
520
+
521
+ if (where.latest && where.published) {
522
+ throw new _error.default("Cannot list entries that are both published and latest.", "LIST_ENTRIES_ERROR", {
523
+ where
524
+ });
525
+ } else if (!where.latest && !where.published) {
526
+ throw new _error.default("Cannot list entries if we do not have latest or published defined.", "LIST_ENTRIES_ERROR", {
527
+ where
528
+ });
529
+ }
530
+
531
+ const fields = getSearchableFields({
532
+ model,
533
+ plugins: context.plugins,
534
+ fields: params.fields || []
325
535
  });
326
- const {
327
- hasMoreItems,
328
- totalCount,
329
- cursor,
330
- items
331
- } = await storageOperations.entries.list(model, _objectSpread(_objectSpread({}, params), {}, {
332
- where: listWhere
333
- }));
334
- const meta = {
335
- hasMoreItems,
336
- totalCount,
337
-
338
- /**
339
- * Cursor should be null if there are no more items to load.
340
- * Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.
341
- */
342
- cursor: hasMoreItems ? cursor : null
343
- };
344
- return [items, meta];
536
+
537
+ try {
538
+ await onBeforeEntryList.publish({
539
+ where,
540
+ model
541
+ });
542
+ const {
543
+ hasMoreItems,
544
+ totalCount,
545
+ cursor,
546
+ items
547
+ } = await storageOperations.entries.list(model, _objectSpread(_objectSpread({}, params), {}, {
548
+ where,
549
+ fields
550
+ }));
551
+ const meta = {
552
+ hasMoreItems,
553
+ totalCount,
554
+
555
+ /**
556
+ * Cursor should be null if there are no more items to load.
557
+ * Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.
558
+ */
559
+ cursor: hasMoreItems ? cursor : null
560
+ };
561
+ return [items, meta];
562
+ } catch (ex) {
563
+ throw new _error.default("Error while fetching entries from storage.", "LIST_ENTRIES_ERROR", {
564
+ params,
565
+ error: ex,
566
+ model,
567
+ fields
568
+ });
569
+ }
345
570
  },
346
571
  listLatestEntries: async function (model, params) {
347
- const where = params ? params.where : {};
572
+ const where = (params === null || params === void 0 ? void 0 : params.where) || {};
348
573
  return context.cms.listEntries(model, _objectSpread(_objectSpread({
349
574
  sort: ["createdOn_DESC"]
350
575
  }, params || {}), {}, {
@@ -354,7 +579,7 @@ const createContentEntryCrud = params => {
354
579
  }));
355
580
  },
356
581
  listPublishedEntries: async function (model, params) {
357
- const where = params ? params.where : {};
582
+ const where = (params === null || params === void 0 ? void 0 : params.where) || {};
358
583
  return context.cms.listEntries(model, _objectSpread(_objectSpread({
359
584
  sort: ["createdOn_DESC"]
360
585
  }, params || {}), {}, {
@@ -363,17 +588,31 @@ const createContentEntryCrud = params => {
363
588
  })
364
589
  }));
365
590
  },
366
- createEntry: async (model, inputData) => {
591
+ createEntry: async (initialModel, inputData) => {
367
592
  await checkEntryPermissions({
368
593
  rwd: "w"
369
594
  });
370
- await utils.checkModelAccess(context, model);
595
+ await (0, _access.checkModelAccess)(context, initialModel);
596
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
597
+ model: initialModel,
598
+ plugins
599
+ });
371
600
  /**
372
601
  * Make sure we only work with fields that are defined in the model.
373
602
  */
374
603
 
375
- const input = cleanInputData(model, inputData);
376
- await (0, _entryDataValidation.validateModelEntryData)(context, model, input);
604
+ const initialInput = mapAndCleanCreateInputData(model, inputData);
605
+ await (0, _entryDataValidation.validateModelEntryData)({
606
+ context,
607
+ model,
608
+ data: initialInput
609
+ });
610
+ const input = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
611
+ context,
612
+ model,
613
+ input: initialInput,
614
+ validateEntries: true
615
+ });
377
616
  const identity = context.security.getIdentity();
378
617
  const locale = context.cms.getLocale();
379
618
  const owner = {
@@ -388,7 +627,7 @@ const createContentEntryCrud = params => {
388
627
  } = createEntryId(1);
389
628
  const entry = {
390
629
  webinyVersion: context.WEBINY_VERSION,
391
- tenant: context.tenancy.getCurrentTenant().id,
630
+ tenant: getTenant().id,
392
631
  entryId,
393
632
  id,
394
633
  modelId: model.modelId,
@@ -405,18 +644,17 @@ const createContentEntryCrud = params => {
405
644
  let storageEntry = null;
406
645
 
407
646
  try {
408
- await onBeforeCreate.publish({
647
+ await onBeforeEntryCreate.publish({
409
648
  entry,
410
649
  input,
411
650
  model
412
651
  });
413
652
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
414
653
  const result = await storageOperations.entries.create(model, {
415
- input,
416
654
  entry,
417
655
  storageEntry
418
656
  });
419
- await onAfterCreate.publish({
657
+ await onAfterEntryCreate.publish({
420
658
  entry,
421
659
  storageEntry: result,
422
660
  model,
@@ -432,21 +670,27 @@ const createContentEntryCrud = params => {
432
670
  });
433
671
  }
434
672
  },
435
- createEntryRevisionFrom: async (model, sourceId, inputData = {}) => {
673
+ createEntryRevisionFrom: async (initialModel, sourceId, inputData) => {
436
674
  const permission = await checkEntryPermissions({
437
675
  rwd: "w"
438
676
  });
439
- await utils.checkModelAccess(context, model);
677
+ await (0, _access.checkModelAccess)(context, initialModel);
678
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
679
+ model: initialModel,
680
+ plugins
681
+ });
440
682
  /**
441
683
  * Make sure we only work with fields that are defined in the model.
442
684
  */
443
685
 
444
- const input = cleanUpdatedInputData(model, inputData);
686
+ const input = mapAndCleanUpdatedInputData(model, inputData);
445
687
  /**
446
688
  * Entries are identified by a common parent ID + Revision number.
447
689
  */
448
690
 
449
- const [uniqueId] = sourceId.split("#");
691
+ const {
692
+ id: uniqueId
693
+ } = (0, _utils.parseIdentifier)(sourceId);
450
694
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
451
695
  id: sourceId
452
696
  });
@@ -464,11 +708,21 @@ const createContentEntryCrud = params => {
464
708
 
465
709
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
466
710
 
467
- const values = _objectSpread(_objectSpread({}, originalEntry.values), input);
711
+ const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
468
712
 
469
- await (0, _entryDataValidation.validateModelEntryData)(context, model, values);
470
- utils.checkOwnership(context, permission, originalEntry);
471
- const latestEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, latestStorageEntry);
713
+ await (0, _entryDataValidation.validateModelEntryData)({
714
+ context,
715
+ model,
716
+ data: initialValues,
717
+ entry: originalEntry
718
+ });
719
+ const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
720
+ context,
721
+ model,
722
+ input: initialValues,
723
+ validateEntries: false
724
+ });
725
+ (0, _ownership.checkOwnership)(context, permission, originalEntry);
472
726
  const identity = context.security.getIdentity();
473
727
  const latestId = latestStorageEntry ? latestStorageEntry.id : sourceId;
474
728
  const {
@@ -487,30 +741,30 @@ const createContentEntryCrud = params => {
487
741
  type: identity.type
488
742
  },
489
743
  locked: false,
490
- publishedOn: null,
744
+ publishedOn: undefined,
491
745
  status: STATUS_DRAFT,
492
746
  values
493
747
  });
494
748
 
495
- let storageEntry = undefined;
749
+ let storageEntry = null;
496
750
 
497
751
  try {
498
- await onBeforeCreateRevision.publish({
752
+ await onBeforeEntryCreateRevision.publish({
753
+ input,
499
754
  entry,
755
+ original: originalEntry,
500
756
  model
501
757
  });
502
758
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
503
759
  const result = await storageOperations.entries.createRevisionFrom(model, {
504
760
  entry,
505
- storageEntry,
506
- originalEntry,
507
- originalStorageEntry,
508
- latestEntry,
509
- latestStorageEntry
761
+ storageEntry
510
762
  });
511
- await onAfterCreateRevision.publish({
763
+ await onAfterEntryCreateRevision.publish({
764
+ input,
512
765
  entry,
513
766
  model,
767
+ original: originalEntry,
514
768
  storageEntry: result
515
769
  });
516
770
  return result;
@@ -524,21 +778,20 @@ const createContentEntryCrud = params => {
524
778
  });
525
779
  }
526
780
  },
527
- updateEntry: async (model, id, inputData) => {
781
+ updateEntry: async (initialModel, id, inputData, metaInput) => {
528
782
  const permission = await checkEntryPermissions({
529
783
  rwd: "w"
530
784
  });
531
- await utils.checkModelAccess(context, model);
785
+ await (0, _access.checkModelAccess)(context, initialModel);
786
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
787
+ model: initialModel,
788
+ plugins
789
+ });
532
790
  /**
533
791
  * Make sure we only work with fields that are defined in the model.
534
792
  */
535
793
 
536
- const input = cleanInputData(model, inputData);
537
- /**
538
- * Validate data early. We don't want to query DB if input data is invalid.
539
- */
540
-
541
- await (0, _entryDataValidation.validateModelEntryData)(context, model, input);
794
+ const input = mapAndCleanUpdatedInputData(model, inputData);
542
795
  /**
543
796
  * The entry we are going to update.
544
797
  */
@@ -556,20 +809,41 @@ const createContentEntryCrud = params => {
556
809
  }
557
810
 
558
811
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
559
- utils.checkOwnership(context, permission, originalEntry);
812
+ await (0, _entryDataValidation.validateModelEntryData)({
813
+ context,
814
+ model,
815
+ data: input,
816
+ entry: originalEntry
817
+ });
818
+ (0, _ownership.checkOwnership)(context, permission, originalEntry);
819
+
820
+ const initialValues = _objectSpread(_objectSpread({}, originalEntry.values), input);
821
+
822
+ const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
823
+ context,
824
+ model,
825
+ input: initialValues,
826
+ validateEntries: false
827
+ });
828
+ /**
829
+ * If users wants to remove a key from meta values, they need to send meta key with the null value.
830
+ */
831
+
832
+ const meta = createEntryMeta(metaInput, originalEntry.meta);
560
833
  /**
561
834
  * We always send the full entry to the hooks and storage operations update.
562
835
  */
563
836
 
564
837
  const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
565
838
  savedOn: new Date().toISOString(),
566
- values: _objectSpread(_objectSpread({}, originalEntry.values), input)
839
+ values,
840
+ meta
567
841
  });
568
842
 
569
- let storageEntry = undefined;
843
+ let storageEntry = null;
570
844
 
571
845
  try {
572
- await onBeforeUpdate.publish({
846
+ await onBeforeEntryUpdate.publish({
573
847
  entry,
574
848
  model,
575
849
  input,
@@ -577,13 +851,10 @@ const createContentEntryCrud = params => {
577
851
  });
578
852
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
579
853
  const result = await storageOperations.entries.update(model, {
580
- originalEntry,
581
- originalStorageEntry,
582
854
  entry,
583
- storageEntry,
584
- input
855
+ storageEntry
585
856
  });
586
- await onAfterUpdate.publish({
857
+ await onAfterEntryUpdate.publish({
587
858
  entry,
588
859
  storageEntry: result,
589
860
  model,
@@ -601,15 +872,96 @@ const createContentEntryCrud = params => {
601
872
  });
602
873
  }
603
874
  },
604
- deleteEntryRevision: async (model, revisionId) => {
875
+ republishEntry: async (initialModel, id) => {
876
+ await checkEntryPermissions({
877
+ rwd: "w"
878
+ });
879
+ await (0, _access.checkModelAccess)(context, initialModel);
880
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
881
+ model: initialModel,
882
+ plugins
883
+ });
884
+ /**
885
+ * Fetch the entry from the storage.
886
+ */
887
+
888
+ const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
889
+ id
890
+ });
891
+
892
+ if (!originalStorageEntry) {
893
+ throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found!`);
894
+ }
895
+
896
+ const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
897
+ /**
898
+ * We can only process published entries.
899
+ */
900
+
901
+ if (originalEntry.status !== "published") {
902
+ throw new _error.default("Entry with given ID is not published!", "NOT_PUBLISHED_ERROR", {
903
+ id,
904
+ original: originalEntry
905
+ });
906
+ }
907
+
908
+ const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
909
+ context,
910
+ model,
911
+ input: originalEntry.values,
912
+ validateEntries: false
913
+ });
914
+
915
+ const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
916
+ savedOn: new Date().toISOString(),
917
+ webinyVersion: context.WEBINY_VERSION,
918
+ values
919
+ });
920
+
921
+ const storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
922
+ /**
923
+ * First we need to update existing entry.
924
+ */
925
+
926
+ try {
927
+ await storageOperations.entries.update(model, {
928
+ entry,
929
+ storageEntry
930
+ });
931
+ } catch (ex) {
932
+ throw new _error.default("Could not update existing entry with new data while re-publishing.", "REPUBLISH_UPDATE_ERROR", {
933
+ entry
934
+ });
935
+ }
936
+ /**
937
+ * Then we move onto publishing it again.
938
+ */
939
+
940
+
941
+ try {
942
+ return await storageOperations.entries.publish(model, {
943
+ entry,
944
+ storageEntry
945
+ });
946
+ } catch (ex) {
947
+ throw new _error.default("Could not publish existing entry while re-publishing.", "REPUBLISH_PUBLISH_ERROR", {
948
+ entry
949
+ });
950
+ }
951
+ },
952
+ deleteEntryRevision: async (initialModel, revisionId) => {
605
953
  const permission = await checkEntryPermissions({
606
954
  rwd: "d"
607
955
  });
608
- await utils.checkModelAccess(context, model);
956
+ await (0, _access.checkModelAccess)(context, initialModel);
957
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
958
+ model: initialModel,
959
+ plugins
960
+ });
609
961
  const {
610
962
  id: entryId,
611
963
  version
612
- } = (0, _utils2.parseIdentifier)(revisionId);
964
+ } = (0, _utils.parseIdentifier)(revisionId);
613
965
  const storageEntryToDelete = await storageOperations.entries.getRevisionById(model, {
614
966
  id: revisionId
615
967
  });
@@ -618,14 +970,14 @@ const createContentEntryCrud = params => {
618
970
  });
619
971
  const previousStorageEntry = await storageOperations.entries.getPreviousRevision(model, {
620
972
  entryId,
621
- version
973
+ version: version
622
974
  });
623
975
 
624
976
  if (!storageEntryToDelete) {
625
977
  throw new _handlerGraphql.NotFoundError(`Entry "${revisionId}" was not found!`);
626
978
  }
627
979
 
628
- utils.checkOwnership(context, permission, storageEntryToDelete);
980
+ (0, _ownership.checkOwnership)(context, permission, storageEntryToDelete);
629
981
  const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;
630
982
  const entryToDelete = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntryToDelete);
631
983
  /**
@@ -636,8 +988,7 @@ const createContentEntryCrud = params => {
636
988
  if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {
637
989
  return await deleteEntry({
638
990
  model,
639
- entry: entryToDelete,
640
- storageEntry: storageEntryToDelete
991
+ entry: entryToDelete
641
992
  });
642
993
  }
643
994
  /**
@@ -648,41 +999,45 @@ const createContentEntryCrud = params => {
648
999
  let entryToSetAsLatest = null;
649
1000
  let storageEntryToSetAsLatest = null;
650
1001
 
651
- if (entryToDelete.id === latestEntryRevisionId) {
1002
+ if (entryToDelete.id === latestEntryRevisionId && previousStorageEntry) {
652
1003
  entryToSetAsLatest = await (0, _entryStorage.entryFromStorageTransform)(context, model, previousStorageEntry);
653
1004
  storageEntryToSetAsLatest = previousStorageEntry;
654
1005
  }
655
1006
 
656
1007
  try {
657
- await onBeforeDeleteRevision.publish({
1008
+ await onBeforeEntryDeleteRevision.publish({
658
1009
  entry: entryToDelete,
659
1010
  model
660
1011
  });
661
1012
  await storageOperations.entries.deleteRevision(model, {
662
- entryToDelete,
663
- storageEntryToDelete,
664
- entryToSetAsLatest,
665
- storageEntryToSetAsLatest
1013
+ entry: entryToDelete,
1014
+ storageEntry: storageEntryToDelete,
1015
+ latestEntry: entryToSetAsLatest,
1016
+ latestStorageEntry: storageEntryToSetAsLatest
666
1017
  });
667
- await onAfterDeleteRevision.publish({
1018
+ await onAfterEntryDeleteRevision.publish({
668
1019
  entry: entryToDelete,
669
1020
  model
670
1021
  });
671
1022
  } catch (ex) {
672
1023
  throw new _error.default(ex.message, ex.code || "DELETE_REVISION_ERROR", {
673
1024
  error: ex,
674
- entryToDelete,
675
- storageEntryToDelete,
676
- entryToSetAsLatest,
677
- storageEntryToSetAsLatest
1025
+ entry: entryToDelete,
1026
+ storageEntry: storageEntryToDelete,
1027
+ latestEntry: entryToSetAsLatest,
1028
+ latestStorageEntry: storageEntryToSetAsLatest
678
1029
  });
679
1030
  }
680
1031
  },
681
- deleteEntry: async (model, entryId) => {
1032
+ deleteEntry: async (initialModel, entryId) => {
682
1033
  const permission = await checkEntryPermissions({
683
1034
  rwd: "d"
684
1035
  });
685
- await utils.checkModelAccess(context, model);
1036
+ await (0, _access.checkModelAccess)(context, initialModel);
1037
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1038
+ model: initialModel,
1039
+ plugins
1040
+ });
686
1041
  const storageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
687
1042
  id: entryId
688
1043
  });
@@ -691,19 +1046,22 @@ const createContentEntryCrud = params => {
691
1046
  throw new _handlerGraphql.NotFoundError(`Entry "${entryId}" was not found!`);
692
1047
  }
693
1048
 
694
- utils.checkOwnership(context, permission, storageEntry);
1049
+ (0, _ownership.checkOwnership)(context, permission, storageEntry);
695
1050
  const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntry);
696
1051
  return await deleteEntry({
697
1052
  model,
698
- entry,
699
- storageEntry
1053
+ entry
700
1054
  });
701
1055
  },
702
- publishEntry: async (model, id) => {
1056
+ publishEntry: async (initialModel, id) => {
703
1057
  const permission = await checkEntryPermissions({
704
1058
  pw: "p"
705
1059
  });
706
- await utils.checkModelAccess(context, model);
1060
+ await (0, _access.checkModelAccess)(context, initialModel);
1061
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1062
+ model: initialModel,
1063
+ plugins
1064
+ });
707
1065
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
708
1066
  id
709
1067
  });
@@ -712,7 +1070,7 @@ const createContentEntryCrud = params => {
712
1070
  throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
713
1071
  }
714
1072
 
715
- utils.checkOwnership(context, permission, originalStorageEntry);
1073
+ (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
716
1074
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
717
1075
  const currentDate = new Date().toISOString();
718
1076
 
@@ -723,21 +1081,19 @@ const createContentEntryCrud = params => {
723
1081
  publishedOn: currentDate
724
1082
  });
725
1083
 
726
- let storageEntry = undefined;
1084
+ let storageEntry = null;
727
1085
 
728
1086
  try {
729
- await onBeforePublish.publish({
1087
+ await onBeforeEntryPublish.publish({
730
1088
  entry,
731
1089
  model
732
1090
  });
733
1091
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
734
1092
  const result = await storageOperations.entries.publish(model, {
735
1093
  entry,
736
- storageEntry,
737
- originalEntry,
738
- originalStorageEntry
1094
+ storageEntry
739
1095
  });
740
- await onAfterPublish.publish({
1096
+ await onAfterEntryPublish.publish({
741
1097
  entry,
742
1098
  storageEntry: result,
743
1099
  model
@@ -753,10 +1109,14 @@ const createContentEntryCrud = params => {
753
1109
  });
754
1110
  }
755
1111
  },
756
- requestEntryChanges: async (model, id) => {
1112
+ requestEntryChanges: async (initialModel, id) => {
757
1113
  const permission = await checkEntryPermissions({
758
1114
  pw: "c"
759
1115
  });
1116
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1117
+ model: initialModel,
1118
+ plugins
1119
+ });
760
1120
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
761
1121
  id
762
1122
  });
@@ -777,27 +1137,25 @@ const createContentEntryCrud = params => {
777
1137
  throw new _error.default("You cannot request changes on your own entry.", "CANNOT_REQUEST_CHANGES_ON_OWN_ENTRY");
778
1138
  }
779
1139
 
780
- utils.checkOwnership(context, permission, originalEntry);
1140
+ (0, _ownership.checkOwnership)(context, permission, originalEntry);
781
1141
 
782
1142
  const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
783
1143
  status: STATUS_CHANGES_REQUESTED
784
1144
  });
785
1145
 
786
- let storageEntry = undefined;
1146
+ let storageEntry = null;
787
1147
 
788
1148
  try {
789
- await onBeforeRequestChanges.publish({
1149
+ await onBeforeEntryRequestChanges.publish({
790
1150
  entry,
791
1151
  model
792
1152
  });
793
1153
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
794
1154
  const result = await storageOperations.entries.requestChanges(model, {
795
- originalEntry,
796
- originalStorageEntry,
797
1155
  entry,
798
1156
  storageEntry
799
1157
  });
800
- await onAfterRequestChanges.publish({
1158
+ await onAfterEntryRequestChanges.publish({
801
1159
  entry,
802
1160
  storageEntry: result,
803
1161
  model
@@ -810,11 +1168,17 @@ const createContentEntryCrud = params => {
810
1168
  });
811
1169
  }
812
1170
  },
813
- requestEntryReview: async (model, id) => {
1171
+ requestEntryReview: async (initialModel, id) => {
814
1172
  const permission = await checkEntryPermissions({
815
1173
  pw: "r"
816
1174
  });
817
- const [entryId] = id.split("#");
1175
+ const {
1176
+ id: entryId
1177
+ } = (0, _utils.parseIdentifier)(id);
1178
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1179
+ model: initialModel,
1180
+ plugins
1181
+ });
818
1182
  const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
819
1183
  id
820
1184
  });
@@ -837,27 +1201,25 @@ const createContentEntryCrud = params => {
837
1201
  });
838
1202
  }
839
1203
 
840
- utils.checkOwnership(context, permission, originalEntry);
1204
+ (0, _ownership.checkOwnership)(context, permission, originalEntry);
841
1205
 
842
1206
  const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
843
1207
  status: STATUS_REVIEW_REQUESTED
844
1208
  });
845
1209
 
846
- let storageEntry = undefined;
1210
+ let storageEntry = null;
847
1211
 
848
1212
  try {
849
- await onBeforeRequestReview.publish({
1213
+ await onBeforeEntryRequestReview.publish({
850
1214
  entry,
851
1215
  model
852
1216
  });
853
1217
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
854
1218
  const result = await storageOperations.entries.requestReview(model, {
855
- originalEntry,
856
- originalStorageEntry,
857
1219
  entry,
858
1220
  storageEntry
859
1221
  });
860
- await onAfterRequestReview.publish({
1222
+ await onAfterEntryRequestReview.publish({
861
1223
  entry,
862
1224
  storageEntry: result,
863
1225
  model
@@ -870,11 +1232,17 @@ const createContentEntryCrud = params => {
870
1232
  });
871
1233
  }
872
1234
  },
873
- unpublishEntry: async (model, id) => {
1235
+ unpublishEntry: async (initialModel, id) => {
874
1236
  const permission = await checkEntryPermissions({
875
1237
  pw: "u"
876
1238
  });
877
- const [entryId] = id.split("#");
1239
+ const model = (0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
1240
+ model: initialModel,
1241
+ plugins
1242
+ });
1243
+ const {
1244
+ id: entryId
1245
+ } = (0, _utils.parseIdentifier)(id);
878
1246
  const originalStorageEntry = await storageOperations.entries.getPublishedRevisionByEntryId(model, {
879
1247
  id: entryId
880
1248
  });
@@ -889,28 +1257,26 @@ const createContentEntryCrud = params => {
889
1257
  });
890
1258
  }
891
1259
 
892
- utils.checkOwnership(context, permission, originalStorageEntry);
1260
+ (0, _ownership.checkOwnership)(context, permission, originalStorageEntry);
893
1261
  const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
894
1262
 
895
1263
  const entry = _objectSpread(_objectSpread({}, originalEntry), {}, {
896
1264
  status: STATUS_UNPUBLISHED
897
1265
  });
898
1266
 
899
- let storageEntry = undefined;
1267
+ let storageEntry = null;
900
1268
 
901
1269
  try {
902
- await onBeforeUnpublish.publish({
1270
+ await onBeforeEntryUnpublish.publish({
903
1271
  entry,
904
1272
  model
905
1273
  });
906
1274
  storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
907
1275
  const result = await storageOperations.entries.unpublish(model, {
908
- originalEntry,
909
- originalStorageEntry,
910
1276
  entry,
911
1277
  storageEntry
912
1278
  });
913
- await onAfterUnpublish.publish({
1279
+ await onAfterEntryUnpublish.publish({
914
1280
  entry,
915
1281
  storageEntry: result,
916
1282
  model