@webiny/api-headless-cms 6.4.11 → 6.6.0-alpha.1

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 (773) hide show
  1. package/HeadlessCmsContextualSchema.d.ts +16 -0
  2. package/HeadlessCmsContextualSchema.js +32 -0
  3. package/HeadlessCmsContextualSchema.js.map +1 -0
  4. package/HeadlessCmsEndpointConfig.d.ts +10 -0
  5. package/HeadlessCmsEndpointConfig.js +5 -0
  6. package/HeadlessCmsEndpointConfig.js.map +1 -0
  7. package/HeadlessCmsFeature.d.ts +10 -0
  8. package/HeadlessCmsFeature.js +195 -0
  9. package/HeadlessCmsFeature.js.map +1 -0
  10. package/createCmsRoute.d.ts +26 -0
  11. package/createCmsRoute.js +59 -0
  12. package/createCmsRoute.js.map +1 -0
  13. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  14. package/crud/contentEntry/entryDataValidation.js +29 -15
  15. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  16. package/crud/contentEntry/references/validateEntries.d.ts +1 -1
  17. package/crud/contentEntry/references/validateEntries.js +17 -7
  18. package/crud/contentEntry/references/validateEntries.js.map +1 -1
  19. package/crud/contentEntry.crud.js +22 -20
  20. package/crud/contentEntry.crud.js.map +1 -1
  21. package/crud/contentModel/defaultFields.js +3 -2
  22. package/crud/contentModel/defaultFields.js.map +1 -1
  23. package/crud/contentModel.crud.js +8 -6
  24. package/crud/contentModel.crud.js.map +1 -1
  25. package/crud/contentModelGroup.crud.js +7 -5
  26. package/crud/contentModelGroup.crud.js.map +1 -1
  27. package/domain/contentModel/schemas.d.ts +2 -0
  28. package/domain/contentModel/schemas.js +4 -2
  29. package/domain/contentModel/schemas.js.map +1 -1
  30. package/domain/contentModel/validation/modelFields.js +21 -15
  31. package/domain/contentModel/validation/modelFields.js.map +1 -1
  32. package/export/abstractions.d.ts +9 -0
  33. package/export/abstractions.js +6 -0
  34. package/export/abstractions.js.map +1 -0
  35. package/export/crud/exporting.js +8 -2
  36. package/export/crud/exporting.js.map +1 -1
  37. package/export/crud/importing.js +13 -4
  38. package/export/crud/importing.js.map +1 -1
  39. package/export/crud/imports/importGroups.js +23 -23
  40. package/export/crud/imports/importGroups.js.map +1 -1
  41. package/export/crud/imports/importModels.js +25 -22
  42. package/export/crud/imports/importModels.js.map +1 -1
  43. package/export/graphql/index.d.ts +2 -3
  44. package/export/graphql/index.js +6 -10
  45. package/export/graphql/index.js.map +1 -1
  46. package/exports/api/cms/model.d.ts +4 -1
  47. package/exports/api/cms/model.js +2 -0
  48. package/exports/api/cms/storage.d.ts +0 -1
  49. package/exports/api/cms/storage.js +0 -1
  50. package/features/ai/DescribeContentModelTool.d.ts +55 -0
  51. package/features/ai/DescribeContentModelTool.js +60 -0
  52. package/features/ai/DescribeContentModelTool.js.map +1 -0
  53. package/features/ai/ListContentModelsTool.d.ts +41 -0
  54. package/features/ai/ListContentModelsTool.js +44 -0
  55. package/features/ai/ListContentModelsTool.js.map +1 -0
  56. package/features/ai/QueryEntriesTool.d.ts +75 -0
  57. package/features/ai/QueryEntriesTool.js +90 -0
  58. package/features/ai/QueryEntriesTool.js.map +1 -0
  59. package/features/ai/feature.d.ts +8 -0
  60. package/features/ai/feature.js +15 -0
  61. package/features/ai/feature.js.map +1 -0
  62. package/features/ai/index.d.ts +4 -0
  63. package/features/ai/index.js +4 -0
  64. package/features/contentEntry/ContentEntriesFeature.js +0 -2
  65. package/features/contentEntry/ContentEntriesFeature.js.map +1 -1
  66. package/features/contentEntry/CreateEntry/CreateEntryRepository.d.ts +7 -7
  67. package/features/contentEntry/CreateEntry/CreateEntryRepository.js +8 -14
  68. package/features/contentEntry/CreateEntry/CreateEntryRepository.js.map +1 -1
  69. package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -1
  70. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +2 -3
  71. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
  72. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.d.ts +7 -7
  73. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js +8 -14
  74. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js.map +1 -1
  75. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -1
  76. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +2 -3
  77. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
  78. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.d.ts +7 -7
  79. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js +8 -14
  80. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js.map +1 -1
  81. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +3 -1
  82. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +2 -3
  83. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
  84. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.d.ts +6 -6
  85. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js +8 -14
  86. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js.map +1 -1
  87. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +3 -1
  88. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -3
  89. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
  90. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.d.ts +3 -3
  91. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js +5 -5
  92. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js.map +1 -1
  93. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.d.ts +6 -6
  94. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js +8 -14
  95. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js.map +1 -1
  96. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +3 -1
  97. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +2 -3
  98. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
  99. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.d.ts +7 -7
  100. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js +8 -13
  101. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js.map +1 -1
  102. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +3 -1
  103. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +2 -3
  104. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
  105. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.d.ts +9 -7
  106. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js +15 -13
  107. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js.map +1 -1
  108. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.d.ts +3 -1
  109. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js +2 -3
  110. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js.map +1 -1
  111. package/features/contentEntry/GetEntry/GetEntryUseCase.d.ts +3 -1
  112. package/features/contentEntry/GetEntry/GetEntryUseCase.js +2 -3
  113. package/features/contentEntry/GetEntry/GetEntryUseCase.js.map +1 -1
  114. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.d.ts +3 -1
  115. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js +2 -3
  116. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js.map +1 -1
  117. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.d.ts +7 -7
  118. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js +8 -13
  119. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js.map +1 -1
  120. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.d.ts +3 -1
  121. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js +2 -3
  122. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js.map +1 -1
  123. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.d.ts +3 -1
  124. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js +2 -3
  125. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js.map +1 -1
  126. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.d.ts +7 -7
  127. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js +8 -13
  128. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js.map +1 -1
  129. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.d.ts +3 -1
  130. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js +2 -3
  131. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js.map +1 -1
  132. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.d.ts +3 -1
  133. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js +1 -3
  134. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js.map +1 -1
  135. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.d.ts +3 -1
  136. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js +2 -3
  137. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js.map +1 -1
  138. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.d.ts +3 -1
  139. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js +2 -3
  140. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js.map +1 -1
  141. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.d.ts +7 -7
  142. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js +8 -13
  143. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js.map +1 -1
  144. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.d.ts +3 -1
  145. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js +2 -3
  146. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js.map +1 -1
  147. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.d.ts +7 -7
  148. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js +8 -13
  149. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js.map +1 -1
  150. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.d.ts +3 -1
  151. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js +2 -3
  152. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js.map +1 -1
  153. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.d.ts +7 -7
  154. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js +8 -13
  155. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js.map +1 -1
  156. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.d.ts +3 -1
  157. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js +2 -3
  158. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js.map +1 -1
  159. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.d.ts +7 -7
  160. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js +8 -13
  161. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js.map +1 -1
  162. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.d.ts +3 -1
  163. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js +1 -3
  164. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js.map +1 -1
  165. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.d.ts +7 -7
  166. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js +8 -13
  167. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js.map +1 -1
  168. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.d.ts +3 -1
  169. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js +2 -3
  170. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js.map +1 -1
  171. package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js +1 -3
  172. package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js.map +1 -1
  173. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.d.ts +7 -7
  174. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js +8 -13
  175. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js.map +1 -1
  176. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +6 -2
  177. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +8 -6
  178. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  179. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.d.ts +3 -1
  180. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js +1 -3
  181. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js.map +1 -1
  182. package/features/contentEntry/ListEntries/ListEntriesRepository.d.ts +7 -7
  183. package/features/contentEntry/ListEntries/ListEntriesRepository.js +8 -13
  184. package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
  185. package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +3 -1
  186. package/features/contentEntry/ListEntries/ListEntriesUseCase.js +2 -3
  187. package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
  188. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.d.ts +3 -1
  189. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js +1 -3
  190. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js.map +1 -1
  191. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.d.ts +3 -1
  192. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js +1 -3
  193. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js.map +1 -1
  194. package/features/contentEntry/MoveEntry/MoveEntryRepository.d.ts +7 -7
  195. package/features/contentEntry/MoveEntry/MoveEntryRepository.js +8 -13
  196. package/features/contentEntry/MoveEntry/MoveEntryRepository.js.map +1 -1
  197. package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +3 -1
  198. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +2 -3
  199. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
  200. package/features/contentEntry/PublishEntry/PublishEntryRepository.d.ts +7 -7
  201. package/features/contentEntry/PublishEntry/PublishEntryRepository.js +8 -14
  202. package/features/contentEntry/PublishEntry/PublishEntryRepository.js.map +1 -1
  203. package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +3 -1
  204. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -3
  205. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
  206. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.d.ts +9 -7
  207. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js +12 -15
  208. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js.map +1 -1
  209. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +3 -1
  210. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -3
  211. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
  212. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.d.ts +7 -7
  213. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js +8 -14
  214. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js.map +1 -1
  215. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +3 -1
  216. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -3
  217. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
  218. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.d.ts +7 -7
  219. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js +8 -14
  220. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js.map +1 -1
  221. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +3 -1
  222. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -3
  223. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
  224. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.d.ts +7 -7
  225. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js +8 -14
  226. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js.map +1 -1
  227. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -1
  228. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +2 -3
  229. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
  230. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +3 -1
  231. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +2 -3
  232. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -1
  233. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.d.ts +3 -1
  234. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js +2 -3
  235. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js.map +1 -1
  236. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.d.ts +3 -1
  237. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js +2 -4
  238. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js.map +1 -1
  239. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.d.ts +4 -4
  240. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js +4 -8
  241. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js.map +1 -1
  242. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.d.ts +3 -1
  243. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js +1 -3
  244. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js.map +1 -1
  245. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.d.ts +3 -1
  246. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js +1 -3
  247. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js.map +1 -1
  248. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.d.ts +3 -1
  249. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js +1 -3
  250. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js.map +1 -1
  251. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.d.ts +3 -1
  252. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js +2 -4
  253. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js.map +1 -1
  254. package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.d.ts +14 -0
  255. package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.js +32 -0
  256. package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.js.map +1 -0
  257. package/features/contentModel/ComponentMapGenerator/abstractions.d.ts +8 -0
  258. package/features/contentModel/ComponentMapGenerator/abstractions.js +5 -0
  259. package/features/contentModel/ComponentMapGenerator/abstractions.js.map +1 -0
  260. package/features/contentModel/ComponentMapGenerator/feature.d.ts +4 -0
  261. package/features/contentModel/ComponentMapGenerator/feature.js +11 -0
  262. package/features/contentModel/ComponentMapGenerator/feature.js.map +1 -0
  263. package/features/contentModel/ComponentMapGenerator/index.d.ts +2 -0
  264. package/features/contentModel/ComponentMapGenerator/index.js +2 -0
  265. package/features/contentModel/ContentModelFeature.js +6 -0
  266. package/features/contentModel/ContentModelFeature.js.map +1 -1
  267. package/features/contentModel/CreateModel/CreateModelRepository.d.ts +5 -6
  268. package/features/contentModel/CreateModel/CreateModelRepository.js +9 -12
  269. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  270. package/features/contentModel/CreateModel/CreateModelUseCase.js +2 -2
  271. package/features/contentModel/CreateModel/CreateModelUseCase.js.map +1 -1
  272. package/features/contentModel/CreateModel/abstractions.d.ts +1 -1
  273. package/features/contentModel/CreateModel/abstractions.js.map +1 -1
  274. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +5 -6
  275. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +9 -12
  276. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  277. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js +2 -2
  278. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js.map +1 -1
  279. package/features/contentModel/CreateModelFrom/abstractions.d.ts +1 -1
  280. package/features/contentModel/CreateModelFrom/abstractions.js.map +1 -1
  281. package/features/contentModel/DeleteModel/DeleteModelRepository.d.ts +4 -6
  282. package/features/contentModel/DeleteModel/DeleteModelRepository.js +6 -10
  283. package/features/contentModel/DeleteModel/DeleteModelRepository.js.map +1 -1
  284. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.d.ts +1 -0
  285. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js +11 -8
  286. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js.map +1 -1
  287. package/features/contentModel/RefModelsGenerator/RefModelsGenerator.d.ts +19 -0
  288. package/features/contentModel/RefModelsGenerator/RefModelsGenerator.js +56 -0
  289. package/features/contentModel/RefModelsGenerator/RefModelsGenerator.js.map +1 -0
  290. package/features/contentModel/RefModelsGenerator/abstractions.d.ts +11 -0
  291. package/features/contentModel/RefModelsGenerator/abstractions.js +5 -0
  292. package/features/contentModel/RefModelsGenerator/abstractions.js.map +1 -0
  293. package/features/contentModel/RefModelsGenerator/feature.d.ts +4 -0
  294. package/features/contentModel/RefModelsGenerator/feature.js +11 -0
  295. package/features/contentModel/RefModelsGenerator/feature.js.map +1 -0
  296. package/features/contentModel/RefModelsGenerator/index.d.ts +2 -0
  297. package/features/contentModel/RefModelsGenerator/index.js +2 -0
  298. package/features/contentModel/UpdateModel/UpdateModelRepository.d.ts +7 -6
  299. package/features/contentModel/UpdateModel/UpdateModelRepository.js +12 -12
  300. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  301. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +2 -2
  302. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  303. package/features/contentModel/UpdateModel/abstractions.d.ts +1 -1
  304. package/features/contentModel/UpdateModel/abstractions.js.map +1 -1
  305. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.d.ts +16 -0
  306. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js +53 -0
  307. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js.map +1 -0
  308. package/features/contentModel/ValuesSelectionGenerator/abstractions.d.ts +8 -0
  309. package/features/contentModel/ValuesSelectionGenerator/abstractions.js +5 -0
  310. package/features/contentModel/ValuesSelectionGenerator/abstractions.js.map +1 -0
  311. package/features/contentModel/ValuesSelectionGenerator/feature.d.ts +4 -0
  312. package/features/contentModel/ValuesSelectionGenerator/feature.js +11 -0
  313. package/features/contentModel/ValuesSelectionGenerator/feature.js.map +1 -0
  314. package/features/contentModel/ValuesSelectionGenerator/index.d.ts +1 -0
  315. package/features/contentModel/ValuesSelectionGenerator/index.js +1 -0
  316. package/features/contentModel/shared/ModelsFetcher.d.ts +3 -3
  317. package/features/contentModel/shared/ModelsFetcher.js +5 -5
  318. package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
  319. package/features/contentModel/shared/PluginModelsProvider.d.ts +5 -4
  320. package/features/contentModel/shared/PluginModelsProvider.js +11 -8
  321. package/features/contentModel/shared/PluginModelsProvider.js.map +1 -1
  322. package/features/contentModel/shared/abstractions.d.ts +10 -0
  323. package/features/contentModel/shared/abstractions.js +2 -1
  324. package/features/contentModel/shared/abstractions.js.map +1 -1
  325. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +11 -7
  326. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +19 -19
  327. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
  328. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +6 -2
  329. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +9 -8
  330. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
  331. package/features/contentModelGroup/CreateGroup/abstractions.d.ts +1 -1
  332. package/features/contentModelGroup/CreateGroup/abstractions.js.map +1 -1
  333. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.d.ts +9 -7
  334. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js +12 -14
  335. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js.map +1 -1
  336. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +3 -1
  337. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +2 -3
  338. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
  339. package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +6 -4
  340. package/features/contentModelGroup/GetGroup/GetGroupRepository.js +9 -9
  341. package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
  342. package/features/contentModelGroup/GetGroup/GetGroupUseCase.d.ts +3 -1
  343. package/features/contentModelGroup/GetGroup/GetGroupUseCase.js +2 -3
  344. package/features/contentModelGroup/GetGroup/GetGroupUseCase.js.map +1 -1
  345. package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +6 -4
  346. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +9 -9
  347. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
  348. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.d.ts +3 -1
  349. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js +2 -3
  350. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js.map +1 -1
  351. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.d.ts +7 -7
  352. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js +9 -14
  353. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js.map +1 -1
  354. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +3 -1
  355. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +4 -5
  356. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
  357. package/features/contentModelGroup/UpdateGroup/abstractions.d.ts +1 -1
  358. package/features/contentModelGroup/UpdateGroup/abstractions.js.map +1 -1
  359. package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +6 -4
  360. package/features/contentModelGroup/shared/PluginGroupsProvider.js +13 -11
  361. package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
  362. package/features/contentModelGroup/shared/abstractions.d.ts +10 -0
  363. package/features/contentModelGroup/shared/abstractions.js +2 -1
  364. package/features/contentModelGroup/shared/abstractions.js.map +1 -1
  365. package/features/graphql/feature.js +2 -0
  366. package/features/graphql/feature.js.map +1 -1
  367. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +2 -2
  368. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -1
  369. package/features/graphql/fields/base/AssetToGraphQL.d.ts +26 -0
  370. package/features/graphql/fields/base/AssetToGraphQL.js +148 -0
  371. package/features/graphql/fields/base/AssetToGraphQL.js.map +1 -0
  372. package/features/graphql/fields/base/DynamicZoneToGraphQL.js +5 -1
  373. package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -1
  374. package/features/graphql/fields/base/ObjectToGraphQL.js +2 -2
  375. package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -1
  376. package/features/graphql/fields/base/RefToGraphQL.d.ts +1 -1
  377. package/features/graphql/fields/base/RefToGraphQL.js +10 -18
  378. package/features/graphql/fields/base/RefToGraphQL.js.map +1 -1
  379. package/features/graphql/fields/base/richText/richTextResolver.d.ts +1 -1
  380. package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -1
  381. package/features/modelBuilder/abstractions.d.ts +10 -0
  382. package/features/modelBuilder/abstractions.js.map +1 -1
  383. package/features/modelBuilder/feature.js +2 -0
  384. package/features/modelBuilder/feature.js.map +1 -1
  385. package/features/modelBuilder/fields/AssetFieldType.d.ts +20 -0
  386. package/features/modelBuilder/fields/AssetFieldType.js +46 -0
  387. package/features/modelBuilder/fields/AssetFieldType.js.map +1 -0
  388. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +54 -18
  389. package/features/modelBuilder/fields/DataFieldBuilder.js +3 -0
  390. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -1
  391. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +1 -0
  392. package/features/modelBuilder/fields/DynamicZoneFieldType.js +2 -6
  393. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  394. package/features/modelBuilder/fields/TextFieldType.d.ts +3 -1
  395. package/features/modelBuilder/fields/TextFieldType.js +1 -3
  396. package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
  397. package/features/modelBuilder/fields/resolveAssetUrl.d.ts +35 -0
  398. package/features/modelBuilder/fields/resolveAssetUrl.js +26 -0
  399. package/features/modelBuilder/fields/resolveAssetUrl.js.map +1 -0
  400. package/features/modelBuilder/index.d.ts +1 -1
  401. package/features/modelBuilder/models/BaseModelBuilder.d.ts +3 -1
  402. package/features/modelBuilder/models/BaseModelBuilder.js +7 -0
  403. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  404. package/features/modelBuilder/models/PrivateModelBuilder.js +2 -1
  405. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  406. package/features/modelBuilder/models/PublicModelBuilder.js +2 -1
  407. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  408. package/features/shared/abstractions.d.ts +11 -15
  409. package/features/shared/abstractions.js +3 -3
  410. package/features/shared/abstractions.js.map +1 -1
  411. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.d.ts +8 -0
  412. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js +5 -0
  413. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js.map +1 -0
  414. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.d.ts +8 -0
  415. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js +5 -0
  416. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js.map +1 -0
  417. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.d.ts +8 -0
  418. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js +5 -0
  419. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js.map +1 -0
  420. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.d.ts +8 -0
  421. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js +5 -0
  422. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js.map +1 -0
  423. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.d.ts +8 -0
  424. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js +5 -0
  425. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js.map +1 -0
  426. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.d.ts +8 -0
  427. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js +5 -0
  428. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js.map +1 -0
  429. package/features/shared/storageOperations/entry/GetEntryStorageOperation.d.ts +8 -0
  430. package/features/shared/storageOperations/entry/GetEntryStorageOperation.js +5 -0
  431. package/features/shared/storageOperations/entry/GetEntryStorageOperation.js.map +1 -0
  432. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.d.ts +8 -0
  433. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js +5 -0
  434. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js.map +1 -0
  435. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.d.ts +8 -0
  436. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js +5 -0
  437. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js.map +1 -0
  438. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.d.ts +8 -0
  439. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js +5 -0
  440. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js.map +1 -0
  441. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.d.ts +8 -0
  442. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js +5 -0
  443. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js.map +1 -0
  444. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.d.ts +8 -0
  445. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js +5 -0
  446. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js.map +1 -0
  447. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.d.ts +8 -0
  448. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js +5 -0
  449. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js.map +1 -0
  450. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.d.ts +8 -0
  451. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js +5 -0
  452. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js.map +1 -0
  453. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.d.ts +8 -0
  454. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js +5 -0
  455. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js.map +1 -0
  456. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.d.ts +8 -0
  457. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js +5 -0
  458. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js.map +1 -0
  459. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.d.ts +8 -0
  460. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js +5 -0
  461. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js.map +1 -0
  462. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.d.ts +8 -0
  463. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js +5 -0
  464. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js.map +1 -0
  465. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.d.ts +8 -0
  466. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js +5 -0
  467. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js.map +1 -0
  468. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.d.ts +8 -0
  469. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js +5 -0
  470. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js.map +1 -0
  471. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.d.ts +8 -0
  472. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js +5 -0
  473. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js.map +1 -0
  474. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.d.ts +8 -0
  475. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js +5 -0
  476. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js.map +1 -0
  477. package/features/shared/storageOperations/group/CreateGroupStorageOperation.d.ts +8 -0
  478. package/features/shared/storageOperations/group/CreateGroupStorageOperation.js +5 -0
  479. package/features/shared/storageOperations/group/CreateGroupStorageOperation.js.map +1 -0
  480. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.d.ts +8 -0
  481. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js +5 -0
  482. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js.map +1 -0
  483. package/features/shared/storageOperations/group/GetGroupStorageOperation.d.ts +8 -0
  484. package/features/shared/storageOperations/group/GetGroupStorageOperation.js +5 -0
  485. package/features/shared/storageOperations/group/GetGroupStorageOperation.js.map +1 -0
  486. package/features/shared/storageOperations/group/ListGroupsStorageOperation.d.ts +8 -0
  487. package/features/shared/storageOperations/group/ListGroupsStorageOperation.js +5 -0
  488. package/features/shared/storageOperations/group/ListGroupsStorageOperation.js.map +1 -0
  489. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.d.ts +8 -0
  490. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js +5 -0
  491. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js.map +1 -0
  492. package/features/shared/storageOperations/index.d.ts +32 -0
  493. package/features/shared/storageOperations/index.js +32 -0
  494. package/features/shared/storageOperations/model/CreateModelStorageOperation.d.ts +8 -0
  495. package/features/shared/storageOperations/model/CreateModelStorageOperation.js +5 -0
  496. package/features/shared/storageOperations/model/CreateModelStorageOperation.js.map +1 -0
  497. package/features/shared/storageOperations/model/DeleteModelStorageOperation.d.ts +8 -0
  498. package/features/shared/storageOperations/model/DeleteModelStorageOperation.js +5 -0
  499. package/features/shared/storageOperations/model/DeleteModelStorageOperation.js.map +1 -0
  500. package/features/shared/storageOperations/model/GetModelStorageOperation.d.ts +8 -0
  501. package/features/shared/storageOperations/model/GetModelStorageOperation.js +5 -0
  502. package/features/shared/storageOperations/model/GetModelStorageOperation.js.map +1 -0
  503. package/features/shared/storageOperations/model/ListModelsStorageOperation.d.ts +8 -0
  504. package/features/shared/storageOperations/model/ListModelsStorageOperation.js +5 -0
  505. package/features/shared/storageOperations/model/ListModelsStorageOperation.js.map +1 -0
  506. package/features/shared/storageOperations/model/UpdateModelStorageOperation.d.ts +8 -0
  507. package/features/shared/storageOperations/model/UpdateModelStorageOperation.js +5 -0
  508. package/features/shared/storageOperations/model/UpdateModelStorageOperation.js.map +1 -0
  509. package/features/sortMapper/SortMapper.js +2 -5
  510. package/features/sortMapper/SortMapper.js.map +1 -1
  511. package/features/whereMapper/WhereMapper.js +7 -5
  512. package/features/whereMapper/WhereMapper.js.map +1 -1
  513. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +3 -7
  514. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  515. package/fieldConverters/abstractions.d.ts +14 -0
  516. package/fieldConverters/abstractions.js +13 -0
  517. package/fieldConverters/abstractions.js.map +1 -0
  518. package/fieldConverters/index.d.ts +1 -1
  519. package/graphql/CmsGraphQLSchemaFactory.d.ts +8 -0
  520. package/graphql/CmsGraphQLSchemaFactory.js +5 -0
  521. package/graphql/CmsGraphQLSchemaFactory.js.map +1 -0
  522. package/graphql/CmsSchemaExecutor.d.ts +10 -0
  523. package/graphql/CmsSchemaExecutor.js +5 -0
  524. package/graphql/CmsSchemaExecutor.js.map +1 -0
  525. package/graphql/buildSchemaPlugins.d.ts +2 -1
  526. package/graphql/buildSchemaPlugins.js +1 -3
  527. package/graphql/buildSchemaPlugins.js.map +1 -1
  528. package/graphql/checkEndpointAccess.js +5 -2
  529. package/graphql/checkEndpointAccess.js.map +1 -1
  530. package/graphql/createExecutableSchema.d.ts +1 -1
  531. package/graphql/createExecutableSchema.js +1 -1
  532. package/graphql/createExecutableSchema.js.map +1 -1
  533. package/graphql/generateSchema.d.ts +2 -1
  534. package/graphql/generateSchema.js +14 -5
  535. package/graphql/generateSchema.js.map +1 -1
  536. package/graphql/getSchema.js +7 -2
  537. package/graphql/getSchema.js.map +1 -1
  538. package/graphql/scalars/RevisionIdScalarPlugin.d.ts +1 -1
  539. package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -1
  540. package/graphql/schema/baseContentSchema.d.ts +1 -6
  541. package/graphql/schema/baseContentSchema.js +5 -8
  542. package/graphql/schema/baseContentSchema.js.map +1 -1
  543. package/graphql/schema/baseSchema.d.ts +2 -2
  544. package/graphql/schema/baseSchema.js +6 -41
  545. package/graphql/schema/baseSchema.js.map +1 -1
  546. package/graphql/schema/cms/CmsBaseErrorTypeFactory.d.ts +14 -0
  547. package/graphql/schema/cms/CmsBaseErrorTypeFactory.js +21 -0
  548. package/graphql/schema/cms/CmsBaseErrorTypeFactory.js.map +1 -0
  549. package/graphql/schema/cms/createEntryResolver.js +2 -2
  550. package/graphql/schema/cms/createEntryResolver.js.map +1 -1
  551. package/graphql/schema/cms/deleteEntryResolver.js +2 -2
  552. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -1
  553. package/graphql/schema/cms/getEntryResolver.js +5 -4
  554. package/graphql/schema/cms/getEntryResolver.js.map +1 -1
  555. package/graphql/schema/cms/getModelResolver.d.ts +35 -0
  556. package/graphql/schema/cms/getModelResolver.js +49 -0
  557. package/graphql/schema/cms/getModelResolver.js.map +1 -0
  558. package/graphql/schema/cms/helpers/buildFieldsSelection.js +9 -2
  559. package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -1
  560. package/graphql/schema/cms/helpers/expandFieldWildcards.d.ts +2 -0
  561. package/graphql/schema/cms/helpers/expandFieldWildcards.js +13 -0
  562. package/graphql/schema/cms/helpers/expandFieldWildcards.js.map +1 -0
  563. package/graphql/schema/cms/helpers/getModel.d.ts +0 -3
  564. package/graphql/schema/cms/helpers/getModel.js +5 -3
  565. package/graphql/schema/cms/helpers/getModel.js.map +1 -1
  566. package/graphql/schema/cms/helpers/index.d.ts +1 -0
  567. package/graphql/schema/cms/helpers/index.js +1 -0
  568. package/graphql/schema/cms/helpers.d.ts +1 -0
  569. package/graphql/schema/cms/helpers.js +1 -0
  570. package/graphql/schema/cms/listEntriesResolver.js +5 -4
  571. package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
  572. package/graphql/schema/cms/publishEntryResolver.js +2 -2
  573. package/graphql/schema/cms/publishEntryResolver.js.map +1 -1
  574. package/graphql/schema/cms/resolvers/createEntry.d.ts +2 -2
  575. package/graphql/schema/cms/resolvers/createEntry.js +1 -1
  576. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -1
  577. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +2 -2
  578. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +1 -1
  579. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -1
  580. package/graphql/schema/cms/resolvers/getEntry.d.ts +2 -2
  581. package/graphql/schema/cms/resolvers/getEntry.js +1 -1
  582. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -1
  583. package/graphql/schema/cms/resolvers/getModel.d.ts +8 -0
  584. package/graphql/schema/cms/resolvers/getModel.js +18 -0
  585. package/graphql/schema/cms/resolvers/getModel.js.map +1 -0
  586. package/graphql/schema/cms/resolvers/index.d.ts +1 -0
  587. package/graphql/schema/cms/resolvers/index.js +1 -0
  588. package/graphql/schema/cms/resolvers/listEntries.d.ts +2 -2
  589. package/graphql/schema/cms/resolvers/listEntries.js +1 -1
  590. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -1
  591. package/graphql/schema/cms/resolvers/mutationCms.d.ts +2 -2
  592. package/graphql/schema/cms/resolvers/mutationCms.js +1 -1
  593. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -1
  594. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +2 -2
  595. package/graphql/schema/cms/resolvers/publishEntryRevision.js +1 -1
  596. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -1
  597. package/graphql/schema/cms/resolvers/queryCms.d.ts +2 -2
  598. package/graphql/schema/cms/resolvers/queryCms.js +1 -1
  599. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -1
  600. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +2 -2
  601. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +1 -1
  602. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -1
  603. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +2 -2
  604. package/graphql/schema/cms/resolvers/updateEntryRevision.js +1 -1
  605. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -1
  606. package/graphql/schema/cms/typeDefs/mutation.d.ts +2 -2
  607. package/graphql/schema/cms/typeDefs/mutation.js +1 -1
  608. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -1
  609. package/graphql/schema/cms/typeDefs/query.d.ts +2 -2
  610. package/graphql/schema/cms/typeDefs/query.js +2 -1
  611. package/graphql/schema/cms/typeDefs/query.js.map +1 -1
  612. package/graphql/schema/cms/typeDefs/responses.d.ts +2 -2
  613. package/graphql/schema/cms/typeDefs/responses.js +6 -1
  614. package/graphql/schema/cms/typeDefs/responses.js.map +1 -1
  615. package/graphql/schema/cms/unpublishEntryResolver.js +2 -2
  616. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -1
  617. package/graphql/schema/cms/updateEntryResolver.js +2 -2
  618. package/graphql/schema/cms/updateEntryResolver.js.map +1 -1
  619. package/graphql/schema/contentEntries.js +43 -32
  620. package/graphql/schema/contentEntries.js.map +1 -1
  621. package/graphql/schema/contentModelGroups.js +39 -18
  622. package/graphql/schema/contentModelGroups.js.map +1 -1
  623. package/graphql/schema/contentModels.js +68 -16
  624. package/graphql/schema/contentModels.js.map +1 -1
  625. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  626. package/graphql/schema/createFieldResolvers.js.map +1 -1
  627. package/graphql/schema/createManageResolvers.js +4 -2
  628. package/graphql/schema/createManageResolvers.js.map +1 -1
  629. package/graphql/schema/resolvers/manage/resolveCreate.js +5 -3
  630. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  631. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +5 -3
  632. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  633. package/graphql/schema/resolvers/manage/resolveDelete.js +9 -4
  634. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  635. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +5 -3
  636. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
  637. package/graphql/schema/resolvers/manage/resolveGet.js +11 -6
  638. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  639. package/graphql/schema/resolvers/manage/resolveGetByIds.js +5 -3
  640. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  641. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +5 -3
  642. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  643. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +5 -3
  644. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -1
  645. package/graphql/schema/resolvers/manage/resolveList.js +5 -3
  646. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  647. package/graphql/schema/resolvers/manage/resolveListDeleted.js +5 -3
  648. package/graphql/schema/resolvers/manage/resolveListDeleted.js.map +1 -1
  649. package/graphql/schema/resolvers/manage/resolveMove.js +4 -2
  650. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -1
  651. package/graphql/schema/resolvers/manage/resolvePublish.js +5 -3
  652. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  653. package/graphql/schema/resolvers/manage/resolveRepublish.js +5 -3
  654. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  655. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js +5 -3
  656. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js.map +1 -1
  657. package/graphql/schema/resolvers/manage/resolveUnpublish.js +5 -3
  658. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  659. package/graphql/schema/resolvers/manage/resolveUpdate.js +5 -3
  660. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  661. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js +5 -3
  662. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js.map +1 -1
  663. package/graphql/schema/resolvers/manage/resolveValidate.js +5 -3
  664. package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -1
  665. package/graphql/schema/resolvers/preview/resolveGet.js +6 -3
  666. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  667. package/graphql/schema/resolvers/preview/resolveList.js +5 -3
  668. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  669. package/graphql/schema/resolvers/read/resolveGet.js +5 -2
  670. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  671. package/graphql/schema/resolvers/read/resolveList.js +5 -3
  672. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  673. package/graphql/schema/resolvers/singular/resolveGet.js +1 -1
  674. package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -1
  675. package/graphql/schema/resolvers/singular/resolveUpdate.js +1 -1
  676. package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -1
  677. package/graphql/schema/schemaPlugins.d.ts +2 -1
  678. package/graphql/schema/schemaPlugins.js +2 -4
  679. package/graphql/schema/schemaPlugins.js.map +1 -1
  680. package/index.d.ts +7 -6
  681. package/index.js +4 -22
  682. package/legacy/abstractions.js.map +1 -1
  683. package/package.json +23 -29
  684. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.d.ts +2 -2
  685. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js +1 -1
  686. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js.map +1 -1
  687. package/plugins/CmsModelPlugin.js +2 -1
  688. package/plugins/CmsModelPlugin.js.map +1 -1
  689. package/plugins/index.d.ts +0 -1
  690. package/plugins/index.js +0 -1
  691. package/types/fields/dynamicZoneField.d.ts +1 -0
  692. package/types/model.d.ts +6 -0
  693. package/types/modelField.d.ts +2 -0
  694. package/types/types.d.ts +10 -183
  695. package/types/types.js.map +1 -1
  696. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.d.ts +28 -0
  697. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js +324 -0
  698. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js.map +1 -0
  699. package/utils/contentModelToJsonSchema/index.d.ts +2 -0
  700. package/utils/contentModelToJsonSchema/index.js +1 -0
  701. package/utils/contentModelToJsonSchema/types.d.ts +24 -0
  702. package/utils/contentModelToJsonSchema/types.js +0 -0
  703. package/utils/converters/ConverterCollection.d.ts +2 -2
  704. package/utils/converters/ConverterCollection.js +1 -3
  705. package/utils/converters/ConverterCollection.js.map +1 -1
  706. package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -2
  707. package/utils/converters/valueKeyFromStorageConverter.js +2 -2
  708. package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
  709. package/utils/converters/valueKeyStorageConverter.js +4 -2
  710. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  711. package/utils/converters/valueKeyToStorageConverter.d.ts +2 -2
  712. package/utils/converters/valueKeyToStorageConverter.js +2 -2
  713. package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
  714. package/utils/getSchemaFromFieldPlugins.d.ts +2 -2
  715. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  716. package/utils/index.d.ts +1 -0
  717. package/utils/index.js +1 -0
  718. package/utils/isHeadlessCmsReady.d.ts +1 -1
  719. package/utils/isHeadlessCmsReady.js +3 -2
  720. package/utils/isHeadlessCmsReady.js.map +1 -1
  721. package/abstractions/entryHooks/OnEntryBeforeCreate.d.ts +0 -8
  722. package/abstractions/entryHooks/OnEntryBeforeCreate.js +0 -5
  723. package/abstractions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
  724. package/abstractions/entryHooks/index.d.ts +0 -1
  725. package/abstractions/entryHooks/index.js +0 -1
  726. package/abstractions/index.d.ts +0 -1
  727. package/abstractions/index.js +0 -1
  728. package/context.d.ts +0 -3
  729. package/context.js +0 -131
  730. package/context.js.map +0 -1
  731. package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +0 -4
  732. package/extensions/entryHooks/OnEntryBeforeCreate.js +0 -21
  733. package/extensions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
  734. package/extensions/entryHooks/index.d.ts +0 -1
  735. package/extensions/entryHooks/index.js +0 -1
  736. package/extensions/index.d.ts +0 -5
  737. package/extensions/index.js +0 -7
  738. package/extensions/index.js.map +0 -1
  739. package/features/runtimeTenant/RuntimeTenant.d.ts +0 -13
  740. package/features/runtimeTenant/RuntimeTenant.js +0 -22
  741. package/features/runtimeTenant/RuntimeTenant.js.map +0 -1
  742. package/features/runtimeTenant/abstractions.d.ts +0 -11
  743. package/features/runtimeTenant/abstractions.js +0 -5
  744. package/features/runtimeTenant/abstractions.js.map +0 -1
  745. package/features/runtimeTenant/index.d.ts +0 -2
  746. package/features/runtimeTenant/index.js +0 -2
  747. package/graphql/graphQLHandlerFactory.d.ts +0 -5
  748. package/graphql/graphQLHandlerFactory.js +0 -22
  749. package/graphql/graphQLHandlerFactory.js.map +0 -1
  750. package/graphql/handleRequest.d.ts +0 -11
  751. package/graphql/handleRequest.js +0 -62
  752. package/graphql/handleRequest.js.map +0 -1
  753. package/graphql/index.d.ts +0 -4
  754. package/graphql/index.js +0 -11
  755. package/graphql/index.js.map +0 -1
  756. package/graphql/schema/cms/index.d.ts +0 -2
  757. package/graphql/schema/cms/index.js +0 -24
  758. package/graphql/schema/cms/index.js.map +0 -1
  759. package/index.js.map +0 -1
  760. package/parameters/context.d.ts +0 -2
  761. package/parameters/context.js +0 -7
  762. package/parameters/context.js.map +0 -1
  763. package/parameters/header.d.ts +0 -2
  764. package/parameters/header.js +0 -13
  765. package/parameters/header.js.map +0 -1
  766. package/parameters/index.d.ts +0 -3
  767. package/parameters/index.js +0 -3
  768. package/parameters/path.d.ts +0 -2
  769. package/parameters/path.js +0 -12
  770. package/parameters/path.js.map +0 -1
  771. package/plugins/CmsParametersPlugin.d.ts +0 -18
  772. package/plugins/CmsParametersPlugin.js +0 -16
  773. package/plugins/CmsParametersPlugin.js.map +0 -1
@@ -1,26 +1,26 @@
1
- import { Result, createImplementation } from "@webiny/feature/api";
1
+ import { Result } from "@webiny/feature/api";
2
2
  import { CreateGroupRepository } from "./abstractions.js";
3
3
  import { GroupCache, PluginGroupsProvider } from "../shared/abstractions.js";
4
4
  import { GroupPersistenceError, GroupSlugTakenError } from "../../../domain/contentModelGroup/errors.js";
5
- import { StorageOperations } from "../../shared/abstractions.js";
5
+ import { ListGroupsStorageOperation } from "../../shared/storageOperations/group/ListGroupsStorageOperation.js";
6
+ import { CreateGroupStorageOperation } from "../../shared/storageOperations/group/CreateGroupStorageOperation.js";
6
7
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
7
- import { toSlug } from "../../../utils/toSlug.js";
8
+ import { StringFormatter } from "@webiny/api-core/features/stringFormatter/index.js";
8
9
  import { generateAlphaNumericId } from "@webiny/utils";
9
- import { RuntimeTenant } from "../../runtimeTenant/abstractions.js";
10
10
  class CreateGroupRepositoryImpl {
11
- constructor(groupCache, pluginGroupsProvider, storageOperations, tenantContext, runtimeTenant){
11
+ constructor(groupCache, pluginGroupsProvider, listGroups, createGroup, tenantContext, stringFormatter){
12
12
  this.groupCache = groupCache;
13
13
  this.pluginGroupsProvider = pluginGroupsProvider;
14
- this.storageOperations = storageOperations;
14
+ this.listGroups = listGroups;
15
+ this.createGroup = createGroup;
15
16
  this.tenantContext = tenantContext;
16
- this.runtimeTenant = runtimeTenant;
17
+ this.stringFormatter = stringFormatter;
17
18
  }
18
- async execute(initialGroup) {
19
- const group = this.runtimeTenant.assign(initialGroup);
19
+ async execute(group) {
20
20
  try {
21
21
  const tenant = this.tenantContext.getTenant();
22
22
  if (group.id) {
23
- const existingById = await this.storageOperations.groups.list({
23
+ const existingById = await this.listGroups.execute({
24
24
  where: {
25
25
  tenant: tenant.id,
26
26
  id: group.id
@@ -33,18 +33,18 @@ class CreateGroupRepositoryImpl {
33
33
  const pluginGroups = await this.pluginGroupsProvider.getGroups();
34
34
  const pluginGroupConflict = pluginGroups.find((pg)=>pg.slug === group.slug);
35
35
  if (pluginGroupConflict) return Result.fail(new GroupSlugTakenError(group.slug));
36
- await this.storageOperations.groups.create({
36
+ await this.createGroup.execute({
37
37
  group
38
38
  });
39
39
  this.groupCache.clear();
40
- return Result.ok(group);
40
+ return Result.ok();
41
41
  } catch (error) {
42
42
  return Result.fail(new GroupPersistenceError(error));
43
43
  }
44
44
  }
45
45
  async isSlugTaken(group, tenant) {
46
46
  if (group.slug && group.slug.trim()) {
47
- const existingBySlug = await this.storageOperations.groups.list({
47
+ const existingBySlug = await this.listGroups.execute({
48
48
  where: {
49
49
  tenant,
50
50
  slug: group.slug
@@ -52,8 +52,8 @@ class CreateGroupRepositoryImpl {
52
52
  });
53
53
  return existingBySlug.length > 0;
54
54
  }
55
- const baseSlug = toSlug(group.name);
56
- const existingBySlug = await this.storageOperations.groups.list({
55
+ const baseSlug = this.stringFormatter.slugify(group.name);
56
+ const existingBySlug = await this.listGroups.execute({
57
57
  where: {
58
58
  tenant,
59
59
  slug: baseSlug
@@ -64,15 +64,15 @@ class CreateGroupRepositoryImpl {
64
64
  return false;
65
65
  }
66
66
  }
67
- const CreateGroupRepository_CreateGroupRepository = createImplementation({
68
- abstraction: CreateGroupRepository,
67
+ const CreateGroupRepository_CreateGroupRepository = CreateGroupRepository.createImplementation({
69
68
  implementation: CreateGroupRepositoryImpl,
70
69
  dependencies: [
71
70
  GroupCache,
72
71
  PluginGroupsProvider,
73
- StorageOperations,
72
+ ListGroupsStorageOperation,
73
+ CreateGroupStorageOperation,
74
74
  TenantContext,
75
- RuntimeTenant
75
+ StringFormatter
76
76
  ]
77
77
  });
78
78
  export { CreateGroupRepository_CreateGroupRepository as CreateGroupRepository };
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModelGroup/CreateGroup/CreateGroupRepository.js","sources":["../../../../src/features/contentModelGroup/CreateGroup/CreateGroupRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { CreateGroupRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupSlugTakenError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { toSlug } from \"~/utils/toSlug.js\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport { RuntimeTenant } from \"~/features/runtimeTenant/abstractions.js\";\n\n/**\n * CreateGroupRepository - Validates and persists a new group.\n *\n * Responsibilities:\n * - Validate ID uniqueness (if provided)\n * - Validate slug uniqueness (or generate unique slug)\n * - Check for plugin group conflicts\n * - Persist to storage\n * - Clear GroupCache after successful create\n */\nclass CreateGroupRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private groupCache: GroupCache.Interface,\n private pluginGroupsProvider: PluginGroupsProvider.Interface,\n private storageOperations: StorageOperations.Interface,\n private tenantContext: TenantContext.Interface,\n private runtimeTenant: RuntimeTenant.Interface\n ) {}\n\n async execute(initialGroup: CmsGroup): Promise<Result<CmsGroup, RepositoryAbstraction.Error>> {\n const group = this.runtimeTenant.assign(initialGroup);\n try {\n const tenant = this.tenantContext.getTenant();\n\n // 1. Validate ID uniqueness (if provided)\n if (group.id) {\n const existingById = await this.storageOperations.groups.list({\n where: {\n tenant: tenant.id,\n id: group.id\n }\n });\n\n if (existingById.length > 0) {\n return Result.fail(new GroupSlugTakenError(group.slug));\n }\n }\n\n // 2. Generate or validate slug\n const slugTaken = await this.isSlugTaken(group, tenant.id);\n if (slugTaken) {\n return Result.fail(new GroupSlugTakenError(group.slug));\n }\n\n // 3. Check for plugin group conflicts\n const pluginGroups = await this.pluginGroupsProvider.getGroups();\n const pluginGroupConflict = pluginGroups.find(pg => pg.slug === group.slug);\n if (pluginGroupConflict) {\n return Result.fail(new GroupSlugTakenError(group.slug));\n }\n\n // 4. Persist to storage\n await this.storageOperations.groups.create({ group });\n\n // 5. Clear cache\n this.groupCache.clear();\n\n return Result.ok(group);\n } catch (error) {\n return Result.fail(new GroupPersistenceError(error as Error));\n }\n }\n\n private async isSlugTaken(group: CmsGroup, tenant: string): Promise<boolean> {\n // If slug is provided and not empty, validate it\n if (group.slug && group.slug.trim()) {\n const existingBySlug = await this.storageOperations.groups.list({\n where: {\n tenant,\n slug: group.slug\n }\n });\n\n return existingBySlug.length > 0;\n }\n\n // Generate slug from name\n const baseSlug = toSlug(group.name);\n const existingBySlug = await this.storageOperations.groups.list({\n where: {\n tenant,\n slug: baseSlug\n }\n });\n\n if (existingBySlug.length === 0) {\n // No conflict, use base slug\n group.slug = baseSlug;\n } else {\n // Conflict, append random suffix\n group.slug = `${baseSlug}-${generateAlphaNumericId(8)}`;\n }\n\n return false;\n }\n}\n\nexport const CreateGroupRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: CreateGroupRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n StorageOperations,\n TenantContext,\n RuntimeTenant\n ]\n});\n"],"names":["CreateGroupRepositoryImpl","groupCache","pluginGroupsProvider","storageOperations","tenantContext","runtimeTenant","initialGroup","group","tenant","existingById","Result","GroupSlugTakenError","slugTaken","pluginGroups","pluginGroupConflict","pg","error","GroupPersistenceError","existingBySlug","baseSlug","toSlug","generateAlphaNumericId","CreateGroupRepository","createImplementation","RepositoryAbstraction","GroupCache","PluginGroupsProvider","StorageOperations","TenantContext","RuntimeTenant"],"mappings":";;;;;;;;;AAwBA,MAAMA;IACF,YACYC,UAAgC,EAChCC,oBAAoD,EACpDC,iBAA8C,EAC9CC,aAAsC,EACtCC,aAAsC,CAChD;aALUJ,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,YAAsB,EAA0D;QAC1F,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAACD;QACxC,IAAI;YACA,MAAME,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,IAAID,MAAM,EAAE,EAAE;gBACV,MAAME,eAAe,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC1D,OAAO;wBACH,QAAQD,OAAO,EAAE;wBACjB,IAAID,MAAM,EAAE;oBAChB;gBACJ;gBAEA,IAAIE,aAAa,MAAM,GAAG,GACtB,OAAOC,OAAO,IAAI,CAAC,IAAIC,oBAAoBJ,MAAM,IAAI;YAE7D;YAGA,MAAMK,YAAY,MAAM,IAAI,CAAC,WAAW,CAACL,OAAOC,OAAO,EAAE;YACzD,IAAII,WACA,OAAOF,OAAO,IAAI,CAAC,IAAIC,oBAAoBJ,MAAM,IAAI;YAIzD,MAAMM,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS;YAC9D,MAAMC,sBAAsBD,aAAa,IAAI,CAACE,CAAAA,KAAMA,GAAG,IAAI,KAAKR,MAAM,IAAI;YAC1E,IAAIO,qBACA,OAAOJ,OAAO,IAAI,CAAC,IAAIC,oBAAoBJ,MAAM,IAAI;YAIzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAEA;YAAM;YAGnD,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOG,OAAO,EAAE,CAACH;QACrB,EAAE,OAAOS,OAAO;YACZ,OAAON,OAAO,IAAI,CAAC,IAAIO,sBAAsBD;QACjD;IACJ;IAEA,MAAc,YAAYT,KAAe,EAAEC,MAAc,EAAoB;QAEzE,IAAID,MAAM,IAAI,IAAIA,MAAM,IAAI,CAAC,IAAI,IAAI;YACjC,MAAMW,iBAAiB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5D,OAAO;oBACHV;oBACA,MAAMD,MAAM,IAAI;gBACpB;YACJ;YAEA,OAAOW,eAAe,MAAM,GAAG;QACnC;QAGA,MAAMC,WAAWC,OAAOb,MAAM,IAAI;QAClC,MAAMW,iBAAiB,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;YAC5D,OAAO;gBACHV;gBACA,MAAMW;YACV;QACJ;QAEA,IAAID,AAA0B,MAA1BA,eAAe,MAAM,EAErBX,MAAM,IAAI,GAAGY;aAGbZ,MAAM,IAAI,GAAG,GAAGY,SAAS,CAAC,EAAEE,uBAAuB,IAAI;QAG3D,OAAO;IACX;AACJ;AAEO,MAAMC,8CAAwBC,qBAAqB;IACtD,aAAaC;IACb,gBAAgBxB;IAChB,cAAc;QACVyB;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentModelGroup/CreateGroup/CreateGroupRepository.js","sources":["../../../../src/features/contentModelGroup/CreateGroup/CreateGroupRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateGroupRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupSlugTakenError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { ListGroupsStorageOperation } from \"~/features/shared/storageOperations/group/ListGroupsStorageOperation.js\";\nimport { CreateGroupStorageOperation } from \"~/features/shared/storageOperations/group/CreateGroupStorageOperation.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { StringFormatter } from \"@webiny/api-core/features/stringFormatter/index.js\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * CreateGroupRepository - Validates and persists a new group.\n *\n * Responsibilities:\n * - Validate ID uniqueness (if provided)\n * - Validate slug uniqueness (or generate unique slug)\n * - Check for plugin group conflicts\n * - Persist to storage\n * - Clear GroupCache after successful create\n */\nclass CreateGroupRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private groupCache: GroupCache.Interface,\n private pluginGroupsProvider: PluginGroupsProvider.Interface,\n private listGroups: ListGroupsStorageOperation.Interface,\n private createGroup: CreateGroupStorageOperation.Interface,\n private tenantContext: TenantContext.Interface,\n private stringFormatter: StringFormatter.Interface\n ) {}\n\n async execute(group: CmsGroup): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // 1. Validate ID uniqueness (if provided)\n if (group.id) {\n const existingById = await this.listGroups.execute({\n where: {\n tenant: tenant.id,\n id: group.id\n }\n });\n\n if (existingById.length > 0) {\n return Result.fail(new GroupSlugTakenError(group.slug));\n }\n }\n\n // 2. Generate or validate slug\n const slugTaken = await this.isSlugTaken(group, tenant.id);\n if (slugTaken) {\n return Result.fail(new GroupSlugTakenError(group.slug));\n }\n\n // 3. Check for plugin group conflicts\n const pluginGroups = await this.pluginGroupsProvider.getGroups();\n const pluginGroupConflict = pluginGroups.find(pg => pg.slug === group.slug);\n if (pluginGroupConflict) {\n return Result.fail(new GroupSlugTakenError(group.slug));\n }\n\n // 4. Persist to storage\n await this.createGroup.execute({ group });\n\n // 5. Clear cache\n this.groupCache.clear();\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new GroupPersistenceError(error as Error));\n }\n }\n\n private async isSlugTaken(group: CmsGroup, tenant: string): Promise<boolean> {\n // If slug is provided and not empty, validate it\n if (group.slug && group.slug.trim()) {\n const existingBySlug = await this.listGroups.execute({\n where: {\n tenant,\n slug: group.slug\n }\n });\n\n return existingBySlug.length > 0;\n }\n\n // Generate slug from name\n const baseSlug = this.stringFormatter.slugify(group.name);\n const existingBySlug = await this.listGroups.execute({\n where: {\n tenant,\n slug: baseSlug\n }\n });\n\n if (existingBySlug.length === 0) {\n // No conflict, use base slug\n group.slug = baseSlug;\n } else {\n // Conflict, append random suffix\n group.slug = `${baseSlug}-${generateAlphaNumericId(8)}`;\n }\n\n return false;\n }\n}\n\nexport const CreateGroupRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateGroupRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n ListGroupsStorageOperation,\n CreateGroupStorageOperation,\n TenantContext,\n StringFormatter\n ]\n});\n"],"names":["CreateGroupRepositoryImpl","groupCache","pluginGroupsProvider","listGroups","createGroup","tenantContext","stringFormatter","group","tenant","existingById","Result","GroupSlugTakenError","slugTaken","pluginGroups","pluginGroupConflict","pg","error","GroupPersistenceError","existingBySlug","baseSlug","generateAlphaNumericId","CreateGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","ListGroupsStorageOperation","CreateGroupStorageOperation","TenantContext","StringFormatter"],"mappings":";;;;;;;;;AAuBA,MAAMA;IACF,YACYC,UAAgC,EAChCC,oBAAoD,EACpDC,UAAgD,EAChDC,WAAkD,EAClDC,aAAsC,EACtCC,eAA0C,CACpD;aANUL,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,UAAU,GAAVA;aACAC,WAAW,GAAXA;aACAC,aAAa,GAAbA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QAAQC,KAAe,EAAsD;QAC/E,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,IAAID,MAAM,EAAE,EAAE;gBACV,MAAME,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;oBAC/C,OAAO;wBACH,QAAQD,OAAO,EAAE;wBACjB,IAAID,MAAM,EAAE;oBAChB;gBACJ;gBAEA,IAAIE,aAAa,MAAM,GAAG,GACtB,OAAOC,OAAO,IAAI,CAAC,IAAIC,oBAAoBJ,MAAM,IAAI;YAE7D;YAGA,MAAMK,YAAY,MAAM,IAAI,CAAC,WAAW,CAACL,OAAOC,OAAO,EAAE;YACzD,IAAII,WACA,OAAOF,OAAO,IAAI,CAAC,IAAIC,oBAAoBJ,MAAM,IAAI;YAIzD,MAAMM,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS;YAC9D,MAAMC,sBAAsBD,aAAa,IAAI,CAACE,CAAAA,KAAMA,GAAG,IAAI,KAAKR,MAAM,IAAI;YAC1E,IAAIO,qBACA,OAAOJ,OAAO,IAAI,CAAC,IAAIC,oBAAoBJ,MAAM,IAAI;YAIzD,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAAEA;YAAM;YAGvC,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOG,OAAO,EAAE;QACpB,EAAE,OAAOM,OAAO;YACZ,OAAON,OAAO,IAAI,CAAC,IAAIO,sBAAsBD;QACjD;IACJ;IAEA,MAAc,YAAYT,KAAe,EAAEC,MAAc,EAAoB;QAEzE,IAAID,MAAM,IAAI,IAAIA,MAAM,IAAI,CAAC,IAAI,IAAI;YACjC,MAAMW,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjD,OAAO;oBACHV;oBACA,MAAMD,MAAM,IAAI;gBACpB;YACJ;YAEA,OAAOW,eAAe,MAAM,GAAG;QACnC;QAGA,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,OAAO,CAACZ,MAAM,IAAI;QACxD,MAAMW,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACjD,OAAO;gBACHV;gBACA,MAAMW;YACV;QACJ;QAEA,IAAID,AAA0B,MAA1BA,eAAe,MAAM,EAErBX,MAAM,IAAI,GAAGY;aAGbZ,MAAM,IAAI,GAAG,GAAGY,SAAS,CAAC,EAAEC,uBAAuB,IAAI;QAG3D,OAAO;IACX;AACJ;AAEO,MAAMC,8CAAwBC,sBAAAA,oBAA0C,CAAC;IAC5E,gBAAgBtB;IAChB,cAAc;QACVuB;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -5,6 +5,7 @@ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.j
5
5
  import { AccessControl } from "../../../features/shared/abstractions.js";
6
6
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
7
7
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
8
+ import { CmsContext } from "../../../features/shared/abstractions.js";
8
9
  import type { CmsGroup } from "../../../types/index.js";
9
10
  import type { CmsGroupCreateInput } from "../../../types/index.js";
10
11
  /**
@@ -24,8 +25,11 @@ declare class CreateGroupUseCaseImpl implements UseCaseAbstraction.Interface {
24
25
  private accessControl;
25
26
  private tenantContext;
26
27
  private identityContext;
27
- constructor(eventPublisher: EventPublisher.Interface, repository: CreateGroupRepository.Interface, accessControl: AccessControl.Interface, tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface);
28
+ private cmsContext;
29
+ constructor(eventPublisher: EventPublisher.Interface, repository: CreateGroupRepository.Interface, accessControl: AccessControl.Interface, tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface, cmsContext: CmsContext.Interface);
28
30
  execute(input: CmsGroupCreateInput): Promise<Result<CmsGroup, UseCaseAbstraction.Error>>;
29
31
  }
30
- export declare const CreateGroupUseCase: import("@webiny/di").Implementation<typeof CreateGroupUseCaseImpl>;
32
+ export declare const CreateGroupUseCase: typeof CreateGroupUseCaseImpl & {
33
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateGroupUseCase>;
34
+ };
31
35
  export {};
@@ -1,20 +1,21 @@
1
- import { Result, createImplementation } from "@webiny/feature/api";
1
+ import { Result } from "@webiny/feature/api";
2
2
  import { CreateGroupRepository, CreateGroupUseCase } from "./abstractions.js";
3
3
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
4
4
  import { GroupAfterCreateEvent, GroupBeforeCreateEventEvent, GroupCreateErrorEvent } from "./events.js";
5
- import { AccessControl } from "../../shared/abstractions.js";
5
+ import { AccessControl, CmsContext } from "../../shared/abstractions.js";
6
6
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
7
7
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
8
8
  import { GroupNotAuthorizedError, GroupValidationError } from "../../../domain/contentModelGroup/errors.js";
9
9
  import { createZodError, mdbid } from "@webiny/utils";
10
10
  import { createGroupCreateValidation } from "../../../domain/contentModelGroup/validation.js";
11
11
  class CreateGroupUseCaseImpl {
12
- constructor(eventPublisher, repository, accessControl, tenantContext, identityContext){
12
+ constructor(eventPublisher, repository, accessControl, tenantContext, identityContext, cmsContext){
13
13
  this.eventPublisher = eventPublisher;
14
14
  this.repository = repository;
15
15
  this.accessControl = accessControl;
16
16
  this.tenantContext = tenantContext;
17
17
  this.identityContext = identityContext;
18
+ this.cmsContext = cmsContext;
18
19
  }
19
20
  async execute(input) {
20
21
  const canAccess = await this.accessControl.canAccessGroup({
@@ -61,9 +62,9 @@ class CreateGroupUseCaseImpl {
61
62
  return Result.fail(result.error);
62
63
  }
63
64
  await this.eventPublisher.publish(new GroupAfterCreateEvent({
64
- group: result.value
65
+ group
65
66
  }));
66
- return Result.ok(result.value);
67
+ return Result.ok(group);
67
68
  } catch (error) {
68
69
  await this.eventPublisher.publish(new GroupCreateErrorEvent({
69
70
  input,
@@ -74,15 +75,15 @@ class CreateGroupUseCaseImpl {
74
75
  }
75
76
  }
76
77
  }
77
- const CreateGroupUseCase_CreateGroupUseCase = createImplementation({
78
- abstraction: CreateGroupUseCase,
78
+ const CreateGroupUseCase_CreateGroupUseCase = CreateGroupUseCase.createImplementation({
79
79
  implementation: CreateGroupUseCaseImpl,
80
80
  dependencies: [
81
81
  EventPublisher,
82
82
  CreateGroupRepository,
83
83
  AccessControl,
84
84
  TenantContext,
85
- IdentityContext
85
+ IdentityContext,
86
+ CmsContext
86
87
  ]
87
88
  });
88
89
  export { CreateGroupUseCase_CreateGroupUseCase as CreateGroupUseCase };
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModelGroup/CreateGroup/CreateGroupUseCase.js","sources":["../../../../src/features/contentModelGroup/CreateGroup/CreateGroupUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { CreateGroupUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { CreateGroupRepository } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { GroupBeforeCreateEventEvent } from \"./events.js\";\nimport { GroupAfterCreateEvent } from \"./events.js\";\nimport { GroupCreateErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport {\n GroupNotAuthorizedError,\n GroupValidationError\n} from \"~/domain/contentModelGroup/errors.js\";\nimport { createZodError } from \"@webiny/utils\";\nimport { mdbid } from \"@webiny/utils\";\nimport { createGroupCreateValidation } from \"~/domain/contentModelGroup/validation.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport type { CmsGroupCreateInput } from \"~/types/index.js\";\n\n/**\n * CreateGroupUseCase - Orchestrates group creation.\n *\n * Responsibilities:\n * - Validate input (Zod)\n * - Create domain group object\n * - Access control checks\n * - Publish before event\n * - Delegate to repository\n * - Publish after event or error event\n */\nclass CreateGroupUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: CreateGroupRepository.Interface,\n private accessControl: AccessControl.Interface,\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface\n ) {}\n\n async execute(input: CmsGroupCreateInput): Promise<Result<CmsGroup, UseCaseAbstraction.Error>> {\n // Initial access control check\n const canAccess = await this.accessControl.canAccessGroup({ rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n // Validate input\n const validationResult = await createGroupCreateValidation().safeParseAsync(input);\n if (!validationResult.success) {\n const zodError = createZodError(validationResult.error);\n return Result.fail(\n new GroupValidationError(zodError.message, zodError.data!.invalidFields)\n );\n }\n const data = validationResult.data;\n\n // Create domain group object\n const identity = this.identityContext.getIdentity();\n const tenant = this.tenantContext.getTenant();\n\n const id = data.id || mdbid();\n const group: CmsGroup = {\n ...data,\n id,\n tenant: tenant.id,\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 };\n\n // Access control check on created group\n const canAccessGroup = await this.accessControl.canAccessGroup({ group, rwd: \"w\" });\n if (!canAccessGroup) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n try {\n // Publish before event\n await this.eventPublisher.publish(new GroupBeforeCreateEventEvent({ group }));\n\n // Persist via repository\n const result = await this.repository.execute(group);\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new GroupCreateErrorEvent({\n input,\n group,\n error: result.error\n })\n );\n return Result.fail(result.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new GroupAfterCreateEvent({\n group: result.value\n })\n );\n\n return Result.ok(result.value);\n } catch (error) {\n // Publish error event for unexpected errors\n await this.eventPublisher.publish(\n new GroupCreateErrorEvent({\n input,\n group,\n error: error as Error\n })\n );\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const CreateGroupUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateGroupUseCaseImpl,\n dependencies: [\n EventPublisher,\n CreateGroupRepository,\n AccessControl,\n TenantContext,\n IdentityContext\n ]\n});\n"],"names":["CreateGroupUseCaseImpl","eventPublisher","repository","accessControl","tenantContext","identityContext","input","canAccess","Result","GroupNotAuthorizedError","validationResult","createGroupCreateValidation","zodError","createZodError","GroupValidationError","data","identity","tenant","id","mdbid","group","Date","canAccessGroup","GroupBeforeCreateEventEvent","result","GroupCreateErrorEvent","GroupAfterCreateEvent","error","CreateGroupUseCase","createImplementation","UseCaseAbstraction","EventPublisher","CreateGroupRepository","AccessControl","TenantContext","IdentityContext"],"mappings":";;;;;;;;;;AAgCA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,CACpD;aALUJ,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;aACAC,eAAe,GAAfA;IACT;IAEH,MAAM,QAAQC,KAA0B,EAAuD;QAE3F,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAE,KAAK;QAAI;QACrE,IAAI,CAACA,WACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,mBAAmB,MAAMC,8BAA8B,cAAc,CAACL;QAC5E,IAAI,CAACI,iBAAiB,OAAO,EAAE;YAC3B,MAAME,WAAWC,eAAeH,iBAAiB,KAAK;YACtD,OAAOF,OAAO,IAAI,CACd,IAAIM,qBAAqBF,SAAS,OAAO,EAAEA,SAAS,IAAI,CAAE,aAAa;QAE/E;QACA,MAAMG,OAAOL,iBAAiB,IAAI;QAGlC,MAAMM,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAE3C,MAAMC,KAAKH,KAAK,EAAE,IAAII;QACtB,MAAMC,QAAkB;YACpB,GAAGL,IAAI;YACPG;YACA,QAAQD,OAAO,EAAE;YACjB,WAAW,IAAII,OAAO,WAAW;YACjC,SAAS,IAAIA,OAAO,WAAW;YAC/B,WAAW;gBACP,IAAIL,SAAS,EAAE;gBACf,aAAaA,SAAS,WAAW;gBACjC,MAAMA,SAAS,IAAI;YACvB;QACJ;QAGA,MAAMM,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAEF;YAAO,KAAK;QAAI;QACjF,IAAI,CAACE,gBACD,OAAOd,OAAO,IAAI,CAAC,IAAIC;QAG3B,IAAI;YAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIc,4BAA4B;gBAAEH;YAAM;YAG1E,MAAMI,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACJ;YAC7C,IAAII,OAAO,MAAM,IAAI;gBAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,sBAAsB;oBACtBnB;oBACAc;oBACA,OAAOI,OAAO,KAAK;gBACvB;gBAEJ,OAAOhB,OAAO,IAAI,CAACgB,OAAO,KAAK;YACnC;YAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIE,sBAAsB;gBACtB,OAAOF,OAAO,KAAK;YACvB;YAGJ,OAAOhB,OAAO,EAAE,CAACgB,OAAO,KAAK;QACjC,EAAE,OAAOG,OAAO;YAEZ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIF,sBAAsB;gBACtBnB;gBACAc;gBACA,OAAOO;YACX;YAEJ,OAAOnB,OAAO,IAAI,CAACmB;QACvB;IACJ;AACJ;AAEO,MAAMC,wCAAqBC,qBAAqB;IACnD,aAAaC;IACb,gBAAgB9B;IAChB,cAAc;QACV+B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentModelGroup/CreateGroup/CreateGroupUseCase.js","sources":["../../../../src/features/contentModelGroup/CreateGroup/CreateGroupUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateGroupUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { CreateGroupRepository } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { GroupBeforeCreateEventEvent } from \"./events.js\";\nimport { GroupAfterCreateEvent } from \"./events.js\";\nimport { GroupCreateErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport {\n GroupNotAuthorizedError,\n GroupValidationError\n} from \"~/domain/contentModelGroup/errors.js\";\nimport { createZodError } from \"@webiny/utils\";\nimport { mdbid } from \"@webiny/utils\";\nimport { createGroupCreateValidation } from \"~/domain/contentModelGroup/validation.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport type { CmsGroupCreateInput } from \"~/types/index.js\";\n\n/**\n * CreateGroupUseCase - Orchestrates group creation.\n *\n * Responsibilities:\n * - Validate input (Zod)\n * - Create domain group object\n * - Access control checks\n * - Publish before event\n * - Delegate to repository\n * - Publish after event or error event\n */\nclass CreateGroupUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: CreateGroupRepository.Interface,\n private accessControl: AccessControl.Interface,\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private cmsContext: CmsContext.Interface\n ) {}\n\n async execute(input: CmsGroupCreateInput): Promise<Result<CmsGroup, UseCaseAbstraction.Error>> {\n // Initial access control check\n const canAccess = await this.accessControl.canAccessGroup({ rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n // Validate input\n const validationResult = await createGroupCreateValidation().safeParseAsync(input);\n if (!validationResult.success) {\n const zodError = createZodError(validationResult.error);\n return Result.fail(\n new GroupValidationError(zodError.message, zodError.data!.invalidFields)\n );\n }\n const data = validationResult.data;\n\n // Create domain group object\n const identity = this.identityContext.getIdentity();\n const tenant = this.tenantContext.getTenant();\n\n const id = data.id || mdbid();\n const group: CmsGroup = {\n ...data,\n id,\n tenant: tenant.id,\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 };\n\n // Access control check on created group\n const canAccessGroup = await this.accessControl.canAccessGroup({ group, rwd: \"w\" });\n if (!canAccessGroup) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n try {\n // Publish before event\n await this.eventPublisher.publish(new GroupBeforeCreateEventEvent({ group }));\n\n // Persist via repository\n const result = await this.repository.execute(group);\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new GroupCreateErrorEvent({\n input,\n group,\n error: result.error\n })\n );\n return Result.fail(result.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(new GroupAfterCreateEvent({ group }));\n\n return Result.ok(group);\n } catch (error) {\n // Publish error event for unexpected errors\n await this.eventPublisher.publish(\n new GroupCreateErrorEvent({\n input,\n group,\n error: error as Error\n })\n );\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const CreateGroupUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateGroupUseCaseImpl,\n dependencies: [\n EventPublisher,\n CreateGroupRepository,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"names":["CreateGroupUseCaseImpl","eventPublisher","repository","accessControl","tenantContext","identityContext","cmsContext","input","canAccess","Result","GroupNotAuthorizedError","validationResult","createGroupCreateValidation","zodError","createZodError","GroupValidationError","data","identity","tenant","id","mdbid","group","Date","canAccessGroup","GroupBeforeCreateEventEvent","result","GroupCreateErrorEvent","GroupAfterCreateEvent","error","CreateGroupUseCase","UseCaseAbstraction","EventPublisher","CreateGroupRepository","AccessControl","TenantContext","IdentityContext","CmsContext"],"mappings":";;;;;;;;;;AAgCA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,EAC1CC,UAAgC,CAC1C;aANUL,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAA0B,EAAuD;QAE3F,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAE,KAAK;QAAI;QACrE,IAAI,CAACA,WACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,mBAAmB,MAAMC,8BAA8B,cAAc,CAACL;QAC5E,IAAI,CAACI,iBAAiB,OAAO,EAAE;YAC3B,MAAME,WAAWC,eAAeH,iBAAiB,KAAK;YACtD,OAAOF,OAAO,IAAI,CACd,IAAIM,qBAAqBF,SAAS,OAAO,EAAEA,SAAS,IAAI,CAAE,aAAa;QAE/E;QACA,MAAMG,OAAOL,iBAAiB,IAAI;QAGlC,MAAMM,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAE3C,MAAMC,KAAKH,KAAK,EAAE,IAAII;QACtB,MAAMC,QAAkB;YACpB,GAAGL,IAAI;YACPG;YACA,QAAQD,OAAO,EAAE;YACjB,WAAW,IAAII,OAAO,WAAW;YACjC,SAAS,IAAIA,OAAO,WAAW;YAC/B,WAAW;gBACP,IAAIL,SAAS,EAAE;gBACf,aAAaA,SAAS,WAAW;gBACjC,MAAMA,SAAS,IAAI;YACvB;QACJ;QAGA,MAAMM,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAEF;YAAO,KAAK;QAAI;QACjF,IAAI,CAACE,gBACD,OAAOd,OAAO,IAAI,CAAC,IAAIC;QAG3B,IAAI;YAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIc,4BAA4B;gBAAEH;YAAM;YAG1E,MAAMI,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACJ;YAC7C,IAAII,OAAO,MAAM,IAAI;gBAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,sBAAsB;oBACtBnB;oBACAc;oBACA,OAAOI,OAAO,KAAK;gBACvB;gBAEJ,OAAOhB,OAAO,IAAI,CAACgB,OAAO,KAAK;YACnC;YAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIE,sBAAsB;gBAAEN;YAAM;YAEpE,OAAOZ,OAAO,EAAE,CAACY;QACrB,EAAE,OAAOO,OAAO;YAEZ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIF,sBAAsB;gBACtBnB;gBACAc;gBACA,OAAOO;YACX;YAEJ,OAAOnB,OAAO,IAAI,CAACmB;QACvB;IACJ;AACJ;AAEO,MAAMC,wCAAqBC,mBAAAA,oBAAuC,CAAC;IACtE,gBAAgB9B;IAChB,cAAc;QACV+B;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -26,7 +26,7 @@ export declare namespace CreateGroupUseCase {
26
26
  * CreateGroupRepository - Persists a new group to storage.
27
27
  */
28
28
  export interface ICreateGroupRepository {
29
- execute(group: CmsGroup): Promise<Result<CmsGroup, RepositoryError>>;
29
+ execute(group: CmsGroup): Promise<Result<void, RepositoryError>>;
30
30
  }
31
31
  export interface ICreateGroupRepositoryErrors {
32
32
  alreadyExists: GroupSlugTakenError;
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModelGroup/CreateGroup/abstractions.js","sources":["../../../../src/features/contentModelGroup/CreateGroup/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsGroup, CmsGroupCreateInput } from \"~/types/index.js\";\nimport type {\n GroupPersistenceError,\n GroupValidationError\n} from \"~/domain/contentModelGroup/errors.js\";\nimport {\n GroupNotAuthorizedError,\n type GroupSlugTakenError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * CreateGroup Use Case\n */\nexport interface ICreateGroupUseCase {\n execute(input: CmsGroupCreateInput): Promise<Result<CmsGroup, UseCaseError>>;\n}\n\nexport interface ICreateGroupUseCaseErrors {\n notAuthorized: GroupNotAuthorizedError;\n validation: GroupValidationError;\n repository: RepositoryError;\n}\n\ntype UseCaseError = ICreateGroupUseCaseErrors[keyof ICreateGroupUseCaseErrors];\n\n/** Create a new content model group. */\nexport const CreateGroupUseCase = createAbstraction<ICreateGroupUseCase>(\"CreateGroupUseCase\");\n\nexport namespace CreateGroupUseCase {\n export type Interface = ICreateGroupUseCase;\n export type Input = CmsGroupCreateInput;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<CmsGroup, UseCaseError>>;\n}\n\n/**\n * CreateGroupRepository - Persists a new group to storage.\n */\nexport interface ICreateGroupRepository {\n execute(group: CmsGroup): Promise<Result<CmsGroup, RepositoryError>>;\n}\n\nexport interface ICreateGroupRepositoryErrors {\n alreadyExists: GroupSlugTakenError;\n storage: GroupPersistenceError;\n}\n\ntype RepositoryError = ICreateGroupRepositoryErrors[keyof ICreateGroupRepositoryErrors];\n\nexport const CreateGroupRepository =\n createAbstraction<ICreateGroupRepository>(\"CreateGroupRepository\");\n\nexport namespace CreateGroupRepository {\n export type Interface = ICreateGroupRepository;\n export type Error = RepositoryError;\n}\n"],"names":["CreateGroupUseCase","createAbstraction","CreateGroupRepository"],"mappings":";AA2BO,MAAMA,qBAAqBC,kBAAuC;AAwBlE,MAAMC,wBACTD,kBAA0C"}
1
+ {"version":3,"file":"features/contentModelGroup/CreateGroup/abstractions.js","sources":["../../../../src/features/contentModelGroup/CreateGroup/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsGroup, CmsGroupCreateInput } from \"~/types/index.js\";\nimport type {\n GroupPersistenceError,\n GroupValidationError\n} from \"~/domain/contentModelGroup/errors.js\";\nimport {\n GroupNotAuthorizedError,\n type GroupSlugTakenError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * CreateGroup Use Case\n */\nexport interface ICreateGroupUseCase {\n execute(input: CmsGroupCreateInput): Promise<Result<CmsGroup, UseCaseError>>;\n}\n\nexport interface ICreateGroupUseCaseErrors {\n notAuthorized: GroupNotAuthorizedError;\n validation: GroupValidationError;\n repository: RepositoryError;\n}\n\ntype UseCaseError = ICreateGroupUseCaseErrors[keyof ICreateGroupUseCaseErrors];\n\n/** Create a new content model group. */\nexport const CreateGroupUseCase = createAbstraction<ICreateGroupUseCase>(\"CreateGroupUseCase\");\n\nexport namespace CreateGroupUseCase {\n export type Interface = ICreateGroupUseCase;\n export type Input = CmsGroupCreateInput;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<CmsGroup, UseCaseError>>;\n}\n\n/**\n * CreateGroupRepository - Persists a new group to storage.\n */\nexport interface ICreateGroupRepository {\n execute(group: CmsGroup): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface ICreateGroupRepositoryErrors {\n alreadyExists: GroupSlugTakenError;\n storage: GroupPersistenceError;\n}\n\ntype RepositoryError = ICreateGroupRepositoryErrors[keyof ICreateGroupRepositoryErrors];\n\nexport const CreateGroupRepository =\n createAbstraction<ICreateGroupRepository>(\"CreateGroupRepository\");\n\nexport namespace CreateGroupRepository {\n export type Interface = ICreateGroupRepository;\n export type Error = RepositoryError;\n}\n"],"names":["CreateGroupUseCase","createAbstraction","CreateGroupRepository"],"mappings":";AA2BO,MAAMA,qBAAqBC,kBAAuC;AAwBlE,MAAMC,wBACTD,kBAA0C"}
@@ -2,9 +2,9 @@ import { Result } from "@webiny/feature/api";
2
2
  import { DeleteGroupRepository as RepositoryAbstraction } from "./abstractions.js";
3
3
  import { GroupCache } from "../../../features/contentModelGroup/shared/abstractions.js";
4
4
  import { PluginGroupsProvider } from "../../../features/contentModelGroup/shared/abstractions.js";
5
- import { StorageOperations } from "../../../features/shared/abstractions.js";
5
+ import { DeleteGroupStorageOperation } from "../../../features/shared/storageOperations/group/DeleteGroupStorageOperation.js";
6
+ import { ListModelsStorageOperation } from "../../../features/shared/storageOperations/model/ListModelsStorageOperation.js";
6
7
  import type { CmsGroup } from "../../../types/index.js";
7
- import { RuntimeTenant } from "../../../features/runtimeTenant/abstractions.js";
8
8
  /**
9
9
  * DeleteGroupRepository - Validates and performs group deletion.
10
10
  *
@@ -17,10 +17,12 @@ import { RuntimeTenant } from "../../../features/runtimeTenant/abstractions.js";
17
17
  declare class DeleteGroupRepositoryImpl implements RepositoryAbstraction.Interface {
18
18
  private groupCache;
19
19
  private pluginGroupsProvider;
20
- private storageOperations;
21
- private runtimeTenant;
22
- constructor(groupCache: GroupCache.Interface, pluginGroupsProvider: PluginGroupsProvider.Interface, storageOperations: StorageOperations.Interface, runtimeTenant: RuntimeTenant.Interface);
23
- execute(initialGroup: CmsGroup): Promise<Result<void, RepositoryAbstraction.Error>>;
20
+ private deleteGroup;
21
+ private listModels;
22
+ constructor(groupCache: GroupCache.Interface, pluginGroupsProvider: PluginGroupsProvider.Interface, deleteGroup: DeleteGroupStorageOperation.Interface, listModels: ListModelsStorageOperation.Interface);
23
+ execute(group: CmsGroup): Promise<Result<void, RepositoryAbstraction.Error>>;
24
24
  }
25
- export declare const DeleteGroupRepository: import("@webiny/di").Implementation<typeof DeleteGroupRepositoryImpl>;
25
+ export declare const DeleteGroupRepository: typeof DeleteGroupRepositoryImpl & {
26
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDeleteGroupRepository>;
27
+ };
26
28
  export {};
@@ -1,30 +1,29 @@
1
- import { Result, createImplementation } from "@webiny/feature/api";
1
+ import { Result } from "@webiny/feature/api";
2
2
  import { DeleteGroupRepository } from "./abstractions.js";
3
3
  import { GroupCache, PluginGroupsProvider } from "../shared/abstractions.js";
4
4
  import { GroupCannotDeleteCodeDefinedError, GroupHasModelsError, GroupPersistenceError } from "../../../domain/contentModelGroup/errors.js";
5
- import { StorageOperations } from "../../shared/abstractions.js";
6
- import { RuntimeTenant } from "../../runtimeTenant/abstractions.js";
5
+ import { DeleteGroupStorageOperation } from "../../shared/storageOperations/group/DeleteGroupStorageOperation.js";
6
+ import { ListModelsStorageOperation } from "../../shared/storageOperations/model/ListModelsStorageOperation.js";
7
7
  class DeleteGroupRepositoryImpl {
8
- constructor(groupCache, pluginGroupsProvider, storageOperations, runtimeTenant){
8
+ constructor(groupCache, pluginGroupsProvider, deleteGroup, listModels){
9
9
  this.groupCache = groupCache;
10
10
  this.pluginGroupsProvider = pluginGroupsProvider;
11
- this.storageOperations = storageOperations;
12
- this.runtimeTenant = runtimeTenant;
11
+ this.deleteGroup = deleteGroup;
12
+ this.listModels = listModels;
13
13
  }
14
- async execute(initialGroup) {
15
- const group = this.runtimeTenant.assign(initialGroup);
14
+ async execute(group) {
16
15
  try {
17
16
  const pluginGroups = await this.pluginGroupsProvider.getGroups();
18
17
  const isPluginGroup = pluginGroups.some((pg)=>pg.slug === group.slug);
19
18
  if (isPluginGroup) return Result.fail(new GroupCannotDeleteCodeDefinedError(group.id));
20
- const models = await this.storageOperations.models.list({
19
+ const models = await this.listModels.execute({
21
20
  where: {
22
21
  tenant: group.tenant
23
22
  }
24
23
  });
25
24
  const items = models.filter((model)=>model.group === group.slug);
26
25
  if (items.length > 0) return Result.fail(new GroupHasModelsError());
27
- await this.storageOperations.groups.delete({
26
+ await this.deleteGroup.execute({
28
27
  group
29
28
  });
30
29
  this.groupCache.clear();
@@ -34,14 +33,13 @@ class DeleteGroupRepositoryImpl {
34
33
  }
35
34
  }
36
35
  }
37
- const DeleteGroupRepository_DeleteGroupRepository = createImplementation({
38
- abstraction: DeleteGroupRepository,
36
+ const DeleteGroupRepository_DeleteGroupRepository = DeleteGroupRepository.createImplementation({
39
37
  implementation: DeleteGroupRepositoryImpl,
40
38
  dependencies: [
41
39
  GroupCache,
42
40
  PluginGroupsProvider,
43
- StorageOperations,
44
- RuntimeTenant
41
+ DeleteGroupStorageOperation,
42
+ ListModelsStorageOperation
45
43
  ]
46
44
  });
47
45
  export { DeleteGroupRepository_DeleteGroupRepository as DeleteGroupRepository };
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js","sources":["../../../../src/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { DeleteGroupRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupCannotDeleteCodeDefinedError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupHasModelsError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport { RuntimeTenant } from \"~/features/runtimeTenant/abstractions.js\";\n\n/**\n * DeleteGroupRepository - Validates and performs group deletion.\n *\n * Responsibilities:\n * - Check if group is plugin-based (cannot delete)\n * - Check if models reference this group (cannot delete)\n * - Persist deletion to storage\n * - Clear GroupCache after successful deletion\n */\nclass DeleteGroupRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private groupCache: GroupCache.Interface,\n private pluginGroupsProvider: PluginGroupsProvider.Interface,\n private storageOperations: StorageOperations.Interface,\n private runtimeTenant: RuntimeTenant.Interface\n ) {}\n\n async execute(initialGroup: CmsGroup): Promise<Result<void, RepositoryAbstraction.Error>> {\n const group = this.runtimeTenant.assign(initialGroup);\n try {\n // Check if this is a plugin-based group (cannot be deleted)\n const pluginGroups = await this.pluginGroupsProvider.getGroups();\n const isPluginGroup = pluginGroups.some(pg => pg.slug === group.slug);\n\n if (isPluginGroup) {\n return Result.fail(new GroupCannotDeleteCodeDefinedError(group.id));\n }\n\n // Check if any models reference this group\n const models = await this.storageOperations.models.list({\n where: {\n tenant: group.tenant\n }\n });\n\n const items = models.filter(model => model.group === group.slug);\n if (items.length > 0) {\n return Result.fail(new GroupHasModelsError());\n }\n\n // Perform deletion\n await this.storageOperations.groups.delete({ group });\n\n // Clear cache\n this.groupCache.clear();\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new GroupPersistenceError(error as Error));\n }\n }\n}\n\nexport const DeleteGroupRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: DeleteGroupRepositoryImpl,\n dependencies: [GroupCache, PluginGroupsProvider, StorageOperations, RuntimeTenant]\n});\n"],"names":["DeleteGroupRepositoryImpl","groupCache","pluginGroupsProvider","storageOperations","runtimeTenant","initialGroup","group","pluginGroups","isPluginGroup","pg","Result","GroupCannotDeleteCodeDefinedError","models","items","model","GroupHasModelsError","error","GroupPersistenceError","DeleteGroupRepository","createImplementation","RepositoryAbstraction","GroupCache","PluginGroupsProvider","StorageOperations","RuntimeTenant"],"mappings":";;;;;;AAqBA,MAAMA;IACF,YACYC,UAAgC,EAChCC,oBAAoD,EACpDC,iBAA8C,EAC9CC,aAAsC,CAChD;aAJUH,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,YAAsB,EAAsD;QACtF,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAACD;QACxC,IAAI;YAEA,MAAME,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS;YAC9D,MAAMC,gBAAgBD,aAAa,IAAI,CAACE,CAAAA,KAAMA,GAAG,IAAI,KAAKH,MAAM,IAAI;YAEpE,IAAIE,eACA,OAAOE,OAAO,IAAI,CAAC,IAAIC,kCAAkCL,MAAM,EAAE;YAIrE,MAAMM,SAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;gBACpD,OAAO;oBACH,QAAQN,MAAM,MAAM;gBACxB;YACJ;YAEA,MAAMO,QAAQD,OAAO,MAAM,CAACE,CAAAA,QAASA,MAAM,KAAK,KAAKR,MAAM,IAAI;YAC/D,IAAIO,MAAM,MAAM,GAAG,GACf,OAAOH,OAAO,IAAI,CAAC,IAAIK;YAI3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAET;YAAM;YAGnD,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOI,OAAO,EAAE;QACpB,EAAE,OAAOM,OAAO;YACZ,OAAON,OAAO,IAAI,CAAC,IAAIO,sBAAsBD;QACjD;IACJ;AACJ;AAEO,MAAME,8CAAwBC,qBAAqB;IACtD,aAAaC;IACb,gBAAgBpB;IAChB,cAAc;QAACqB;QAAYC;QAAsBC;QAAmBC;KAAc;AACtF"}
1
+ {"version":3,"file":"features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js","sources":["../../../../src/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteGroupRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupCannotDeleteCodeDefinedError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupHasModelsError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { DeleteGroupStorageOperation } from \"~/features/shared/storageOperations/group/DeleteGroupStorageOperation.js\";\nimport { ListModelsStorageOperation } from \"~/features/shared/storageOperations/model/ListModelsStorageOperation.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * DeleteGroupRepository - Validates and performs group deletion.\n *\n * Responsibilities:\n * - Check if group is plugin-based (cannot delete)\n * - Check if models reference this group (cannot delete)\n * - Persist deletion to storage\n * - Clear GroupCache after successful deletion\n */\nclass DeleteGroupRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private groupCache: GroupCache.Interface,\n private pluginGroupsProvider: PluginGroupsProvider.Interface,\n private deleteGroup: DeleteGroupStorageOperation.Interface,\n private listModels: ListModelsStorageOperation.Interface\n ) {}\n\n async execute(group: CmsGroup): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n // Check if this is a plugin-based group (cannot be deleted)\n const pluginGroups = await this.pluginGroupsProvider.getGroups();\n const isPluginGroup = pluginGroups.some(pg => pg.slug === group.slug);\n\n if (isPluginGroup) {\n return Result.fail(new GroupCannotDeleteCodeDefinedError(group.id));\n }\n\n // Check if any models reference this group\n const models = await this.listModels.execute({\n where: {\n tenant: group.tenant\n }\n });\n\n const items = models.filter(model => model.group === group.slug);\n if (items.length > 0) {\n return Result.fail(new GroupHasModelsError());\n }\n\n // Perform deletion\n await this.deleteGroup.execute({ group });\n\n // Clear cache\n this.groupCache.clear();\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new GroupPersistenceError(error as Error));\n }\n }\n}\n\nexport const DeleteGroupRepository = RepositoryAbstraction.createImplementation({\n implementation: DeleteGroupRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n DeleteGroupStorageOperation,\n ListModelsStorageOperation\n ]\n});\n"],"names":["DeleteGroupRepositoryImpl","groupCache","pluginGroupsProvider","deleteGroup","listModels","group","pluginGroups","isPluginGroup","pg","Result","GroupCannotDeleteCodeDefinedError","models","items","model","GroupHasModelsError","error","GroupPersistenceError","DeleteGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","DeleteGroupStorageOperation","ListModelsStorageOperation"],"mappings":";;;;;;AAoBA,MAAMA;IACF,YACYC,UAAgC,EAChCC,oBAAoD,EACpDC,WAAkD,EAClDC,UAAgD,CAC1D;aAJUH,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,WAAW,GAAXA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,KAAe,EAAsD;QAC/E,IAAI;YAEA,MAAMC,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS;YAC9D,MAAMC,gBAAgBD,aAAa,IAAI,CAACE,CAAAA,KAAMA,GAAG,IAAI,KAAKH,MAAM,IAAI;YAEpE,IAAIE,eACA,OAAOE,OAAO,IAAI,CAAC,IAAIC,kCAAkCL,MAAM,EAAE;YAIrE,MAAMM,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACzC,OAAO;oBACH,QAAQN,MAAM,MAAM;gBACxB;YACJ;YAEA,MAAMO,QAAQD,OAAO,MAAM,CAACE,CAAAA,QAASA,MAAM,KAAK,KAAKR,MAAM,IAAI;YAC/D,IAAIO,MAAM,MAAM,GAAG,GACf,OAAOH,OAAO,IAAI,CAAC,IAAIK;YAI3B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAAET;YAAM;YAGvC,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOI,OAAO,EAAE;QACpB,EAAE,OAAOM,OAAO;YACZ,OAAON,OAAO,IAAI,CAAC,IAAIO,sBAAsBD;QACjD;IACJ;AACJ;AAEO,MAAME,8CAAwBC,sBAAAA,oBAA0C,CAAC;IAC5E,gBAAgBlB;IAChB,cAAc;QACVmB;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -22,5 +22,7 @@ declare class DeleteGroupUseCaseImpl implements UseCaseAbstraction.Interface {
22
22
  constructor(eventPublisher: EventPublisher.Interface, repository: DeleteGroupRepository.Interface, getGroupUseCase: GetGroupUseCase.Interface, accessControl: AccessControl.Interface);
23
23
  execute(groupId: string): Promise<Result<void, UseCaseAbstraction.Error>>;
24
24
  }
25
- export declare const DeleteGroupUseCase: import("@webiny/di").Implementation<typeof DeleteGroupUseCaseImpl>;
25
+ export declare const DeleteGroupUseCase: typeof DeleteGroupUseCaseImpl & {
26
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IDeleteGroupUseCase>;
27
+ };
26
28
  export {};
@@ -1,4 +1,4 @@
1
- import { Result, createImplementation } from "@webiny/feature/api";
1
+ import { Result } from "@webiny/feature/api";
2
2
  import { DeleteGroupRepository, DeleteGroupUseCase } from "./abstractions.js";
3
3
  import { GetGroupUseCase } from "../GetGroup/abstractions.js";
4
4
  import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
@@ -49,8 +49,7 @@ class DeleteGroupUseCaseImpl {
49
49
  }
50
50
  }
51
51
  }
52
- const DeleteGroupUseCase_DeleteGroupUseCase = createImplementation({
53
- abstraction: DeleteGroupUseCase,
52
+ const DeleteGroupUseCase_DeleteGroupUseCase = DeleteGroupUseCase.createImplementation({
54
53
  implementation: DeleteGroupUseCaseImpl,
55
54
  dependencies: [
56
55
  EventPublisher,
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js","sources":["../../../../src/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { DeleteGroupUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { DeleteGroupRepository } from \"./abstractions.js\";\nimport { GetGroupUseCase } from \"~/features/contentModelGroup/GetGroup/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { GroupBeforeDeleteEvent } from \"./events.js\";\nimport { GroupAfterDeleteEvent } from \"./events.js\";\nimport { GroupDeleteErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { GroupNotAuthorizedError } from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * DeleteGroupUseCase - Orchestrates group deletion.\n *\n * Responsibilities:\n * - Fetch original group\n * - Access control checks\n * - Publish before event\n * - Delegate to repository\n * - Publish after event or error event\n */\nclass DeleteGroupUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: DeleteGroupRepository.Interface,\n private getGroupUseCase: GetGroupUseCase.Interface,\n private accessControl: AccessControl.Interface\n ) {}\n\n async execute(groupId: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Initial access control check\n const canAccess = await this.accessControl.canAccessGroup({ rwd: \"d\" });\n if (!canAccess) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n // Fetch original group\n const getResult = await this.getGroupUseCase.execute(groupId);\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n const group = getResult.value;\n\n // Access control check on group\n const canAccessGroup = await this.accessControl.canAccessGroup({ group });\n if (!canAccessGroup) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n try {\n // Publish before event\n await this.eventPublisher.publish(\n new GroupBeforeDeleteEvent({\n group\n })\n );\n\n // Persist via repository\n const result = await this.repository.execute(group);\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new GroupDeleteErrorEvent({\n group,\n error: result.error\n })\n );\n return Result.fail(result.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new GroupAfterDeleteEvent({\n group\n })\n );\n\n return Result.ok();\n } catch (error) {\n // Publish error event for unexpected errors\n await this.eventPublisher.publish(\n new GroupDeleteErrorEvent({\n group,\n error: error as Error\n })\n );\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const DeleteGroupUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteGroupUseCaseImpl,\n dependencies: [EventPublisher, DeleteGroupRepository, GetGroupUseCase, AccessControl]\n});\n"],"names":["DeleteGroupUseCaseImpl","eventPublisher","repository","getGroupUseCase","accessControl","groupId","canAccess","Result","GroupNotAuthorizedError","getResult","group","canAccessGroup","GroupBeforeDeleteEvent","result","GroupDeleteErrorEvent","GroupAfterDeleteEvent","error","DeleteGroupUseCase","createImplementation","UseCaseAbstraction","EventPublisher","DeleteGroupRepository","GetGroupUseCase","AccessControl"],"mappings":";;;;;;;AAsBA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA2C,EAC3CC,eAA0C,EAC1CC,aAAsC,CAChD;aAJUH,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,eAAe,GAAfA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,OAAe,EAAmD;QAE5E,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAE,KAAK;QAAI;QACrE,IAAI,CAACA,WACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACJ;QACrD,IAAII,UAAU,MAAM,IAChB,OAAOF,OAAO,IAAI,CAACE,UAAU,KAAK;QAEtC,MAAMC,QAAQD,UAAU,KAAK;QAG7B,MAAME,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAED;QAAM;QACvE,IAAI,CAACC,gBACD,OAAOJ,OAAO,IAAI,CAAC,IAAIC;QAG3B,IAAI;YAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAII,uBAAuB;gBACvBF;YACJ;YAIJ,MAAMG,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACH;YAC7C,IAAIG,OAAO,MAAM,IAAI;gBAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,sBAAsB;oBACtBJ;oBACA,OAAOG,OAAO,KAAK;gBACvB;gBAEJ,OAAON,OAAO,IAAI,CAACM,OAAO,KAAK;YACnC;YAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIE,sBAAsB;gBACtBL;YACJ;YAGJ,OAAOH,OAAO,EAAE;QACpB,EAAE,OAAOS,OAAO;YAEZ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIF,sBAAsB;gBACtBJ;gBACA,OAAOM;YACX;YAEJ,OAAOT,OAAO,IAAI,CAACS;QACvB;IACJ;AACJ;AAEO,MAAMC,wCAAqBC,qBAAqB;IACnD,aAAaC;IACb,gBAAgBnB;IAChB,cAAc;QAACoB;QAAgBC;QAAuBC;QAAiBC;KAAc;AACzF"}
1
+ {"version":3,"file":"features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js","sources":["../../../../src/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { DeleteGroupUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { DeleteGroupRepository } from \"./abstractions.js\";\nimport { GetGroupUseCase } from \"~/features/contentModelGroup/GetGroup/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { GroupBeforeDeleteEvent } from \"./events.js\";\nimport { GroupAfterDeleteEvent } from \"./events.js\";\nimport { GroupDeleteErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { GroupNotAuthorizedError } from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * DeleteGroupUseCase - Orchestrates group deletion.\n *\n * Responsibilities:\n * - Fetch original group\n * - Access control checks\n * - Publish before event\n * - Delegate to repository\n * - Publish after event or error event\n */\nclass DeleteGroupUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: DeleteGroupRepository.Interface,\n private getGroupUseCase: GetGroupUseCase.Interface,\n private accessControl: AccessControl.Interface\n ) {}\n\n async execute(groupId: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Initial access control check\n const canAccess = await this.accessControl.canAccessGroup({ rwd: \"d\" });\n if (!canAccess) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n // Fetch original group\n const getResult = await this.getGroupUseCase.execute(groupId);\n if (getResult.isFail()) {\n return Result.fail(getResult.error);\n }\n const group = getResult.value;\n\n // Access control check on group\n const canAccessGroup = await this.accessControl.canAccessGroup({ group });\n if (!canAccessGroup) {\n return Result.fail(new GroupNotAuthorizedError());\n }\n\n try {\n // Publish before event\n await this.eventPublisher.publish(\n new GroupBeforeDeleteEvent({\n group\n })\n );\n\n // Persist via repository\n const result = await this.repository.execute(group);\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new GroupDeleteErrorEvent({\n group,\n error: result.error\n })\n );\n return Result.fail(result.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new GroupAfterDeleteEvent({\n group\n })\n );\n\n return Result.ok();\n } catch (error) {\n // Publish error event for unexpected errors\n await this.eventPublisher.publish(\n new GroupDeleteErrorEvent({\n group,\n error: error as Error\n })\n );\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const DeleteGroupUseCase = UseCaseAbstraction.createImplementation({\n implementation: DeleteGroupUseCaseImpl,\n dependencies: [EventPublisher, DeleteGroupRepository, GetGroupUseCase, AccessControl]\n});\n"],"names":["DeleteGroupUseCaseImpl","eventPublisher","repository","getGroupUseCase","accessControl","groupId","canAccess","Result","GroupNotAuthorizedError","getResult","group","canAccessGroup","GroupBeforeDeleteEvent","result","GroupDeleteErrorEvent","GroupAfterDeleteEvent","error","DeleteGroupUseCase","UseCaseAbstraction","EventPublisher","DeleteGroupRepository","GetGroupUseCase","AccessControl"],"mappings":";;;;;;;AAqBA,MAAMA;IACF,YACYC,cAAwC,EACxCC,UAA2C,EAC3CC,eAA0C,EAC1CC,aAAsC,CAChD;aAJUH,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,eAAe,GAAfA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,OAAe,EAAmD;QAE5E,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAE,KAAK;QAAI;QACrE,IAAI,CAACA,WACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACJ;QACrD,IAAII,UAAU,MAAM,IAChB,OAAOF,OAAO,IAAI,CAACE,UAAU,KAAK;QAEtC,MAAMC,QAAQD,UAAU,KAAK;QAG7B,MAAME,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAED;QAAM;QACvE,IAAI,CAACC,gBACD,OAAOJ,OAAO,IAAI,CAAC,IAAIC;QAG3B,IAAI;YAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAII,uBAAuB;gBACvBF;YACJ;YAIJ,MAAMG,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACH;YAC7C,IAAIG,OAAO,MAAM,IAAI;gBAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,sBAAsB;oBACtBJ;oBACA,OAAOG,OAAO,KAAK;gBACvB;gBAEJ,OAAON,OAAO,IAAI,CAACM,OAAO,KAAK;YACnC;YAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIE,sBAAsB;gBACtBL;YACJ;YAGJ,OAAOH,OAAO,EAAE;QACpB,EAAE,OAAOS,OAAO;YAEZ,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIF,sBAAsB;gBACtBJ;gBACA,OAAOM;YACX;YAEJ,OAAOT,OAAO,IAAI,CAACS;QACvB;IACJ;AACJ;AAEO,MAAMC,wCAAqBC,mBAAAA,oBAAuC,CAAC;IACtE,gBAAgBlB;IAChB,cAAc;QAACmB;QAAgBC;QAAuBC;QAAiBC;KAAc;AACzF"}
@@ -4,7 +4,7 @@ import { Result } from "@webiny/feature/api";
4
4
  import { GetGroupRepository as RepositoryAbstraction } from "./abstractions.js";
5
5
  import { GroupCache } from "../../../features/contentModelGroup/shared/abstractions.js";
6
6
  import { PluginGroupsProvider } from "../../../features/contentModelGroup/shared/abstractions.js";
7
- import { StorageOperations } from "../../../features/shared/abstractions.js";
7
+ import { ListGroupsStorageOperation } from "../../../features/shared/storageOperations/group/ListGroupsStorageOperation.js";
8
8
  import { AccessControl } from "../../../features/shared/abstractions.js";
9
9
  import { CmsContext } from "../../../features/shared/abstractions.js";
10
10
  import type { CmsGroup } from "../../../types/index.js";
@@ -21,14 +21,16 @@ import type { CmsGroup } from "../../../types/index.js";
21
21
  declare class GetGroupRepositoryImpl implements RepositoryAbstraction.Interface {
22
22
  private groupCache;
23
23
  private pluginGroupsProvider;
24
- private storageOperations;
24
+ private listGroups;
25
25
  private accessControl;
26
26
  private tenantContext;
27
27
  private identityContext;
28
28
  private cmsContext;
29
- constructor(groupCache: GroupCache.Interface, pluginGroupsProvider: PluginGroupsProvider.Interface, storageOperations: StorageOperations.Interface, accessControl: AccessControl.Interface, tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface, cmsContext: CmsContext.Interface);
29
+ constructor(groupCache: GroupCache.Interface, pluginGroupsProvider: PluginGroupsProvider.Interface, listGroups: ListGroupsStorageOperation.Interface, accessControl: AccessControl.Interface, tenantContext: TenantContext.Interface, identityContext: IdentityContext.Interface, cmsContext: CmsContext.Interface);
30
30
  execute(groupId: string): Promise<Result<CmsGroup, RepositoryAbstraction.Error>>;
31
31
  private fetchAllGroups;
32
32
  }
33
- export declare const GetGroupRepository: import("@webiny/di").Implementation<typeof GetGroupRepositoryImpl>;
33
+ export declare const GetGroupRepository: typeof GetGroupRepositoryImpl & {
34
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetGroupRepository>;
35
+ };
34
36
  export {};
@@ -1,17 +1,18 @@
1
1
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
2
2
  import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
3
- import { Result, createImplementation } from "@webiny/feature/api";
3
+ import { Result } from "@webiny/feature/api";
4
4
  import { GetGroupRepository } from "./abstractions.js";
5
5
  import { GroupCache, PluginGroupsProvider } from "../shared/abstractions.js";
6
6
  import { GroupNotFoundError, GroupPersistenceError } from "../../../domain/contentModelGroup/errors.js";
7
- import { AccessControl, CmsContext, StorageOperations } from "../../shared/abstractions.js";
7
+ import { ListGroupsStorageOperation } from "../../shared/storageOperations/group/ListGroupsStorageOperation.js";
8
+ import { AccessControl, CmsContext } from "../../shared/abstractions.js";
8
9
  import { filterAsync } from "../../../utils/filterAsync.js";
9
10
  import { createCacheKey } from "../../../utils/index.js";
10
11
  class GetGroupRepositoryImpl {
11
- constructor(groupCache, pluginGroupsProvider, storageOperations, accessControl, tenantContext, identityContext, cmsContext){
12
+ constructor(groupCache, pluginGroupsProvider, listGroups, accessControl, tenantContext, identityContext, cmsContext){
12
13
  this.groupCache = groupCache;
13
14
  this.pluginGroupsProvider = pluginGroupsProvider;
14
- this.storageOperations = storageOperations;
15
+ this.listGroups = listGroups;
15
16
  this.accessControl = accessControl;
16
17
  this.tenantContext = tenantContext;
17
18
  this.identityContext = identityContext;
@@ -33,14 +34,14 @@ class GetGroupRepositoryImpl {
33
34
  const dbCacheKey = createCacheKey({
34
35
  tenant
35
36
  });
36
- const databaseGroups = await this.groupCache.getOrSet(dbCacheKey, async ()=>await this.storageOperations.groups.list({
37
+ const databaseGroups = await this.groupCache.getOrSet(dbCacheKey, async ()=>await this.listGroups.execute({
37
38
  where: {
38
39
  tenant
39
40
  }
40
41
  }));
41
42
  const filteredCacheKey = createCacheKey({
42
43
  dbCacheKey: dbCacheKey.get(),
43
- identity: this.cmsContext.security.isAuthorizationEnabled() ? this.identityContext.getIdentity()?.id : void 0
44
+ identity: this.identityContext.isAuthorizationEnabled() ? this.identityContext.getIdentity()?.id : void 0
44
45
  });
45
46
  const filteredDatabaseGroups = await this.groupCache.getOrSet(filteredCacheKey, async ()=>filterAsync(databaseGroups, async (group)=>{
46
47
  if (!group) return false;
@@ -54,13 +55,12 @@ class GetGroupRepositoryImpl {
54
55
  ];
55
56
  }
56
57
  }
57
- const GetGroupRepository_GetGroupRepository = createImplementation({
58
- abstraction: GetGroupRepository,
58
+ const GetGroupRepository_GetGroupRepository = GetGroupRepository.createImplementation({
59
59
  implementation: GetGroupRepositoryImpl,
60
60
  dependencies: [
61
61
  GroupCache,
62
62
  PluginGroupsProvider,
63
- StorageOperations,
63
+ ListGroupsStorageOperation,
64
64
  AccessControl,
65
65
  TenantContext,
66
66
  IdentityContext,
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModelGroup/GetGroup/GetGroupRepository.js","sources":["../../../../src/features/contentModelGroup/GetGroup/GetGroupRepository.ts"],"sourcesContent":["import { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { GetGroupRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupNotFoundError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport { filterAsync } from \"~/utils/filterAsync.js\";\nimport { createCacheKey } from \"~/utils/index.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * GetGroupRepository - Fetches a single group by ID.\n *\n * Responsibilities:\n * - Create cache keys based on tenant + identity\n * - Provide data loader functions to GroupCache\n * - Fetch from plugin groups + database groups\n * - Apply access control filtering\n * - Return the group or NotFoundError\n */\nclass GetGroupRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private groupCache: GroupCache.Interface,\n private pluginGroupsProvider: PluginGroupsProvider.Interface,\n private storageOperations: StorageOperations.Interface,\n private accessControl: AccessControl.Interface,\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private cmsContext: CmsContext.Interface\n ) {}\n\n async execute(groupId: string): Promise<Result<CmsGroup, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // Fetch all groups (plugin + database) with access control filtering\n const groups = await this.fetchAllGroups(tenant.id);\n\n const group = groups.find(g => g.id === groupId);\n\n if (!group) {\n return Result.fail(new GroupNotFoundError(groupId));\n }\n\n return Result.ok(group);\n } catch (error) {\n return Result.fail(new GroupPersistenceError(error as Error));\n }\n }\n\n private async fetchAllGroups(tenant: string): Promise<CmsGroup[]> {\n // 1. Fetch plugin groups (with caching and access control)\n const pluginGroups = await this.pluginGroupsProvider.getGroups();\n\n // 2. Fetch database groups (with caching)\n const dbCacheKey = createCacheKey({ tenant });\n const databaseGroups = await this.groupCache.getOrSet(dbCacheKey, async () => {\n return await this.storageOperations.groups.list({\n where: { tenant }\n });\n });\n\n // 3. Apply access control to database groups (with caching)\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: this.cmsContext.security.isAuthorizationEnabled()\n ? this.identityContext.getIdentity()?.id\n : undefined\n });\n\n const filteredDatabaseGroups = await this.groupCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseGroups, async (group?: CmsGroup) => {\n if (!group) {\n return false;\n }\n return this.accessControl.canAccessGroup({ group });\n });\n }\n );\n\n // 4. Merge plugin + database groups\n return [...pluginGroups, ...filteredDatabaseGroups];\n }\n}\n\nexport const GetGroupRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: GetGroupRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n StorageOperations,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"names":["GetGroupRepositoryImpl","groupCache","pluginGroupsProvider","storageOperations","accessControl","tenantContext","identityContext","cmsContext","groupId","tenant","groups","group","g","Result","GroupNotFoundError","error","GroupPersistenceError","pluginGroups","dbCacheKey","createCacheKey","databaseGroups","filteredCacheKey","undefined","filteredDatabaseGroups","filterAsync","GetGroupRepository","createImplementation","RepositoryAbstraction","GroupCache","PluginGroupsProvider","StorageOperations","AccessControl","TenantContext","IdentityContext","CmsContext"],"mappings":";;;;;;;;;AA0BA,MAAMA;IACF,YACYC,UAAgC,EAChCC,oBAAoD,EACpDC,iBAA8C,EAC9CC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,EAC1CC,UAAgC,CAC1C;aAPUN,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,OAAe,EAA0D;QACnF,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,MAAMC,SAAS,MAAM,IAAI,CAAC,cAAc,CAACD,OAAO,EAAE;YAElD,MAAME,QAAQD,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,EAAE,KAAKJ;YAExC,IAAI,CAACG,OACD,OAAOE,OAAO,IAAI,CAAC,IAAIC,mBAAmBN;YAG9C,OAAOK,OAAO,EAAE,CAACF;QACrB,EAAE,OAAOI,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIG,sBAAsBD;QACjD;IACJ;IAEA,MAAc,eAAeN,MAAc,EAAuB;QAE9D,MAAMQ,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS;QAG9D,MAAMC,aAAaC,eAAe;YAAEV;QAAO;QAC3C,MAAMW,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACF,YAAY,UACvD,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5C,OAAO;oBAAET;gBAAO;YACpB;QAIJ,MAAMY,mBAAmBF,eAAe;YACpC,YAAYD,WAAW,GAAG;YAC1B,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,KACnD,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,KACpCI;QACV;QAEA,MAAMC,yBAAyB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CACzDF,kBACA,UACWG,YAAYJ,gBAAgB,OAAOT;gBACtC,IAAI,CAACA,OACD,OAAO;gBAEX,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;oBAAEA;gBAAM;YACrD;QAKR,OAAO;eAAIM;eAAiBM;SAAuB;IACvD;AACJ;AAEO,MAAME,wCAAqBC,qBAAqB;IACnD,aAAaC;IACb,gBAAgB3B;IAChB,cAAc;QACV4B;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentModelGroup/GetGroup/GetGroupRepository.js","sources":["../../../../src/features/contentModelGroup/GetGroup/GetGroupRepository.ts"],"sourcesContent":["import { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { GetGroupRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupNotFoundError } from \"~/domain/contentModelGroup/errors.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { ListGroupsStorageOperation } from \"~/features/shared/storageOperations/group/ListGroupsStorageOperation.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport { filterAsync } from \"~/utils/filterAsync.js\";\nimport { createCacheKey } from \"~/utils/index.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * GetGroupRepository - Fetches a single group by ID.\n *\n * Responsibilities:\n * - Create cache keys based on tenant + identity\n * - Provide data loader functions to GroupCache\n * - Fetch from plugin groups + database groups\n * - Apply access control filtering\n * - Return the group or NotFoundError\n */\nclass GetGroupRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private groupCache: GroupCache.Interface,\n private pluginGroupsProvider: PluginGroupsProvider.Interface,\n private listGroups: ListGroupsStorageOperation.Interface,\n private accessControl: AccessControl.Interface,\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private cmsContext: CmsContext.Interface\n ) {}\n\n async execute(groupId: string): Promise<Result<CmsGroup, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // Fetch all groups (plugin + database) with access control filtering\n const groups = await this.fetchAllGroups(tenant.id);\n\n const group = groups.find(g => g.id === groupId);\n\n if (!group) {\n return Result.fail(new GroupNotFoundError(groupId));\n }\n\n return Result.ok(group);\n } catch (error) {\n return Result.fail(new GroupPersistenceError(error as Error));\n }\n }\n\n private async fetchAllGroups(tenant: string): Promise<CmsGroup[]> {\n // 1. Fetch plugin groups (with caching and access control)\n const pluginGroups = await this.pluginGroupsProvider.getGroups();\n\n // 2. Fetch database groups (with caching)\n const dbCacheKey = createCacheKey({ tenant });\n const databaseGroups = await this.groupCache.getOrSet(dbCacheKey, async () => {\n return await this.listGroups.execute({\n where: { tenant }\n });\n });\n\n // 3. Apply access control to database groups (with caching)\n const filteredCacheKey = createCacheKey({\n dbCacheKey: dbCacheKey.get(),\n identity: this.identityContext.isAuthorizationEnabled()\n ? this.identityContext.getIdentity()?.id\n : undefined\n });\n\n const filteredDatabaseGroups = await this.groupCache.getOrSet(\n filteredCacheKey,\n async () => {\n return filterAsync(databaseGroups, async (group?: CmsGroup) => {\n if (!group) {\n return false;\n }\n return this.accessControl.canAccessGroup({ group });\n });\n }\n );\n\n // 4. Merge plugin + database groups\n return [...pluginGroups, ...filteredDatabaseGroups];\n }\n}\n\nexport const GetGroupRepository = RepositoryAbstraction.createImplementation({\n implementation: GetGroupRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n ListGroupsStorageOperation,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"names":["GetGroupRepositoryImpl","groupCache","pluginGroupsProvider","listGroups","accessControl","tenantContext","identityContext","cmsContext","groupId","tenant","groups","group","g","Result","GroupNotFoundError","error","GroupPersistenceError","pluginGroups","dbCacheKey","createCacheKey","databaseGroups","filteredCacheKey","undefined","filteredDatabaseGroups","filterAsync","GetGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","ListGroupsStorageOperation","AccessControl","TenantContext","IdentityContext","CmsContext"],"mappings":";;;;;;;;;;AAyBA,MAAMA;IACF,YACYC,UAAgC,EAChCC,oBAAoD,EACpDC,UAAgD,EAChDC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,EAC1CC,UAAgC,CAC1C;aAPUN,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;aACAC,eAAe,GAAfA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,OAAe,EAA0D;QACnF,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,MAAMC,SAAS,MAAM,IAAI,CAAC,cAAc,CAACD,OAAO,EAAE;YAElD,MAAME,QAAQD,OAAO,IAAI,CAACE,CAAAA,IAAKA,EAAE,EAAE,KAAKJ;YAExC,IAAI,CAACG,OACD,OAAOE,OAAO,IAAI,CAAC,IAAIC,mBAAmBN;YAG9C,OAAOK,OAAO,EAAE,CAACF;QACrB,EAAE,OAAOI,OAAO;YACZ,OAAOF,OAAO,IAAI,CAAC,IAAIG,sBAAsBD;QACjD;IACJ;IAEA,MAAc,eAAeN,MAAc,EAAuB;QAE9D,MAAMQ,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS;QAG9D,MAAMC,aAAaC,eAAe;YAAEV;QAAO;QAC3C,MAAMW,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACF,YAAY,UACvD,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACjC,OAAO;oBAAET;gBAAO;YACpB;QAIJ,MAAMY,mBAAmBF,eAAe;YACpC,YAAYD,WAAW,GAAG;YAC1B,UAAU,IAAI,CAAC,eAAe,CAAC,sBAAsB,KAC/C,IAAI,CAAC,eAAe,CAAC,WAAW,IAAI,KACpCI;QACV;QAEA,MAAMC,yBAAyB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CACzDF,kBACA,UACWG,YAAYJ,gBAAgB,OAAOT;gBACtC,IAAI,CAACA,OACD,OAAO;gBAEX,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;oBAAEA;gBAAM;YACrD;QAKR,OAAO;eAAIM;eAAiBM;SAAuB;IACvD;AACJ;AAEO,MAAME,wCAAqBC,mBAAAA,oBAA0C,CAAC;IACzE,gBAAgB1B;IAChB,cAAc;QACV2B;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -17,5 +17,7 @@ declare class GetGroupUseCaseImpl implements UseCaseAbstraction.Interface {
17
17
  constructor(repository: GetGroupRepository.Interface, accessControl: AccessControl.Interface);
18
18
  execute(groupId: string): Promise<Result<CmsGroup, UseCaseAbstraction.Error>>;
19
19
  }
20
- export declare const GetGroupUseCase: import("@webiny/di").Implementation<typeof GetGroupUseCaseImpl>;
20
+ export declare const GetGroupUseCase: typeof GetGroupUseCaseImpl & {
21
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetGroupUseCase>;
22
+ };
21
23
  export {};
@@ -1,4 +1,4 @@
1
- import { Result, createImplementation } from "@webiny/feature/api";
1
+ import { Result } from "@webiny/feature/api";
2
2
  import { GetGroupRepository, GetGroupUseCase } from "./abstractions.js";
3
3
  import { AccessControl } from "../../shared/abstractions.js";
4
4
  import { GroupNotAuthorizedError } from "../../../domain/contentModelGroup/errors.js";
@@ -15,8 +15,7 @@ class GetGroupUseCaseImpl {
15
15
  return Result.ok(result.value);
16
16
  }
17
17
  }
18
- const GetGroupUseCase_GetGroupUseCase = createImplementation({
19
- abstraction: GetGroupUseCase,
18
+ const GetGroupUseCase_GetGroupUseCase = GetGroupUseCase.createImplementation({
20
19
  implementation: GetGroupUseCaseImpl,
21
20
  dependencies: [
22
21
  GetGroupRepository,