@webiny/api-headless-cms 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7

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 (1056) hide show
  1. package/constants.d.ts +2 -1
  2. package/constants.js +4 -0
  3. package/constants.js.map +1 -1
  4. package/context.d.ts +2 -5
  5. package/context.js +16 -7
  6. package/context.js.map +1 -1
  7. package/crud/AccessControl/AccessControl.d.ts +18 -28
  8. package/crud/AccessControl/AccessControl.js.map +1 -1
  9. package/crud/AccessControl/README.md +1 -1
  10. package/crud/contentEntry/entryDataFactories/createEntryData.js +27 -12
  11. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  12. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +13 -6
  13. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  14. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +4 -1
  15. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -1
  16. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +4 -1
  17. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -1
  18. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +2 -1
  19. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -1
  20. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +4 -3
  21. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -1
  22. package/crud/contentEntry/entryDataFactories/system.d.ts +10 -0
  23. package/crud/contentEntry/entryDataFactories/system.js +14 -0
  24. package/crud/contentEntry/entryDataFactories/system.js.map +1 -0
  25. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  26. package/crud/contentEntry/entryDataValidation.js +19 -16
  27. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  28. package/crud/contentEntry/references/buildPaths.d.ts +1 -1
  29. package/crud/contentEntry/references/buildPaths.js +3 -3
  30. package/crud/contentEntry/references/buildPaths.js.map +1 -1
  31. package/crud/contentEntry/searchableFields.d.ts +2 -3
  32. package/crud/contentEntry/searchableFields.js +15 -19
  33. package/crud/contentEntry/searchableFields.js.map +1 -1
  34. package/crud/contentEntry.crud.js +16 -11
  35. package/crud/contentEntry.crud.js.map +1 -1
  36. package/crud/contentModel/fields/descriptionField.js +1 -1
  37. package/crud/contentModel/fields/descriptionField.js.map +1 -1
  38. package/crud/contentModel/fields/imageField.js +1 -1
  39. package/crud/contentModel/fields/imageField.js.map +1 -1
  40. package/crud/contentModel/fields/titleField.js +1 -1
  41. package/crud/contentModel/fields/titleField.js.map +1 -1
  42. package/crud/contentModel/validation.d.ts +224 -902
  43. package/crud/contentModel/validation.js +64 -36
  44. package/crud/contentModel/validation.js.map +1 -1
  45. package/crud/contentModel.crud.js +2 -1
  46. package/crud/contentModel.crud.js.map +1 -1
  47. package/domain/contentEntry/EntryId.d.ts +1 -0
  48. package/domain/contentEntry/EntryId.js +2 -0
  49. package/domain/contentEntry/EntryId.js.map +1 -1
  50. package/domain/contentEntry/errors.d.ts +2 -2
  51. package/domain/contentEntry/errors.js.map +1 -1
  52. package/domain/contentModel/errors.d.ts +1 -1
  53. package/domain/contentModel/errors.js.map +1 -1
  54. package/domain/contentModel/schemas.d.ts +198 -616
  55. package/domain/contentModel/schemas.js +55 -37
  56. package/domain/contentModel/schemas.js.map +1 -1
  57. package/domain/contentModel/validation/fields/descriptionField.js +1 -1
  58. package/domain/contentModel/validation/fields/descriptionField.js.map +1 -1
  59. package/domain/contentModel/validation/fields/imageField.js +1 -1
  60. package/domain/contentModel/validation/fields/imageField.js.map +1 -1
  61. package/domain/contentModel/validation/fields/titleField.js +1 -1
  62. package/domain/contentModel/validation/fields/titleField.js.map +1 -1
  63. package/domain/contentModel/validation/modelFields.js +15 -20
  64. package/domain/contentModel/validation/modelFields.js.map +1 -1
  65. package/domain/contentModelGroup/validation.d.ts +34 -82
  66. package/domain/contentModelGroup/validation.js +2 -2
  67. package/domain/contentModelGroup/validation.js.map +1 -1
  68. package/export/graphql/index.js +1 -1
  69. package/export/graphql/index.js.map +1 -1
  70. package/export/types.js.map +1 -1
  71. package/exports/api/cms/entry.d.ts +3 -0
  72. package/exports/api/cms/entry.js +6 -0
  73. package/exports/api/cms/entry.js.map +1 -1
  74. package/exports/api/cms/graphql.d.ts +1 -0
  75. package/exports/api/cms/graphql.js +3 -0
  76. package/exports/api/cms/graphql.js.map +1 -0
  77. package/exports/api/cms/model.d.ts +5 -1
  78. package/exports/api/cms/model.js +3 -1
  79. package/exports/api/cms/model.js.map +1 -1
  80. package/exports/api/cms/storage.d.ts +3 -0
  81. package/exports/api/cms/storage.js +5 -0
  82. package/exports/api/cms/storage.js.map +1 -0
  83. package/exports/api/cms/validation.d.ts +4 -0
  84. package/exports/api/cms/validation.js +6 -0
  85. package/exports/api/cms/validation.js.map +1 -0
  86. package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +3 -7
  87. package/extensions/index.d.ts +2 -6
  88. package/features/contentEntry/ContentEntriesFeature.d.ts +4 -1
  89. package/features/contentEntry/ContentEntriesFeature.js +6 -0
  90. package/features/contentEntry/ContentEntriesFeature.js.map +1 -1
  91. package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.d.ts +1 -1
  92. package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.js +2 -2
  93. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js.map +1 -0
  94. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.d.ts +14 -0
  95. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.js +25 -0
  96. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.js.map +1 -0
  97. package/features/contentEntry/ContentEntryTraverser/abstractions.d.ts +12 -0
  98. package/features/contentEntry/ContentEntryTraverser/abstractions.js +7 -0
  99. package/features/contentEntry/ContentEntryTraverser/abstractions.js.map +1 -0
  100. package/features/contentEntry/ContentEntryTraverser/feature.d.ts +4 -0
  101. package/features/contentEntry/ContentEntryTraverser/feature.js +10 -0
  102. package/features/contentEntry/ContentEntryTraverser/feature.js.map +1 -0
  103. package/features/contentEntry/ContentEntryTraverser/index.d.ts +2 -0
  104. package/features/contentEntry/ContentEntryTraverser/index.js +4 -0
  105. package/features/contentEntry/ContentEntryTraverser/index.js.map +1 -0
  106. package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -3
  107. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +3 -3
  108. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
  109. package/features/contentEntry/CreateEntry/abstractions.d.ts +1 -0
  110. package/features/contentEntry/CreateEntry/abstractions.js +1 -0
  111. package/features/contentEntry/CreateEntry/abstractions.js.map +1 -1
  112. package/features/contentEntry/CreateEntry/events.d.ts +4 -2
  113. package/features/contentEntry/CreateEntry/events.js +5 -1
  114. package/features/contentEntry/CreateEntry/events.js.map +1 -1
  115. package/features/contentEntry/CreateEntry/feature.d.ts +4 -1
  116. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -3
  117. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +3 -3
  118. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
  119. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.d.ts +1 -0
  120. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.js +1 -0
  121. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.js.map +1 -1
  122. package/features/contentEntry/CreateEntryRevisionFrom/events.d.ts +4 -2
  123. package/features/contentEntry/CreateEntryRevisionFrom/events.js +5 -1
  124. package/features/contentEntry/CreateEntryRevisionFrom/events.js.map +1 -1
  125. package/features/contentEntry/CreateEntryRevisionFrom/feature.d.ts +4 -1
  126. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +1 -1
  127. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +1 -1
  128. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
  129. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +2 -2
  130. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -2
  131. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
  132. package/features/contentEntry/DeleteEntry/abstractions.d.ts +2 -0
  133. package/features/contentEntry/DeleteEntry/abstractions.js +2 -0
  134. package/features/contentEntry/DeleteEntry/abstractions.js.map +1 -1
  135. package/features/contentEntry/DeleteEntry/events.d.ts +4 -2
  136. package/features/contentEntry/DeleteEntry/events.js +5 -1
  137. package/features/contentEntry/DeleteEntry/events.js.map +1 -1
  138. package/features/contentEntry/DeleteEntry/feature.d.ts +4 -1
  139. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +1 -1
  140. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +1 -1
  141. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
  142. package/features/contentEntry/DeleteEntryRevision/abstractions.d.ts +1 -0
  143. package/features/contentEntry/DeleteEntryRevision/abstractions.js +1 -0
  144. package/features/contentEntry/DeleteEntryRevision/abstractions.js.map +1 -1
  145. package/features/contentEntry/DeleteEntryRevision/events.d.ts +4 -2
  146. package/features/contentEntry/DeleteEntryRevision/events.js +5 -1
  147. package/features/contentEntry/DeleteEntryRevision/events.js.map +1 -1
  148. package/features/contentEntry/DeleteEntryRevision/feature.d.ts +4 -1
  149. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +1 -1
  150. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +1 -1
  151. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
  152. package/features/contentEntry/DeleteMultipleEntries/abstractions.d.ts +1 -0
  153. package/features/contentEntry/DeleteMultipleEntries/abstractions.js +1 -0
  154. package/features/contentEntry/DeleteMultipleEntries/abstractions.js.map +1 -1
  155. package/features/contentEntry/DeleteMultipleEntries/events.d.ts +4 -2
  156. package/features/contentEntry/DeleteMultipleEntries/events.js +5 -1
  157. package/features/contentEntry/DeleteMultipleEntries/events.js.map +1 -1
  158. package/features/contentEntry/DeleteMultipleEntries/feature.d.ts +4 -1
  159. package/features/contentEntry/GetEntriesByIds/abstractions.d.ts +1 -0
  160. package/features/contentEntry/GetEntriesByIds/abstractions.js +1 -0
  161. package/features/contentEntry/GetEntriesByIds/abstractions.js.map +1 -1
  162. package/features/contentEntry/GetEntriesByIds/feature.d.ts +4 -1
  163. package/features/contentEntry/GetEntry/abstractions.d.ts +1 -0
  164. package/features/contentEntry/GetEntry/abstractions.js +1 -0
  165. package/features/contentEntry/GetEntry/abstractions.js.map +1 -1
  166. package/features/contentEntry/GetEntry/feature.d.ts +4 -1
  167. package/features/contentEntry/GetEntryById/abstractions.d.ts +1 -0
  168. package/features/contentEntry/GetEntryById/abstractions.js +1 -0
  169. package/features/contentEntry/GetEntryById/abstractions.js.map +1 -1
  170. package/features/contentEntry/GetEntryById/feature.d.ts +4 -1
  171. package/features/contentEntry/GetLatestEntriesByIds/abstractions.d.ts +1 -0
  172. package/features/contentEntry/GetLatestEntriesByIds/abstractions.js +1 -0
  173. package/features/contentEntry/GetLatestEntriesByIds/abstractions.js.map +1 -1
  174. package/features/contentEntry/GetLatestEntriesByIds/feature.d.ts +4 -1
  175. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.d.ts +4 -9
  176. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.js +4 -9
  177. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.js.map +1 -1
  178. package/features/contentEntry/GetLatestRevisionByEntryId/feature.d.ts +4 -1
  179. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.d.ts +2 -3
  180. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.js +2 -3
  181. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.js.map +1 -1
  182. package/features/contentEntry/GetPreviousRevisionByEntryId/feature.d.ts +4 -1
  183. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.d.ts +1 -0
  184. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.js +1 -0
  185. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.js.map +1 -1
  186. package/features/contentEntry/GetPublishedEntriesByIds/feature.d.ts +4 -1
  187. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.d.ts +1 -0
  188. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.js +1 -0
  189. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.js.map +1 -1
  190. package/features/contentEntry/GetPublishedRevisionByEntryId/feature.d.ts +4 -1
  191. package/features/contentEntry/GetRevisionById/abstractions.d.ts +1 -0
  192. package/features/contentEntry/GetRevisionById/abstractions.js +1 -0
  193. package/features/contentEntry/GetRevisionById/abstractions.js.map +1 -1
  194. package/features/contentEntry/GetRevisionById/feature.d.ts +4 -1
  195. package/features/contentEntry/GetRevisionsByEntryId/abstractions.d.ts +1 -0
  196. package/features/contentEntry/GetRevisionsByEntryId/abstractions.js +1 -0
  197. package/features/contentEntry/GetRevisionsByEntryId/abstractions.js.map +1 -1
  198. package/features/contentEntry/GetRevisionsByEntryId/feature.d.ts +4 -1
  199. package/features/contentEntry/GetSingletonEntry/abstractions.d.ts +1 -0
  200. package/features/contentEntry/GetSingletonEntry/abstractions.js +1 -0
  201. package/features/contentEntry/GetSingletonEntry/abstractions.js.map +1 -1
  202. package/features/contentEntry/GetSingletonEntry/feature.d.ts +4 -1
  203. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +2 -2
  204. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +9 -15
  205. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  206. package/features/contentEntry/GetUniqueFieldValues/feature.d.ts +4 -1
  207. package/features/contentEntry/ListEntries/ListEntriesRepository.js +6 -1
  208. package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
  209. package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +1 -1
  210. package/features/contentEntry/ListEntries/ListEntriesUseCase.js +1 -1
  211. package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
  212. package/features/contentEntry/ListEntries/abstractions.d.ts +4 -0
  213. package/features/contentEntry/ListEntries/abstractions.js +4 -0
  214. package/features/contentEntry/ListEntries/abstractions.js.map +1 -1
  215. package/features/contentEntry/ListEntries/feature.d.ts +4 -1
  216. package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +1 -1
  217. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +1 -1
  218. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
  219. package/features/contentEntry/MoveEntry/abstractions.d.ts +1 -0
  220. package/features/contentEntry/MoveEntry/abstractions.js +1 -0
  221. package/features/contentEntry/MoveEntry/abstractions.js.map +1 -1
  222. package/features/contentEntry/MoveEntry/events.d.ts +4 -2
  223. package/features/contentEntry/MoveEntry/events.js +5 -1
  224. package/features/contentEntry/MoveEntry/events.js.map +1 -1
  225. package/features/contentEntry/MoveEntry/feature.d.ts +4 -1
  226. package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +2 -2
  227. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -2
  228. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
  229. package/features/contentEntry/PublishEntry/abstractions.d.ts +1 -0
  230. package/features/contentEntry/PublishEntry/abstractions.js +1 -0
  231. package/features/contentEntry/PublishEntry/abstractions.js.map +1 -1
  232. package/features/contentEntry/PublishEntry/events.d.ts +4 -2
  233. package/features/contentEntry/PublishEntry/events.js +5 -1
  234. package/features/contentEntry/PublishEntry/events.js.map +1 -1
  235. package/features/contentEntry/PublishEntry/feature.d.ts +4 -1
  236. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +2 -2
  237. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -2
  238. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
  239. package/features/contentEntry/RepublishEntry/abstractions.d.ts +1 -0
  240. package/features/contentEntry/RepublishEntry/abstractions.js +1 -0
  241. package/features/contentEntry/RepublishEntry/abstractions.js.map +1 -1
  242. package/features/contentEntry/RepublishEntry/events.d.ts +4 -2
  243. package/features/contentEntry/RepublishEntry/events.js +5 -1
  244. package/features/contentEntry/RepublishEntry/events.js.map +1 -1
  245. package/features/contentEntry/RepublishEntry/feature.d.ts +4 -1
  246. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +2 -2
  247. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -2
  248. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
  249. package/features/contentEntry/RestoreEntryFromBin/abstractions.d.ts +1 -0
  250. package/features/contentEntry/RestoreEntryFromBin/abstractions.js +1 -0
  251. package/features/contentEntry/RestoreEntryFromBin/abstractions.js.map +1 -1
  252. package/features/contentEntry/RestoreEntryFromBin/events.d.ts +4 -2
  253. package/features/contentEntry/RestoreEntryFromBin/events.js +5 -1
  254. package/features/contentEntry/RestoreEntryFromBin/events.js.map +1 -1
  255. package/features/contentEntry/RestoreEntryFromBin/feature.d.ts +4 -1
  256. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +2 -2
  257. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -2
  258. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
  259. package/features/contentEntry/UnpublishEntry/abstractions.d.ts +1 -0
  260. package/features/contentEntry/UnpublishEntry/abstractions.js +1 -0
  261. package/features/contentEntry/UnpublishEntry/abstractions.js.map +1 -1
  262. package/features/contentEntry/UnpublishEntry/events.d.ts +4 -2
  263. package/features/contentEntry/UnpublishEntry/events.js +5 -1
  264. package/features/contentEntry/UnpublishEntry/events.js.map +1 -1
  265. package/features/contentEntry/UnpublishEntry/feature.d.ts +4 -1
  266. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -3
  267. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +3 -3
  268. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
  269. package/features/contentEntry/UpdateEntry/abstractions.d.ts +1 -0
  270. package/features/contentEntry/UpdateEntry/abstractions.js +1 -0
  271. package/features/contentEntry/UpdateEntry/abstractions.js.map +1 -1
  272. package/features/contentEntry/UpdateEntry/events.d.ts +4 -2
  273. package/features/contentEntry/UpdateEntry/events.js +5 -1
  274. package/features/contentEntry/UpdateEntry/events.js.map +1 -1
  275. package/features/contentEntry/UpdateEntry/feature.d.ts +4 -1
  276. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +22 -0
  277. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +90 -0
  278. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -0
  279. package/features/contentEntry/UpdateRevisionDescription/abstractions.d.ts +25 -0
  280. package/features/contentEntry/UpdateRevisionDescription/abstractions.js +10 -0
  281. package/features/contentEntry/UpdateRevisionDescription/abstractions.js.map +1 -0
  282. package/features/contentEntry/UpdateRevisionDescription/events.d.ts +44 -0
  283. package/features/contentEntry/UpdateRevisionDescription/events.js +33 -0
  284. package/features/contentEntry/UpdateRevisionDescription/events.js.map +1 -0
  285. package/features/contentEntry/UpdateRevisionDescription/feature.d.ts +12 -0
  286. package/features/contentEntry/UpdateRevisionDescription/feature.js +20 -0
  287. package/features/contentEntry/UpdateRevisionDescription/feature.js.map +1 -0
  288. package/features/contentEntry/UpdateRevisionDescription/index.d.ts +2 -0
  289. package/features/contentEntry/UpdateRevisionDescription/index.js +4 -0
  290. package/features/contentEntry/UpdateRevisionDescription/index.js.map +1 -0
  291. package/features/contentEntry/UpdateSingletonEntry/abstractions.d.ts +1 -0
  292. package/features/contentEntry/UpdateSingletonEntry/abstractions.js +1 -0
  293. package/features/contentEntry/UpdateSingletonEntry/abstractions.js.map +1 -1
  294. package/features/contentEntry/UpdateSingletonEntry/feature.d.ts +4 -1
  295. package/features/contentEntry/ValidateEntry/abstractions.d.ts +1 -0
  296. package/features/contentEntry/ValidateEntry/abstractions.js +1 -0
  297. package/features/contentEntry/ValidateEntry/abstractions.js.map +1 -1
  298. package/features/contentEntry/ValidateEntry/feature.d.ts +4 -1
  299. package/features/contentModel/ContentModelFeature.d.ts +4 -1
  300. package/features/contentModel/ContentModelFeature.js +2 -0
  301. package/features/contentModel/ContentModelFeature.js.map +1 -1
  302. package/features/contentModel/CreateModel/CreateModelRepository.d.ts +12 -12
  303. package/features/contentModel/CreateModel/CreateModelRepository.js +17 -12
  304. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  305. package/features/contentModel/CreateModel/CreateModelUseCase.d.ts +3 -3
  306. package/features/contentModel/CreateModel/CreateModelUseCase.js +3 -3
  307. package/features/contentModel/CreateModel/CreateModelUseCase.js.map +1 -1
  308. package/features/contentModel/CreateModel/abstractions.d.ts +1 -0
  309. package/features/contentModel/CreateModel/abstractions.js +1 -0
  310. package/features/contentModel/CreateModel/abstractions.js.map +1 -1
  311. package/features/contentModel/CreateModel/events.d.ts +4 -2
  312. package/features/contentModel/CreateModel/events.js +5 -1
  313. package/features/contentModel/CreateModel/events.js.map +1 -1
  314. package/features/contentModel/CreateModel/feature.d.ts +4 -1
  315. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +12 -13
  316. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +25 -15
  317. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  318. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.d.ts +3 -3
  319. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js +4 -3
  320. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js.map +1 -1
  321. package/features/contentModel/CreateModelFrom/abstractions.d.ts +1 -0
  322. package/features/contentModel/CreateModelFrom/abstractions.js +1 -0
  323. package/features/contentModel/CreateModelFrom/abstractions.js.map +1 -1
  324. package/features/contentModel/CreateModelFrom/events.d.ts +4 -2
  325. package/features/contentModel/CreateModelFrom/events.js +5 -1
  326. package/features/contentModel/CreateModelFrom/events.js.map +1 -1
  327. package/features/contentModel/CreateModelFrom/feature.d.ts +4 -1
  328. package/features/contentModel/DeleteModel/DeleteModelUseCase.d.ts +1 -1
  329. package/features/contentModel/DeleteModel/DeleteModelUseCase.js +1 -1
  330. package/features/contentModel/DeleteModel/DeleteModelUseCase.js.map +1 -1
  331. package/features/contentModel/DeleteModel/abstractions.d.ts +1 -0
  332. package/features/contentModel/DeleteModel/abstractions.js +1 -0
  333. package/features/contentModel/DeleteModel/abstractions.js.map +1 -1
  334. package/features/contentModel/DeleteModel/events.d.ts +4 -2
  335. package/features/contentModel/DeleteModel/events.js +5 -1
  336. package/features/contentModel/DeleteModel/events.js.map +1 -1
  337. package/features/contentModel/DeleteModel/feature.d.ts +4 -1
  338. package/features/contentModel/GetModel/abstractions.d.ts +1 -0
  339. package/features/contentModel/GetModel/abstractions.js +1 -0
  340. package/features/contentModel/GetModel/abstractions.js.map +1 -1
  341. package/features/contentModel/GetModel/feature.d.ts +4 -1
  342. package/features/contentModel/ListModels/abstractions.d.ts +1 -0
  343. package/features/contentModel/ListModels/abstractions.js +1 -0
  344. package/features/contentModel/ListModels/abstractions.js.map +1 -1
  345. package/features/contentModel/ListModels/feature.d.ts +4 -1
  346. package/features/contentModel/ModelFieldCompression/ModelFieldCompression.d.ts +15 -0
  347. package/features/contentModel/ModelFieldCompression/ModelFieldCompression.js +27 -0
  348. package/features/contentModel/ModelFieldCompression/ModelFieldCompression.js.map +1 -0
  349. package/features/contentModel/ModelFieldCompression/abstractions.d.ts +17 -0
  350. package/features/contentModel/ModelFieldCompression/abstractions.js +4 -0
  351. package/features/contentModel/ModelFieldCompression/abstractions.js.map +1 -0
  352. package/features/contentModel/ModelFieldCompression/feature.d.ts +4 -0
  353. package/features/contentModel/ModelFieldCompression/feature.js +10 -0
  354. package/features/contentModel/ModelFieldCompression/feature.js.map +1 -0
  355. package/features/contentModel/ModelFieldCompression/index.d.ts +1 -0
  356. package/features/contentModel/ModelFieldCompression/index.js +3 -0
  357. package/features/contentModel/ModelFieldCompression/index.js.map +1 -0
  358. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.d.ts +3 -3
  359. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js +6 -6
  360. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js.map +1 -1
  361. package/features/contentModel/ModelToAstConverter/feature.d.ts +4 -1
  362. package/features/contentModel/UpdateModel/UpdateModelRepository.d.ts +9 -9
  363. package/features/contentModel/UpdateModel/UpdateModelRepository.js +21 -12
  364. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  365. package/features/contentModel/UpdateModel/UpdateModelUseCase.d.ts +2 -2
  366. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +6 -3
  367. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  368. package/features/contentModel/UpdateModel/abstractions.d.ts +1 -0
  369. package/features/contentModel/UpdateModel/abstractions.js +1 -0
  370. package/features/contentModel/UpdateModel/abstractions.js.map +1 -1
  371. package/features/contentModel/UpdateModel/events.d.ts +4 -2
  372. package/features/contentModel/UpdateModel/events.js +5 -1
  373. package/features/contentModel/UpdateModel/events.js.map +1 -1
  374. package/features/contentModel/UpdateModel/feature.d.ts +4 -1
  375. package/features/contentModel/shared/ModelsFetcher.d.ts +8 -6
  376. package/features/contentModel/shared/ModelsFetcher.js +14 -4
  377. package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
  378. package/features/contentModelGroup/ContentModelGroupFeature.d.ts +4 -1
  379. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +1 -1
  380. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +1 -1
  381. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
  382. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +3 -3
  383. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +3 -3
  384. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
  385. package/features/contentModelGroup/CreateGroup/abstractions.d.ts +1 -0
  386. package/features/contentModelGroup/CreateGroup/abstractions.js +1 -0
  387. package/features/contentModelGroup/CreateGroup/abstractions.js.map +1 -1
  388. package/features/contentModelGroup/CreateGroup/events.d.ts +4 -2
  389. package/features/contentModelGroup/CreateGroup/events.js +5 -1
  390. package/features/contentModelGroup/CreateGroup/events.js.map +1 -1
  391. package/features/contentModelGroup/CreateGroup/feature.d.ts +4 -1
  392. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +1 -1
  393. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +1 -1
  394. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
  395. package/features/contentModelGroup/DeleteGroup/abstractions.d.ts +1 -0
  396. package/features/contentModelGroup/DeleteGroup/abstractions.js +1 -0
  397. package/features/contentModelGroup/DeleteGroup/abstractions.js.map +1 -1
  398. package/features/contentModelGroup/DeleteGroup/events.d.ts +4 -2
  399. package/features/contentModelGroup/DeleteGroup/events.js +5 -1
  400. package/features/contentModelGroup/DeleteGroup/events.js.map +1 -1
  401. package/features/contentModelGroup/DeleteGroup/feature.d.ts +4 -1
  402. package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +2 -2
  403. package/features/contentModelGroup/GetGroup/GetGroupRepository.js +2 -2
  404. package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
  405. package/features/contentModelGroup/GetGroup/abstractions.d.ts +1 -0
  406. package/features/contentModelGroup/GetGroup/abstractions.js +1 -0
  407. package/features/contentModelGroup/GetGroup/abstractions.js.map +1 -1
  408. package/features/contentModelGroup/GetGroup/feature.d.ts +4 -1
  409. package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +2 -2
  410. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +2 -2
  411. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
  412. package/features/contentModelGroup/ListGroups/abstractions.d.ts +1 -0
  413. package/features/contentModelGroup/ListGroups/abstractions.js +1 -0
  414. package/features/contentModelGroup/ListGroups/abstractions.js.map +1 -1
  415. package/features/contentModelGroup/ListGroups/feature.d.ts +4 -1
  416. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +2 -2
  417. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +2 -2
  418. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
  419. package/features/contentModelGroup/UpdateGroup/abstractions.d.ts +1 -0
  420. package/features/contentModelGroup/UpdateGroup/abstractions.js +1 -0
  421. package/features/contentModelGroup/UpdateGroup/abstractions.js.map +1 -1
  422. package/features/contentModelGroup/UpdateGroup/events.d.ts +4 -2
  423. package/features/contentModelGroup/UpdateGroup/events.js +5 -1
  424. package/features/contentModelGroup/UpdateGroup/events.js.map +1 -1
  425. package/features/contentModelGroup/UpdateGroup/feature.d.ts +4 -1
  426. package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +2 -2
  427. package/features/contentModelGroup/shared/PluginGroupsProvider.js +2 -2
  428. package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
  429. package/features/contentModelGroup/shared/abstractions.d.ts +1 -0
  430. package/features/contentModelGroup/shared/abstractions.js +1 -0
  431. package/features/contentModelGroup/shared/abstractions.js.map +1 -1
  432. package/features/graphql/feature.d.ts +4 -0
  433. package/features/graphql/feature.js +34 -0
  434. package/features/graphql/feature.js.map +1 -0
  435. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.d.ts +13 -0
  436. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js +27 -0
  437. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js.map +1 -0
  438. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +97 -0
  439. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js +4 -0
  440. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -0
  441. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.d.ts +10 -0
  442. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js +4 -0
  443. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js.map +1 -0
  444. package/features/graphql/fields/base/BooleanToGraphQL.d.ts +26 -0
  445. package/features/graphql/fields/base/BooleanToGraphQL.js +68 -0
  446. package/features/graphql/fields/base/BooleanToGraphQL.js.map +1 -0
  447. package/features/graphql/fields/base/DateTimeToGraphQL.d.ts +26 -0
  448. package/features/graphql/fields/base/DateTimeToGraphQL.js +97 -0
  449. package/features/graphql/fields/base/DateTimeToGraphQL.js.map +1 -0
  450. package/features/graphql/fields/base/DynamicZoneToGraphQL.d.ts +30 -0
  451. package/features/graphql/fields/base/DynamicZoneToGraphQL.js +280 -0
  452. package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -0
  453. package/features/graphql/fields/base/FileToGraphQL.d.ts +22 -0
  454. package/features/graphql/fields/base/FileToGraphQL.js +39 -0
  455. package/features/graphql/fields/base/FileToGraphQL.js.map +1 -0
  456. package/features/graphql/fields/base/JsonToGraphQL.d.ts +24 -0
  457. package/features/graphql/fields/base/JsonToGraphQL.js +52 -0
  458. package/features/graphql/fields/base/JsonToGraphQL.js.map +1 -0
  459. package/features/graphql/fields/base/LongTextToGraphQL.d.ts +24 -0
  460. package/features/graphql/fields/base/LongTextToGraphQL.js +57 -0
  461. package/features/graphql/fields/base/LongTextToGraphQL.js.map +1 -0
  462. package/features/graphql/fields/base/NumberToGraphQL.d.ts +26 -0
  463. package/features/graphql/fields/base/NumberToGraphQL.js +78 -0
  464. package/features/graphql/fields/base/NumberToGraphQL.js.map +1 -0
  465. package/features/graphql/fields/base/ObjectToGraphQL.d.ts +31 -0
  466. package/features/graphql/fields/base/ObjectToGraphQL.js +264 -0
  467. package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -0
  468. package/features/graphql/fields/base/RefToGraphQL.d.ts +29 -0
  469. package/features/graphql/fields/base/RefToGraphQL.js +261 -0
  470. package/features/graphql/fields/base/RefToGraphQL.js.map +1 -0
  471. package/features/graphql/fields/base/RichTextToGraphQL.d.ts +25 -0
  472. package/features/graphql/fields/base/RichTextToGraphQL.js +58 -0
  473. package/features/graphql/fields/base/RichTextToGraphQL.js.map +1 -0
  474. package/features/graphql/fields/base/SearchableJsonToGraphQL.d.ts +26 -0
  475. package/features/graphql/fields/base/SearchableJsonToGraphQL.js +62 -0
  476. package/features/graphql/fields/base/SearchableJsonToGraphQL.js.map +1 -0
  477. package/features/graphql/fields/base/TextToGraphQL.d.ts +26 -0
  478. package/features/graphql/fields/base/TextToGraphQL.js +74 -0
  479. package/features/graphql/fields/base/TextToGraphQL.js.map +1 -0
  480. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.d.ts +16 -0
  481. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js +37 -0
  482. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js.map +1 -0
  483. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.d.ts +3 -0
  484. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js +14 -0
  485. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js.map +1 -0
  486. package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.d.ts +1 -1
  487. package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.js +4 -4
  488. package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -0
  489. package/{graphqlFields/helpers.d.ts → features/graphql/fields/base/utils/createGraphQLInputField.d.ts} +1 -1
  490. package/features/graphql/fields/base/utils/createGraphQLInputField.js +17 -0
  491. package/features/graphql/fields/base/utils/createGraphQLInputField.js.map +1 -0
  492. package/features/graphql/index.d.ts +4 -0
  493. package/features/graphql/index.js +6 -0
  494. package/features/graphql/index.js.map +1 -0
  495. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.d.ts +13 -0
  496. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js +4 -0
  497. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js.map +1 -0
  498. package/features/installer/CmsInstaller.d.ts +1 -1
  499. package/features/installer/CmsInstaller.js +1 -1
  500. package/features/installer/CmsInstaller.js.map +1 -1
  501. package/features/installer/feature.d.ts +4 -1
  502. package/features/modelBuilder/abstractions.d.ts +8 -4
  503. package/features/modelBuilder/abstractions.js +5 -2
  504. package/features/modelBuilder/abstractions.js.map +1 -1
  505. package/features/modelBuilder/feature.d.ts +4 -1
  506. package/features/modelBuilder/feature.js +6 -0
  507. package/features/modelBuilder/feature.js.map +1 -1
  508. package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +36 -0
  509. package/features/modelBuilder/fields/BaseFieldBuilder.js +41 -0
  510. package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -0
  511. package/features/modelBuilder/fields/BooleanFieldType.d.ts +2 -2
  512. package/features/modelBuilder/fields/BooleanFieldType.js +2 -2
  513. package/features/modelBuilder/fields/BooleanFieldType.js.map +1 -1
  514. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +220 -0
  515. package/features/modelBuilder/fields/DataFieldBuilder.js +211 -0
  516. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -0
  517. package/features/modelBuilder/fields/DateTimeFieldType.d.ts +3 -3
  518. package/features/modelBuilder/fields/DateTimeFieldType.js +22 -2
  519. package/features/modelBuilder/fields/DateTimeFieldType.js.map +1 -1
  520. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +3 -3
  521. package/features/modelBuilder/fields/DynamicZoneFieldType.js +12 -5
  522. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  523. package/features/modelBuilder/fields/FieldBuilder.d.ts +5 -46
  524. package/features/modelBuilder/fields/FieldBuilder.js +3 -152
  525. package/features/modelBuilder/fields/FieldBuilder.js.map +1 -1
  526. package/features/modelBuilder/fields/FieldBuilderRegistry.d.ts +3 -3
  527. package/features/modelBuilder/fields/FieldBuilderRegistry.js +11 -1
  528. package/features/modelBuilder/fields/FieldBuilderRegistry.js.map +1 -1
  529. package/features/modelBuilder/fields/FileFieldType.d.ts +3 -3
  530. package/features/modelBuilder/fields/FileFieldType.js +2 -2
  531. package/features/modelBuilder/fields/FileFieldType.js.map +1 -1
  532. package/features/modelBuilder/fields/JsonFieldType.d.ts +2 -2
  533. package/features/modelBuilder/fields/JsonFieldType.js +2 -2
  534. package/features/modelBuilder/fields/JsonFieldType.js.map +1 -1
  535. package/features/modelBuilder/fields/LayoutFieldBuilder.d.ts +7 -0
  536. package/features/modelBuilder/fields/LayoutFieldBuilder.js +9 -0
  537. package/features/modelBuilder/fields/LayoutFieldBuilder.js.map +1 -0
  538. package/features/modelBuilder/fields/LongTextFieldType.d.ts +3 -4
  539. package/features/modelBuilder/fields/LongTextFieldType.js +2 -2
  540. package/features/modelBuilder/fields/LongTextFieldType.js.map +1 -1
  541. package/features/modelBuilder/fields/NumberFieldType.d.ts +3 -3
  542. package/features/modelBuilder/fields/NumberFieldType.js +2 -2
  543. package/features/modelBuilder/fields/NumberFieldType.js.map +1 -1
  544. package/features/modelBuilder/fields/ObjectFieldType.d.ts +7 -6
  545. package/features/modelBuilder/fields/ObjectFieldType.js +21 -6
  546. package/features/modelBuilder/fields/ObjectFieldType.js.map +1 -1
  547. package/features/modelBuilder/fields/RefFieldType.d.ts +3 -3
  548. package/features/modelBuilder/fields/RefFieldType.js +2 -2
  549. package/features/modelBuilder/fields/RefFieldType.js.map +1 -1
  550. package/features/modelBuilder/fields/RichTextFieldType.d.ts +2 -2
  551. package/features/modelBuilder/fields/RichTextFieldType.js +2 -2
  552. package/features/modelBuilder/fields/RichTextFieldType.js.map +1 -1
  553. package/features/modelBuilder/fields/SearchableJsonFieldType.d.ts +2 -2
  554. package/features/modelBuilder/fields/SearchableJsonFieldType.js +2 -2
  555. package/features/modelBuilder/fields/SearchableJsonFieldType.js.map +1 -1
  556. package/features/modelBuilder/fields/TextFieldType.d.ts +3 -3
  557. package/features/modelBuilder/fields/TextFieldType.js +2 -2
  558. package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
  559. package/features/modelBuilder/fields/UiAlertFieldType.d.ts +19 -0
  560. package/features/modelBuilder/fields/UiAlertFieldType.js +36 -0
  561. package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -0
  562. package/features/modelBuilder/fields/UiSeparatorFieldType.d.ts +17 -0
  563. package/features/modelBuilder/fields/UiSeparatorFieldType.js +31 -0
  564. package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -0
  565. package/features/modelBuilder/fields/UiTabsFieldType.d.ts +28 -0
  566. package/features/modelBuilder/fields/UiTabsFieldType.js +75 -0
  567. package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -0
  568. package/features/modelBuilder/fields/abstractions.d.ts +6 -3
  569. package/features/modelBuilder/fields/abstractions.js +1 -1
  570. package/features/modelBuilder/fields/abstractions.js.map +1 -1
  571. package/features/modelBuilder/fields/{validators.d.ts → fieldTypeValidator.d.ts} +23 -1
  572. package/features/modelBuilder/fields/fieldTypeValidator.js +31 -0
  573. package/features/modelBuilder/fields/fieldTypeValidator.js.map +1 -0
  574. package/features/modelBuilder/index.d.ts +3 -0
  575. package/features/modelBuilder/index.js +3 -0
  576. package/features/modelBuilder/index.js.map +1 -1
  577. package/features/modelBuilder/models/BaseModelBuilder.d.ts +9 -4
  578. package/features/modelBuilder/models/BaseModelBuilder.js +19 -0
  579. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  580. package/features/modelBuilder/models/PrivateModelBuilder.js +4 -2
  581. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  582. package/features/modelBuilder/models/PublicModelBuilder.js +16 -4
  583. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  584. package/features/shared/abstractions.d.ts +9 -2
  585. package/features/shared/abstractions.js +1 -0
  586. package/features/shared/abstractions.js.map +1 -1
  587. package/features/sortMapper/abstractions.d.ts +1 -0
  588. package/features/sortMapper/abstractions.js +1 -0
  589. package/features/sortMapper/abstractions.js.map +1 -1
  590. package/features/sortMapper/feature.d.ts +4 -1
  591. package/features/storage/StorageTransformRegistry.d.ts +13 -0
  592. package/features/storage/StorageTransformRegistry.js +27 -0
  593. package/features/storage/StorageTransformRegistry.js.map +1 -0
  594. package/features/storage/abstractions/StorageTransform.d.ts +26 -0
  595. package/features/storage/abstractions/StorageTransform.js +4 -0
  596. package/features/storage/abstractions/StorageTransform.js.map +1 -0
  597. package/features/storage/abstractions/StorageTransformRegistry.d.ts +10 -0
  598. package/features/storage/abstractions/StorageTransformRegistry.js +4 -0
  599. package/features/storage/abstractions/StorageTransformRegistry.js.map +1 -0
  600. package/features/storage/feature.d.ts +4 -0
  601. package/features/storage/feature.js +24 -0
  602. package/features/storage/feature.js.map +1 -0
  603. package/features/storage/fields/DateStorageTransform.d.ts +10 -0
  604. package/features/storage/fields/DateStorageTransform.js +110 -0
  605. package/features/storage/fields/DateStorageTransform.js.map +1 -0
  606. package/features/storage/fields/DefaultStorageTransform.d.ts +10 -0
  607. package/features/storage/fields/DefaultStorageTransform.js +20 -0
  608. package/features/storage/fields/DefaultStorageTransform.js.map +1 -0
  609. package/features/storage/fields/DynamicZoneStorageTransform.d.ts +10 -0
  610. package/features/storage/fields/DynamicZoneStorageTransform.js +142 -0
  611. package/features/storage/fields/DynamicZoneStorageTransform.js.map +1 -0
  612. package/features/storage/fields/JsonStorageTransform.d.ts +13 -0
  613. package/features/storage/fields/JsonStorageTransform.js +31 -0
  614. package/features/storage/fields/JsonStorageTransform.js.map +1 -0
  615. package/features/storage/fields/LongTextStorageTransform.d.ts +18 -0
  616. package/features/storage/fields/LongTextStorageTransform.js +55 -0
  617. package/features/storage/fields/LongTextStorageTransform.js.map +1 -0
  618. package/features/storage/fields/ObjectStorageTransform.d.ts +10 -0
  619. package/features/storage/fields/ObjectStorageTransform.js +99 -0
  620. package/features/storage/fields/ObjectStorageTransform.js.map +1 -0
  621. package/features/storage/fields/RichTextStorageTransform.d.ts +13 -0
  622. package/features/storage/fields/RichTextStorageTransform.js +39 -0
  623. package/features/storage/fields/RichTextStorageTransform.js.map +1 -0
  624. package/features/storage/index.d.ts +3 -0
  625. package/features/storage/index.js +5 -0
  626. package/features/storage/index.js.map +1 -0
  627. package/features/validation/CmsModelFieldPatternValidatorRegistry.d.ts +12 -0
  628. package/features/validation/CmsModelFieldPatternValidatorRegistry.js +21 -0
  629. package/features/validation/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
  630. package/features/validation/CmsModelFieldValidatorRegistry.d.ts +12 -0
  631. package/features/validation/CmsModelFieldValidatorRegistry.js +23 -0
  632. package/features/validation/CmsModelFieldValidatorRegistry.js.map +1 -0
  633. package/features/validation/abstractions/CmsModelFieldPatternValidator.d.ts +13 -0
  634. package/features/validation/abstractions/CmsModelFieldPatternValidator.js +4 -0
  635. package/features/validation/abstractions/CmsModelFieldPatternValidator.js.map +1 -0
  636. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.d.ts +9 -0
  637. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js +4 -0
  638. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
  639. package/features/validation/abstractions/CmsModelFieldValidator.d.ts +11 -0
  640. package/features/validation/abstractions/CmsModelFieldValidator.js +4 -0
  641. package/features/validation/abstractions/CmsModelFieldValidator.js.map +1 -0
  642. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.d.ts +9 -0
  643. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js +4 -0
  644. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js.map +1 -0
  645. package/features/validation/feature.d.ts +4 -0
  646. package/features/validation/feature.js +48 -0
  647. package/features/validation/feature.js.map +1 -0
  648. package/features/validation/index.d.ts +5 -0
  649. package/features/validation/index.js +7 -0
  650. package/features/validation/index.js.map +1 -0
  651. package/features/validation/validators/DateGteValidator.d.ts +10 -0
  652. package/features/validation/validators/DateGteValidator.js +26 -0
  653. package/features/validation/validators/DateGteValidator.js.map +1 -0
  654. package/features/validation/validators/DateLteValidator.d.ts +10 -0
  655. package/features/validation/validators/DateLteValidator.js +26 -0
  656. package/features/validation/validators/DateLteValidator.js.map +1 -0
  657. package/features/validation/validators/GteValidator.d.ts +10 -0
  658. package/features/validation/validators/GteValidator.js +21 -0
  659. package/features/validation/validators/GteValidator.js.map +1 -0
  660. package/features/validation/validators/InValidator.d.ts +10 -0
  661. package/features/validation/validators/InValidator.js +21 -0
  662. package/features/validation/validators/InValidator.js.map +1 -0
  663. package/features/validation/validators/LteValidator.d.ts +10 -0
  664. package/features/validation/validators/LteValidator.js +21 -0
  665. package/features/validation/validators/LteValidator.js.map +1 -0
  666. package/features/validation/validators/MaxLengthValidator.d.ts +10 -0
  667. package/features/validation/validators/MaxLengthValidator.js +21 -0
  668. package/features/validation/validators/MaxLengthValidator.js.map +1 -0
  669. package/features/validation/validators/MinLengthValidator.d.ts +10 -0
  670. package/features/validation/validators/MinLengthValidator.js +21 -0
  671. package/features/validation/validators/MinLengthValidator.js.map +1 -0
  672. package/features/validation/validators/PatternValidator.d.ts +13 -0
  673. package/features/validation/validators/PatternValidator.js +38 -0
  674. package/features/validation/validators/PatternValidator.js.map +1 -0
  675. package/features/validation/validators/RequiredValidator.d.ts +10 -0
  676. package/features/validation/validators/RequiredValidator.js +16 -0
  677. package/features/validation/validators/RequiredValidator.js.map +1 -0
  678. package/features/validation/validators/TimeGteValidator.d.ts +10 -0
  679. package/features/validation/validators/TimeGteValidator.js +21 -0
  680. package/features/validation/validators/TimeGteValidator.js.map +1 -0
  681. package/features/validation/validators/TimeLteValidator.d.ts +10 -0
  682. package/features/validation/validators/TimeLteValidator.js +21 -0
  683. package/features/validation/validators/TimeLteValidator.js.map +1 -0
  684. package/features/validation/validators/UniqueValidator.d.ts +10 -0
  685. package/features/validation/validators/UniqueValidator.js +47 -0
  686. package/features/validation/validators/UniqueValidator.js.map +1 -0
  687. package/features/validation/validators/patterns/EmailPattern.d.ts +12 -0
  688. package/features/validation/validators/patterns/EmailPattern.js +14 -0
  689. package/features/validation/validators/patterns/EmailPattern.js.map +1 -0
  690. package/features/validation/validators/patterns/LowerCasePattern.d.ts +12 -0
  691. package/features/validation/validators/patterns/LowerCasePattern.js +14 -0
  692. package/features/validation/validators/patterns/LowerCasePattern.js.map +1 -0
  693. package/features/validation/validators/patterns/LowerCaseSpacePattern.d.ts +12 -0
  694. package/features/validation/validators/patterns/LowerCaseSpacePattern.js +14 -0
  695. package/features/validation/validators/patterns/LowerCaseSpacePattern.js.map +1 -0
  696. package/features/validation/validators/patterns/UpperCasePattern.d.ts +12 -0
  697. package/features/validation/validators/patterns/UpperCasePattern.js +14 -0
  698. package/features/validation/validators/patterns/UpperCasePattern.js.map +1 -0
  699. package/features/validation/validators/patterns/UpperCaseSpacePattern.d.ts +12 -0
  700. package/features/validation/validators/patterns/UpperCaseSpacePattern.js +14 -0
  701. package/features/validation/validators/patterns/UpperCaseSpacePattern.js.map +1 -0
  702. package/features/validation/validators/patterns/UrlPattern.d.ts +12 -0
  703. package/features/validation/validators/patterns/UrlPattern.js +14 -0
  704. package/features/validation/validators/patterns/UrlPattern.js.map +1 -0
  705. package/features/whereMapper/abstractions.d.ts +1 -0
  706. package/features/whereMapper/abstractions.js +1 -0
  707. package/features/whereMapper/abstractions.js.map +1 -1
  708. package/features/whereMapper/feature.d.ts +4 -1
  709. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +2 -2
  710. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  711. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +2 -2
  712. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  713. package/graphql/getSchema/generateCacheKey.js +15 -7
  714. package/graphql/getSchema/generateCacheKey.js.map +1 -1
  715. package/graphql/index.js +2 -1
  716. package/graphql/index.js.map +1 -1
  717. package/graphql/schema/baseSchema.d.ts +2 -1
  718. package/graphql/schema/baseSchema.js +28 -24
  719. package/graphql/schema/baseSchema.js.map +1 -1
  720. package/graphql/schema/cms/createEntryResolver.d.ts +10 -0
  721. package/graphql/schema/cms/createEntryResolver.js +65 -0
  722. package/graphql/schema/cms/createEntryResolver.js.map +1 -0
  723. package/graphql/schema/cms/deleteEntryResolver.d.ts +10 -0
  724. package/graphql/schema/cms/deleteEntryResolver.js +65 -0
  725. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -0
  726. package/graphql/schema/cms/getEntryResolver.d.ts +11 -0
  727. package/graphql/schema/cms/getEntryResolver.js +67 -0
  728. package/graphql/schema/cms/getEntryResolver.js.map +1 -0
  729. package/graphql/schema/cms/helpers/buildFieldsSelection.d.ts +23 -0
  730. package/graphql/schema/cms/helpers/buildFieldsSelection.js +79 -0
  731. package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -0
  732. package/graphql/schema/cms/helpers/getErrorMessage.d.ts +4 -0
  733. package/graphql/schema/cms/helpers/getErrorMessage.js +14 -0
  734. package/graphql/schema/cms/helpers/getErrorMessage.js.map +1 -0
  735. package/graphql/schema/cms/helpers/getModel.d.ts +6 -0
  736. package/graphql/schema/cms/helpers/getModel.js +12 -0
  737. package/graphql/schema/cms/helpers/getModel.js.map +1 -0
  738. package/graphql/schema/cms/helpers/index.d.ts +5 -0
  739. package/graphql/schema/cms/helpers/index.js +7 -0
  740. package/graphql/schema/cms/helpers/index.js.map +1 -0
  741. package/graphql/schema/cms/helpers/transformSortToArray.d.ts +18 -0
  742. package/graphql/schema/cms/helpers/transformSortToArray.js +38 -0
  743. package/graphql/schema/cms/helpers/transformSortToArray.js.map +1 -0
  744. package/graphql/schema/cms/helpers/transformWhereToNested.d.ts +17 -0
  745. package/graphql/schema/cms/helpers/transformWhereToNested.js +54 -0
  746. package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -0
  747. package/graphql/schema/cms/helpers.d.ts +5 -0
  748. package/graphql/schema/cms/helpers.js +7 -0
  749. package/graphql/schema/cms/helpers.js.map +1 -0
  750. package/graphql/schema/cms/index.d.ts +2 -0
  751. package/graphql/schema/cms/index.js +26 -0
  752. package/graphql/schema/cms/index.js.map +1 -0
  753. package/graphql/schema/cms/listEntriesResolver.d.ts +15 -0
  754. package/graphql/schema/cms/listEntriesResolver.js +115 -0
  755. package/graphql/schema/cms/listEntriesResolver.js.map +1 -0
  756. package/graphql/schema/cms/publishEntryResolver.d.ts +10 -0
  757. package/graphql/schema/cms/publishEntryResolver.js +65 -0
  758. package/graphql/schema/cms/publishEntryResolver.js.map +1 -0
  759. package/graphql/schema/cms/resolvers/createEntry.d.ts +8 -0
  760. package/graphql/schema/cms/resolvers/createEntry.js +17 -0
  761. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -0
  762. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +8 -0
  763. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +17 -0
  764. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -0
  765. package/graphql/schema/cms/resolvers/getEntry.d.ts +8 -0
  766. package/graphql/schema/cms/resolvers/getEntry.js +17 -0
  767. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -0
  768. package/graphql/schema/cms/resolvers/index.d.ts +9 -0
  769. package/graphql/schema/cms/resolvers/index.js +11 -0
  770. package/graphql/schema/cms/resolvers/index.js.map +1 -0
  771. package/graphql/schema/cms/resolvers/listEntries.d.ts +8 -0
  772. package/graphql/schema/cms/resolvers/listEntries.js +17 -0
  773. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -0
  774. package/graphql/schema/cms/resolvers/mutationCms.d.ts +8 -0
  775. package/graphql/schema/cms/resolvers/mutationCms.js +24 -0
  776. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -0
  777. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +8 -0
  778. package/graphql/schema/cms/resolvers/publishEntryRevision.js +17 -0
  779. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -0
  780. package/graphql/schema/cms/resolvers/queryCms.d.ts +8 -0
  781. package/graphql/schema/cms/resolvers/queryCms.js +23 -0
  782. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -0
  783. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +8 -0
  784. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +17 -0
  785. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -0
  786. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +8 -0
  787. package/graphql/schema/cms/resolvers/updateEntryRevision.js +17 -0
  788. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -0
  789. package/graphql/schema/cms/typeDefs/index.d.ts +3 -0
  790. package/graphql/schema/cms/typeDefs/index.js +5 -0
  791. package/graphql/schema/cms/typeDefs/index.js.map +1 -0
  792. package/graphql/schema/cms/typeDefs/mutation.d.ts +8 -0
  793. package/graphql/schema/cms/typeDefs/mutation.js +42 -0
  794. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -0
  795. package/graphql/schema/cms/typeDefs/query.d.ts +8 -0
  796. package/graphql/schema/cms/typeDefs/query.js +36 -0
  797. package/graphql/schema/cms/typeDefs/query.js.map +1 -0
  798. package/graphql/schema/cms/typeDefs/responses.d.ts +8 -0
  799. package/graphql/schema/cms/typeDefs/responses.js +35 -0
  800. package/graphql/schema/cms/typeDefs/responses.js.map +1 -0
  801. package/graphql/schema/cms/unpublishEntryResolver.d.ts +10 -0
  802. package/graphql/schema/cms/unpublishEntryResolver.js +65 -0
  803. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -0
  804. package/graphql/schema/cms/updateEntryResolver.d.ts +11 -0
  805. package/graphql/schema/cms/updateEntryResolver.js +67 -0
  806. package/graphql/schema/cms/updateEntryResolver.js.map +1 -0
  807. package/graphql/schema/contentEntries.js +1 -1
  808. package/graphql/schema/contentEntries.js.map +1 -1
  809. package/graphql/schema/contentModels.js +31 -9
  810. package/graphql/schema/contentModels.js.map +1 -1
  811. package/graphql/schema/createFieldResolvers.d.ts +3 -2
  812. package/graphql/schema/createFieldResolvers.js +5 -4
  813. package/graphql/schema/createFieldResolvers.js.map +1 -1
  814. package/graphql/schema/createManageResolvers.d.ts +3 -2
  815. package/graphql/schema/createManageResolvers.js +5 -3
  816. package/graphql/schema/createManageResolvers.js.map +1 -1
  817. package/graphql/schema/createManageSDL.d.ts +4 -4
  818. package/graphql/schema/createManageSDL.js +16 -11
  819. package/graphql/schema/createManageSDL.js.map +1 -1
  820. package/graphql/schema/createPreviewResolvers.d.ts +3 -2
  821. package/graphql/schema/createPreviewResolvers.js +4 -4
  822. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  823. package/graphql/schema/createReadResolvers.d.ts +3 -2
  824. package/graphql/schema/createReadResolvers.js +4 -4
  825. package/graphql/schema/createReadResolvers.js.map +1 -1
  826. package/graphql/schema/createReadSDL.d.ts +4 -4
  827. package/graphql/schema/createReadSDL.js +7 -7
  828. package/graphql/schema/createReadSDL.js.map +1 -1
  829. package/graphql/schema/createSingularResolvers.d.ts +3 -2
  830. package/graphql/schema/createSingularResolvers.js +3 -3
  831. package/graphql/schema/createSingularResolvers.js.map +1 -1
  832. package/graphql/schema/createSingularSDL.d.ts +3 -2
  833. package/graphql/schema/createSingularSDL.js +5 -4
  834. package/graphql/schema/createSingularSDL.js.map +1 -1
  835. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js +9 -7
  836. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -1
  837. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.d.ts +8 -0
  838. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js +13 -0
  839. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js.map +1 -0
  840. package/graphql/schema/schemaPlugins.js +14 -17
  841. package/graphql/schema/schemaPlugins.js.map +1 -1
  842. package/index.d.ts +3 -5
  843. package/index.js +4 -7
  844. package/index.js.map +1 -1
  845. package/package.json +36 -32
  846. package/plugins/CmsModelPlugin.js +19 -4
  847. package/plugins/CmsModelPlugin.js.map +1 -1
  848. package/plugins/index.d.ts +0 -2
  849. package/plugins/index.js +0 -2
  850. package/plugins/index.js.map +1 -1
  851. package/types/context.d.ts +5 -5
  852. package/types/context.js.map +1 -1
  853. package/types/fields/objectField.d.ts +2 -0
  854. package/types/fields/objectField.js.map +1 -1
  855. package/types/model.d.ts +39 -3
  856. package/types/model.js.map +1 -1
  857. package/types/modelField.d.ts +47 -15
  858. package/types/modelField.js.map +1 -1
  859. package/types/plugins.d.ts +1 -305
  860. package/types/plugins.js.map +1 -1
  861. package/types/types.d.ts +28 -61
  862. package/types/types.js +0 -4
  863. package/types/types.js.map +1 -1
  864. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.d.ts +3 -2
  865. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js +3 -3
  866. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js.map +1 -1
  867. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.d.ts +4 -3
  868. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js +3 -3
  869. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js.map +1 -1
  870. package/utils/converters/ConverterCollection.d.ts +2 -0
  871. package/utils/converters/ConverterCollection.js +3 -2
  872. package/utils/converters/ConverterCollection.js.map +1 -1
  873. package/utils/converters/types.js.map +1 -1
  874. package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -0
  875. package/utils/converters/valueKeyFromStorageConverter.js +4 -2
  876. package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
  877. package/utils/converters/valueKeyStorageConverter.d.ts +2 -3
  878. package/utils/converters/valueKeyStorageConverter.js +7 -3
  879. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  880. package/utils/converters/valueKeyToStorageConverter.d.ts +2 -0
  881. package/utils/converters/valueKeyToStorageConverter.js +4 -2
  882. package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
  883. package/utils/createModelField.js +10 -8
  884. package/utils/createModelField.js.map +1 -1
  885. package/utils/createTypeFromFields.d.ts +3 -2
  886. package/utils/createTypeFromFields.js +3 -3
  887. package/utils/createTypeFromFields.js.map +1 -1
  888. package/utils/entryStorage.d.ts +8 -15
  889. package/utils/entryStorage.js +31 -59
  890. package/utils/entryStorage.js.map +1 -1
  891. package/utils/getBaseFieldType.js +3 -0
  892. package/utils/getBaseFieldType.js.map +1 -1
  893. package/utils/getSchemaFromFieldPlugins.d.ts +3 -2
  894. package/utils/getSchemaFromFieldPlugins.js +5 -9
  895. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  896. package/utils/renderFields.d.ts +4 -3
  897. package/utils/renderFields.js +14 -9
  898. package/utils/renderFields.js.map +1 -1
  899. package/utils/renderGetFilterFields.d.ts +3 -2
  900. package/utils/renderGetFilterFields.js +2 -2
  901. package/utils/renderGetFilterFields.js.map +1 -1
  902. package/utils/renderInputFields.d.ts +4 -3
  903. package/utils/renderInputFields.js +5 -11
  904. package/utils/renderInputFields.js.map +1 -1
  905. package/utils/renderListFilterFields.d.ts +3 -2
  906. package/utils/renderListFilterFields.js +5 -3
  907. package/utils/renderListFilterFields.js.map +1 -1
  908. package/utils/renderSortEnum.d.ts +4 -4
  909. package/utils/renderSortEnum.js +11 -11
  910. package/utils/renderSortEnum.js.map +1 -1
  911. package/utils/toSlug.js +1 -1
  912. package/utils/toSlug.js.map +1 -1
  913. package/crud/contentEntry/entryDataFactories/state.d.ts +0 -10
  914. package/crud/contentEntry/entryDataFactories/state.js +0 -16
  915. package/crud/contentEntry/entryDataFactories/state.js.map +0 -1
  916. package/crud/contentModel/validateModel.d.ts +0 -9
  917. package/crud/contentModel/validateModel.js +0 -21
  918. package/crud/contentModel/validateModel.js.map +0 -1
  919. package/crud/contentModel/validateModelFields.d.ts +0 -9
  920. package/crud/contentModel/validateModelFields.js +0 -267
  921. package/crud/contentModel/validateModelFields.js.map +0 -1
  922. package/features/modelBuilder/fields/validators.js +0 -3
  923. package/features/modelBuilder/fields/validators.js.map +0 -1
  924. package/graphql/schema/createFieldTypePluginRecords.d.ts +0 -3
  925. package/graphql/schema/createFieldTypePluginRecords.js +0 -8
  926. package/graphql/schema/createFieldTypePluginRecords.js.map +0 -1
  927. package/graphqlFields/boolean.d.ts +0 -2
  928. package/graphqlFields/boolean.js +0 -52
  929. package/graphqlFields/boolean.js.map +0 -1
  930. package/graphqlFields/datetime.d.ts +0 -2
  931. package/graphqlFields/datetime.js +0 -71
  932. package/graphqlFields/datetime.js.map +0 -1
  933. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +0 -2
  934. package/graphqlFields/dynamicZone/dynamicZoneField.js +0 -313
  935. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +0 -1
  936. package/graphqlFields/dynamicZone/index.d.ts +0 -1
  937. package/graphqlFields/dynamicZone/index.js +0 -3
  938. package/graphqlFields/dynamicZone/index.js.map +0 -1
  939. package/graphqlFields/file.d.ts +0 -2
  940. package/graphqlFields/file.js +0 -37
  941. package/graphqlFields/file.js.map +0 -1
  942. package/graphqlFields/helpers.js +0 -20
  943. package/graphqlFields/helpers.js.map +0 -1
  944. package/graphqlFields/index.d.ts +0 -2
  945. package/graphqlFields/index.js +0 -15
  946. package/graphqlFields/index.js.map +0 -1
  947. package/graphqlFields/json.d.ts +0 -2
  948. package/graphqlFields/json.js +0 -42
  949. package/graphqlFields/json.js.map +0 -1
  950. package/graphqlFields/longText.d.ts +0 -2
  951. package/graphqlFields/longText.js +0 -57
  952. package/graphqlFields/longText.js.map +0 -1
  953. package/graphqlFields/number.d.ts +0 -2
  954. package/graphqlFields/number.js +0 -63
  955. package/graphqlFields/number.js.map +0 -1
  956. package/graphqlFields/object.d.ts +0 -2
  957. package/graphqlFields/object.js +0 -245
  958. package/graphqlFields/object.js.map +0 -1
  959. package/graphqlFields/ref.d.ts +0 -2
  960. package/graphqlFields/ref.js +0 -286
  961. package/graphqlFields/ref.js.map +0 -1
  962. package/graphqlFields/richText/richTextResolver.js.map +0 -1
  963. package/graphqlFields/richText.d.ts +0 -2
  964. package/graphqlFields/richText.js +0 -48
  965. package/graphqlFields/richText.js.map +0 -1
  966. package/graphqlFields/searchableJson.d.ts +0 -2
  967. package/graphqlFields/searchableJson.js +0 -53
  968. package/graphqlFields/searchableJson.js.map +0 -1
  969. package/graphqlFields/text.d.ts +0 -2
  970. package/graphqlFields/text.js +0 -59
  971. package/graphqlFields/text.js.map +0 -1
  972. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +0 -20
  973. package/plugins/CmsGraphQLSchemaSorterPlugin.js +0 -19
  974. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +0 -1
  975. package/plugins/StorageTransformPlugin.d.ts +0 -35
  976. package/plugins/StorageTransformPlugin.js +0 -26
  977. package/plugins/StorageTransformPlugin.js.map +0 -1
  978. package/storage/date.d.ts +0 -3
  979. package/storage/date.js +0 -110
  980. package/storage/date.js.map +0 -1
  981. package/storage/default.d.ts +0 -2
  982. package/storage/default.js +0 -19
  983. package/storage/default.js.map +0 -1
  984. package/storage/dynamicZone.d.ts +0 -2
  985. package/storage/dynamicZone.js +0 -149
  986. package/storage/dynamicZone.js.map +0 -1
  987. package/storage/index.d.ts +0 -1
  988. package/storage/index.js +0 -13
  989. package/storage/index.js.map +0 -1
  990. package/storage/json.d.ts +0 -2
  991. package/storage/json.js +0 -49
  992. package/storage/json.js.map +0 -1
  993. package/storage/object.d.ts +0 -2
  994. package/storage/object.js +0 -104
  995. package/storage/object.js.map +0 -1
  996. package/utils/contentEntryTraverser/ContentEntryTraverser.js.map +0 -1
  997. package/validators/dateGte.d.ts +0 -2
  998. package/validators/dateGte.js +0 -25
  999. package/validators/dateGte.js.map +0 -1
  1000. package/validators/dateLte.d.ts +0 -2
  1001. package/validators/dateLte.js +0 -25
  1002. package/validators/dateLte.js.map +0 -1
  1003. package/validators/gte.d.ts +0 -2
  1004. package/validators/gte.js +0 -22
  1005. package/validators/gte.js.map +0 -1
  1006. package/validators/in.d.ts +0 -2
  1007. package/validators/in.js +0 -22
  1008. package/validators/in.js.map +0 -1
  1009. package/validators/index.d.ts +0 -1
  1010. package/validators/index.js +0 -16
  1011. package/validators/index.js.map +0 -1
  1012. package/validators/lte.d.ts +0 -2
  1013. package/validators/lte.js +0 -22
  1014. package/validators/lte.js.map +0 -1
  1015. package/validators/maxLength.d.ts +0 -2
  1016. package/validators/maxLength.js +0 -22
  1017. package/validators/maxLength.js.map +0 -1
  1018. package/validators/minLength.d.ts +0 -2
  1019. package/validators/minLength.js +0 -22
  1020. package/validators/minLength.js.map +0 -1
  1021. package/validators/pattern.d.ts +0 -2
  1022. package/validators/pattern.js +0 -36
  1023. package/validators/pattern.js.map +0 -1
  1024. package/validators/patternPlugins/email.d.ts +0 -2
  1025. package/validators/patternPlugins/email.js +0 -13
  1026. package/validators/patternPlugins/email.js.map +0 -1
  1027. package/validators/patternPlugins/index.d.ts +0 -2
  1028. package/validators/patternPlugins/index.js +0 -11
  1029. package/validators/patternPlugins/index.js.map +0 -1
  1030. package/validators/patternPlugins/lowerCase.d.ts +0 -2
  1031. package/validators/patternPlugins/lowerCase.js +0 -13
  1032. package/validators/patternPlugins/lowerCase.js.map +0 -1
  1033. package/validators/patternPlugins/lowerCaseSpace.d.ts +0 -2
  1034. package/validators/patternPlugins/lowerCaseSpace.js +0 -13
  1035. package/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
  1036. package/validators/patternPlugins/upperCase.d.ts +0 -2
  1037. package/validators/patternPlugins/upperCase.js +0 -13
  1038. package/validators/patternPlugins/upperCase.js.map +0 -1
  1039. package/validators/patternPlugins/upperCaseSpace.d.ts +0 -2
  1040. package/validators/patternPlugins/upperCaseSpace.js +0 -13
  1041. package/validators/patternPlugins/upperCaseSpace.js.map +0 -1
  1042. package/validators/patternPlugins/url.d.ts +0 -2
  1043. package/validators/patternPlugins/url.js +0 -13
  1044. package/validators/patternPlugins/url.js.map +0 -1
  1045. package/validators/required.d.ts +0 -2
  1046. package/validators/required.js +0 -17
  1047. package/validators/required.js.map +0 -1
  1048. package/validators/timeGte.d.ts +0 -2
  1049. package/validators/timeGte.js +0 -20
  1050. package/validators/timeGte.js.map +0 -1
  1051. package/validators/timeLte.d.ts +0 -2
  1052. package/validators/timeLte.js +0 -20
  1053. package/validators/timeLte.js.map +0 -1
  1054. package/validators/unique.d.ts +0 -6
  1055. package/validators/unique.js +0 -57
  1056. package/validators/unique.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","CreateGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","GroupSlugTakenError","GroupPersistenceError","StorageOperations","TenantContext","toSlug","generateAlphaNumericId","CreateGroupRepositoryImpl","constructor","groupCache","pluginGroupsProvider","storageOperations","tenantContext","execute","group","tenant","getTenant","id","existingById","groups","list","where","length","fail","slug","slugTaken","isSlugTaken","pluginGroups","getGroups","pluginGroupConflict","find","pg","create","clear","ok","error","trim","existingBySlug","baseSlug","name","abstraction","implementation","dependencies"],"sources":["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/TenantContext\";\nimport { toSlug } from \"~/utils/toSlug.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 storageOperations: StorageOperations.Interface,\n private tenantContext: TenantContext.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.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();\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: [GroupCache, PluginGroupsProvider, StorageOperations, TenantContext]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","CreateGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","GroupSlugTakenError","GroupPersistenceError","StorageOperations","TenantContext","toSlug","generateAlphaNumericId","CreateGroupRepositoryImpl","constructor","groupCache","pluginGroupsProvider","storageOperations","tenantContext","execute","group","tenant","getTenant","id","existingById","groups","list","where","length","fail","slug","slugTaken","isSlugTaken","pluginGroups","getGroups","pluginGroupConflict","find","pg","create","clear","ok","error","trim","existingBySlug","baseSlug","name","abstraction","implementation","dependencies"],"sources":["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\";\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 ) {}\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.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();\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: [GroupCache, PluginGroupsProvider, StorageOperations, TenantContext]\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,10 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { CreateGroupUseCase as UseCaseAbstraction } from "./abstractions.js";
3
3
  import { CreateGroupRepository } from "./abstractions.js";
4
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
4
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
5
5
  import { AccessControl } from "../../../features/shared/abstractions.js";
6
- import { TenantContext } from "@webiny/api-core/features/TenantContext";
7
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
6
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
7
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
8
8
  import { CmsContext } from "../../../features/shared/abstractions.js";
9
9
  import type { CmsGroup } from "../../../types/index.js";
10
10
  import type { CmsGroupCreateInput } from "../../../types/index.js";
@@ -2,13 +2,13 @@ import { Result } from "@webiny/feature/api";
2
2
  import { createImplementation } from "@webiny/feature/api";
3
3
  import { CreateGroupUseCase as UseCaseAbstraction } from "./abstractions.js";
4
4
  import { CreateGroupRepository } from "./abstractions.js";
5
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
5
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
6
6
  import { GroupBeforeCreateEventEvent } from "./events.js";
7
7
  import { GroupAfterCreateEvent } from "./events.js";
8
8
  import { GroupCreateErrorEvent } from "./events.js";
9
9
  import { AccessControl } from "../../shared/abstractions.js";
10
- import { TenantContext } from "@webiny/api-core/features/TenantContext";
11
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
10
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
11
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
12
12
  import { CmsContext } from "../../shared/abstractions.js";
13
13
  import { GroupNotAuthorizedError, GroupValidationError } from "../../../domain/contentModelGroup/errors.js";
14
14
  import { createZodError } from "@webiny/utils";
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","CreateGroupUseCase","UseCaseAbstraction","CreateGroupRepository","EventPublisher","GroupBeforeCreateEventEvent","GroupAfterCreateEvent","GroupCreateErrorEvent","AccessControl","TenantContext","IdentityContext","CmsContext","GroupNotAuthorizedError","GroupValidationError","createZodError","mdbid","createGroupCreateValidation","CreateGroupUseCaseImpl","constructor","eventPublisher","repository","accessControl","tenantContext","identityContext","cmsContext","execute","input","canAccess","canAccessGroup","rwd","fail","validationResult","safeParseAsync","success","zodError","error","message","data","invalidFields","identity","getIdentity","tenant","getTenant","id","group","createdOn","Date","toISOString","savedOn","createdBy","displayName","type","publish","result","isFail","ok","abstraction","implementation","dependencies"],"sources":["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\";\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/TenantContext\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\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 = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateGroupUseCaseImpl,\n dependencies: [\n EventPublisher,\n CreateGroupRepository,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,kBAAkB,IAAIC,kBAAkB;AACjD,SAASC,qBAAqB;AAC9B,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,2BAA2B;AACpC,SAASC,qBAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AACtB,SAASC,aAAa,QAAQ,yCAAyC;AACvE,SAASC,eAAe,QAAQ,2CAA2C;AAC3E,SAASC,UAAU;AACnB,SACIC,uBAAuB,EACvBC,oBAAoB;AAExB,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,KAAK,QAAQ,eAAe;AACrC,SAASC,2BAA2B;AAIpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,CAAyC;EAC1DC,WAAWA,CACNC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,EAC1CC,UAAgC,EAC1C;IAAA,KANUL,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA2C,GAA3CA,UAA2C;IAAA,KAC3CC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAAgC,GAAhCA,UAAgC;EACzC;EAEH,MAAMC,OAAOA,CAACC,KAA0B,EAAuD;IAC3F;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACN,aAAa,CAACO,cAAc,CAAC;MAAEC,GAAG,EAAE;IAAI,CAAC,CAAC;IACvE,IAAI,CAACF,SAAS,EAAE;MACZ,OAAO5B,MAAM,CAAC+B,IAAI,CAAC,IAAIlB,uBAAuB,CAAC,CAAC,CAAC;IACrD;;IAEA;IACA,MAAMmB,gBAAgB,GAAG,MAAMf,2BAA2B,CAAC,CAAC,CAACgB,cAAc,CAACN,KAAK,CAAC;IAClF,IAAI,CAACK,gBAAgB,CAACE,OAAO,EAAE;MAC3B,MAAMC,QAAQ,GAAGpB,cAAc,CAACiB,gBAAgB,CAACI,KAAK,CAAC;MACvD,OAAOpC,MAAM,CAAC+B,IAAI,CACd,IAAIjB,oBAAoB,CAACqB,QAAQ,CAACE,OAAO,EAAEF,QAAQ,CAACG,IAAI,CAAEC,aAAa,CAC3E,CAAC;IACL;IACA,MAAMD,IAAI,GAAGN,gBAAgB,CAACM,IAAI;;IAElC;IACA,MAAME,QAAQ,GAAG,IAAI,CAAChB,eAAe,CAACiB,WAAW,CAAC,CAAC;IACnD,MAAMC,MAAM,GAAG,IAAI,CAACnB,aAAa,CAACoB,SAAS,CAAC,CAAC;IAE7C,MAAMC,EAAE,GAAGN,IAAI,CAACM,EAAE,IAAI5B,KAAK,CAAC,CAAC;IAC7B,MAAM6B,KAAe,GAAG;MACpB,GAAGP,IAAI;MACPM,EAAE;MACFF,MAAM,EAAEA,MAAM,CAACE,EAAE;MACjBE,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACnCC,OAAO,EAAE,IAAIF,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACjCE,SAAS,EAAE;QACPN,EAAE,EAAEJ,QAAQ,CAACI,EAAE;QACfO,WAAW,EAAEX,QAAQ,CAACW,WAAW;QACjCC,IAAI,EAAEZ,QAAQ,CAACY;MACnB;IACJ,CAAC;;IAED;IACA,MAAMvB,cAAc,GAAG,MAAM,IAAI,CAACP,aAAa,CAACO,cAAc,CAAC;MAAEgB,KAAK;MAAEf,GAAG,EAAE;IAAI,CAAC,CAAC;IACnF,IAAI,CAACD,cAAc,EAAE;MACjB,OAAO7B,MAAM,CAAC+B,IAAI,CAAC,IAAIlB,uBAAuB,CAAC,CAAC,CAAC;IACrD;IAEA,IAAI;MACA;MACA,MAAM,IAAI,CAACO,cAAc,CAACiC,OAAO,CAAC,IAAI/C,2BAA2B,CAAC;QAAEuC;MAAM,CAAC,CAAC,CAAC;;MAE7E;MACA,MAAMS,MAAM,GAAG,MAAM,IAAI,CAACjC,UAAU,CAACK,OAAO,CAACmB,KAAK,CAAC;MACnD,IAAIS,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;QACjB;QACA,MAAM,IAAI,CAACnC,cAAc,CAACiC,OAAO,CAC7B,IAAI7C,qBAAqB,CAAC;UACtBmB,KAAK;UACLkB,KAAK;UACLT,KAAK,EAAEkB,MAAM,CAAClB;QAClB,CAAC,CACL,CAAC;QACD,OAAOpC,MAAM,CAAC+B,IAAI,CAACuB,MAAM,CAAClB,KAAK,CAAC;MACpC;;MAEA;MACA,MAAM,IAAI,CAAChB,cAAc,CAACiC,OAAO,CAAC,IAAI9C,qBAAqB,CAAC;QAAEsC;MAAM,CAAC,CAAC,CAAC;MAEvE,OAAO7C,MAAM,CAACwD,EAAE,CAACX,KAAK,CAAC;IAC3B,CAAC,CAAC,OAAOT,KAAK,EAAE;MACZ;MACA,MAAM,IAAI,CAAChB,cAAc,CAACiC,OAAO,CAC7B,IAAI7C,qBAAqB,CAAC;QACtBmB,KAAK;QACLkB,KAAK;QACLT,KAAK,EAAEA;MACX,CAAC,CACL,CAAC;MACD,OAAOpC,MAAM,CAAC+B,IAAI,CAACK,KAAiC,CAAC;IACzD;EACJ;AACJ;AAEA,OAAO,MAAMlC,kBAAkB,GAAGD,oBAAoB,CAAC;EACnDwD,WAAW,EAAEtD,kBAAkB;EAC/BuD,cAAc,EAAExC,sBAAsB;EACtCyC,YAAY,EAAE,CACVtD,cAAc,EACdD,qBAAqB,EACrBK,aAAa,EACbC,aAAa,EACbC,eAAe,EACfC,UAAU;AAElB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","CreateGroupUseCase","UseCaseAbstraction","CreateGroupRepository","EventPublisher","GroupBeforeCreateEventEvent","GroupAfterCreateEvent","GroupCreateErrorEvent","AccessControl","TenantContext","IdentityContext","CmsContext","GroupNotAuthorizedError","GroupValidationError","createZodError","mdbid","createGroupCreateValidation","CreateGroupUseCaseImpl","constructor","eventPublisher","repository","accessControl","tenantContext","identityContext","cmsContext","execute","input","canAccess","canAccessGroup","rwd","fail","validationResult","safeParseAsync","success","zodError","error","message","data","invalidFields","identity","getIdentity","tenant","getTenant","id","group","createdOn","Date","toISOString","savedOn","createdBy","displayName","type","publish","result","isFail","ok","abstraction","implementation","dependencies"],"sources":["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 { 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 = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: CreateGroupUseCaseImpl,\n dependencies: [\n EventPublisher,\n CreateGroupRepository,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,kBAAkB,IAAIC,kBAAkB;AACjD,SAASC,qBAAqB;AAC9B,SAASC,cAAc,QAAQ,mDAAmD;AAClF,SAASC,2BAA2B;AACpC,SAASC,qBAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AACtB,SAASC,aAAa,QAAQ,0DAA0D;AACxF,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,UAAU;AACnB,SACIC,uBAAuB,EACvBC,oBAAoB;AAExB,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,KAAK,QAAQ,eAAe;AACrC,SAASC,2BAA2B;AAIpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,CAAyC;EAC1DC,WAAWA,CACNC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,EAC1CC,UAAgC,EAC1C;IAAA,KANUL,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA2C,GAA3CA,UAA2C;IAAA,KAC3CC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAAgC,GAAhCA,UAAgC;EACzC;EAEH,MAAMC,OAAOA,CAACC,KAA0B,EAAuD;IAC3F;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACN,aAAa,CAACO,cAAc,CAAC;MAAEC,GAAG,EAAE;IAAI,CAAC,CAAC;IACvE,IAAI,CAACF,SAAS,EAAE;MACZ,OAAO5B,MAAM,CAAC+B,IAAI,CAAC,IAAIlB,uBAAuB,CAAC,CAAC,CAAC;IACrD;;IAEA;IACA,MAAMmB,gBAAgB,GAAG,MAAMf,2BAA2B,CAAC,CAAC,CAACgB,cAAc,CAACN,KAAK,CAAC;IAClF,IAAI,CAACK,gBAAgB,CAACE,OAAO,EAAE;MAC3B,MAAMC,QAAQ,GAAGpB,cAAc,CAACiB,gBAAgB,CAACI,KAAK,CAAC;MACvD,OAAOpC,MAAM,CAAC+B,IAAI,CACd,IAAIjB,oBAAoB,CAACqB,QAAQ,CAACE,OAAO,EAAEF,QAAQ,CAACG,IAAI,CAAEC,aAAa,CAC3E,CAAC;IACL;IACA,MAAMD,IAAI,GAAGN,gBAAgB,CAACM,IAAI;;IAElC;IACA,MAAME,QAAQ,GAAG,IAAI,CAAChB,eAAe,CAACiB,WAAW,CAAC,CAAC;IACnD,MAAMC,MAAM,GAAG,IAAI,CAACnB,aAAa,CAACoB,SAAS,CAAC,CAAC;IAE7C,MAAMC,EAAE,GAAGN,IAAI,CAACM,EAAE,IAAI5B,KAAK,CAAC,CAAC;IAC7B,MAAM6B,KAAe,GAAG;MACpB,GAAGP,IAAI;MACPM,EAAE;MACFF,MAAM,EAAEA,MAAM,CAACE,EAAE;MACjBE,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACnCC,OAAO,EAAE,IAAIF,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;MACjCE,SAAS,EAAE;QACPN,EAAE,EAAEJ,QAAQ,CAACI,EAAE;QACfO,WAAW,EAAEX,QAAQ,CAACW,WAAW;QACjCC,IAAI,EAAEZ,QAAQ,CAACY;MACnB;IACJ,CAAC;;IAED;IACA,MAAMvB,cAAc,GAAG,MAAM,IAAI,CAACP,aAAa,CAACO,cAAc,CAAC;MAAEgB,KAAK;MAAEf,GAAG,EAAE;IAAI,CAAC,CAAC;IACnF,IAAI,CAACD,cAAc,EAAE;MACjB,OAAO7B,MAAM,CAAC+B,IAAI,CAAC,IAAIlB,uBAAuB,CAAC,CAAC,CAAC;IACrD;IAEA,IAAI;MACA;MACA,MAAM,IAAI,CAACO,cAAc,CAACiC,OAAO,CAAC,IAAI/C,2BAA2B,CAAC;QAAEuC;MAAM,CAAC,CAAC,CAAC;;MAE7E;MACA,MAAMS,MAAM,GAAG,MAAM,IAAI,CAACjC,UAAU,CAACK,OAAO,CAACmB,KAAK,CAAC;MACnD,IAAIS,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;QACjB;QACA,MAAM,IAAI,CAACnC,cAAc,CAACiC,OAAO,CAC7B,IAAI7C,qBAAqB,CAAC;UACtBmB,KAAK;UACLkB,KAAK;UACLT,KAAK,EAAEkB,MAAM,CAAClB;QAClB,CAAC,CACL,CAAC;QACD,OAAOpC,MAAM,CAAC+B,IAAI,CAACuB,MAAM,CAAClB,KAAK,CAAC;MACpC;;MAEA;MACA,MAAM,IAAI,CAAChB,cAAc,CAACiC,OAAO,CAAC,IAAI9C,qBAAqB,CAAC;QAAEsC;MAAM,CAAC,CAAC,CAAC;MAEvE,OAAO7C,MAAM,CAACwD,EAAE,CAACX,KAAK,CAAC;IAC3B,CAAC,CAAC,OAAOT,KAAK,EAAE;MACZ;MACA,MAAM,IAAI,CAAChB,cAAc,CAACiC,OAAO,CAC7B,IAAI7C,qBAAqB,CAAC;QACtBmB,KAAK;QACLkB,KAAK;QACLT,KAAK,EAAEA;MACX,CAAC,CACL,CAAC;MACD,OAAOpC,MAAM,CAAC+B,IAAI,CAACK,KAAiC,CAAC;IACzD;EACJ;AACJ;AAEA,OAAO,MAAMlC,kBAAkB,GAAGD,oBAAoB,CAAC;EACnDwD,WAAW,EAAEtD,kBAAkB;EAC/BuD,cAAc,EAAExC,sBAAsB;EACtCyC,YAAY,EAAE,CACVtD,cAAc,EACdD,qBAAqB,EACrBK,aAAa,EACbC,aAAa,EACbC,eAAe,EACfC,UAAU;AAElB,CAAC,CAAC","ignoreList":[]}
@@ -14,6 +14,7 @@ export interface ICreateGroupUseCaseErrors {
14
14
  repository: RepositoryError;
15
15
  }
16
16
  type UseCaseError = ICreateGroupUseCaseErrors[keyof ICreateGroupUseCaseErrors];
17
+ /** Create a new content model group. */
17
18
  export declare const CreateGroupUseCase: import("@webiny/di").Abstraction<ICreateGroupUseCase>;
18
19
  export declare namespace CreateGroupUseCase {
19
20
  type Interface = ICreateGroupUseCase;
@@ -4,6 +4,7 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  * CreateGroup Use Case
5
5
  */
6
6
 
7
+ /** Create a new content model group. */
7
8
  export const CreateGroupUseCase = createAbstraction("CreateGroupUseCase");
8
9
 
9
10
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","CreateGroupUseCase","CreateGroupRepository"],"sources":["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\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"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAW/D;AACA;AACA;;AAaA,OAAO,MAAMC,kBAAkB,GAAGD,iBAAiB,CAAsB,oBAAoB,CAAC;;AAU9F;AACA;AACA;;AAYA,OAAO,MAAME,qBAAqB,GAC9BF,iBAAiB,CAAyB,uBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","CreateGroupUseCase","CreateGroupRepository"],"sources":["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"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAW/D;AACA;AACA;;AAaA;AACA,OAAO,MAAMC,kBAAkB,GAAGD,iBAAiB,CAAsB,oBAAoB,CAAC;;AAU9F;AACA;AACA;;AAYA,OAAO,MAAME,qBAAqB,GAC9BF,iBAAiB,CAAyB,uBAAuB,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
2
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
1
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
2
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { CmsGroup, CmsGroupCreateInput } from "../../../types/index.js";
4
4
  /**
5
5
  * Event payloads
@@ -22,6 +22,7 @@ export declare class GroupBeforeCreateEventEvent extends DomainEvent<GroupBefore
22
22
  eventType: "Cms/Group/BeforeCreate";
23
23
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<GroupBeforeCreateEventEvent>>;
24
24
  }
25
+ /** Hook into group lifecycle before a group is created. */
25
26
  export declare const GroupBeforeCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<GroupBeforeCreateEventEvent>>;
26
27
  export declare namespace GroupBeforeCreateEventHandler {
27
28
  type Interface = IEventHandler<GroupBeforeCreateEventEvent>;
@@ -34,6 +35,7 @@ export declare class GroupAfterCreateEvent extends DomainEvent<GroupAfterCreateE
34
35
  eventType: "Cms/Group/AfterCreate";
35
36
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<GroupAfterCreateEvent>>;
36
37
  }
38
+ /** Hook into group lifecycle after a group is created. */
37
39
  export declare const GroupAfterCreateEventHandler: import("@webiny/di").Abstraction<IEventHandler<GroupAfterCreateEvent>>;
38
40
  export declare namespace GroupAfterCreateEventHandler {
39
41
  type Interface = IEventHandler<GroupAfterCreateEvent>;
@@ -1,5 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
 
4
4
  /**
5
5
  * Event payloads
@@ -14,6 +14,8 @@ export class GroupBeforeCreateEventEvent extends DomainEvent {
14
14
  return GroupBeforeCreateEventHandler;
15
15
  }
16
16
  }
17
+
18
+ /** Hook into group lifecycle before a group is created. */
17
19
  export const GroupBeforeCreateEventHandler = createAbstraction("GroupBeforeCreateEventHandler");
18
20
  /**
19
21
  * GroupAfterCreateEvent - Published after creating a group
@@ -24,6 +26,8 @@ export class GroupAfterCreateEvent extends DomainEvent {
24
26
  return GroupAfterCreateEventHandler;
25
27
  }
26
28
  }
29
+
30
+ /** Hook into group lifecycle after a group is created. */
27
31
  export const GroupAfterCreateEventHandler = createAbstraction("GroupAfterCreateEventHandler");
28
32
  /**
29
33
  * GroupCreateErrorEvent - Published when create fails
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","GroupBeforeCreateEventEvent","eventType","getHandlerAbstraction","GroupBeforeCreateEventHandler","GroupAfterCreateEvent","GroupAfterCreateEventHandler","GroupCreateErrorEvent","GroupCreateErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { CmsGroup, CmsGroupCreateInput } from \"~/types/index.js\";\n\n/**\n * Event payloads\n */\nexport interface GroupBeforeCreateEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupAfterCreateEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupCreateErrorEventPayload {\n input: CmsGroupCreateInput;\n group: CmsGroup;\n error: Error;\n}\n\n/**\n * GroupBeforeCreateEvent - Published before creating a group\n */\nexport class GroupBeforeCreateEventEvent extends DomainEvent<GroupBeforeCreateEventPayload> {\n eventType = \"Cms/Group/BeforeCreate\" as const;\n\n getHandlerAbstraction() {\n return GroupBeforeCreateEventHandler;\n }\n}\n\nexport const GroupBeforeCreateEventHandler = createAbstraction<\n IEventHandler<GroupBeforeCreateEventEvent>\n>(\"GroupBeforeCreateEventHandler\");\n\nexport namespace GroupBeforeCreateEventHandler {\n export type Interface = IEventHandler<GroupBeforeCreateEventEvent>;\n export type Event = GroupBeforeCreateEventEvent;\n}\n\n/**\n * GroupAfterCreateEvent - Published after creating a group\n */\nexport class GroupAfterCreateEvent extends DomainEvent<GroupAfterCreateEventPayload> {\n eventType = \"Cms/Group/AfterCreate\" as const;\n\n getHandlerAbstraction() {\n return GroupAfterCreateEventHandler;\n }\n}\n\nexport const GroupAfterCreateEventHandler = createAbstraction<IEventHandler<GroupAfterCreateEvent>>(\n \"GroupAfterCreateEventHandler\"\n);\n\nexport namespace GroupAfterCreateEventHandler {\n export type Interface = IEventHandler<GroupAfterCreateEvent>;\n export type Event = GroupAfterCreateEvent;\n}\n\n/**\n * GroupCreateErrorEvent - Published when create fails\n */\nexport class GroupCreateErrorEvent extends DomainEvent<GroupCreateErrorEventPayload> {\n eventType = \"Cms/Group/CreateError\" as const;\n\n getHandlerAbstraction() {\n return GroupCreateErrorEventHandler;\n }\n}\n\nexport const GroupCreateErrorEventHandler = createAbstraction<IEventHandler<GroupCreateErrorEvent>>(\n \"GroupCreateErrorEventHandler\"\n);\n\nexport namespace GroupCreateErrorEventHandler {\n export type Interface = IEventHandler<GroupCreateErrorEvent>;\n export type Event = GroupCreateErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,WAAW,QAAQ,0CAA0C;;AAGtE;AACA;AACA;;AAeA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,SAASD,WAAW,CAAgC;EACxFE,SAAS,GAAG,wBAAwB;EAEpCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,6BAA6B;EACxC;AACJ;AAEA,OAAO,MAAMA,6BAA6B,GAAGL,iBAAiB,CAE5D,+BAA+B,CAAC;AAOlC;AACA;AACA;AACA,OAAO,MAAMM,qBAAqB,SAASL,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGP,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA;AACA;AACA,OAAO,MAAMQ,qBAAqB,SAASP,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGT,iBAAiB,CACzD,8BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","GroupBeforeCreateEventEvent","eventType","getHandlerAbstraction","GroupBeforeCreateEventHandler","GroupAfterCreateEvent","GroupAfterCreateEventHandler","GroupCreateErrorEvent","GroupCreateErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { CmsGroup, CmsGroupCreateInput } from \"~/types/index.js\";\n\n/**\n * Event payloads\n */\nexport interface GroupBeforeCreateEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupAfterCreateEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupCreateErrorEventPayload {\n input: CmsGroupCreateInput;\n group: CmsGroup;\n error: Error;\n}\n\n/**\n * GroupBeforeCreateEvent - Published before creating a group\n */\nexport class GroupBeforeCreateEventEvent extends DomainEvent<GroupBeforeCreateEventPayload> {\n eventType = \"Cms/Group/BeforeCreate\" as const;\n\n getHandlerAbstraction() {\n return GroupBeforeCreateEventHandler;\n }\n}\n\n/** Hook into group lifecycle before a group is created. */\nexport const GroupBeforeCreateEventHandler = createAbstraction<\n IEventHandler<GroupBeforeCreateEventEvent>\n>(\"GroupBeforeCreateEventHandler\");\n\nexport namespace GroupBeforeCreateEventHandler {\n export type Interface = IEventHandler<GroupBeforeCreateEventEvent>;\n export type Event = GroupBeforeCreateEventEvent;\n}\n\n/**\n * GroupAfterCreateEvent - Published after creating a group\n */\nexport class GroupAfterCreateEvent extends DomainEvent<GroupAfterCreateEventPayload> {\n eventType = \"Cms/Group/AfterCreate\" as const;\n\n getHandlerAbstraction() {\n return GroupAfterCreateEventHandler;\n }\n}\n\n/** Hook into group lifecycle after a group is created. */\nexport const GroupAfterCreateEventHandler = createAbstraction<IEventHandler<GroupAfterCreateEvent>>(\n \"GroupAfterCreateEventHandler\"\n);\n\nexport namespace GroupAfterCreateEventHandler {\n export type Interface = IEventHandler<GroupAfterCreateEvent>;\n export type Event = GroupAfterCreateEvent;\n}\n\n/**\n * GroupCreateErrorEvent - Published when create fails\n */\nexport class GroupCreateErrorEvent extends DomainEvent<GroupCreateErrorEventPayload> {\n eventType = \"Cms/Group/CreateError\" as const;\n\n getHandlerAbstraction() {\n return GroupCreateErrorEventHandler;\n }\n}\n\nexport const GroupCreateErrorEventHandler = createAbstraction<IEventHandler<GroupCreateErrorEvent>>(\n \"GroupCreateErrorEventHandler\"\n);\n\nexport namespace GroupCreateErrorEventHandler {\n export type Interface = IEventHandler<GroupCreateErrorEvent>;\n export type Event = GroupCreateErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,WAAW,QAAQ,mDAAmD;;AAG/E;AACA;AACA;;AAeA;AACA;AACA;AACA,OAAO,MAAMC,2BAA2B,SAASD,WAAW,CAAgC;EACxFE,SAAS,GAAG,wBAAwB;EAEpCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,6BAA6B;EACxC;AACJ;;AAEA;AACA,OAAO,MAAMA,6BAA6B,GAAGL,iBAAiB,CAE5D,+BAA+B,CAAC;AAOlC;AACA;AACA;AACA,OAAO,MAAMM,qBAAqB,SAASL,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGP,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA;AACA;AACA,OAAO,MAAMQ,qBAAqB,SAASP,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGT,iBAAiB,CACzD,8BACJ,CAAC","ignoreList":[]}
@@ -4,4 +4,7 @@
4
4
  * Provides functionality for creating new content model groups.
5
5
  * Includes validation, slug generation, and plugin conflict checks.
6
6
  */
7
- export declare const CreateGroupFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
7
+ export declare const CreateGroupFeature: {
8
+ name: string;
9
+ register(container: import("@webiny/di").Container): void;
10
+ };
@@ -2,7 +2,7 @@ import { Result } from "@webiny/feature/api";
2
2
  import { DeleteGroupUseCase as UseCaseAbstraction } from "./abstractions.js";
3
3
  import { DeleteGroupRepository } from "./abstractions.js";
4
4
  import { GetGroupUseCase } from "../../../features/contentModelGroup/GetGroup/abstractions.js";
5
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
5
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
6
6
  import { AccessControl } from "../../../features/shared/abstractions.js";
7
7
  /**
8
8
  * DeleteGroupUseCase - Orchestrates group deletion.
@@ -3,7 +3,7 @@ import { createImplementation } from "@webiny/feature/api";
3
3
  import { DeleteGroupUseCase as UseCaseAbstraction } from "./abstractions.js";
4
4
  import { DeleteGroupRepository } from "./abstractions.js";
5
5
  import { GetGroupUseCase } from "../GetGroup/abstractions.js";
6
- import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
6
+ import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
7
7
  import { GroupBeforeDeleteEvent } from "./events.js";
8
8
  import { GroupAfterDeleteEvent } from "./events.js";
9
9
  import { GroupDeleteErrorEvent } from "./events.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","DeleteGroupUseCase","UseCaseAbstraction","DeleteGroupRepository","GetGroupUseCase","EventPublisher","GroupBeforeDeleteEvent","GroupAfterDeleteEvent","GroupDeleteErrorEvent","AccessControl","GroupNotAuthorizedError","DeleteGroupUseCaseImpl","constructor","eventPublisher","repository","getGroupUseCase","accessControl","execute","groupId","canAccess","canAccessGroup","rwd","fail","getResult","isFail","error","group","value","publish","result","ok","abstraction","implementation","dependencies"],"sources":["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\";\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"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,kBAAkB,IAAIC,kBAAkB;AACjD,SAASC,qBAAqB;AAC9B,SAASC,eAAe;AACxB,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,sBAAsB;AAC/B,SAASC,qBAAqB;AAC9B,SAASC,qBAAqB;AAC9B,SAASC,aAAa;AACtB,SAASC,uBAAuB;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,CAAyC;EAC1DC,WAAWA,CACNC,cAAwC,EACxCC,UAA2C,EAC3CC,eAA0C,EAC1CC,aAAsC,EAChD;IAAA,KAJUH,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA2C,GAA3CA,UAA2C;IAAA,KAC3CC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,aAAsC,GAAtCA,aAAsC;EAC/C;EAEH,MAAMC,OAAOA,CAACC,OAAe,EAAmD;IAC5E;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACH,aAAa,CAACI,cAAc,CAAC;MAAEC,GAAG,EAAE;IAAI,CAAC,CAAC;IACvE,IAAI,CAACF,SAAS,EAAE;MACZ,OAAOpB,MAAM,CAACuB,IAAI,CAAC,IAAIZ,uBAAuB,CAAC,CAAC,CAAC;IACrD;;IAEA;IACA,MAAMa,SAAS,GAAG,MAAM,IAAI,CAACR,eAAe,CAACE,OAAO,CAACC,OAAO,CAAC;IAC7D,IAAIK,SAAS,CAACC,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOzB,MAAM,CAACuB,IAAI,CAACC,SAAS,CAACE,KAAK,CAAC;IACvC;IACA,MAAMC,KAAK,GAAGH,SAAS,CAACI,KAAK;;IAE7B;IACA,MAAMP,cAAc,GAAG,MAAM,IAAI,CAACJ,aAAa,CAACI,cAAc,CAAC;MAAEM;IAAM,CAAC,CAAC;IACzE,IAAI,CAACN,cAAc,EAAE;MACjB,OAAOrB,MAAM,CAACuB,IAAI,CAAC,IAAIZ,uBAAuB,CAAC,CAAC,CAAC;IACrD;IAEA,IAAI;MACA;MACA,MAAM,IAAI,CAACG,cAAc,CAACe,OAAO,CAC7B,IAAItB,sBAAsB,CAAC;QACvBoB;MACJ,CAAC,CACL,CAAC;;MAED;MACA,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACf,UAAU,CAACG,OAAO,CAACS,KAAK,CAAC;MACnD,IAAIG,MAAM,CAACL,MAAM,CAAC,CAAC,EAAE;QACjB;QACA,MAAM,IAAI,CAACX,cAAc,CAACe,OAAO,CAC7B,IAAIpB,qBAAqB,CAAC;UACtBkB,KAAK;UACLD,KAAK,EAAEI,MAAM,CAACJ;QAClB,CAAC,CACL,CAAC;QACD,OAAO1B,MAAM,CAACuB,IAAI,CAACO,MAAM,CAACJ,KAAK,CAAC;MACpC;;MAEA;MACA,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAC7B,IAAIrB,qBAAqB,CAAC;QACtBmB;MACJ,CAAC,CACL,CAAC;MAED,OAAO3B,MAAM,CAAC+B,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,OAAOL,KAAK,EAAE;MACZ;MACA,MAAM,IAAI,CAACZ,cAAc,CAACe,OAAO,CAC7B,IAAIpB,qBAAqB,CAAC;QACtBkB,KAAK;QACLD,KAAK,EAAEA;MACX,CAAC,CACL,CAAC;MACD,OAAO1B,MAAM,CAACuB,IAAI,CAACG,KAAiC,CAAC;IACzD;EACJ;AACJ;AAEA,OAAO,MAAMxB,kBAAkB,GAAGD,oBAAoB,CAAC;EACnD+B,WAAW,EAAE7B,kBAAkB;EAC/B8B,cAAc,EAAErB,sBAAsB;EACtCsB,YAAY,EAAE,CAAC5B,cAAc,EAAEF,qBAAqB,EAAEC,eAAe,EAAEK,aAAa;AACxF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","DeleteGroupUseCase","UseCaseAbstraction","DeleteGroupRepository","GetGroupUseCase","EventPublisher","GroupBeforeDeleteEvent","GroupAfterDeleteEvent","GroupDeleteErrorEvent","AccessControl","GroupNotAuthorizedError","DeleteGroupUseCaseImpl","constructor","eventPublisher","repository","getGroupUseCase","accessControl","execute","groupId","canAccess","canAccessGroup","rwd","fail","getResult","isFail","error","group","value","publish","result","ok","abstraction","implementation","dependencies"],"sources":["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"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,7 @@ export interface IDeleteGroupUseCaseErrors {
13
13
  repository: RepositoryError;
14
14
  }
15
15
  type UseCaseError = IDeleteGroupUseCaseErrors[keyof IDeleteGroupUseCaseErrors];
16
+ /** Delete a content model group. */
16
17
  export declare const DeleteGroupUseCase: import("@webiny/di").Abstraction<IDeleteGroupUseCase>;
17
18
  export declare namespace DeleteGroupUseCase {
18
19
  type Interface = IDeleteGroupUseCase;
@@ -4,6 +4,7 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  * DeleteGroup Use Case
5
5
  */
6
6
 
7
+ /** Delete a content model group. */
7
8
  export const DeleteGroupUseCase = createAbstraction("DeleteGroupUseCase");
8
9
 
9
10
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DeleteGroupUseCase","DeleteGroupRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport type {\n GroupCannotDeleteCodeDefinedError,\n GroupHasModelsError,\n GroupNotAuthorizedError,\n GroupNotFoundError,\n GroupPersistenceError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * DeleteGroup Use Case\n */\nexport interface IDeleteGroupUseCase {\n execute(groupId: string): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteGroupUseCaseErrors {\n notFound: GroupNotFoundError;\n notAuthorized: GroupNotAuthorizedError;\n repository: RepositoryError;\n}\n\ntype UseCaseError = IDeleteGroupUseCaseErrors[keyof IDeleteGroupUseCaseErrors];\n\nexport const DeleteGroupUseCase = createAbstraction<IDeleteGroupUseCase>(\"DeleteGroupUseCase\");\n\nexport namespace DeleteGroupUseCase {\n export type Interface = IDeleteGroupUseCase;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<void, UseCaseError>>;\n}\n\n/**\n * DeleteGroupRepository - Validates and persists group deletion.\n */\nexport interface IDeleteGroupRepository {\n execute(group: CmsGroup): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteGroupRepositoryErrors {\n cannotDelete: GroupCannotDeleteCodeDefinedError;\n hasModels: GroupHasModelsError;\n storage: GroupPersistenceError;\n}\n\ntype RepositoryError = IDeleteGroupRepositoryErrors[keyof IDeleteGroupRepositoryErrors];\n\nexport const DeleteGroupRepository =\n createAbstraction<IDeleteGroupRepository>(\"DeleteGroupRepository\");\n\nexport namespace DeleteGroupRepository {\n export type Interface = IDeleteGroupRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAU/D;AACA;AACA;;AAaA,OAAO,MAAMC,kBAAkB,GAAGD,iBAAiB,CAAsB,oBAAoB,CAAC;;AAS9F;AACA;AACA;;AAaA,OAAO,MAAME,qBAAqB,GAC9BF,iBAAiB,CAAyB,uBAAuB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DeleteGroupUseCase","DeleteGroupRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport type {\n GroupCannotDeleteCodeDefinedError,\n GroupHasModelsError,\n GroupNotAuthorizedError,\n GroupNotFoundError,\n GroupPersistenceError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * DeleteGroup Use Case\n */\nexport interface IDeleteGroupUseCase {\n execute(groupId: string): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteGroupUseCaseErrors {\n notFound: GroupNotFoundError;\n notAuthorized: GroupNotAuthorizedError;\n repository: RepositoryError;\n}\n\ntype UseCaseError = IDeleteGroupUseCaseErrors[keyof IDeleteGroupUseCaseErrors];\n\n/** Delete a content model group. */\nexport const DeleteGroupUseCase = createAbstraction<IDeleteGroupUseCase>(\"DeleteGroupUseCase\");\n\nexport namespace DeleteGroupUseCase {\n export type Interface = IDeleteGroupUseCase;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<void, UseCaseError>>;\n}\n\n/**\n * DeleteGroupRepository - Validates and persists group deletion.\n */\nexport interface IDeleteGroupRepository {\n execute(group: CmsGroup): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteGroupRepositoryErrors {\n cannotDelete: GroupCannotDeleteCodeDefinedError;\n hasModels: GroupHasModelsError;\n storage: GroupPersistenceError;\n}\n\ntype RepositoryError = IDeleteGroupRepositoryErrors[keyof IDeleteGroupRepositoryErrors];\n\nexport const DeleteGroupRepository =\n createAbstraction<IDeleteGroupRepository>(\"DeleteGroupRepository\");\n\nexport namespace DeleteGroupRepository {\n export type Interface = IDeleteGroupRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAU/D;AACA;AACA;;AAaA;AACA,OAAO,MAAMC,kBAAkB,GAAGD,iBAAiB,CAAsB,oBAAoB,CAAC;;AAS9F;AACA;AACA;;AAaA,OAAO,MAAME,qBAAqB,GAC9BF,iBAAiB,CAAyB,uBAAuB,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
- import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
1
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
2
+ import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
  import type { CmsGroup } from "../../../types/index.js";
4
4
  /**
5
5
  * Event payloads
@@ -21,6 +21,7 @@ export declare class GroupBeforeDeleteEvent extends DomainEvent<GroupBeforeDelet
21
21
  eventType: "Cms/Group/BeforeDelete";
22
22
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<GroupBeforeDeleteEvent>>;
23
23
  }
24
+ /** Hook into group lifecycle before a group is deleted. */
24
25
  export declare const GroupBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<GroupBeforeDeleteEvent>>;
25
26
  export declare namespace GroupBeforeDeleteEventHandler {
26
27
  type Interface = IEventHandler<GroupBeforeDeleteEvent>;
@@ -33,6 +34,7 @@ export declare class GroupAfterDeleteEvent extends DomainEvent<GroupAfterDeleteE
33
34
  eventType: "Cms/Group/AfterDelete";
34
35
  getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<GroupAfterDeleteEvent>>;
35
36
  }
37
+ /** Hook into group lifecycle after a group is deleted. */
36
38
  export declare const GroupAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<GroupAfterDeleteEvent>>;
37
39
  export declare namespace GroupAfterDeleteEventHandler {
38
40
  type Interface = IEventHandler<GroupAfterDeleteEvent>;
@@ -1,5 +1,5 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
- import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
2
+ import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
3
3
 
4
4
  /**
5
5
  * Event payloads
@@ -14,6 +14,8 @@ export class GroupBeforeDeleteEvent extends DomainEvent {
14
14
  return GroupBeforeDeleteEventHandler;
15
15
  }
16
16
  }
17
+
18
+ /** Hook into group lifecycle before a group is deleted. */
17
19
  export const GroupBeforeDeleteEventHandler = createAbstraction("GroupBeforeDeleteEventHandler");
18
20
  /**
19
21
  * GroupAfterDeleteEvent - Published after deleting a group
@@ -24,6 +26,8 @@ export class GroupAfterDeleteEvent extends DomainEvent {
24
26
  return GroupAfterDeleteEventHandler;
25
27
  }
26
28
  }
29
+
30
+ /** Hook into group lifecycle after a group is deleted. */
27
31
  export const GroupAfterDeleteEventHandler = createAbstraction("GroupAfterDeleteEventHandler");
28
32
  /**
29
33
  * GroupDeleteErrorEvent - Published when delete fails
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","DomainEvent","GroupBeforeDeleteEvent","eventType","getHandlerAbstraction","GroupBeforeDeleteEventHandler","GroupAfterDeleteEvent","GroupAfterDeleteEventHandler","GroupDeleteErrorEvent","GroupDeleteErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * Event payloads\n */\nexport interface GroupBeforeDeleteEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupAfterDeleteEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupDeleteErrorEventPayload {\n group: CmsGroup;\n error: Error;\n}\n\n/**\n * GroupBeforeDeleteEvent - Published before deleting a group\n */\nexport class GroupBeforeDeleteEvent extends DomainEvent<GroupBeforeDeleteEventPayload> {\n eventType = \"Cms/Group/BeforeDelete\" as const;\n\n getHandlerAbstraction() {\n return GroupBeforeDeleteEventHandler;\n }\n}\n\nexport const GroupBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<GroupBeforeDeleteEvent>\n>(\"GroupBeforeDeleteEventHandler\");\n\nexport namespace GroupBeforeDeleteEventHandler {\n export type Interface = IEventHandler<GroupBeforeDeleteEvent>;\n export type Event = GroupBeforeDeleteEvent;\n}\n\n/**\n * GroupAfterDeleteEvent - Published after deleting a group\n */\nexport class GroupAfterDeleteEvent extends DomainEvent<GroupAfterDeleteEventPayload> {\n eventType = \"Cms/Group/AfterDelete\" as const;\n\n getHandlerAbstraction() {\n return GroupAfterDeleteEventHandler;\n }\n}\n\nexport const GroupAfterDeleteEventHandler = createAbstraction<IEventHandler<GroupAfterDeleteEvent>>(\n \"GroupAfterDeleteEventHandler\"\n);\n\nexport namespace GroupAfterDeleteEventHandler {\n export type Interface = IEventHandler<GroupAfterDeleteEvent>;\n export type Event = GroupAfterDeleteEvent;\n}\n\n/**\n * GroupDeleteErrorEvent - Published when delete fails\n */\nexport class GroupDeleteErrorEvent extends DomainEvent<GroupDeleteErrorEventPayload> {\n eventType = \"Cms/Group/DeleteError\" as const;\n\n getHandlerAbstraction() {\n return GroupDeleteErrorEventHandler;\n }\n}\n\nexport const GroupDeleteErrorEventHandler = createAbstraction<IEventHandler<GroupDeleteErrorEvent>>(\n \"GroupDeleteErrorEventHandler\"\n);\n\nexport namespace GroupDeleteErrorEventHandler {\n export type Interface = IEventHandler<GroupDeleteErrorEvent>;\n export type Event = GroupDeleteErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,0CAA0C;;AAItE;AACA;AACA;;AAcA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,SAASD,WAAW,CAAgC;EACnFE,SAAS,GAAG,wBAAwB;EAEpCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,6BAA6B;EACxC;AACJ;AAEA,OAAO,MAAMA,6BAA6B,GAAGL,iBAAiB,CAE5D,+BAA+B,CAAC;AAOlC;AACA;AACA;AACA,OAAO,MAAMM,qBAAqB,SAASL,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGP,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA;AACA;AACA,OAAO,MAAMQ,qBAAqB,SAASP,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGT,iBAAiB,CACzD,8BACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","DomainEvent","GroupBeforeDeleteEvent","eventType","getHandlerAbstraction","GroupBeforeDeleteEventHandler","GroupAfterDeleteEvent","GroupAfterDeleteEventHandler","GroupDeleteErrorEvent","GroupDeleteErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * Event payloads\n */\nexport interface GroupBeforeDeleteEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupAfterDeleteEventPayload {\n group: CmsGroup;\n}\n\nexport interface GroupDeleteErrorEventPayload {\n group: CmsGroup;\n error: Error;\n}\n\n/**\n * GroupBeforeDeleteEvent - Published before deleting a group\n */\nexport class GroupBeforeDeleteEvent extends DomainEvent<GroupBeforeDeleteEventPayload> {\n eventType = \"Cms/Group/BeforeDelete\" as const;\n\n getHandlerAbstraction() {\n return GroupBeforeDeleteEventHandler;\n }\n}\n\n/** Hook into group lifecycle before a group is deleted. */\nexport const GroupBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<GroupBeforeDeleteEvent>\n>(\"GroupBeforeDeleteEventHandler\");\n\nexport namespace GroupBeforeDeleteEventHandler {\n export type Interface = IEventHandler<GroupBeforeDeleteEvent>;\n export type Event = GroupBeforeDeleteEvent;\n}\n\n/**\n * GroupAfterDeleteEvent - Published after deleting a group\n */\nexport class GroupAfterDeleteEvent extends DomainEvent<GroupAfterDeleteEventPayload> {\n eventType = \"Cms/Group/AfterDelete\" as const;\n\n getHandlerAbstraction() {\n return GroupAfterDeleteEventHandler;\n }\n}\n\n/** Hook into group lifecycle after a group is deleted. */\nexport const GroupAfterDeleteEventHandler = createAbstraction<IEventHandler<GroupAfterDeleteEvent>>(\n \"GroupAfterDeleteEventHandler\"\n);\n\nexport namespace GroupAfterDeleteEventHandler {\n export type Interface = IEventHandler<GroupAfterDeleteEvent>;\n export type Event = GroupAfterDeleteEvent;\n}\n\n/**\n * GroupDeleteErrorEvent - Published when delete fails\n */\nexport class GroupDeleteErrorEvent extends DomainEvent<GroupDeleteErrorEventPayload> {\n eventType = \"Cms/Group/DeleteError\" as const;\n\n getHandlerAbstraction() {\n return GroupDeleteErrorEventHandler;\n }\n}\n\nexport const GroupDeleteErrorEventHandler = createAbstraction<IEventHandler<GroupDeleteErrorEvent>>(\n \"GroupDeleteErrorEventHandler\"\n);\n\nexport namespace GroupDeleteErrorEventHandler {\n export type Interface = IEventHandler<GroupDeleteErrorEvent>;\n export type Event = GroupDeleteErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;;AAI/E;AACA;AACA;;AAcA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,SAASD,WAAW,CAAgC;EACnFE,SAAS,GAAG,wBAAwB;EAEpCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,6BAA6B;EACxC;AACJ;;AAEA;AACA,OAAO,MAAMA,6BAA6B,GAAGL,iBAAiB,CAE5D,+BAA+B,CAAC;AAOlC;AACA;AACA;AACA,OAAO,MAAMM,qBAAqB,SAASL,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGP,iBAAiB,CACzD,8BACJ,CAAC;AAOD;AACA;AACA;AACA,OAAO,MAAMQ,qBAAqB,SAASP,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,4BAA4B;EACvC;AACJ;AAEA,OAAO,MAAMA,4BAA4B,GAAGT,iBAAiB,CACzD,8BACJ,CAAC","ignoreList":[]}
@@ -4,4 +4,7 @@
4
4
  * Provides functionality for deleting content model groups.
5
5
  * Prevents deletion of plugin-based groups and groups with models.
6
6
  */
7
- export declare const DeleteGroupFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
7
+ export declare const DeleteGroupFeature: {
8
+ name: string;
9
+ register(container: import("@webiny/di").Container): void;
10
+ };
@@ -1,5 +1,5 @@
1
- import { TenantContext } from "@webiny/api-core/features/TenantContext";
2
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
1
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
2
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
3
3
  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";
@@ -1,5 +1,5 @@
1
- import { TenantContext } from "@webiny/api-core/features/TenantContext";
2
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
1
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
2
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
3
3
  import { Result } from "@webiny/feature/api";
4
4
  import { createImplementation } from "@webiny/feature/api";
5
5
  import { GetGroupRepository as RepositoryAbstraction } from "./abstractions.js";
@@ -1 +1 @@
1
- {"version":3,"names":["TenantContext","IdentityContext","Result","createImplementation","GetGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","GroupNotFoundError","GroupPersistenceError","StorageOperations","AccessControl","CmsContext","filterAsync","createCacheKey","GetGroupRepositoryImpl","constructor","groupCache","pluginGroupsProvider","storageOperations","accessControl","tenantContext","identityContext","cmsContext","execute","groupId","tenant","getTenant","groups","fetchAllGroups","id","group","find","g","fail","ok","error","pluginGroups","getGroups","dbCacheKey","databaseGroups","getOrSet","list","where","filteredCacheKey","get","identity","security","isAuthorizationEnabled","getIdentity","undefined","filteredDatabaseGroups","canAccessGroup","abstraction","implementation","dependencies"],"sources":["GetGroupRepository.ts"],"sourcesContent":["import { TenantContext } from \"@webiny/api-core/features/TenantContext\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["TenantContext","IdentityContext","Result","createImplementation","GetGroupRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","GroupNotFoundError","GroupPersistenceError","StorageOperations","AccessControl","CmsContext","filterAsync","createCacheKey","GetGroupRepositoryImpl","constructor","groupCache","pluginGroupsProvider","storageOperations","accessControl","tenantContext","identityContext","cmsContext","execute","groupId","tenant","getTenant","groups","fetchAllGroups","id","group","find","g","fail","ok","error","pluginGroups","getGroups","dbCacheKey","databaseGroups","getOrSet","list","where","filteredCacheKey","get","identity","security","isAuthorizationEnabled","getIdentity","undefined","filteredDatabaseGroups","canAccessGroup","abstraction","implementation","dependencies"],"sources":["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"],"mappings":"AAAA,SAASA,aAAa,QAAQ,0DAA0D;AACxF,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,kBAAkB,IAAIC,qBAAqB;AACpD,SAASC,UAAU;AACnB,SAASC,oBAAoB;AAC7B,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAC9B,SAASC,iBAAiB;AAC1B,SAASC,aAAa;AACtB,SAASC,UAAU;AACnB,SAASC,WAAW;AACpB,SAASC,cAAc;AAGvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,CAA4C;EAC7DC,WAAWA,CACNC,UAAgC,EAChCC,oBAAoD,EACpDC,iBAA8C,EAC9CC,aAAsC,EACtCC,aAAsC,EACtCC,eAA0C,EAC1CC,UAAgC,EAC1C;IAAA,KAPUN,UAAgC,GAAhCA,UAAgC;IAAA,KAChCC,oBAAoD,GAApDA,oBAAoD;IAAA,KACpDC,iBAA8C,GAA9CA,iBAA8C;IAAA,KAC9CC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAAgC,GAAhCA,UAAgC;EACzC;EAEH,MAAMC,OAAOA,CAACC,OAAe,EAA0D;IACnF,IAAI;MACA,MAAMC,MAAM,GAAG,IAAI,CAACL,aAAa,CAACM,SAAS,CAAC,CAAC;;MAE7C;MACA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACC,cAAc,CAACH,MAAM,CAACI,EAAE,CAAC;MAEnD,MAAMC,KAAK,GAAGH,MAAM,CAACI,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACH,EAAE,KAAKL,OAAO,CAAC;MAEhD,IAAI,CAACM,KAAK,EAAE;QACR,OAAO7B,MAAM,CAACgC,IAAI,CAAC,IAAI1B,kBAAkB,CAACiB,OAAO,CAAC,CAAC;MACvD;MAEA,OAAOvB,MAAM,CAACiC,EAAE,CAACJ,KAAK,CAAC;IAC3B,CAAC,CAAC,OAAOK,KAAK,EAAE;MACZ,OAAOlC,MAAM,CAACgC,IAAI,CAAC,IAAIzB,qBAAqB,CAAC2B,KAAc,CAAC,CAAC;IACjE;EACJ;EAEA,MAAcP,cAAcA,CAACH,MAAc,EAAuB;IAC9D;IACA,MAAMW,YAAY,GAAG,MAAM,IAAI,CAACnB,oBAAoB,CAACoB,SAAS,CAAC,CAAC;;IAEhE;IACA,MAAMC,UAAU,GAAGzB,cAAc,CAAC;MAAEY;IAAO,CAAC,CAAC;IAC7C,MAAMc,cAAc,GAAG,MAAM,IAAI,CAACvB,UAAU,CAACwB,QAAQ,CAACF,UAAU,EAAE,YAAY;MAC1E,OAAO,MAAM,IAAI,CAACpB,iBAAiB,CAACS,MAAM,CAACc,IAAI,CAAC;QAC5CC,KAAK,EAAE;UAAEjB;QAAO;MACpB,CAAC,CAAC;IACN,CAAC,CAAC;;IAEF;IACA,MAAMkB,gBAAgB,GAAG9B,cAAc,CAAC;MACpCyB,UAAU,EAAEA,UAAU,CAACM,GAAG,CAAC,CAAC;MAC5BC,QAAQ,EAAE,IAAI,CAACvB,UAAU,CAACwB,QAAQ,CAACC,sBAAsB,CAAC,CAAC,GACrD,IAAI,CAAC1B,eAAe,CAAC2B,WAAW,CAAC,CAAC,EAAEnB,EAAE,GACtCoB;IACV,CAAC,CAAC;IAEF,MAAMC,sBAAsB,GAAG,MAAM,IAAI,CAAClC,UAAU,CAACwB,QAAQ,CACzDG,gBAAgB,EAChB,YAAY;MACR,OAAO/B,WAAW,CAAC2B,cAAc,EAAE,MAAOT,KAAgB,IAAK;QAC3D,IAAI,CAACA,KAAK,EAAE;UACR,OAAO,KAAK;QAChB;QACA,OAAO,IAAI,CAACX,aAAa,CAACgC,cAAc,CAAC;UAAErB;QAAM,CAAC,CAAC;MACvD,CAAC,CAAC;IACN,CACJ,CAAC;;IAED;IACA,OAAO,CAAC,GAAGM,YAAY,EAAE,GAAGc,sBAAsB,CAAC;EACvD;AACJ;AAEA,OAAO,MAAM/C,kBAAkB,GAAGD,oBAAoB,CAAC;EACnDkD,WAAW,EAAEhD,qBAAqB;EAClCiD,cAAc,EAAEvC,sBAAsB;EACtCwC,YAAY,EAAE,CACVjD,UAAU,EACVC,oBAAoB,EACpBG,iBAAiB,EACjBC,aAAa,EACbX,aAAa,EACbC,eAAe,EACfW,UAAU;AAElB,CAAC,CAAC","ignoreList":[]}
@@ -14,6 +14,7 @@ export interface IGetGroupUseCaseErrors {
14
14
  repository: RepositoryError;
15
15
  }
16
16
  type UseCaseError = IGetGroupUseCaseErrors[keyof IGetGroupUseCaseErrors];
17
+ /** Retrieve a content model group. */
17
18
  export declare const GetGroupUseCase: import("@webiny/di").Abstraction<IGetGroupUseCase>;
18
19
  export declare namespace GetGroupUseCase {
19
20
  type Interface = IGetGroupUseCase;
@@ -4,6 +4,7 @@ import { createAbstraction } from "@webiny/feature/api";
4
4
  * GetGroup Use Case
5
5
  */
6
6
 
7
+ /** Retrieve a content model group. */
7
8
  export const GetGroupUseCase = createAbstraction("GetGroupUseCase");
8
9
 
9
10
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["createAbstraction","GetGroupUseCase","GetGroupRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport type { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport {\n GroupNotAuthorizedError,\n type GroupNotFoundError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * GetGroup Use Case\n */\nexport interface IGetGroupUseCase {\n execute(groupId: string): Promise<Result<CmsGroup, UseCaseError>>;\n}\n\nexport interface IGetGroupUseCaseErrors {\n notFound: GroupNotFoundError;\n notAuthorized: GroupNotAuthorizedError;\n repository: RepositoryError;\n}\n\ntype UseCaseError = IGetGroupUseCaseErrors[keyof IGetGroupUseCaseErrors];\n\nexport const GetGroupUseCase = createAbstraction<IGetGroupUseCase>(\"GetGroupUseCase\");\n\nexport namespace GetGroupUseCase {\n export type Interface = IGetGroupUseCase;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<CmsGroup, UseCaseError>>;\n}\n\n/**\n * GetGroupRepository - Fetches a single group by ID from cache.\n */\nexport interface IGetGroupRepository {\n execute(groupId: string): Promise<Result<CmsGroup, RepositoryError>>;\n}\n\nexport interface IGetGroupRepositoryErrors {\n notFound: GroupNotFoundError;\n storage: GroupPersistenceError;\n}\n\ntype RepositoryError = IGetGroupRepositoryErrors[keyof IGetGroupRepositoryErrors];\n\nexport const GetGroupRepository = createAbstraction<IGetGroupRepository>(\"GetGroupRepository\");\n\nexport namespace GetGroupRepository {\n export type Interface = IGetGroupRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAQ/D;AACA;AACA;;AAaA,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAmB,iBAAiB,CAAC;;AASrF;AACA;AACA;;AAYA,OAAO,MAAME,kBAAkB,GAAGF,iBAAiB,CAAsB,oBAAoB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["createAbstraction","GetGroupUseCase","GetGroupRepository"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsGroup } from \"~/types/index.js\";\nimport type { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport {\n GroupNotAuthorizedError,\n type GroupNotFoundError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * GetGroup Use Case\n */\nexport interface IGetGroupUseCase {\n execute(groupId: string): Promise<Result<CmsGroup, UseCaseError>>;\n}\n\nexport interface IGetGroupUseCaseErrors {\n notFound: GroupNotFoundError;\n notAuthorized: GroupNotAuthorizedError;\n repository: RepositoryError;\n}\n\ntype UseCaseError = IGetGroupUseCaseErrors[keyof IGetGroupUseCaseErrors];\n\n/** Retrieve a content model group. */\nexport const GetGroupUseCase = createAbstraction<IGetGroupUseCase>(\"GetGroupUseCase\");\n\nexport namespace GetGroupUseCase {\n export type Interface = IGetGroupUseCase;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<CmsGroup, UseCaseError>>;\n}\n\n/**\n * GetGroupRepository - Fetches a single group by ID from cache.\n */\nexport interface IGetGroupRepository {\n execute(groupId: string): Promise<Result<CmsGroup, RepositoryError>>;\n}\n\nexport interface IGetGroupRepositoryErrors {\n notFound: GroupNotFoundError;\n storage: GroupPersistenceError;\n}\n\ntype RepositoryError = IGetGroupRepositoryErrors[keyof IGetGroupRepositoryErrors];\n\nexport const GetGroupRepository = createAbstraction<IGetGroupRepository>(\"GetGroupRepository\");\n\nexport namespace GetGroupRepository {\n export type Interface = IGetGroupRepository;\n export type Error = RepositoryError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAgB,qBAAqB;;AAQ/D;AACA;AACA;;AAaA;AACA,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAmB,iBAAiB,CAAC;;AASrF;AACA;AACA;;AAYA,OAAO,MAAME,kBAAkB,GAAGF,iBAAiB,CAAsB,oBAAoB,CAAC","ignoreList":[]}
@@ -4,4 +4,7 @@
4
4
  * Provides functionality for retrieving a single content model group by ID.
5
5
  * Uses GroupCache (registered elsewhere) for fetching groups.
6
6
  */
7
- export declare const GetGroupFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
7
+ export declare const GetGroupFeature: {
8
+ name: string;
9
+ register(container: import("@webiny/di").Container): void;
10
+ };
@@ -4,8 +4,8 @@ import { GroupCache } from "../../../features/contentModelGroup/shared/abstracti
4
4
  import { PluginGroupsProvider } from "../../../features/contentModelGroup/shared/abstractions.js";
5
5
  import { StorageOperations } from "../../../features/shared/abstractions.js";
6
6
  import { AccessControl } from "../../../features/shared/abstractions.js";
7
- import { TenantContext } from "@webiny/api-core/features/TenantContext";
8
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
7
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
8
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
9
9
  import { CmsContext } from "../../../features/shared/abstractions.js";
10
10
  import type { CmsGroup } from "../../../types/index.js";
11
11
  /**
@@ -6,8 +6,8 @@ import { PluginGroupsProvider } from "../shared/abstractions.js";
6
6
  import { GroupPersistenceError } from "../../../domain/contentModelGroup/errors.js";
7
7
  import { StorageOperations } from "../../shared/abstractions.js";
8
8
  import { AccessControl } from "../../shared/abstractions.js";
9
- import { TenantContext } from "@webiny/api-core/features/TenantContext";
10
- import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
9
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
10
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
11
11
  import { CmsContext } from "../../shared/abstractions.js";
12
12
  import { filterAsync } from "../../../utils/filterAsync.js";
13
13
  import { createCacheKey } from "../../../utils/index.js";
@@ -1 +1 @@
1
- {"version":3,"names":["Result","createImplementation","ListGroupsRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","GroupPersistenceError","StorageOperations","AccessControl","TenantContext","IdentityContext","CmsContext","filterAsync","createCacheKey","ListGroupsRepositoryImpl","constructor","groupCache","pluginGroupsProvider","storageOperations","accessControl","tenantContext","identityContext","cmsContext","execute","tenant","getTenant","groups","fetchAllGroups","id","ok","error","fail","pluginGroups","getGroups","dbCacheKey","databaseGroups","getOrSet","list","where","filteredCacheKey","get","identity","security","isAuthorizationEnabled","getIdentity","undefined","filteredDatabaseGroups","group","canAccessGroup","abstraction","implementation","dependencies"],"sources":["ListGroupsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { ListGroupsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/TenantContext\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\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 * ListGroupsRepository - Fetches all groups (plugin + database).\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 all accessible groups\n */\nclass ListGroupsRepositoryImpl 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(): 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 return Result.ok(groups);\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 groups\n return [...filteredDatabaseGroups, ...pluginGroups];\n }\n}\n\nexport const ListGroupsRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: ListGroupsRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n StorageOperations,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Result","createImplementation","ListGroupsRepository","RepositoryAbstraction","GroupCache","PluginGroupsProvider","GroupPersistenceError","StorageOperations","AccessControl","TenantContext","IdentityContext","CmsContext","filterAsync","createCacheKey","ListGroupsRepositoryImpl","constructor","groupCache","pluginGroupsProvider","storageOperations","accessControl","tenantContext","identityContext","cmsContext","execute","tenant","getTenant","groups","fetchAllGroups","id","ok","error","fail","pluginGroups","getGroups","dbCacheKey","databaseGroups","getOrSet","list","where","filteredCacheKey","get","identity","security","isAuthorizationEnabled","getIdentity","undefined","filteredDatabaseGroups","group","canAccessGroup","abstraction","implementation","dependencies"],"sources":["ListGroupsRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { ListGroupsRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { GroupCache } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/abstractions.js\";\nimport { GroupPersistenceError } from \"~/domain/contentModelGroup/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.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 { filterAsync } from \"~/utils/filterAsync.js\";\nimport { createCacheKey } from \"~/utils/index.js\";\nimport type { CmsGroup } from \"~/types/index.js\";\n\n/**\n * ListGroupsRepository - Fetches all groups (plugin + database).\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 all accessible groups\n */\nclass ListGroupsRepositoryImpl 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(): 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 return Result.ok(groups);\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 groups\n return [...filteredDatabaseGroups, ...pluginGroups];\n }\n}\n\nexport const ListGroupsRepository = createImplementation({\n abstraction: RepositoryAbstraction,\n implementation: ListGroupsRepositoryImpl,\n dependencies: [\n GroupCache,\n PluginGroupsProvider,\n StorageOperations,\n AccessControl,\n TenantContext,\n IdentityContext,\n CmsContext\n ]\n});\n"],"mappings":"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","ignoreList":[]}