@webiny/api-headless-cms 6.0.0-alpha.0 → 6.0.0-alpha.2

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 (563) hide show
  1. package/constants.d.ts +1 -1
  2. package/constants.js.map +1 -1
  3. package/context.d.ts +1 -1
  4. package/context.js.map +1 -1
  5. package/crud/AccessControl/AccessControl.d.ts +2 -2
  6. package/crud/AccessControl/AccessControl.js.map +1 -1
  7. package/crud/contentEntry/abstractions/IDeleteEntry.d.ts +1 -1
  8. package/crud/contentEntry/abstractions/IDeleteEntry.js.map +1 -1
  9. package/crud/contentEntry/abstractions/IDeleteEntryOperation.d.ts +1 -1
  10. package/crud/contentEntry/abstractions/IDeleteEntryOperation.js.map +1 -1
  11. package/crud/contentEntry/abstractions/IGetEntriesByIds.d.ts +1 -1
  12. package/crud/contentEntry/abstractions/IGetEntriesByIds.js.map +1 -1
  13. package/crud/contentEntry/abstractions/IGetEntry.d.ts +1 -1
  14. package/crud/contentEntry/abstractions/IGetEntry.js.map +1 -1
  15. package/crud/contentEntry/abstractions/IGetLatestEntriesByIds.d.ts +1 -1
  16. package/crud/contentEntry/abstractions/IGetLatestEntriesByIds.js.map +1 -1
  17. package/crud/contentEntry/abstractions/IGetLatestRevisionByEntryId.d.ts +1 -1
  18. package/crud/contentEntry/abstractions/IGetLatestRevisionByEntryId.js.map +1 -1
  19. package/crud/contentEntry/abstractions/IGetPreviousRevisionByEntryId.d.ts +1 -1
  20. package/crud/contentEntry/abstractions/IGetPreviousRevisionByEntryId.js.map +1 -1
  21. package/crud/contentEntry/abstractions/IGetPublishedEntriesByIds.d.ts +1 -1
  22. package/crud/contentEntry/abstractions/IGetPublishedEntriesByIds.js.map +1 -1
  23. package/crud/contentEntry/abstractions/IGetPublishedRevisionByEntryId.d.ts +1 -1
  24. package/crud/contentEntry/abstractions/IGetPublishedRevisionByEntryId.js.map +1 -1
  25. package/crud/contentEntry/abstractions/IGetRevisionById.d.ts +1 -1
  26. package/crud/contentEntry/abstractions/IGetRevisionById.js.map +1 -1
  27. package/crud/contentEntry/abstractions/IGetRevisionsByEntryId.d.ts +1 -1
  28. package/crud/contentEntry/abstractions/IGetRevisionsByEntryId.js.map +1 -1
  29. package/crud/contentEntry/abstractions/IListEntries.d.ts +1 -1
  30. package/crud/contentEntry/abstractions/IListEntries.js.map +1 -1
  31. package/crud/contentEntry/abstractions/IListEntriesOperation.d.ts +1 -1
  32. package/crud/contentEntry/abstractions/IListEntriesOperation.js.map +1 -1
  33. package/crud/contentEntry/abstractions/IMoveEntryToBinOperation.d.ts +1 -1
  34. package/crud/contentEntry/abstractions/IMoveEntryToBinOperation.js.map +1 -1
  35. package/crud/contentEntry/abstractions/IRestoreEntryFromBin.d.ts +1 -1
  36. package/crud/contentEntry/abstractions/IRestoreEntryFromBin.js.map +1 -1
  37. package/crud/contentEntry/abstractions/IRestoreEntryFromBinOperation.d.ts +1 -1
  38. package/crud/contentEntry/abstractions/IRestoreEntryFromBinOperation.js.map +1 -1
  39. package/crud/contentEntry/afterDelete.d.ts +2 -2
  40. package/crud/contentEntry/afterDelete.js.map +1 -1
  41. package/crud/contentEntry/beforeCreate.d.ts +2 -2
  42. package/crud/contentEntry/beforeCreate.js.map +1 -1
  43. package/crud/contentEntry/beforeUpdate.d.ts +2 -2
  44. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  45. package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +5 -5
  46. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  47. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +5 -5
  48. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  49. package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +4 -4
  50. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -1
  51. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +2 -2
  52. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -1
  53. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +4 -4
  54. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -1
  55. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +4 -4
  56. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -1
  57. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +1 -1
  58. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -1
  59. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  60. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  61. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  62. package/crud/contentEntry/markLockedFields.js.map +1 -1
  63. package/crud/contentEntry/referenceFieldsMapping.d.ts +1 -1
  64. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  65. package/crud/contentEntry/searchableFields.d.ts +2 -2
  66. package/crud/contentEntry/searchableFields.js.map +1 -1
  67. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntry.d.ts +3 -3
  68. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntry.js.map +1 -1
  69. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperation.d.ts +2 -2
  70. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperation.js.map +1 -1
  71. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperationWithEvents.d.ts +3 -3
  72. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntryOperationWithEvents.js.map +1 -1
  73. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntrySecure.d.ts +3 -3
  74. package/crud/contentEntry/useCases/DeleteEntry/DeleteEntrySecure.js.map +1 -1
  75. package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBin.d.ts +3 -3
  76. package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBin.js.map +1 -1
  77. package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperation.d.ts +2 -2
  78. package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperation.js.map +1 -1
  79. package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperationWithEvents.d.ts +3 -3
  80. package/crud/contentEntry/useCases/DeleteEntry/MoveEntryToBinOperationWithEvents.js.map +1 -1
  81. package/crud/contentEntry/useCases/DeleteEntry/TransformEntryDelete.d.ts +1 -1
  82. package/crud/contentEntry/useCases/DeleteEntry/TransformEntryDelete.js.map +1 -1
  83. package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.d.ts +2 -2
  84. package/crud/contentEntry/useCases/DeleteEntry/TransformEntryMoveToBin.js.map +1 -1
  85. package/crud/contentEntry/useCases/DeleteEntry/index.d.ts +5 -5
  86. package/crud/contentEntry/useCases/DeleteEntry/index.js.map +1 -1
  87. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIds.d.ts +7 -5
  88. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIds.js +6 -2
  89. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIds.js.map +1 -1
  90. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsNotDeleted.d.ts +2 -2
  91. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsNotDeleted.js.map +1 -1
  92. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsSecure.d.ts +3 -3
  93. package/crud/contentEntry/useCases/GetEntriesByIds/GetEntriesByIdsSecure.js.map +1 -1
  94. package/crud/contentEntry/useCases/GetEntriesByIds/index.d.ts +4 -2
  95. package/crud/contentEntry/useCases/GetEntriesByIds/index.js +1 -1
  96. package/crud/contentEntry/useCases/GetEntriesByIds/index.js.map +1 -1
  97. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIds.d.ts +7 -5
  98. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIds.js +6 -2
  99. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIds.js.map +1 -1
  100. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsNotDeleted.d.ts +2 -2
  101. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsNotDeleted.js.map +1 -1
  102. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsSecure.d.ts +3 -3
  103. package/crud/contentEntry/useCases/GetLatestEntriesByIds/GetLatestEntriesByIdsSecure.js.map +1 -1
  104. package/crud/contentEntry/useCases/GetLatestEntriesByIds/index.d.ts +4 -2
  105. package/crud/contentEntry/useCases/GetLatestEntriesByIds/index.js +1 -1
  106. package/crud/contentEntry/useCases/GetLatestEntriesByIds/index.js.map +1 -1
  107. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryId.d.ts +7 -5
  108. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryId.js +7 -2
  109. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryId.js.map +1 -1
  110. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdDeleted.d.ts +2 -2
  111. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdDeleted.js.map +1 -1
  112. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdNotDeleted.d.ts +2 -2
  113. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdNotDeleted.js.map +1 -1
  114. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/index.d.ts +3 -1
  115. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/index.js +1 -1
  116. package/crud/contentEntry/useCases/GetLatestRevisionByEntryId/index.js.map +1 -1
  117. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryId.d.ts +7 -5
  118. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryId.js +7 -2
  119. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryId.js.map +1 -1
  120. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdNotDeleted.d.ts +2 -2
  121. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdNotDeleted.js.map +1 -1
  122. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/index.d.ts +3 -1
  123. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/index.js +1 -1
  124. package/crud/contentEntry/useCases/GetPreviousRevisionByEntryId/index.js.map +1 -1
  125. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIds.d.ts +7 -5
  126. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIds.js +6 -2
  127. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIds.js.map +1 -1
  128. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsNotDeleted.d.ts +2 -2
  129. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsNotDeleted.js.map +1 -1
  130. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsSecure.d.ts +3 -3
  131. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/GetPublishedEntriesByIdsSecure.js.map +1 -1
  132. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/index.d.ts +4 -2
  133. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/index.js +1 -1
  134. package/crud/contentEntry/useCases/GetPublishedEntriesByIds/index.js.map +1 -1
  135. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryId.d.ts +7 -5
  136. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryId.js +7 -2
  137. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryId.js.map +1 -1
  138. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdNotDeleted.d.ts +2 -2
  139. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdNotDeleted.js.map +1 -1
  140. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/index.d.ts +3 -1
  141. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/index.js +1 -1
  142. package/crud/contentEntry/useCases/GetPublishedRevisionByEntryId/index.js.map +1 -1
  143. package/crud/contentEntry/useCases/GetRevisionById/GetRevisionById.d.ts +7 -5
  144. package/crud/contentEntry/useCases/GetRevisionById/GetRevisionById.js +7 -2
  145. package/crud/contentEntry/useCases/GetRevisionById/GetRevisionById.js.map +1 -1
  146. package/crud/contentEntry/useCases/GetRevisionById/GetRevisionByIdNotDeleted.d.ts +2 -2
  147. package/crud/contentEntry/useCases/GetRevisionById/GetRevisionByIdNotDeleted.js.map +1 -1
  148. package/crud/contentEntry/useCases/GetRevisionById/index.d.ts +3 -1
  149. package/crud/contentEntry/useCases/GetRevisionById/index.js +1 -1
  150. package/crud/contentEntry/useCases/GetRevisionById/index.js.map +1 -1
  151. package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryId.d.ts +7 -5
  152. package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryId.js +6 -2
  153. package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryId.js.map +1 -1
  154. package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryIdNotDeleted.d.ts +2 -2
  155. package/crud/contentEntry/useCases/GetRevisionsByEntryId/GetRevisionsByEntryIdNotDeleted.js.map +1 -1
  156. package/crud/contentEntry/useCases/GetRevisionsByEntryId/index.d.ts +4 -2
  157. package/crud/contentEntry/useCases/GetRevisionsByEntryId/index.js +1 -1
  158. package/crud/contentEntry/useCases/GetRevisionsByEntryId/index.js.map +1 -1
  159. package/crud/contentEntry/useCases/ListEntries/GetEntry.d.ts +2 -2
  160. package/crud/contentEntry/useCases/ListEntries/GetEntry.js.map +1 -1
  161. package/crud/contentEntry/useCases/ListEntries/GetEntrySecure.d.ts +4 -4
  162. package/crud/contentEntry/useCases/ListEntries/GetEntrySecure.js.map +1 -1
  163. package/crud/contentEntry/useCases/ListEntries/ListEntries.d.ts +2 -2
  164. package/crud/contentEntry/useCases/ListEntries/ListEntries.js.map +1 -1
  165. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperation.d.ts +12 -5
  166. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperation.js +9 -2
  167. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperation.js.map +1 -1
  168. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationDeleted.d.ts +2 -2
  169. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationDeleted.js.map +1 -1
  170. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationLatest.d.ts +2 -2
  171. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationLatest.js.map +1 -1
  172. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationNotDeleted.d.ts +2 -2
  173. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationNotDeleted.js.map +1 -1
  174. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationPublished.d.ts +2 -2
  175. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationPublished.js.map +1 -1
  176. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithEvents.d.ts +3 -3
  177. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithEvents.js.map +1 -1
  178. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSearchableFields.d.ts +2 -2
  179. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSearchableFields.js.map +1 -1
  180. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSort.d.ts +2 -2
  181. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithSort.js.map +1 -1
  182. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithStatusCheck.d.ts +2 -2
  183. package/crud/contentEntry/useCases/ListEntries/ListEntriesOperationWithStatusCheck.js.map +1 -1
  184. package/crud/contentEntry/useCases/ListEntries/ListEntriesSecure.d.ts +4 -4
  185. package/crud/contentEntry/useCases/ListEntries/ListEntriesSecure.js.map +1 -1
  186. package/crud/contentEntry/useCases/ListEntries/index.d.ts +6 -4
  187. package/crud/contentEntry/useCases/ListEntries/index.js +1 -1
  188. package/crud/contentEntry/useCases/ListEntries/index.js.map +1 -1
  189. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBin.d.ts +3 -3
  190. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBin.js.map +1 -1
  191. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperation.d.ts +7 -5
  192. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperation.js +4 -2
  193. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperation.js.map +1 -1
  194. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperationWithEvents.d.ts +3 -3
  195. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinOperationWithEvents.js.map +1 -1
  196. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinSecure.d.ts +3 -3
  197. package/crud/contentEntry/useCases/RestoreEntryFromBin/RestoreEntryFromBinSecure.js.map +1 -1
  198. package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.d.ts +2 -2
  199. package/crud/contentEntry/useCases/RestoreEntryFromBin/TransformEntryRestoreFromBin.js.map +1 -1
  200. package/crud/contentEntry/useCases/RestoreEntryFromBin/index.d.ts +7 -5
  201. package/crud/contentEntry/useCases/RestoreEntryFromBin/index.js +1 -1
  202. package/crud/contentEntry/useCases/RestoreEntryFromBin/index.js.map +1 -1
  203. package/crud/contentEntry.crud.d.ts +5 -5
  204. package/crud/contentEntry.crud.js +16 -3
  205. package/crud/contentEntry.crud.js.map +1 -1
  206. package/crud/contentModel/beforeCreate.d.ts +2 -2
  207. package/crud/contentModel/beforeCreate.js.map +1 -1
  208. package/crud/contentModel/beforeDelete.d.ts +2 -2
  209. package/crud/contentModel/beforeDelete.js.map +1 -1
  210. package/crud/contentModel/beforeUpdate.d.ts +2 -2
  211. package/crud/contentModel/beforeUpdate.js.map +1 -1
  212. package/crud/contentModel/compatibility/modelApiName.d.ts +1 -1
  213. package/crud/contentModel/compatibility/modelApiName.js.map +1 -1
  214. package/crud/contentModel/contentModelManagerFactory.d.ts +1 -1
  215. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  216. package/crud/contentModel/createFieldStorageId.d.ts +1 -1
  217. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  218. package/crud/contentModel/defaultFields.d.ts +1 -1
  219. package/crud/contentModel/defaultFields.js.map +1 -1
  220. package/crud/contentModel/ensureTypeTag.d.ts +1 -1
  221. package/crud/contentModel/ensureTypeTag.js.map +1 -1
  222. package/crud/contentModel/fields/descriptionField.d.ts +1 -1
  223. package/crud/contentModel/fields/descriptionField.js.map +1 -1
  224. package/crud/contentModel/fields/getApplicableFieldById.d.ts +1 -1
  225. package/crud/contentModel/fields/getApplicableFieldById.js.map +1 -1
  226. package/crud/contentModel/fields/imageField.d.ts +1 -1
  227. package/crud/contentModel/fields/imageField.js.map +1 -1
  228. package/crud/contentModel/fields/titleField.d.ts +1 -1
  229. package/crud/contentModel/fields/titleField.js.map +1 -1
  230. package/crud/contentModel/listModelsFromDatabase.d.ts +3 -3
  231. package/crud/contentModel/listModelsFromDatabase.js.map +1 -1
  232. package/crud/contentModel/validate/endingAllowed.d.ts +1 -1
  233. package/crud/contentModel/validate/endingAllowed.js.map +1 -1
  234. package/crud/contentModel/validate/modelId.d.ts +1 -1
  235. package/crud/contentModel/validate/modelId.js.map +1 -1
  236. package/crud/contentModel/validate/pluralApiName.d.ts +1 -1
  237. package/crud/contentModel/validate/pluralApiName.js.map +1 -1
  238. package/crud/contentModel/validate/singularApiName.d.ts +1 -1
  239. package/crud/contentModel/validate/singularApiName.js.map +1 -1
  240. package/crud/contentModel/validateModel.d.ts +1 -1
  241. package/crud/contentModel/validateModel.js.map +1 -1
  242. package/crud/contentModel/validateModelFields.d.ts +1 -1
  243. package/crud/contentModel/validateModelFields.js.map +1 -1
  244. package/crud/contentModel/validation.d.ts +132 -132
  245. package/crud/contentModel.crud.d.ts +5 -5
  246. package/crud/contentModel.crud.js.map +1 -1
  247. package/crud/contentModelGroup/beforeCreate.d.ts +3 -3
  248. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  249. package/crud/contentModelGroup/beforeDelete.d.ts +3 -3
  250. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  251. package/crud/contentModelGroup/beforeUpdate.d.ts +3 -3
  252. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  253. package/crud/contentModelGroup/listGroupsFromDatabase.d.ts +1 -1
  254. package/crud/contentModelGroup/listGroupsFromDatabase.js.map +1 -1
  255. package/crud/contentModelGroup/validation.d.ts +2 -2
  256. package/crud/contentModelGroup.crud.d.ts +5 -5
  257. package/crud/contentModelGroup.crud.js.map +1 -1
  258. package/crud/system.crud.d.ts +4 -4
  259. package/crud/system.crud.js +10 -0
  260. package/crud/system.crud.js.map +1 -1
  261. package/export/crud/exporting.d.ts +2 -2
  262. package/export/crud/exporting.js.map +1 -1
  263. package/export/crud/importing.d.ts +2 -2
  264. package/export/crud/importing.js.map +1 -1
  265. package/export/crud/imports/importData.d.ts +2 -2
  266. package/export/crud/imports/importData.js.map +1 -1
  267. package/export/crud/imports/importGroups.d.ts +2 -2
  268. package/export/crud/imports/importGroups.js.map +1 -1
  269. package/export/crud/imports/importModels.d.ts +2 -2
  270. package/export/crud/imports/importModels.js.map +1 -1
  271. package/export/crud/imports/validateGroups.d.ts +2 -2
  272. package/export/crud/imports/validateGroups.js.map +1 -1
  273. package/export/crud/imports/validateInput.d.ts +2 -2
  274. package/export/crud/imports/validateInput.js.map +1 -1
  275. package/export/crud/imports/validateModels.d.ts +2 -2
  276. package/export/crud/imports/validateModels.js.map +1 -1
  277. package/export/crud/index.d.ts +1 -1
  278. package/export/crud/index.js.map +1 -1
  279. package/export/crud/sanitize.d.ts +2 -2
  280. package/export/crud/sanitize.js.map +1 -1
  281. package/export/graphql/index.d.ts +1 -1
  282. package/export/graphql/index.js.map +1 -1
  283. package/export/types.d.ts +1 -1
  284. package/export/types.js.map +1 -1
  285. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +3 -2
  286. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  287. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +3 -2
  288. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  289. package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +3 -2
  290. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  291. package/graphql/buildSchemaPlugins.d.ts +2 -2
  292. package/graphql/buildSchemaPlugins.js.map +1 -1
  293. package/graphql/checkEndpointAccess.d.ts +1 -1
  294. package/graphql/checkEndpointAccess.js.map +1 -1
  295. package/graphql/createExecutableSchema.d.ts +1 -1
  296. package/graphql/createExecutableSchema.js.map +1 -1
  297. package/graphql/createRequestBody.d.ts +1 -1
  298. package/graphql/createRequestBody.js.map +1 -1
  299. package/graphql/generateSchema.d.ts +2 -2
  300. package/graphql/generateSchema.js.map +1 -1
  301. package/graphql/getSchema/generateCacheId.d.ts +3 -3
  302. package/graphql/getSchema/generateCacheId.js.map +1 -1
  303. package/graphql/getSchema/generateCacheKey.d.ts +1 -1
  304. package/graphql/getSchema/generateCacheKey.js.map +1 -1
  305. package/graphql/getSchema.d.ts +4 -4
  306. package/graphql/getSchema.js.map +1 -1
  307. package/graphql/graphQLHandlerFactory.d.ts +1 -1
  308. package/graphql/graphQLHandlerFactory.js.map +1 -1
  309. package/graphql/handleRequest.d.ts +2 -2
  310. package/graphql/handleRequest.js.map +1 -1
  311. package/graphql/index.d.ts +2 -2
  312. package/graphql/index.js.map +1 -1
  313. package/graphql/scalars/RevisionIdScalarPlugin.d.ts +1 -1
  314. package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -1
  315. package/graphql/schema/baseContentSchema.d.ts +2 -2
  316. package/graphql/schema/baseContentSchema.js.map +1 -1
  317. package/graphql/schema/baseSchema.js.map +1 -1
  318. package/graphql/schema/contentEntries.d.ts +2 -2
  319. package/graphql/schema/contentEntries.js.map +1 -1
  320. package/graphql/schema/contentModelGroups.d.ts +2 -2
  321. package/graphql/schema/contentModelGroups.js.map +1 -1
  322. package/graphql/schema/contentModels.d.ts +2 -2
  323. package/graphql/schema/contentModels.js.map +1 -1
  324. package/graphql/schema/createFieldResolvers.d.ts +2 -2
  325. package/graphql/schema/createFieldResolvers.js.map +1 -1
  326. package/graphql/schema/createFieldTypePluginRecords.d.ts +2 -2
  327. package/graphql/schema/createFieldTypePluginRecords.js.map +1 -1
  328. package/graphql/schema/createManageSDL.d.ts +2 -2
  329. package/graphql/schema/createManageSDL.js.map +1 -1
  330. package/graphql/schema/createReadSDL.d.ts +2 -2
  331. package/graphql/schema/createReadSDL.js.map +1 -1
  332. package/graphql/schema/createSingularSDL.d.ts +1 -1
  333. package/graphql/schema/createSingularSDL.js.map +1 -1
  334. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.d.ts +1 -1
  335. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -1
  336. package/graphql/schema/resolvers/manage/resolveCreate.d.ts +1 -1
  337. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  338. package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +1 -1
  339. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  340. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +1 -1
  341. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  342. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +1 -1
  343. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
  344. package/graphql/schema/resolvers/manage/resolveGet.d.ts +1 -1
  345. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  346. package/graphql/schema/resolvers/manage/resolveGetByIds.d.ts +1 -1
  347. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  348. package/graphql/schema/resolvers/manage/resolveGetRevisions.d.ts +1 -1
  349. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  350. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +1 -1
  351. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -1
  352. package/graphql/schema/resolvers/manage/resolveList.d.ts +1 -1
  353. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  354. package/graphql/schema/resolvers/manage/resolveListDeleted.d.ts +1 -1
  355. package/graphql/schema/resolvers/manage/resolveListDeleted.js.map +1 -1
  356. package/graphql/schema/resolvers/manage/resolveMove.d.ts +1 -1
  357. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -1
  358. package/graphql/schema/resolvers/manage/resolvePublish.d.ts +1 -1
  359. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  360. package/graphql/schema/resolvers/manage/resolveRepublish.d.ts +1 -1
  361. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  362. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.d.ts +1 -1
  363. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js.map +1 -1
  364. package/graphql/schema/resolvers/manage/resolveUnpublish.d.ts +1 -1
  365. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  366. package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +1 -1
  367. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  368. package/graphql/schema/resolvers/manage/resolveValidate.d.ts +1 -1
  369. package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -1
  370. package/graphql/schema/resolvers/preview/resolveGet.d.ts +1 -1
  371. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  372. package/graphql/schema/resolvers/preview/resolveList.d.ts +1 -1
  373. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  374. package/graphql/schema/resolvers/read/resolveGet.d.ts +1 -1
  375. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  376. package/graphql/schema/resolvers/read/resolveList.d.ts +1 -1
  377. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  378. package/graphql/schema/resolvers/singular/resolveGet.d.ts +1 -1
  379. package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -1
  380. package/graphql/schema/resolvers/singular/resolveUpdate.d.ts +1 -1
  381. package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -1
  382. package/graphql/schema/schemaPlugins.d.ts +1 -1
  383. package/graphql/schema/schemaPlugins.js.map +1 -1
  384. package/graphql/system.d.ts +1 -1
  385. package/graphql/system.js.map +1 -1
  386. package/graphqlFields/boolean.d.ts +1 -1
  387. package/graphqlFields/boolean.js.map +1 -1
  388. package/graphqlFields/datetime.d.ts +1 -1
  389. package/graphqlFields/datetime.js.map +1 -1
  390. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +1 -1
  391. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  392. package/graphqlFields/file.d.ts +1 -1
  393. package/graphqlFields/file.js.map +1 -1
  394. package/graphqlFields/helpers.d.ts +1 -1
  395. package/graphqlFields/helpers.js.map +1 -1
  396. package/graphqlFields/index.d.ts +1 -1
  397. package/graphqlFields/index.js.map +1 -1
  398. package/graphqlFields/json.d.ts +1 -1
  399. package/graphqlFields/json.js.map +1 -1
  400. package/graphqlFields/longText.d.ts +1 -1
  401. package/graphqlFields/longText.js.map +1 -1
  402. package/graphqlFields/number.d.ts +1 -1
  403. package/graphqlFields/number.js.map +1 -1
  404. package/graphqlFields/object.d.ts +1 -1
  405. package/graphqlFields/object.js.map +1 -1
  406. package/graphqlFields/ref.d.ts +1 -1
  407. package/graphqlFields/ref.js.map +1 -1
  408. package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +1 -1
  409. package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -1
  410. package/graphqlFields/richText/richTextResolver.d.ts +2 -2
  411. package/graphqlFields/richText/richTextResolver.js.map +1 -1
  412. package/graphqlFields/richText.d.ts +1 -1
  413. package/graphqlFields/richText.js.map +1 -1
  414. package/graphqlFields/searchableJson.d.ts +1 -1
  415. package/graphqlFields/searchableJson.js +5 -0
  416. package/graphqlFields/searchableJson.js.map +1 -1
  417. package/graphqlFields/text.d.ts +1 -1
  418. package/graphqlFields/text.js.map +1 -1
  419. package/htmlRenderer/LexicalRenderer.d.ts +1 -1
  420. package/htmlRenderer/LexicalRenderer.js.map +1 -1
  421. package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -1
  422. package/index.d.ts +3 -3
  423. package/index.js.map +1 -1
  424. package/modelManager/SingletonModelManager.d.ts +1 -1
  425. package/modelManager/SingletonModelManager.js.map +1 -1
  426. package/modelManager/index.d.ts +1 -1
  427. package/modelManager/index.js.map +1 -1
  428. package/package.json +21 -21
  429. package/parameters/header.js.map +1 -1
  430. package/parameters/manual.d.ts +2 -1
  431. package/parameters/manual.js.map +1 -1
  432. package/parameters/path.js.map +1 -1
  433. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.d.ts +3 -2
  434. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js.map +1 -1
  435. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +1 -1
  436. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -1
  437. package/plugins/CmsGroupPlugin.d.ts +1 -1
  438. package/plugins/CmsGroupPlugin.js.map +1 -1
  439. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  440. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  441. package/plugins/CmsModelPlugin.d.ts +1 -1
  442. package/plugins/CmsModelPlugin.js.map +1 -1
  443. package/plugins/CmsParametersPlugin.d.ts +1 -1
  444. package/plugins/CmsParametersPlugin.js.map +1 -1
  445. package/plugins/StorageOperationsCmsModelPlugin.d.ts +1 -1
  446. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -1
  447. package/plugins/StorageTransformPlugin.d.ts +2 -2
  448. package/plugins/StorageTransformPlugin.js.map +1 -1
  449. package/storage/date.d.ts +1 -1
  450. package/storage/date.js.map +1 -1
  451. package/storage/dynamicZone.js.map +1 -1
  452. package/storage/json.js +34 -5
  453. package/storage/json.js.map +1 -1
  454. package/storage/object.js.map +1 -1
  455. package/types/context.d.ts +7 -7
  456. package/types/context.js.map +1 -1
  457. package/types/fields/dynamicZoneField.d.ts +1 -1
  458. package/types/fields/dynamicZoneField.js.map +1 -1
  459. package/types/fields/objectField.d.ts +1 -1
  460. package/types/fields/objectField.js.map +1 -1
  461. package/types/model.d.ts +3 -3
  462. package/types/model.js.map +1 -1
  463. package/types/modelAst.d.ts +1 -1
  464. package/types/modelAst.js.map +1 -1
  465. package/types/modelField.d.ts +2 -2
  466. package/types/modelField.js.map +1 -1
  467. package/types/modelGroup.d.ts +1 -1
  468. package/types/modelGroup.js.map +1 -1
  469. package/types/plugins.d.ts +6 -6
  470. package/types/plugins.js.map +1 -1
  471. package/types/types.d.ts +19 -19
  472. package/types/types.js.map +1 -1
  473. package/utils/RichTextRenderer.d.ts +2 -2
  474. package/utils/RichTextRenderer.js.map +1 -1
  475. package/utils/caching/Cache.d.ts +1 -1
  476. package/utils/caching/Cache.js.map +1 -1
  477. package/utils/caching/CacheKey.d.ts +2 -2
  478. package/utils/caching/CacheKey.js.map +1 -1
  479. package/utils/contentEntryTraverser/ContentEntryTraverser.d.ts +1 -1
  480. package/utils/contentEntryTraverser/ContentEntryTraverser.js.map +1 -1
  481. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.d.ts +1 -1
  482. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js.map +1 -1
  483. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.d.ts +1 -1
  484. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js.map +1 -1
  485. package/utils/contentModelAst/CmsModelToAstConverter.d.ts +1 -1
  486. package/utils/contentModelAst/CmsModelToAstConverter.js.map +1 -1
  487. package/utils/converters/Converter.d.ts +3 -3
  488. package/utils/converters/Converter.js.map +1 -1
  489. package/utils/converters/ConverterCollection.d.ts +2 -2
  490. package/utils/converters/ConverterCollection.js.map +1 -1
  491. package/utils/converters/valueKeyStorageConverter.d.ts +3 -3
  492. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  493. package/utils/createModelField.d.ts +1 -1
  494. package/utils/createModelField.js.map +1 -1
  495. package/utils/createTypeFromFields.d.ts +1 -1
  496. package/utils/createTypeFromFields.js.map +1 -1
  497. package/utils/entryStorage.d.ts +8 -1
  498. package/utils/entryStorage.js +37 -4
  499. package/utils/entryStorage.js.map +1 -1
  500. package/utils/getBaseFieldType.d.ts +1 -1
  501. package/utils/getBaseFieldType.js.map +1 -1
  502. package/utils/getEntryDescription.d.ts +1 -1
  503. package/utils/getEntryDescription.js.map +1 -1
  504. package/utils/getEntryImage.d.ts +1 -1
  505. package/utils/getEntryImage.js.map +1 -1
  506. package/utils/getEntryTitle.d.ts +1 -1
  507. package/utils/getEntryTitle.js.map +1 -1
  508. package/utils/getSchemaFromFieldPlugins.d.ts +4 -4
  509. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  510. package/utils/identity.d.ts +1 -1
  511. package/utils/identity.js.map +1 -1
  512. package/utils/isHeadlessCmsReady.d.ts +1 -1
  513. package/utils/isHeadlessCmsReady.js.map +1 -1
  514. package/utils/modelFieldTraverser/ModelFieldTraverser.d.ts +1 -1
  515. package/utils/modelFieldTraverser/ModelFieldTraverser.js.map +1 -1
  516. package/utils/renderFields.d.ts +1 -1
  517. package/utils/renderFields.js.map +1 -1
  518. package/utils/renderGetFilterFields.d.ts +1 -1
  519. package/utils/renderGetFilterFields.js.map +1 -1
  520. package/utils/renderInputFields.d.ts +1 -1
  521. package/utils/renderInputFields.js.map +1 -1
  522. package/utils/renderListFilterFields.d.ts +1 -1
  523. package/utils/renderListFilterFields.js.map +1 -1
  524. package/utils/renderSortEnum.d.ts +2 -2
  525. package/utils/renderSortEnum.js.map +1 -1
  526. package/validators/dateGte.d.ts +1 -1
  527. package/validators/dateGte.js.map +1 -1
  528. package/validators/dateLte.d.ts +1 -1
  529. package/validators/dateLte.js.map +1 -1
  530. package/validators/gte.d.ts +1 -1
  531. package/validators/gte.js.map +1 -1
  532. package/validators/in.d.ts +1 -1
  533. package/validators/in.js.map +1 -1
  534. package/validators/lte.d.ts +1 -1
  535. package/validators/lte.js.map +1 -1
  536. package/validators/maxLength.d.ts +1 -1
  537. package/validators/maxLength.js.map +1 -1
  538. package/validators/minLength.d.ts +1 -1
  539. package/validators/minLength.js.map +1 -1
  540. package/validators/pattern.d.ts +1 -1
  541. package/validators/pattern.js.map +1 -1
  542. package/validators/patternPlugins/email.d.ts +1 -1
  543. package/validators/patternPlugins/email.js.map +1 -1
  544. package/validators/patternPlugins/index.d.ts +1 -1
  545. package/validators/patternPlugins/index.js.map +1 -1
  546. package/validators/patternPlugins/lowerCase.d.ts +1 -1
  547. package/validators/patternPlugins/lowerCase.js.map +1 -1
  548. package/validators/patternPlugins/lowerCaseSpace.d.ts +1 -1
  549. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  550. package/validators/patternPlugins/upperCase.d.ts +1 -1
  551. package/validators/patternPlugins/upperCase.js.map +1 -1
  552. package/validators/patternPlugins/upperCaseSpace.d.ts +1 -1
  553. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  554. package/validators/patternPlugins/url.d.ts +1 -1
  555. package/validators/patternPlugins/url.js.map +1 -1
  556. package/validators/required.d.ts +1 -1
  557. package/validators/required.js.map +1 -1
  558. package/validators/timeGte.d.ts +1 -1
  559. package/validators/timeGte.js.map +1 -1
  560. package/validators/timeLte.d.ts +1 -1
  561. package/validators/timeLte.js.map +1 -1
  562. package/validators/unique.d.ts +1 -1
  563. package/validators/unique.js.map +1 -1
@@ -1,8 +1,8 @@
1
- import { CmsContext, CmsModelContext, HeadlessCmsStorageOperations } from "../types";
2
- import { Tenant } from "@webiny/api-tenancy/types";
3
- import { I18NLocale } from "@webiny/api-i18n/types";
4
- import { SecurityIdentity } from "@webiny/api-security/types";
5
- import { AccessControl } from "./AccessControl/AccessControl";
1
+ import type { CmsContext, CmsModelContext, HeadlessCmsStorageOperations } from "../types";
2
+ import type { Tenant } from "@webiny/api-tenancy/types";
3
+ import type { I18NLocale } from "@webiny/api-i18n/types";
4
+ import type { SecurityIdentity } from "@webiny/api-security/types";
5
+ import type { AccessControl } from "./AccessControl/AccessControl";
6
6
  export interface CreateModelsCrudParams {
7
7
  getTenant: () => Tenant;
8
8
  getLocale: () => I18NLocale;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","_contentModelAst","_modelManager","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","accessControl","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","fieldTypePlugins","plugins","byType","getModelToAstConverter","CmsModelToAstConverter","CmsModelFieldToAstConverterFromPlugins","listPluginModels","tenant","locale","modelPlugins","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","canAccessModel","getModelFromCache","listModels","find","m","NotFoundError","code","input","benchmark","measure","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","includePrivate","isPrivate","includePlugins","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","getSingletonEntryManager","SingletonModelManager","create","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","rwd","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","defaultFields","data","removeUndefinedValues","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","createdBy","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsEntryValues,\n CmsModel,\n CmsModelContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n ICmsModelListParams,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { AccessControl } from \"./AccessControl/AccessControl\";\nimport {\n CmsModelFieldToAstConverterFromPlugins,\n CmsModelToAstConverter\n} from \"~/utils/contentModelAst\";\nimport { SingletonModelManager } from \"~/modelManager\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n accessControl: AccessControl;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, accessControl, context } = params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async <T extends CmsEntryValues = CmsEntryValues>(\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager<T>> => {\n const manager = await contentModelManagerFactory<T>(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const fieldTypePlugins = context.plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n const getModelToAstConverter = () => {\n return new CmsModelToAstConverter(\n new CmsModelFieldToAstConverterFromPlugins(fieldTypePlugins)\n );\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"savedOn:plugin\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n\n return filterAsync(models, async model => {\n return accessControl.canAccessModel({ model });\n });\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async (input?: ICmsModelListParams) => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n let pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n let filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, async model => {\n return accessControl.canAccessModel({ model });\n });\n }\n );\n /**\n * Do we need to hide private models?\n */\n if (input?.includePrivate === false) {\n filteredModels = filteredModels.filter(model => !model.isPrivate);\n pluginModels = pluginModels.filter(model => !model.isPrivate);\n }\n /**\n * Do we need to hide plugin models?\n */\n if (input?.includePlugins === false) {\n return filteredModels;\n }\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await accessControl.ensureCanAccessModel({ model });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async <\n T extends CmsEntryValues = CmsEntryValues\n >(\n target: string | Pick<CmsModel, \"modelId\">\n ): Promise<CmsModelManager<T>> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager<T>;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager<T>(context, model);\n };\n\n const getSingletonEntryManager = async <T extends CmsEntryValues = CmsEntryValues>(\n input: CmsModel | string\n ) => {\n const model = typeof input === \"string\" ? await getModel(input) : input;\n\n const manager = await getEntryManager<T>(model);\n\n return SingletonModelManager.create<T>(manager);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n context\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await accessControl.ensureCanAccessModel({ rwd: \"d\" });\n\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"d\" });\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n getModelToAstConverter,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers,\n getSingletonEntryManager\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_CmsModelPlugin","_validation","_utils","_defaultFields","_utils2","_ensureTypeTag","_listModelsFromDatabase","_filterAsync","_contentModelAst","_modelManager","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","accessControl","context","listPluginModelsCache","createMemoryCache","listFilteredModelsCache","listDatabaseModelsCache","clearModelsCache","clear","managers","Map","updateManager","model","manager","contentModelManagerFactory","set","modelId","fieldTypePlugins","plugins","byType","getModelToAstConverter","CmsModelToAstConverter","CmsModelFieldToAstConverterFromPlugins","listPluginModels","tenant","locale","modelPlugins","CmsModelPlugin","type","cacheKey","createCacheKey","models","map","contentModel","pluralApiName","singularApiName","savedOn","join","identity","security","isAuthorizationEnabled","id","undefined","getOrSet","filter","plugin","modelTenant","modelLocale","tags","ensureTypeTag","webinyVersion","WEBINY_VERSION","filterAsync","canAccessModel","getModelFromCache","listModels","find","m","NotFoundError","code","input","benchmark","measure","pluginModels","dbCacheKey","databaseModels","listModelsFromDatabase","filteredCacheKey","get","filteredModels","includePrivate","isPrivate","includePlugins","concat","getModel","withoutAuthorization","ensureCanAccessModel","getEntryManager","target","has","getSingletonEntryManager","SingletonModelManager","create","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelBeforeUpdate","assignModelBeforeDelete","createModel","rwd","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","defaultFields","data","removeUndefinedValues","assignModelDefaultFields","group","cms","getGroup","titleFieldId","descriptionFieldId","imageFieldId","description","name","createdBy","displayName","createdOn","Date","toISOString","lockedFields","publish","createdModel","ex","updateModel","original","createModelUpdateValidation","Object","keys","length","groupId","groupData","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","userInput","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n CmsContext,\n CmsEntryValues,\n CmsModel,\n CmsModelContext,\n CmsModelFieldToGraphQLPlugin,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n ICmsModelListParams,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport type { Tenant } from \"@webiny/api-tenancy/types\";\nimport type { I18NLocale } from \"@webiny/api-i18n/types\";\nimport type { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { ensureTypeTag } from \"./contentModel/ensureTypeTag\";\nimport { listModelsFromDatabase } from \"~/crud/contentModel/listModelsFromDatabase\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport type { AccessControl } from \"./AccessControl/AccessControl\";\nimport {\n CmsModelFieldToAstConverterFromPlugins,\n CmsModelToAstConverter\n} from \"~/utils/contentModelAst\";\nimport { SingletonModelManager } from \"~/modelManager\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n accessControl: AccessControl;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, accessControl, context } = params;\n\n const listPluginModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listFilteredModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const listDatabaseModelsCache = createMemoryCache<Promise<CmsModel[]>>();\n const clearModelsCache = (): void => {\n listDatabaseModelsCache.clear();\n listFilteredModelsCache.clear();\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async <T extends CmsEntryValues = CmsEntryValues>(\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager<T>> => {\n const manager = await contentModelManagerFactory<T>(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const fieldTypePlugins = context.plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n const getModelToAstConverter = () => {\n return new CmsModelToAstConverter(\n new CmsModelFieldToAstConverterFromPlugins(fieldTypePlugins)\n );\n };\n\n const listPluginModels = async (tenant: string, locale: string): Promise<CmsModel[]> => {\n const modelPlugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n const cacheKey = createCacheKey({\n tenant,\n locale,\n models: modelPlugins\n .map(({ contentModel: model }) => {\n return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${\n model.savedOn || \"savedOn:plugin\"\n }`;\n })\n .join(\"/\"),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n return listPluginModelsCache.getOrSet(cacheKey, async () => {\n const models = modelPlugins\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n }) as unknown as CmsModel[];\n\n return filterAsync(models, async model => {\n return accessControl.canAccessModel({ model });\n });\n });\n };\n\n const getModelFromCache = async (modelId: string) => {\n const models = await listModels();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n /**\n * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.\n *\n * We always fetch the plugins and database models separately.\n * Then we combine them and run access filtering on them\n */\n const listModels = async (input?: ICmsModelListParams) => {\n return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const tenant = getTenant().id;\n const locale = getLocale().code;\n let pluginModels = await listPluginModels(tenant, locale);\n const dbCacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {\n return await listModelsFromDatabase(params);\n });\n\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n let filteredModels = await listFilteredModelsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseModels, async model => {\n return accessControl.canAccessModel({ model });\n });\n }\n );\n /**\n * Do we need to hide private models?\n */\n if (input?.includePrivate === false) {\n filteredModels = filteredModels.filter(model => !model.isPrivate);\n pluginModels = pluginModels.filter(model => !model.isPrivate);\n }\n /**\n * Do we need to hide plugin models?\n */\n if (input?.includePlugins === false) {\n return filteredModels;\n }\n\n return filteredModels.concat(pluginModels);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n const model = await context.security.withoutAuthorization(async () => {\n return await getModelFromCache(modelId);\n });\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n await accessControl.ensureCanAccessModel({ model });\n\n return model;\n });\n };\n\n const getEntryManager: CmsModelContext[\"getEntryManager\"] = async <\n T extends CmsEntryValues = CmsEntryValues\n >(\n target: string | Pick<CmsModel, \"modelId\">\n ): Promise<CmsModelManager<T>> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager<T>;\n }\n const model = await getModelFromCache(modelId);\n return await updateManager<T>(context, model);\n };\n\n const getSingletonEntryManager = async <T extends CmsEntryValues = CmsEntryValues>(\n input: CmsModel | string\n ) => {\n const model = typeof input === \"string\" ? await getModel(input) : input;\n\n const manager = await getEntryManager<T>(model);\n\n return SingletonModelManager.create<T>(manager);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n context\n });\n\n /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async input => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.cms.getGroup(data.group);\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const updateModel: CmsModelContext[\"updateModel\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n const groupId = data.group;\n if (groupId) {\n const groupData = await context.cms.getGroup(groupId);\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n };\n const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async params => {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n clearModelsCache();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\n await accessControl.ensureCanAccessModel({ rwd: \"w\" });\n\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n clearModelsCache();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n };\n const deleteModel: CmsModelContext[\"deleteModel\"] = async modelId => {\n await accessControl.ensureCanAccessModel({ rwd: \"d\" });\n\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"d\" });\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n clearModelsCache();\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n };\n const initializeModel: CmsModelContext[\"initializeModel\"] = async (modelId, data) => {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n const model = await getModel(modelId);\n\n await accessControl.ensureCanAccessModel({ model, rwd: \"w\" });\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n };\n return {\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n getModelToAstConverter,\n listModels,\n async createModel(input) {\n return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\n },\n getEntryManager,\n getEntryManagers: () => managers,\n getSingletonEntryManager\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { HeadlessCmsStorageOperations, OnGroupBeforeCreateTopicParams } from "../../types";
2
- import { Topic } from "@webiny/pubsub/types";
3
- import { PluginsContainer } from "@webiny/plugins";
1
+ import type { HeadlessCmsStorageOperations, OnGroupBeforeCreateTopicParams } from "../../types";
2
+ import type { Topic } from "@webiny/pubsub/types";
3
+ import type { PluginsContainer } from "@webiny/plugins";
4
4
  interface AssignBeforeGroupCreateParams {
5
5
  onGroupBeforeCreate: Topic<OnGroupBeforeCreateTopicParams>;
6
6
  plugins: PluginsContainer;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_toSlug","_CmsGroupPlugin","_utils","assignBeforeGroupCreate","params","onGroupBeforeCreate","plugins","storageOperations","subscribe","group","id","groups","list","where","tenant","locale","length","WebinyError","slug","trim","toSlug","name","generateAlphaNumericId","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","Error","exports"],"sources":["beforeCreate.ts"],"sourcesContent":["import { HeadlessCmsStorageOperations, OnGroupBeforeCreateTopicParams } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { toSlug } from \"~/utils/toSlug\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\n\ninterface AssignBeforeGroupCreateParams {\n onGroupBeforeCreate: Topic<OnGroupBeforeCreateTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupCreate = (params: AssignBeforeGroupCreateParams) => {\n const { onGroupBeforeCreate, plugins, storageOperations } = params;\n\n onGroupBeforeCreate.subscribe(async params => {\n const { group } = params;\n\n if (group.id) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n id: group.id\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the id \"${group.id}\" already exists.`,\n \"ID_ALREADY_EXISTS\"\n );\n }\n }\n\n if (group.slug && group.slug.trim()) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug: group.slug\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the slug \"${group.slug}\" already exists.`,\n \"SLUG_ALREADY_EXISTS\"\n );\n }\n } else {\n const slug = toSlug(group.name);\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug\n }\n });\n\n if (groups.length === 0) {\n group.slug = slug;\n } else {\n group.slug = `${slug}-${generateAlphaNumericId(8)}`;\n }\n }\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(\n `Cannot create \"${group.slug}\" content model group because one is already registered via a plugin.`\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAOO,MAAMI,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,OAAO;IAAEC;EAAkB,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,IAAIK,KAAK,CAACC,EAAE,EAAE;MACV,MAAMC,MAAM,GAAG,MAAMJ,iBAAiB,CAACI,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBL,EAAE,EAAED,KAAK,CAACC;QACd;MACJ,CAAC,CAAC;MACF,IAAIC,MAAM,CAACK,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAIC,cAAW,CACjB,0BAA0BR,KAAK,CAACC,EAAE,mBAAmB,EACrD,mBACJ,CAAC;MACL;IACJ;IAEA,IAAID,KAAK,CAACS,IAAI,IAAIT,KAAK,CAACS,IAAI,CAACC,IAAI,CAAC,CAAC,EAAE;MACjC,MAAMR,MAAM,GAAG,MAAMJ,iBAAiB,CAACI,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBG,IAAI,EAAET,KAAK,CAACS;QAChB;MACJ,CAAC,CAAC;MACF,IAAIP,MAAM,CAACK,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAIC,cAAW,CACjB,4BAA4BR,KAAK,CAACS,IAAI,mBAAmB,EACzD,qBACJ,CAAC;MACL;IACJ,CAAC,MAAM;MACH,MAAMA,IAAI,GAAG,IAAAE,cAAM,EAACX,KAAK,CAACY,IAAI,CAAC;MAC/B,MAAMV,MAAM,GAAG,MAAMJ,iBAAiB,CAACI,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBG;QACJ;MACJ,CAAC,CAAC;MAEF,IAAIP,MAAM,CAACK,MAAM,KAAK,CAAC,EAAE;QACrBP,KAAK,CAACS,IAAI,GAAGA,IAAI;MACrB,CAAC,MAAM;QACHT,KAAK,CAACS,IAAI,GAAG,GAAGA,IAAI,IAAI,IAAAI,6BAAsB,EAAC,CAAC,CAAC,EAAE;MACvD;IACJ;IAEA,MAAMC,WAAW,GAAGjB,OAAO,CACtBkB,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACX,IAAI,KAAKT,KAAK,CAACS,IAAI,CAAC;IAE7D,IAAIK,WAAW,EAAE;MACb,MAAM,IAAIO,KAAK,CACX,kBAAkBrB,KAAK,CAACS,IAAI,uEAChC,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACa,OAAA,CAAA5B,uBAAA,GAAAA,uBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_toSlug","_CmsGroupPlugin","_utils","assignBeforeGroupCreate","params","onGroupBeforeCreate","plugins","storageOperations","subscribe","group","id","groups","list","where","tenant","locale","length","WebinyError","slug","trim","toSlug","name","generateAlphaNumericId","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","Error","exports"],"sources":["beforeCreate.ts"],"sourcesContent":["import type { HeadlessCmsStorageOperations, OnGroupBeforeCreateTopicParams } from \"~/types\";\nimport type { Topic } from \"@webiny/pubsub/types\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { toSlug } from \"~/utils/toSlug\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\n\ninterface AssignBeforeGroupCreateParams {\n onGroupBeforeCreate: Topic<OnGroupBeforeCreateTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupCreate = (params: AssignBeforeGroupCreateParams) => {\n const { onGroupBeforeCreate, plugins, storageOperations } = params;\n\n onGroupBeforeCreate.subscribe(async params => {\n const { group } = params;\n\n if (group.id) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n id: group.id\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the id \"${group.id}\" already exists.`,\n \"ID_ALREADY_EXISTS\"\n );\n }\n }\n\n if (group.slug && group.slug.trim()) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug: group.slug\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the slug \"${group.slug}\" already exists.`,\n \"SLUG_ALREADY_EXISTS\"\n );\n }\n } else {\n const slug = toSlug(group.name);\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug\n }\n });\n\n if (groups.length === 0) {\n group.slug = slug;\n } else {\n group.slug = `${slug}-${generateAlphaNumericId(8)}`;\n }\n }\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(\n `Cannot create \"${group.slug}\" content model group because one is already registered via a plugin.`\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAOO,MAAMI,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,OAAO;IAAEC;EAAkB,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,IAAIK,KAAK,CAACC,EAAE,EAAE;MACV,MAAMC,MAAM,GAAG,MAAMJ,iBAAiB,CAACI,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBL,EAAE,EAAED,KAAK,CAACC;QACd;MACJ,CAAC,CAAC;MACF,IAAIC,MAAM,CAACK,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAIC,cAAW,CACjB,0BAA0BR,KAAK,CAACC,EAAE,mBAAmB,EACrD,mBACJ,CAAC;MACL;IACJ;IAEA,IAAID,KAAK,CAACS,IAAI,IAAIT,KAAK,CAACS,IAAI,CAACC,IAAI,CAAC,CAAC,EAAE;MACjC,MAAMR,MAAM,GAAG,MAAMJ,iBAAiB,CAACI,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBG,IAAI,EAAET,KAAK,CAACS;QAChB;MACJ,CAAC,CAAC;MACF,IAAIP,MAAM,CAACK,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAIC,cAAW,CACjB,4BAA4BR,KAAK,CAACS,IAAI,mBAAmB,EACzD,qBACJ,CAAC;MACL;IACJ,CAAC,MAAM;MACH,MAAMA,IAAI,GAAG,IAAAE,cAAM,EAACX,KAAK,CAACY,IAAI,CAAC;MAC/B,MAAMV,MAAM,GAAG,MAAMJ,iBAAiB,CAACI,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEL,KAAK,CAACK,MAAM;UACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBG;QACJ;MACJ,CAAC,CAAC;MAEF,IAAIP,MAAM,CAACK,MAAM,KAAK,CAAC,EAAE;QACrBP,KAAK,CAACS,IAAI,GAAGA,IAAI;MACrB,CAAC,MAAM;QACHT,KAAK,CAACS,IAAI,GAAG,GAAGA,IAAI,IAAI,IAAAI,6BAAsB,EAAC,CAAC,CAAC,EAAE;MACvD;IACJ;IAEA,MAAMC,WAAW,GAAGjB,OAAO,CACtBkB,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACX,IAAI,KAAKT,KAAK,CAACS,IAAI,CAAC;IAE7D,IAAIK,WAAW,EAAE;MACb,MAAM,IAAIO,KAAK,CACX,kBAAkBrB,KAAK,CAACS,IAAI,uEAChC,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACa,OAAA,CAAA5B,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { Topic } from "@webiny/pubsub/types";
2
- import { OnGroupBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from "../../types";
3
- import { PluginsContainer } from "@webiny/plugins";
1
+ import type { Topic } from "@webiny/pubsub/types";
2
+ import type { OnGroupBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from "../../types";
3
+ import type { PluginsContainer } from "@webiny/plugins";
4
4
  interface AssignBeforeGroupDeleteParams {
5
5
  onGroupBeforeDelete: Topic<OnGroupBeforeDeleteTopicParams>;
6
6
  plugins: PluginsContainer;
@@ -1 +1 @@
1
- {"version":3,"names":["_CmsGroupPlugin","require","_error","_interopRequireDefault","assignBeforeGroupDelete","params","onGroupBeforeDelete","plugins","storageOperations","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","models","list","where","tenant","locale","items","filter","model","id","length","WebinyError","exports"],"sources":["beforeDelete.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { OnGroupBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ninterface AssignBeforeGroupDeleteParams {\n onGroupBeforeDelete: Topic<OnGroupBeforeDeleteTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupDelete = (params: AssignBeforeGroupDeleteParams) => {\n const { onGroupBeforeDelete, plugins, storageOperations } = params;\n\n onGroupBeforeDelete.subscribe(async params => {\n const { group } = params;\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(`Cms Groups defined via plugins cannot be deleted.`);\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: group.tenant,\n locale: group.locale\n }\n });\n const items = models.filter(model => {\n return model.group.id === group.id;\n });\n if (items.length > 0) {\n throw new WebinyError(\n \"Cannot delete this group because there are models that belong to it.\",\n \"BEFORE_DELETE_ERROR\",\n {\n group\n }\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAOO,MAAMG,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,OAAO;IAAEC;EAAkB,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,MAAMM,WAAW,GAAGJ,OAAO,CACtBK,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACC,IAAI,KAAKR,KAAK,CAACQ,IAAI,CAAC;IAE7D,IAAIP,WAAW,EAAE;MACb,MAAM,IAAIQ,KAAK,CAAC,mDAAmD,CAAC;IACxE;IAEA,MAAMC,MAAM,GAAG,MAAMZ,iBAAiB,CAACY,MAAM,CAACC,IAAI,CAAC;MAC/CC,KAAK,EAAE;QACHC,MAAM,EAAEb,KAAK,CAACa,MAAM;QACpBC,MAAM,EAAEd,KAAK,CAACc;MAClB;IACJ,CAAC,CAAC;IACF,MAAMC,KAAK,GAAGL,MAAM,CAACM,MAAM,CAACC,KAAK,IAAI;MACjC,OAAOA,KAAK,CAACjB,KAAK,CAACkB,EAAE,KAAKlB,KAAK,CAACkB,EAAE;IACtC,CAAC,CAAC;IACF,IAAIH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;MAClB,MAAM,IAAIC,cAAW,CACjB,sEAAsE,EACtE,qBAAqB,EACrB;QACIpB;MACJ,CACJ,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACqB,OAAA,CAAA3B,uBAAA,GAAAA,uBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_CmsGroupPlugin","require","_error","_interopRequireDefault","assignBeforeGroupDelete","params","onGroupBeforeDelete","plugins","storageOperations","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","models","list","where","tenant","locale","items","filter","model","id","length","WebinyError","exports"],"sources":["beforeDelete.ts"],"sourcesContent":["import type { Topic } from \"@webiny/pubsub/types\";\nimport type { OnGroupBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ninterface AssignBeforeGroupDeleteParams {\n onGroupBeforeDelete: Topic<OnGroupBeforeDeleteTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupDelete = (params: AssignBeforeGroupDeleteParams) => {\n const { onGroupBeforeDelete, plugins, storageOperations } = params;\n\n onGroupBeforeDelete.subscribe(async params => {\n const { group } = params;\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(`Cms Groups defined via plugins cannot be deleted.`);\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: group.tenant,\n locale: group.locale\n }\n });\n const items = models.filter(model => {\n return model.group.id === group.id;\n });\n if (items.length > 0) {\n throw new WebinyError(\n \"Cannot delete this group because there are models that belong to it.\",\n \"BEFORE_DELETE_ERROR\",\n {\n group\n }\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAOO,MAAMG,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,OAAO;IAAEC;EAAkB,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,MAAMM,WAAW,GAAGJ,OAAO,CACtBK,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACC,IAAI,KAAKR,KAAK,CAACQ,IAAI,CAAC;IAE7D,IAAIP,WAAW,EAAE;MACb,MAAM,IAAIQ,KAAK,CAAC,mDAAmD,CAAC;IACxE;IAEA,MAAMC,MAAM,GAAG,MAAMZ,iBAAiB,CAACY,MAAM,CAACC,IAAI,CAAC;MAC/CC,KAAK,EAAE;QACHC,MAAM,EAAEb,KAAK,CAACa,MAAM;QACpBC,MAAM,EAAEd,KAAK,CAACc;MAClB;IACJ,CAAC,CAAC;IACF,MAAMC,KAAK,GAAGL,MAAM,CAACM,MAAM,CAACC,KAAK,IAAI;MACjC,OAAOA,KAAK,CAACjB,KAAK,CAACkB,EAAE,KAAKlB,KAAK,CAACkB,EAAE;IACtC,CAAC,CAAC;IACF,IAAIH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;MAClB,MAAM,IAAIC,cAAW,CACjB,sEAAsE,EACtE,qBAAqB,EACrB;QACIpB;MACJ,CACJ,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACqB,OAAA,CAAA3B,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -1,6 +1,6 @@
1
- import { Topic } from "@webiny/pubsub/types";
2
- import { OnGroupBeforeUpdateTopicParams } from "../../types";
3
- import { PluginsContainer } from "@webiny/plugins";
1
+ import type { Topic } from "@webiny/pubsub/types";
2
+ import type { OnGroupBeforeUpdateTopicParams } from "../../types";
3
+ import type { PluginsContainer } from "@webiny/plugins";
4
4
  interface AssignBeforeGroupUpdateParams {
5
5
  onGroupBeforeUpdate: Topic<OnGroupBeforeUpdateTopicParams>;
6
6
  plugins: PluginsContainer;
@@ -1 +1 @@
1
- {"version":3,"names":["_CmsGroupPlugin","require","assignBeforeGroupUpdate","params","onGroupBeforeUpdate","plugins","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","exports"],"sources":["beforeUpdate.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { OnGroupBeforeUpdateTopicParams } from \"~/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface AssignBeforeGroupUpdateParams {\n onGroupBeforeUpdate: Topic<OnGroupBeforeUpdateTopicParams>;\n plugins: PluginsContainer;\n}\nexport const assignBeforeGroupUpdate = (params: AssignBeforeGroupUpdateParams) => {\n const { onGroupBeforeUpdate, plugins } = params;\n\n onGroupBeforeUpdate.subscribe(({ group }) => {\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n if (!groupPlugin) {\n return;\n }\n throw new Error(`Cms Groups defined via plugins cannot be updated.`);\n });\n};\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAOO,MAAMC,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAE/CC,mBAAmB,CAACE,SAAS,CAAC,CAAC;IAAEC;EAAM,CAAC,KAAK;IACzC,MAAMC,WAAW,GAAGH,OAAO,CACtBI,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACC,IAAI,KAAKR,KAAK,CAACQ,IAAI,CAAC;IAC7D,IAAI,CAACP,WAAW,EAAE;MACd;IACJ;IACA,MAAM,IAAIQ,KAAK,CAAC,mDAAmD,CAAC;EACxE,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAf,uBAAA,GAAAA,uBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_CmsGroupPlugin","require","assignBeforeGroupUpdate","params","onGroupBeforeUpdate","plugins","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","exports"],"sources":["beforeUpdate.ts"],"sourcesContent":["import type { Topic } from \"@webiny/pubsub/types\";\nimport type { OnGroupBeforeUpdateTopicParams } from \"~/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport type { PluginsContainer } from \"@webiny/plugins\";\n\ninterface AssignBeforeGroupUpdateParams {\n onGroupBeforeUpdate: Topic<OnGroupBeforeUpdateTopicParams>;\n plugins: PluginsContainer;\n}\nexport const assignBeforeGroupUpdate = (params: AssignBeforeGroupUpdateParams) => {\n const { onGroupBeforeUpdate, plugins } = params;\n\n onGroupBeforeUpdate.subscribe(({ group }) => {\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n if (!groupPlugin) {\n return;\n }\n throw new Error(`Cms Groups defined via plugins cannot be updated.`);\n });\n};\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AAOO,MAAMC,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAE/CC,mBAAmB,CAACE,SAAS,CAAC,CAAC;IAAEC;EAAM,CAAC,KAAK;IACzC,MAAMC,WAAW,GAAGH,OAAO,CACtBI,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACC,IAAI,KAAKR,KAAK,CAACQ,IAAI,CAAC;IAC7D,IAAI,CAACP,WAAW,EAAE;MACd;IACJ;IACA,MAAM,IAAIQ,KAAK,CAAC,mDAAmD,CAAC;EACxE,CAAC,CAAC;AACN,CAAC;AAACC,OAAA,CAAAf,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { HeadlessCmsStorageOperations } from "../../types";
1
+ import type { HeadlessCmsStorageOperations } from "../../types";
2
2
  interface Params {
3
3
  storageOperations: HeadlessCmsStorageOperations;
4
4
  tenant: string;
@@ -1 +1 @@
1
- {"version":3,"names":["listGroupsFromDatabase","params","storageOperations","tenant","locale","groups","list","where","exports"],"sources":["listGroupsFromDatabase.ts"],"sourcesContent":["import { HeadlessCmsStorageOperations } from \"~/types\";\n\ninterface Params {\n storageOperations: HeadlessCmsStorageOperations;\n tenant: string;\n locale: string;\n}\n\nexport const listGroupsFromDatabase = async (params: Params) => {\n const { storageOperations, tenant, locale } = params;\n\n return await storageOperations.groups.list({\n where: {\n tenant,\n locale\n }\n });\n};\n"],"mappings":";;;;;;AAQO,MAAMA,sBAAsB,GAAG,MAAOC,MAAc,IAAK;EAC5D,MAAM;IAAEC,iBAAiB;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGH,MAAM;EAEpD,OAAO,MAAMC,iBAAiB,CAACG,MAAM,CAACC,IAAI,CAAC;IACvCC,KAAK,EAAE;MACHJ,MAAM;MACNC;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACI,OAAA,CAAAR,sBAAA,GAAAA,sBAAA","ignoreList":[]}
1
+ {"version":3,"names":["listGroupsFromDatabase","params","storageOperations","tenant","locale","groups","list","where","exports"],"sources":["listGroupsFromDatabase.ts"],"sourcesContent":["import type { HeadlessCmsStorageOperations } from \"~/types\";\n\ninterface Params {\n storageOperations: HeadlessCmsStorageOperations;\n tenant: string;\n locale: string;\n}\n\nexport const listGroupsFromDatabase = async (params: Params) => {\n const { storageOperations, tenant, locale } = params;\n\n return await storageOperations.groups.list({\n where: {\n tenant,\n locale\n }\n });\n};\n"],"mappings":";;;;;;AAQO,MAAMA,sBAAsB,GAAG,MAAOC,MAAc,IAAK;EAC5D,MAAM;IAAEC,iBAAiB;IAAEC,MAAM;IAAEC;EAAO,CAAC,GAAGH,MAAM;EAEpD,OAAO,MAAMC,iBAAiB,CAACG,MAAM,CAACC,IAAI,CAAC;IACvCC,KAAK,EAAE;MACHJ,MAAM;MACNC;IACJ;EACJ,CAAC,CAAC;AACN,CAAC;AAACI,OAAA,CAAAR,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -7,16 +7,16 @@ export declare const createGroupCreateValidation: () => zod.ZodObject<{
7
7
  icon: zod.ZodString;
8
8
  }, "strip", zod.ZodTypeAny, {
9
9
  name: string;
10
- description: string;
11
10
  slug: string;
11
+ description: string;
12
12
  icon: string;
13
13
  id?: string | null | undefined;
14
14
  }, {
15
15
  name: string;
16
16
  icon: string;
17
17
  id?: string | null | undefined;
18
- description?: string | null | undefined;
19
18
  slug?: string | undefined;
19
+ description?: string | null | undefined;
20
20
  }>;
21
21
  export declare const createGroupUpdateValidation: () => zod.ZodObject<{
22
22
  name: zod.ZodOptional<zod.ZodString>;
@@ -1,8 +1,8 @@
1
- import { CmsContext, CmsGroupContext, HeadlessCmsStorageOperations } from "../types";
2
- import { Tenant } from "@webiny/api-tenancy/types";
3
- import { I18NLocale } from "@webiny/api-i18n/types";
4
- import { SecurityIdentity } from "@webiny/api-security/types";
5
- import { AccessControl } from "./AccessControl/AccessControl";
1
+ import type { CmsContext, CmsGroupContext, HeadlessCmsStorageOperations } from "../types";
2
+ import type { Tenant } from "@webiny/api-tenancy/types";
3
+ import type { I18NLocale } from "@webiny/api-i18n/types";
4
+ import type { SecurityIdentity } from "@webiny/api-security/types";
5
+ import type { AccessControl } from "./AccessControl/AccessControl";
6
6
  export interface CreateModelGroupsCrudParams {
7
7
  getTenant: () => Tenant;
8
8
  getLocale: () => I18NLocale;
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_CmsGroupPlugin","_pubsub","_beforeUpdate","_beforeCreate","_beforeDelete","_validation","_utils","_filterAsync","_utils2","_listGroupsFromDatabase","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","accessControl","context","filterGroup","group","canAccessGroup","listDatabaseGroupsCache","createMemoryCache","listFilteredDatabaseGroupsCache","listPluginGroupsCache","clearGroupsCache","clear","fetchPluginGroups","tenant","locale","pluginGroups","plugins","byType","CmsGroupPlugin","type","cacheKey","createCacheKey","identity","security","isAuthorizationEnabled","id","undefined","groups","map","contentModelGroup","slug","savedOn","join","getOrSet","filter","plugin","t","l","webinyVersion","WEBINY_VERSION","filterAsync","fetchGroups","databaseGroups","listGroupsFromDatabase","filteredCacheKey","dbCacheKey","get","concat","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","ensureCanAccessGroup","withoutAuthorization","code","find","NotFoundError","listGroups","where","createGroup","input","rwd","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","data","mdbid","createdOn","Date","toISOString","createdBy","displayName","publish","create","ex","WebinyError","message","updateGroup","original","createGroupUpdateValidation","Object","keys","length","updatedGroup","update","deleteGroup","delete","benchmark","measure","exports"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport {\n CmsContext,\n CmsGroup,\n CmsGroupContext,\n HeadlessCmsStorageOperations,\n OnGroupAfterCreateTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeCreateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupDeleteErrorTopicParams,\n OnGroupUpdateErrorTopicParams\n} from \"~/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError, mdbid } from \"@webiny/utils\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { listGroupsFromDatabase } from \"~/crud/contentModelGroup/listGroupsFromDatabase\";\nimport { AccessControl } from \"./AccessControl/AccessControl\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n accessControl: AccessControl;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, accessControl, context } = params;\n\n const filterGroup = async (group?: CmsGroup) => {\n if (!group) {\n return false;\n }\n\n return accessControl.canAccessGroup({ group });\n };\n\n const listDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listFilteredDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listPluginGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const clearGroupsCache = (): void => {\n listPluginGroupsCache.clear();\n listDatabaseGroupsCache.clear();\n listFilteredDatabaseGroupsCache.clear();\n };\n\n const fetchPluginGroups = (tenant: string, locale: string): Promise<CmsGroup[]> => {\n const pluginGroups = context.plugins.byType<CmsGroupPlugin>(CmsGroupPlugin.type);\n\n const cacheKey = createCacheKey({\n tenant,\n locale,\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined,\n groups: pluginGroups\n .map(({ contentModelGroup: group }) => {\n return `${group.id}#${group.slug}#${group.savedOn || \"unknown\"}`;\n })\n .join(\"/\")\n });\n\n return listPluginGroupsCache.getOrSet(cacheKey, async (): Promise<CmsGroup[]> => {\n const groups = pluginGroups\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n });\n return filterAsync(groups, filterGroup);\n });\n };\n\n const fetchGroups = async (tenant: string, locale: string) => {\n const pluginGroups = await fetchPluginGroups(tenant, locale);\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const cacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseGroups = await listDatabaseGroupsCache.getOrSet(cacheKey, async () => {\n return await listGroupsFromDatabase({\n storageOperations,\n tenant,\n locale\n });\n });\n const filteredCacheKey = createCacheKey({\n dbCacheKey: cacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const groups = await listFilteredDatabaseGroupsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseGroups, filterGroup);\n }\n );\n\n return groups.concat(pluginGroups);\n };\n\n /**\n * Create\n */\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n const onGroupCreateError = createTopic<OnGroupCreateErrorTopicParams>(\"cms.onGroupCreateError\");\n /**\n * Update\n */\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n const onGroupUpdateError = createTopic<OnGroupUpdateErrorTopicParams>(\"cms.onGroupUpdateError\");\n /**\n * Delete\n */\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n const onGroupDeleteError = createTopic<OnGroupDeleteErrorTopicParams>(\"cms.onGroupDeleteError\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n /**\n * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n await accessControl.ensureCanAccessGroup();\n\n const groups = await context.security.withoutAuthorization(async () => {\n return fetchGroups(getTenant().id, getLocale().code);\n });\n const group = groups.find(group => group.id === id);\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n\n await accessControl.ensureCanAccessGroup({ group });\n\n return group;\n };\n\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n\n await accessControl.ensureCanAccessGroup();\n\n return fetchGroups(tenant || getTenant().id, locale || getLocale().code);\n };\n\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await accessControl.ensureCanAccessGroup({ rwd: \"w\" });\n\n const result = await createGroupCreateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n const identity = getIdentity();\n\n const id = data.id || mdbid();\n const group: CmsGroup = {\n ...data,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n webinyVersion: context.WEBINY_VERSION\n };\n\n await accessControl.ensureCanAccessGroup({ group, rwd: \"w\" });\n\n try {\n await onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n await onGroupCreateError.publish({\n input,\n group,\n error: ex\n });\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n };\n const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n await accessControl.ensureCanAccessGroup({ rwd: \"w\" });\n\n const original = await getGroup(id);\n\n await accessControl.ensureCanAccessGroup({ group: original });\n\n const result = await createGroupUpdateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(data).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...data,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n await onGroupUpdateError.publish({\n input,\n original,\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n };\n const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n await accessControl.ensureCanAccessGroup({ rwd: \"d\" });\n\n const group = await getGroup(id);\n\n await accessControl.ensureCanAccessGroup({ group });\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.publish({\n group\n });\n } catch (ex) {\n await onGroupDeleteError.publish({\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n };\n\n return {\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupCreateError,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupUpdateError,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n onGroupDeleteError,\n clearGroupsCache,\n getGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_CmsGroupPlugin","_pubsub","_beforeUpdate","_beforeCreate","_beforeDelete","_validation","_utils","_filterAsync","_utils2","_listGroupsFromDatabase","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","accessControl","context","filterGroup","group","canAccessGroup","listDatabaseGroupsCache","createMemoryCache","listFilteredDatabaseGroupsCache","listPluginGroupsCache","clearGroupsCache","clear","fetchPluginGroups","tenant","locale","pluginGroups","plugins","byType","CmsGroupPlugin","type","cacheKey","createCacheKey","identity","security","isAuthorizationEnabled","id","undefined","groups","map","contentModelGroup","slug","savedOn","join","getOrSet","filter","plugin","t","l","webinyVersion","WEBINY_VERSION","filterAsync","fetchGroups","databaseGroups","listGroupsFromDatabase","filteredCacheKey","dbCacheKey","get","concat","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","ensureCanAccessGroup","withoutAuthorization","code","find","NotFoundError","listGroups","where","createGroup","input","rwd","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","data","mdbid","createdOn","Date","toISOString","createdBy","displayName","publish","create","ex","WebinyError","message","updateGroup","original","createGroupUpdateValidation","Object","keys","length","updatedGroup","update","deleteGroup","delete","benchmark","measure","exports"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport type {\n CmsContext,\n CmsGroup,\n CmsGroupContext,\n HeadlessCmsStorageOperations,\n OnGroupAfterCreateTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeCreateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupDeleteErrorTopicParams,\n OnGroupUpdateErrorTopicParams\n} from \"~/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport type { Tenant } from \"@webiny/api-tenancy/types\";\nimport type { I18NLocale } from \"@webiny/api-i18n/types\";\nimport type { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError, mdbid } from \"@webiny/utils\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { createCacheKey, createMemoryCache } from \"~/utils\";\nimport { listGroupsFromDatabase } from \"~/crud/contentModelGroup/listGroupsFromDatabase\";\nimport type { AccessControl } from \"./AccessControl/AccessControl\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n accessControl: AccessControl;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, accessControl, context } = params;\n\n const filterGroup = async (group?: CmsGroup) => {\n if (!group) {\n return false;\n }\n\n return accessControl.canAccessGroup({ group });\n };\n\n const listDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listFilteredDatabaseGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const listPluginGroupsCache = createMemoryCache<Promise<CmsGroup[]>>();\n const clearGroupsCache = (): void => {\n listPluginGroupsCache.clear();\n listDatabaseGroupsCache.clear();\n listFilteredDatabaseGroupsCache.clear();\n };\n\n const fetchPluginGroups = (tenant: string, locale: string): Promise<CmsGroup[]> => {\n const pluginGroups = context.plugins.byType<CmsGroupPlugin>(CmsGroupPlugin.type);\n\n const cacheKey = createCacheKey({\n tenant,\n locale,\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined,\n groups: pluginGroups\n .map(({ contentModelGroup: group }) => {\n return `${group.id}#${group.slug}#${group.savedOn || \"unknown\"}`;\n })\n .join(\"/\")\n });\n\n return listPluginGroupsCache.getOrSet(cacheKey, async (): Promise<CmsGroup[]> => {\n const groups = pluginGroups\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n });\n return filterAsync(groups, filterGroup);\n });\n };\n\n const fetchGroups = async (tenant: string, locale: string) => {\n const pluginGroups = await fetchPluginGroups(tenant, locale);\n /**\n * Maybe we can cache based on permissions, not the identity id?\n *\n * TODO: @adrian please check if possible.\n */\n const cacheKey = createCacheKey({\n tenant,\n locale\n });\n const databaseGroups = await listDatabaseGroupsCache.getOrSet(cacheKey, async () => {\n return await listGroupsFromDatabase({\n storageOperations,\n tenant,\n locale\n });\n });\n const filteredCacheKey = createCacheKey({\n dbCacheKey: cacheKey.get(),\n identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined\n });\n\n const groups = await listFilteredDatabaseGroupsCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseGroups, filterGroup);\n }\n );\n\n return groups.concat(pluginGroups);\n };\n\n /**\n * Create\n */\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n const onGroupCreateError = createTopic<OnGroupCreateErrorTopicParams>(\"cms.onGroupCreateError\");\n /**\n * Update\n */\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n const onGroupUpdateError = createTopic<OnGroupUpdateErrorTopicParams>(\"cms.onGroupUpdateError\");\n /**\n * Delete\n */\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n const onGroupDeleteError = createTopic<OnGroupDeleteErrorTopicParams>(\"cms.onGroupDeleteError\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n /**\n * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n await accessControl.ensureCanAccessGroup();\n\n const groups = await context.security.withoutAuthorization(async () => {\n return fetchGroups(getTenant().id, getLocale().code);\n });\n const group = groups.find(group => group.id === id);\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n\n await accessControl.ensureCanAccessGroup({ group });\n\n return group;\n };\n\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n\n await accessControl.ensureCanAccessGroup();\n\n return fetchGroups(tenant || getTenant().id, locale || getLocale().code);\n };\n\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await accessControl.ensureCanAccessGroup({ rwd: \"w\" });\n\n const result = await createGroupCreateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n const identity = getIdentity();\n\n const id = data.id || mdbid();\n const group: CmsGroup = {\n ...data,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n webinyVersion: context.WEBINY_VERSION\n };\n\n await accessControl.ensureCanAccessGroup({ group, rwd: \"w\" });\n\n try {\n await onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n await onGroupCreateError.publish({\n input,\n group,\n error: ex\n });\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n };\n const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n await accessControl.ensureCanAccessGroup({ rwd: \"w\" });\n\n const original = await getGroup(id);\n\n await accessControl.ensureCanAccessGroup({ group: original });\n\n const result = await createGroupUpdateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(data).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...data,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n await onGroupUpdateError.publish({\n input,\n original,\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n };\n const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n await accessControl.ensureCanAccessGroup({ rwd: \"d\" });\n\n const group = await getGroup(id);\n\n await accessControl.ensureCanAccessGroup({ group });\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.publish({\n group\n });\n } catch (ex) {\n await onGroupDeleteError.publish({\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n };\n\n return {\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupCreateError,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupUpdateError,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n onGroupDeleteError,\n clearGroupsCache,\n getGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
- import { CmsContext, CmsSystemContext, HeadlessCmsStorageOperations } from "../types";
2
- import { Tenant } from "@webiny/api-tenancy/types";
3
- import { SecurityIdentity } from "@webiny/api-security/types";
4
- import { I18NLocale } from "@webiny/api-i18n/types";
1
+ import type { CmsContext, CmsSystemContext, HeadlessCmsStorageOperations } from "../types";
2
+ import type { Tenant } from "@webiny/api-tenancy/types";
3
+ import type { SecurityIdentity } from "@webiny/api-security/types";
4
+ import type { I18NLocale } from "@webiny/api-i18n/types";
5
5
  interface CreateSystemCrudParams {
6
6
  getTenant: () => Tenant;
7
7
  getLocale: () => I18NLocale;
@@ -107,6 +107,16 @@ const createSystemCrud = params => {
107
107
  tenant: getTenant().id,
108
108
  locale: getLocale().code
109
109
  });
110
+
111
+ /**
112
+ * TODO: Implement this event in a better way, because this is easy to overlook and forget to update
113
+ * when new apps are added and have their own installers.
114
+ *
115
+ * Headless CMS is the last app that has an installer. Once its installation is finished,
116
+ * we need to notify the system that tenant is now ready to use, because many external plugins
117
+ * insert initial tenant data into various apps, copy data from other tenants, etc.
118
+ */
119
+ await context.tenancy.onTenantAfterInstall.publish({});
110
120
  } catch (ex) {
111
121
  await onSystemInstallError.publish({
112
122
  error: ex,
@@ -1 +1 @@
1
- {"version":3,"names":["_apiSecurity","require","_error","_interopRequireDefault","_pubsub","initialContentModelGroup","name","slug","description","icon","createSystemCrud","params","getTenant","getLocale","storageOperations","context","getIdentity","onSystemBeforeInstall","createTopic","onSystemAfterInstall","onSystemInstallError","getVersion","system","get","tenant","id","version","setVersion","original","create","update","getSystemVersion","setSystemVersion","installSystem","identity","NotAuthorizedError","publish","locale","code","cms","createGroup","ex","WebinyError","message","group","WEBINY_VERSION","error","data","exports"],"sources":["system.crud.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport WebinyError from \"@webiny/error\";\nimport {\n OnSystemAfterInstallTopicParams,\n OnSystemBeforeInstallTopicParams,\n CmsContext,\n CmsSystem,\n CmsSystemContext,\n HeadlessCmsStorageOperations,\n OnSystemInstallErrorTopicParams\n} from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\n\nconst initialContentModelGroup = {\n name: \"Ungrouped\",\n slug: \"ungrouped\",\n description: \"A generic content model group\",\n icon: \"fas/star\"\n};\n\ninterface CreateSystemCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createSystemCrud = (params: CreateSystemCrudParams): CmsSystemContext => {\n const { getTenant, getLocale, storageOperations, context, getIdentity } = params;\n\n const onSystemBeforeInstall = createTopic<OnSystemBeforeInstallTopicParams>(\n \"cms.onSystemBeforeInstall\"\n );\n const onSystemAfterInstall = createTopic<OnSystemAfterInstallTopicParams>(\n \"cms.onSystemAfterInstall\"\n );\n\n const onSystemInstallError = createTopic<OnSystemInstallErrorTopicParams>(\n \"cms.onSystemInstallError\"\n );\n\n const getVersion = async () => {\n if (!getTenant()) {\n return null;\n }\n\n const system = await storageOperations.system.get({\n tenant: getTenant().id\n });\n\n return system?.version || null;\n };\n\n const setVersion = async (version: string) => {\n const original = await storageOperations.system.get({\n tenant: getTenant().id\n });\n const system: CmsSystem = {\n ...(original || {}),\n version,\n tenant: getTenant().id\n };\n if (!original) {\n await storageOperations.system.create({\n system\n });\n return;\n }\n await storageOperations.system.update({\n system\n });\n };\n\n return {\n /**\n * Lifecycle Events.\n */\n onSystemBeforeInstall,\n onSystemAfterInstall,\n onSystemInstallError,\n getSystemVersion: getVersion,\n setSystemVersion: setVersion,\n installSystem: async (): Promise<void> => {\n const identity = getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const version = await getVersion();\n if (version) {\n return;\n }\n try {\n /**\n * First trigger before install event.\n */\n await onSystemBeforeInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n /**\n * Add default content model group.\n */\n try {\n await context.cms.createGroup(initialContentModelGroup);\n } catch (ex) {\n throw new WebinyError(\n ex.message,\n \"CMS_INSTALLATION_CONTENT_MODEL_GROUP_ERROR\",\n {\n group: initialContentModelGroup\n }\n );\n }\n\n const system: CmsSystem = {\n version: context.WEBINY_VERSION,\n tenant: getTenant().id\n };\n /**\n * We need to create the system data.\n */\n await storageOperations.system.create({\n system\n });\n /**\n * And trigger after install event.\n */\n await onSystemAfterInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n } catch (ex) {\n await onSystemInstallError.publish({\n error: ex,\n tenant: getTenant().id,\n locale: getLocale().code\n });\n throw new WebinyError(ex.message, ex.code, ex.data);\n }\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_apiSecurity","require","_error","_interopRequireDefault","_pubsub","initialContentModelGroup","name","slug","description","icon","createSystemCrud","params","getTenant","getLocale","storageOperations","context","getIdentity","onSystemBeforeInstall","createTopic","onSystemAfterInstall","onSystemInstallError","getVersion","system","get","tenant","id","version","setVersion","original","create","update","getSystemVersion","setSystemVersion","installSystem","identity","NotAuthorizedError","publish","locale","code","cms","createGroup","ex","WebinyError","message","group","WEBINY_VERSION","tenancy","onTenantAfterInstall","error","data","exports"],"sources":["system.crud.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport WebinyError from \"@webiny/error\";\nimport type {\n OnSystemAfterInstallTopicParams,\n OnSystemBeforeInstallTopicParams,\n CmsContext,\n CmsSystem,\n CmsSystemContext,\n HeadlessCmsStorageOperations,\n OnSystemInstallErrorTopicParams\n} from \"~/types\";\nimport type { Tenant } from \"@webiny/api-tenancy/types\";\nimport type { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport type { I18NLocale } from \"@webiny/api-i18n/types\";\n\nconst initialContentModelGroup = {\n name: \"Ungrouped\",\n slug: \"ungrouped\",\n description: \"A generic content model group\",\n icon: \"fas/star\"\n};\n\ninterface CreateSystemCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createSystemCrud = (params: CreateSystemCrudParams): CmsSystemContext => {\n const { getTenant, getLocale, storageOperations, context, getIdentity } = params;\n\n const onSystemBeforeInstall = createTopic<OnSystemBeforeInstallTopicParams>(\n \"cms.onSystemBeforeInstall\"\n );\n const onSystemAfterInstall = createTopic<OnSystemAfterInstallTopicParams>(\n \"cms.onSystemAfterInstall\"\n );\n\n const onSystemInstallError = createTopic<OnSystemInstallErrorTopicParams>(\n \"cms.onSystemInstallError\"\n );\n\n const getVersion = async () => {\n if (!getTenant()) {\n return null;\n }\n\n const system = await storageOperations.system.get({\n tenant: getTenant().id\n });\n\n return system?.version || null;\n };\n\n const setVersion = async (version: string) => {\n const original = await storageOperations.system.get({\n tenant: getTenant().id\n });\n const system: CmsSystem = {\n ...(original || {}),\n version,\n tenant: getTenant().id\n };\n if (!original) {\n await storageOperations.system.create({\n system\n });\n return;\n }\n await storageOperations.system.update({\n system\n });\n };\n\n return {\n /**\n * Lifecycle Events.\n */\n onSystemBeforeInstall,\n onSystemAfterInstall,\n onSystemInstallError,\n getSystemVersion: getVersion,\n setSystemVersion: setVersion,\n installSystem: async (): Promise<void> => {\n const identity = getIdentity();\n if (!identity) {\n throw new NotAuthorizedError();\n }\n\n const version = await getVersion();\n if (version) {\n return;\n }\n try {\n /**\n * First trigger before install event.\n */\n await onSystemBeforeInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n /**\n * Add default content model group.\n */\n try {\n await context.cms.createGroup(initialContentModelGroup);\n } catch (ex) {\n throw new WebinyError(\n ex.message,\n \"CMS_INSTALLATION_CONTENT_MODEL_GROUP_ERROR\",\n {\n group: initialContentModelGroup\n }\n );\n }\n\n const system: CmsSystem = {\n version: context.WEBINY_VERSION,\n tenant: getTenant().id\n };\n /**\n * We need to create the system data.\n */\n await storageOperations.system.create({\n system\n });\n /**\n * And trigger after install event.\n */\n await onSystemAfterInstall.publish({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n /**\n * TODO: Implement this event in a better way, because this is easy to overlook and forget to update\n * when new apps are added and have their own installers.\n *\n * Headless CMS is the last app that has an installer. Once its installation is finished,\n * we need to notify the system that tenant is now ready to use, because many external plugins\n * insert initial tenant data into various apps, copy data from other tenants, etc.\n */\n await context.tenancy.onTenantAfterInstall.publish({});\n } catch (ex) {\n await onSystemInstallError.publish({\n error: ex,\n tenant: getTenant().id,\n locale: getLocale().code\n });\n throw new WebinyError(ex.message, ex.code, ex.data);\n }\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}