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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (773) hide show
  1. package/HeadlessCmsContextualSchema.d.ts +16 -0
  2. package/HeadlessCmsContextualSchema.js +32 -0
  3. package/HeadlessCmsContextualSchema.js.map +1 -0
  4. package/HeadlessCmsEndpointConfig.d.ts +10 -0
  5. package/HeadlessCmsEndpointConfig.js +5 -0
  6. package/HeadlessCmsEndpointConfig.js.map +1 -0
  7. package/HeadlessCmsFeature.d.ts +10 -0
  8. package/HeadlessCmsFeature.js +195 -0
  9. package/HeadlessCmsFeature.js.map +1 -0
  10. package/createCmsRoute.d.ts +26 -0
  11. package/createCmsRoute.js +59 -0
  12. package/createCmsRoute.js.map +1 -0
  13. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  14. package/crud/contentEntry/entryDataValidation.js +29 -15
  15. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  16. package/crud/contentEntry/references/validateEntries.d.ts +1 -1
  17. package/crud/contentEntry/references/validateEntries.js +17 -7
  18. package/crud/contentEntry/references/validateEntries.js.map +1 -1
  19. package/crud/contentEntry.crud.js +22 -20
  20. package/crud/contentEntry.crud.js.map +1 -1
  21. package/crud/contentModel/defaultFields.js +3 -2
  22. package/crud/contentModel/defaultFields.js.map +1 -1
  23. package/crud/contentModel.crud.js +8 -6
  24. package/crud/contentModel.crud.js.map +1 -1
  25. package/crud/contentModelGroup.crud.js +7 -5
  26. package/crud/contentModelGroup.crud.js.map +1 -1
  27. package/domain/contentModel/schemas.d.ts +2 -0
  28. package/domain/contentModel/schemas.js +4 -2
  29. package/domain/contentModel/schemas.js.map +1 -1
  30. package/domain/contentModel/validation/modelFields.js +21 -15
  31. package/domain/contentModel/validation/modelFields.js.map +1 -1
  32. package/export/abstractions.d.ts +9 -0
  33. package/export/abstractions.js +6 -0
  34. package/export/abstractions.js.map +1 -0
  35. package/export/crud/exporting.js +8 -2
  36. package/export/crud/exporting.js.map +1 -1
  37. package/export/crud/importing.js +13 -4
  38. package/export/crud/importing.js.map +1 -1
  39. package/export/crud/imports/importGroups.js +23 -23
  40. package/export/crud/imports/importGroups.js.map +1 -1
  41. package/export/crud/imports/importModels.js +25 -22
  42. package/export/crud/imports/importModels.js.map +1 -1
  43. package/export/graphql/index.d.ts +2 -3
  44. package/export/graphql/index.js +6 -10
  45. package/export/graphql/index.js.map +1 -1
  46. package/exports/api/cms/model.d.ts +4 -1
  47. package/exports/api/cms/model.js +2 -0
  48. package/exports/api/cms/storage.d.ts +0 -1
  49. package/exports/api/cms/storage.js +0 -1
  50. package/features/ai/DescribeContentModelTool.d.ts +55 -0
  51. package/features/ai/DescribeContentModelTool.js +60 -0
  52. package/features/ai/DescribeContentModelTool.js.map +1 -0
  53. package/features/ai/ListContentModelsTool.d.ts +41 -0
  54. package/features/ai/ListContentModelsTool.js +44 -0
  55. package/features/ai/ListContentModelsTool.js.map +1 -0
  56. package/features/ai/QueryEntriesTool.d.ts +75 -0
  57. package/features/ai/QueryEntriesTool.js +90 -0
  58. package/features/ai/QueryEntriesTool.js.map +1 -0
  59. package/features/ai/feature.d.ts +8 -0
  60. package/features/ai/feature.js +15 -0
  61. package/features/ai/feature.js.map +1 -0
  62. package/features/ai/index.d.ts +4 -0
  63. package/features/ai/index.js +4 -0
  64. package/features/contentEntry/ContentEntriesFeature.js +0 -2
  65. package/features/contentEntry/ContentEntriesFeature.js.map +1 -1
  66. package/features/contentEntry/CreateEntry/CreateEntryRepository.d.ts +7 -7
  67. package/features/contentEntry/CreateEntry/CreateEntryRepository.js +8 -14
  68. package/features/contentEntry/CreateEntry/CreateEntryRepository.js.map +1 -1
  69. package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -1
  70. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +2 -3
  71. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
  72. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.d.ts +7 -7
  73. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js +8 -14
  74. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js.map +1 -1
  75. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -1
  76. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +2 -3
  77. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
  78. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.d.ts +7 -7
  79. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js +8 -14
  80. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js.map +1 -1
  81. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +3 -1
  82. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +2 -3
  83. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
  84. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.d.ts +6 -6
  85. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js +8 -14
  86. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js.map +1 -1
  87. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +3 -1
  88. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -3
  89. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
  90. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.d.ts +3 -3
  91. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js +5 -5
  92. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js.map +1 -1
  93. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.d.ts +6 -6
  94. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js +8 -14
  95. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js.map +1 -1
  96. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +3 -1
  97. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +2 -3
  98. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
  99. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.d.ts +7 -7
  100. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js +8 -13
  101. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js.map +1 -1
  102. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +3 -1
  103. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +2 -3
  104. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
  105. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.d.ts +9 -7
  106. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js +15 -13
  107. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js.map +1 -1
  108. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.d.ts +3 -1
  109. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js +2 -3
  110. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js.map +1 -1
  111. package/features/contentEntry/GetEntry/GetEntryUseCase.d.ts +3 -1
  112. package/features/contentEntry/GetEntry/GetEntryUseCase.js +2 -3
  113. package/features/contentEntry/GetEntry/GetEntryUseCase.js.map +1 -1
  114. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.d.ts +3 -1
  115. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js +2 -3
  116. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js.map +1 -1
  117. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.d.ts +7 -7
  118. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js +8 -13
  119. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js.map +1 -1
  120. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.d.ts +3 -1
  121. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js +2 -3
  122. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js.map +1 -1
  123. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.d.ts +3 -1
  124. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js +2 -3
  125. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js.map +1 -1
  126. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.d.ts +7 -7
  127. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js +8 -13
  128. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js.map +1 -1
  129. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.d.ts +3 -1
  130. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js +2 -3
  131. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js.map +1 -1
  132. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.d.ts +3 -1
  133. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js +1 -3
  134. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js.map +1 -1
  135. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.d.ts +3 -1
  136. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js +2 -3
  137. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js.map +1 -1
  138. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.d.ts +3 -1
  139. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js +2 -3
  140. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js.map +1 -1
  141. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.d.ts +7 -7
  142. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js +8 -13
  143. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js.map +1 -1
  144. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.d.ts +3 -1
  145. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js +2 -3
  146. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js.map +1 -1
  147. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.d.ts +7 -7
  148. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js +8 -13
  149. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js.map +1 -1
  150. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.d.ts +3 -1
  151. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js +2 -3
  152. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js.map +1 -1
  153. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.d.ts +7 -7
  154. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js +8 -13
  155. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js.map +1 -1
  156. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.d.ts +3 -1
  157. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js +2 -3
  158. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js.map +1 -1
  159. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.d.ts +7 -7
  160. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js +8 -13
  161. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js.map +1 -1
  162. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.d.ts +3 -1
  163. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js +1 -3
  164. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js.map +1 -1
  165. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.d.ts +7 -7
  166. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js +8 -13
  167. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js.map +1 -1
  168. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.d.ts +3 -1
  169. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js +2 -3
  170. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js.map +1 -1
  171. package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js +1 -3
  172. package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js.map +1 -1
  173. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.d.ts +7 -7
  174. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js +8 -13
  175. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js.map +1 -1
  176. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +6 -2
  177. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +8 -6
  178. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  179. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.d.ts +3 -1
  180. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js +1 -3
  181. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js.map +1 -1
  182. package/features/contentEntry/ListEntries/ListEntriesRepository.d.ts +7 -7
  183. package/features/contentEntry/ListEntries/ListEntriesRepository.js +8 -13
  184. package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
  185. package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +3 -1
  186. package/features/contentEntry/ListEntries/ListEntriesUseCase.js +2 -3
  187. package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
  188. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.d.ts +3 -1
  189. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js +1 -3
  190. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js.map +1 -1
  191. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.d.ts +3 -1
  192. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js +1 -3
  193. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js.map +1 -1
  194. package/features/contentEntry/MoveEntry/MoveEntryRepository.d.ts +7 -7
  195. package/features/contentEntry/MoveEntry/MoveEntryRepository.js +8 -13
  196. package/features/contentEntry/MoveEntry/MoveEntryRepository.js.map +1 -1
  197. package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +3 -1
  198. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +2 -3
  199. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
  200. package/features/contentEntry/PublishEntry/PublishEntryRepository.d.ts +7 -7
  201. package/features/contentEntry/PublishEntry/PublishEntryRepository.js +8 -14
  202. package/features/contentEntry/PublishEntry/PublishEntryRepository.js.map +1 -1
  203. package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +3 -1
  204. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -3
  205. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
  206. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.d.ts +9 -7
  207. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js +12 -15
  208. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js.map +1 -1
  209. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +3 -1
  210. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -3
  211. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
  212. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.d.ts +7 -7
  213. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js +8 -14
  214. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js.map +1 -1
  215. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +3 -1
  216. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -3
  217. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
  218. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.d.ts +7 -7
  219. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js +8 -14
  220. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js.map +1 -1
  221. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +3 -1
  222. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -3
  223. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
  224. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.d.ts +7 -7
  225. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js +8 -14
  226. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js.map +1 -1
  227. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -1
  228. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +2 -3
  229. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
  230. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +3 -1
  231. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +2 -3
  232. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -1
  233. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.d.ts +3 -1
  234. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js +2 -3
  235. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js.map +1 -1
  236. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.d.ts +3 -1
  237. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js +2 -4
  238. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js.map +1 -1
  239. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.d.ts +4 -4
  240. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js +4 -8
  241. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js.map +1 -1
  242. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.d.ts +3 -1
  243. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js +1 -3
  244. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js.map +1 -1
  245. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.d.ts +3 -1
  246. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js +1 -3
  247. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js.map +1 -1
  248. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.d.ts +3 -1
  249. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js +1 -3
  250. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js.map +1 -1
  251. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.d.ts +3 -1
  252. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js +2 -4
  253. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js.map +1 -1
  254. package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.d.ts +14 -0
  255. package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.js +32 -0
  256. package/features/contentModel/ComponentMapGenerator/ComponentMapGenerator.js.map +1 -0
  257. package/features/contentModel/ComponentMapGenerator/abstractions.d.ts +8 -0
  258. package/features/contentModel/ComponentMapGenerator/abstractions.js +5 -0
  259. package/features/contentModel/ComponentMapGenerator/abstractions.js.map +1 -0
  260. package/features/contentModel/ComponentMapGenerator/feature.d.ts +4 -0
  261. package/features/contentModel/ComponentMapGenerator/feature.js +11 -0
  262. package/features/contentModel/ComponentMapGenerator/feature.js.map +1 -0
  263. package/features/contentModel/ComponentMapGenerator/index.d.ts +2 -0
  264. package/features/contentModel/ComponentMapGenerator/index.js +2 -0
  265. package/features/contentModel/ContentModelFeature.js +6 -0
  266. package/features/contentModel/ContentModelFeature.js.map +1 -1
  267. package/features/contentModel/CreateModel/CreateModelRepository.d.ts +5 -6
  268. package/features/contentModel/CreateModel/CreateModelRepository.js +9 -12
  269. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  270. package/features/contentModel/CreateModel/CreateModelUseCase.js +2 -2
  271. package/features/contentModel/CreateModel/CreateModelUseCase.js.map +1 -1
  272. package/features/contentModel/CreateModel/abstractions.d.ts +1 -1
  273. package/features/contentModel/CreateModel/abstractions.js.map +1 -1
  274. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +5 -6
  275. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +9 -12
  276. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  277. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js +2 -2
  278. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js.map +1 -1
  279. package/features/contentModel/CreateModelFrom/abstractions.d.ts +1 -1
  280. package/features/contentModel/CreateModelFrom/abstractions.js.map +1 -1
  281. package/features/contentModel/DeleteModel/DeleteModelRepository.d.ts +4 -6
  282. package/features/contentModel/DeleteModel/DeleteModelRepository.js +6 -10
  283. package/features/contentModel/DeleteModel/DeleteModelRepository.js.map +1 -1
  284. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.d.ts +1 -0
  285. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js +11 -8
  286. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js.map +1 -1
  287. package/features/contentModel/RefModelsGenerator/RefModelsGenerator.d.ts +19 -0
  288. package/features/contentModel/RefModelsGenerator/RefModelsGenerator.js +56 -0
  289. package/features/contentModel/RefModelsGenerator/RefModelsGenerator.js.map +1 -0
  290. package/features/contentModel/RefModelsGenerator/abstractions.d.ts +11 -0
  291. package/features/contentModel/RefModelsGenerator/abstractions.js +5 -0
  292. package/features/contentModel/RefModelsGenerator/abstractions.js.map +1 -0
  293. package/features/contentModel/RefModelsGenerator/feature.d.ts +4 -0
  294. package/features/contentModel/RefModelsGenerator/feature.js +11 -0
  295. package/features/contentModel/RefModelsGenerator/feature.js.map +1 -0
  296. package/features/contentModel/RefModelsGenerator/index.d.ts +2 -0
  297. package/features/contentModel/RefModelsGenerator/index.js +2 -0
  298. package/features/contentModel/UpdateModel/UpdateModelRepository.d.ts +7 -6
  299. package/features/contentModel/UpdateModel/UpdateModelRepository.js +12 -12
  300. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  301. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +2 -2
  302. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  303. package/features/contentModel/UpdateModel/abstractions.d.ts +1 -1
  304. package/features/contentModel/UpdateModel/abstractions.js.map +1 -1
  305. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.d.ts +16 -0
  306. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js +53 -0
  307. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js.map +1 -0
  308. package/features/contentModel/ValuesSelectionGenerator/abstractions.d.ts +8 -0
  309. package/features/contentModel/ValuesSelectionGenerator/abstractions.js +5 -0
  310. package/features/contentModel/ValuesSelectionGenerator/abstractions.js.map +1 -0
  311. package/features/contentModel/ValuesSelectionGenerator/feature.d.ts +4 -0
  312. package/features/contentModel/ValuesSelectionGenerator/feature.js +11 -0
  313. package/features/contentModel/ValuesSelectionGenerator/feature.js.map +1 -0
  314. package/features/contentModel/ValuesSelectionGenerator/index.d.ts +1 -0
  315. package/features/contentModel/ValuesSelectionGenerator/index.js +1 -0
  316. package/features/contentModel/shared/ModelsFetcher.d.ts +3 -3
  317. package/features/contentModel/shared/ModelsFetcher.js +5 -5
  318. package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
  319. package/features/contentModel/shared/PluginModelsProvider.d.ts +5 -4
  320. package/features/contentModel/shared/PluginModelsProvider.js +11 -8
  321. package/features/contentModel/shared/PluginModelsProvider.js.map +1 -1
  322. package/features/contentModel/shared/abstractions.d.ts +10 -0
  323. package/features/contentModel/shared/abstractions.js +2 -1
  324. package/features/contentModel/shared/abstractions.js.map +1 -1
  325. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +11 -7
  326. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +19 -19
  327. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
  328. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +6 -2
  329. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +9 -8
  330. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
  331. package/features/contentModelGroup/CreateGroup/abstractions.d.ts +1 -1
  332. package/features/contentModelGroup/CreateGroup/abstractions.js.map +1 -1
  333. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.d.ts +9 -7
  334. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js +12 -14
  335. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js.map +1 -1
  336. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +3 -1
  337. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +2 -3
  338. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
  339. package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +6 -4
  340. package/features/contentModelGroup/GetGroup/GetGroupRepository.js +9 -9
  341. package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
  342. package/features/contentModelGroup/GetGroup/GetGroupUseCase.d.ts +3 -1
  343. package/features/contentModelGroup/GetGroup/GetGroupUseCase.js +2 -3
  344. package/features/contentModelGroup/GetGroup/GetGroupUseCase.js.map +1 -1
  345. package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +6 -4
  346. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +9 -9
  347. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
  348. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.d.ts +3 -1
  349. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js +2 -3
  350. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js.map +1 -1
  351. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.d.ts +7 -7
  352. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js +9 -14
  353. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js.map +1 -1
  354. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +3 -1
  355. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +4 -5
  356. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
  357. package/features/contentModelGroup/UpdateGroup/abstractions.d.ts +1 -1
  358. package/features/contentModelGroup/UpdateGroup/abstractions.js.map +1 -1
  359. package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +6 -4
  360. package/features/contentModelGroup/shared/PluginGroupsProvider.js +13 -11
  361. package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
  362. package/features/contentModelGroup/shared/abstractions.d.ts +10 -0
  363. package/features/contentModelGroup/shared/abstractions.js +2 -1
  364. package/features/contentModelGroup/shared/abstractions.js.map +1 -1
  365. package/features/graphql/feature.js +2 -0
  366. package/features/graphql/feature.js.map +1 -1
  367. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +2 -2
  368. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -1
  369. package/features/graphql/fields/base/AssetToGraphQL.d.ts +26 -0
  370. package/features/graphql/fields/base/AssetToGraphQL.js +148 -0
  371. package/features/graphql/fields/base/AssetToGraphQL.js.map +1 -0
  372. package/features/graphql/fields/base/DynamicZoneToGraphQL.js +5 -1
  373. package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -1
  374. package/features/graphql/fields/base/ObjectToGraphQL.js +2 -2
  375. package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -1
  376. package/features/graphql/fields/base/RefToGraphQL.d.ts +1 -1
  377. package/features/graphql/fields/base/RefToGraphQL.js +10 -18
  378. package/features/graphql/fields/base/RefToGraphQL.js.map +1 -1
  379. package/features/graphql/fields/base/richText/richTextResolver.d.ts +1 -1
  380. package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -1
  381. package/features/modelBuilder/abstractions.d.ts +10 -0
  382. package/features/modelBuilder/abstractions.js.map +1 -1
  383. package/features/modelBuilder/feature.js +2 -0
  384. package/features/modelBuilder/feature.js.map +1 -1
  385. package/features/modelBuilder/fields/AssetFieldType.d.ts +20 -0
  386. package/features/modelBuilder/fields/AssetFieldType.js +46 -0
  387. package/features/modelBuilder/fields/AssetFieldType.js.map +1 -0
  388. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +54 -18
  389. package/features/modelBuilder/fields/DataFieldBuilder.js +3 -0
  390. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -1
  391. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +1 -0
  392. package/features/modelBuilder/fields/DynamicZoneFieldType.js +2 -6
  393. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  394. package/features/modelBuilder/fields/TextFieldType.d.ts +3 -1
  395. package/features/modelBuilder/fields/TextFieldType.js +1 -3
  396. package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
  397. package/features/modelBuilder/fields/resolveAssetUrl.d.ts +35 -0
  398. package/features/modelBuilder/fields/resolveAssetUrl.js +26 -0
  399. package/features/modelBuilder/fields/resolveAssetUrl.js.map +1 -0
  400. package/features/modelBuilder/index.d.ts +1 -1
  401. package/features/modelBuilder/models/BaseModelBuilder.d.ts +3 -1
  402. package/features/modelBuilder/models/BaseModelBuilder.js +7 -0
  403. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  404. package/features/modelBuilder/models/PrivateModelBuilder.js +2 -1
  405. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  406. package/features/modelBuilder/models/PublicModelBuilder.js +2 -1
  407. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  408. package/features/shared/abstractions.d.ts +11 -15
  409. package/features/shared/abstractions.js +3 -3
  410. package/features/shared/abstractions.js.map +1 -1
  411. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.d.ts +8 -0
  412. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js +5 -0
  413. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js.map +1 -0
  414. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.d.ts +8 -0
  415. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js +5 -0
  416. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js.map +1 -0
  417. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.d.ts +8 -0
  418. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js +5 -0
  419. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js.map +1 -0
  420. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.d.ts +8 -0
  421. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js +5 -0
  422. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js.map +1 -0
  423. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.d.ts +8 -0
  424. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js +5 -0
  425. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js.map +1 -0
  426. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.d.ts +8 -0
  427. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js +5 -0
  428. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js.map +1 -0
  429. package/features/shared/storageOperations/entry/GetEntryStorageOperation.d.ts +8 -0
  430. package/features/shared/storageOperations/entry/GetEntryStorageOperation.js +5 -0
  431. package/features/shared/storageOperations/entry/GetEntryStorageOperation.js.map +1 -0
  432. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.d.ts +8 -0
  433. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js +5 -0
  434. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js.map +1 -0
  435. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.d.ts +8 -0
  436. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js +5 -0
  437. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js.map +1 -0
  438. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.d.ts +8 -0
  439. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js +5 -0
  440. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js.map +1 -0
  441. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.d.ts +8 -0
  442. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js +5 -0
  443. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js.map +1 -0
  444. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.d.ts +8 -0
  445. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js +5 -0
  446. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js.map +1 -0
  447. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.d.ts +8 -0
  448. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js +5 -0
  449. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js.map +1 -0
  450. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.d.ts +8 -0
  451. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js +5 -0
  452. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js.map +1 -0
  453. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.d.ts +8 -0
  454. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js +5 -0
  455. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js.map +1 -0
  456. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.d.ts +8 -0
  457. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js +5 -0
  458. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js.map +1 -0
  459. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.d.ts +8 -0
  460. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js +5 -0
  461. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js.map +1 -0
  462. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.d.ts +8 -0
  463. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js +5 -0
  464. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js.map +1 -0
  465. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.d.ts +8 -0
  466. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js +5 -0
  467. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js.map +1 -0
  468. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.d.ts +8 -0
  469. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js +5 -0
  470. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js.map +1 -0
  471. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.d.ts +8 -0
  472. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js +5 -0
  473. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js.map +1 -0
  474. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.d.ts +8 -0
  475. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js +5 -0
  476. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js.map +1 -0
  477. package/features/shared/storageOperations/group/CreateGroupStorageOperation.d.ts +8 -0
  478. package/features/shared/storageOperations/group/CreateGroupStorageOperation.js +5 -0
  479. package/features/shared/storageOperations/group/CreateGroupStorageOperation.js.map +1 -0
  480. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.d.ts +8 -0
  481. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js +5 -0
  482. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js.map +1 -0
  483. package/features/shared/storageOperations/group/GetGroupStorageOperation.d.ts +8 -0
  484. package/features/shared/storageOperations/group/GetGroupStorageOperation.js +5 -0
  485. package/features/shared/storageOperations/group/GetGroupStorageOperation.js.map +1 -0
  486. package/features/shared/storageOperations/group/ListGroupsStorageOperation.d.ts +8 -0
  487. package/features/shared/storageOperations/group/ListGroupsStorageOperation.js +5 -0
  488. package/features/shared/storageOperations/group/ListGroupsStorageOperation.js.map +1 -0
  489. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.d.ts +8 -0
  490. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js +5 -0
  491. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js.map +1 -0
  492. package/features/shared/storageOperations/index.d.ts +32 -0
  493. package/features/shared/storageOperations/index.js +32 -0
  494. package/features/shared/storageOperations/model/CreateModelStorageOperation.d.ts +8 -0
  495. package/features/shared/storageOperations/model/CreateModelStorageOperation.js +5 -0
  496. package/features/shared/storageOperations/model/CreateModelStorageOperation.js.map +1 -0
  497. package/features/shared/storageOperations/model/DeleteModelStorageOperation.d.ts +8 -0
  498. package/features/shared/storageOperations/model/DeleteModelStorageOperation.js +5 -0
  499. package/features/shared/storageOperations/model/DeleteModelStorageOperation.js.map +1 -0
  500. package/features/shared/storageOperations/model/GetModelStorageOperation.d.ts +8 -0
  501. package/features/shared/storageOperations/model/GetModelStorageOperation.js +5 -0
  502. package/features/shared/storageOperations/model/GetModelStorageOperation.js.map +1 -0
  503. package/features/shared/storageOperations/model/ListModelsStorageOperation.d.ts +8 -0
  504. package/features/shared/storageOperations/model/ListModelsStorageOperation.js +5 -0
  505. package/features/shared/storageOperations/model/ListModelsStorageOperation.js.map +1 -0
  506. package/features/shared/storageOperations/model/UpdateModelStorageOperation.d.ts +8 -0
  507. package/features/shared/storageOperations/model/UpdateModelStorageOperation.js +5 -0
  508. package/features/shared/storageOperations/model/UpdateModelStorageOperation.js.map +1 -0
  509. package/features/sortMapper/SortMapper.js +2 -5
  510. package/features/sortMapper/SortMapper.js.map +1 -1
  511. package/features/whereMapper/WhereMapper.js +7 -5
  512. package/features/whereMapper/WhereMapper.js.map +1 -1
  513. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +3 -7
  514. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  515. package/fieldConverters/abstractions.d.ts +14 -0
  516. package/fieldConverters/abstractions.js +13 -0
  517. package/fieldConverters/abstractions.js.map +1 -0
  518. package/fieldConverters/index.d.ts +1 -1
  519. package/graphql/CmsGraphQLSchemaFactory.d.ts +8 -0
  520. package/graphql/CmsGraphQLSchemaFactory.js +5 -0
  521. package/graphql/CmsGraphQLSchemaFactory.js.map +1 -0
  522. package/graphql/CmsSchemaExecutor.d.ts +10 -0
  523. package/graphql/CmsSchemaExecutor.js +5 -0
  524. package/graphql/CmsSchemaExecutor.js.map +1 -0
  525. package/graphql/buildSchemaPlugins.d.ts +2 -1
  526. package/graphql/buildSchemaPlugins.js +1 -3
  527. package/graphql/buildSchemaPlugins.js.map +1 -1
  528. package/graphql/checkEndpointAccess.js +5 -2
  529. package/graphql/checkEndpointAccess.js.map +1 -1
  530. package/graphql/createExecutableSchema.d.ts +1 -1
  531. package/graphql/createExecutableSchema.js +1 -1
  532. package/graphql/createExecutableSchema.js.map +1 -1
  533. package/graphql/generateSchema.d.ts +2 -1
  534. package/graphql/generateSchema.js +14 -5
  535. package/graphql/generateSchema.js.map +1 -1
  536. package/graphql/getSchema.js +7 -2
  537. package/graphql/getSchema.js.map +1 -1
  538. package/graphql/scalars/RevisionIdScalarPlugin.d.ts +1 -1
  539. package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -1
  540. package/graphql/schema/baseContentSchema.d.ts +1 -6
  541. package/graphql/schema/baseContentSchema.js +5 -8
  542. package/graphql/schema/baseContentSchema.js.map +1 -1
  543. package/graphql/schema/baseSchema.d.ts +2 -2
  544. package/graphql/schema/baseSchema.js +6 -41
  545. package/graphql/schema/baseSchema.js.map +1 -1
  546. package/graphql/schema/cms/CmsBaseErrorTypeFactory.d.ts +14 -0
  547. package/graphql/schema/cms/CmsBaseErrorTypeFactory.js +21 -0
  548. package/graphql/schema/cms/CmsBaseErrorTypeFactory.js.map +1 -0
  549. package/graphql/schema/cms/createEntryResolver.js +2 -2
  550. package/graphql/schema/cms/createEntryResolver.js.map +1 -1
  551. package/graphql/schema/cms/deleteEntryResolver.js +2 -2
  552. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -1
  553. package/graphql/schema/cms/getEntryResolver.js +5 -4
  554. package/graphql/schema/cms/getEntryResolver.js.map +1 -1
  555. package/graphql/schema/cms/getModelResolver.d.ts +35 -0
  556. package/graphql/schema/cms/getModelResolver.js +49 -0
  557. package/graphql/schema/cms/getModelResolver.js.map +1 -0
  558. package/graphql/schema/cms/helpers/buildFieldsSelection.js +9 -2
  559. package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -1
  560. package/graphql/schema/cms/helpers/expandFieldWildcards.d.ts +2 -0
  561. package/graphql/schema/cms/helpers/expandFieldWildcards.js +13 -0
  562. package/graphql/schema/cms/helpers/expandFieldWildcards.js.map +1 -0
  563. package/graphql/schema/cms/helpers/getModel.d.ts +0 -3
  564. package/graphql/schema/cms/helpers/getModel.js +5 -3
  565. package/graphql/schema/cms/helpers/getModel.js.map +1 -1
  566. package/graphql/schema/cms/helpers/index.d.ts +1 -0
  567. package/graphql/schema/cms/helpers/index.js +1 -0
  568. package/graphql/schema/cms/helpers.d.ts +1 -0
  569. package/graphql/schema/cms/helpers.js +1 -0
  570. package/graphql/schema/cms/listEntriesResolver.js +5 -4
  571. package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
  572. package/graphql/schema/cms/publishEntryResolver.js +2 -2
  573. package/graphql/schema/cms/publishEntryResolver.js.map +1 -1
  574. package/graphql/schema/cms/resolvers/createEntry.d.ts +2 -2
  575. package/graphql/schema/cms/resolvers/createEntry.js +1 -1
  576. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -1
  577. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +2 -2
  578. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +1 -1
  579. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -1
  580. package/graphql/schema/cms/resolvers/getEntry.d.ts +2 -2
  581. package/graphql/schema/cms/resolvers/getEntry.js +1 -1
  582. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -1
  583. package/graphql/schema/cms/resolvers/getModel.d.ts +8 -0
  584. package/graphql/schema/cms/resolvers/getModel.js +18 -0
  585. package/graphql/schema/cms/resolvers/getModel.js.map +1 -0
  586. package/graphql/schema/cms/resolvers/index.d.ts +1 -0
  587. package/graphql/schema/cms/resolvers/index.js +1 -0
  588. package/graphql/schema/cms/resolvers/listEntries.d.ts +2 -2
  589. package/graphql/schema/cms/resolvers/listEntries.js +1 -1
  590. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -1
  591. package/graphql/schema/cms/resolvers/mutationCms.d.ts +2 -2
  592. package/graphql/schema/cms/resolvers/mutationCms.js +1 -1
  593. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -1
  594. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +2 -2
  595. package/graphql/schema/cms/resolvers/publishEntryRevision.js +1 -1
  596. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -1
  597. package/graphql/schema/cms/resolvers/queryCms.d.ts +2 -2
  598. package/graphql/schema/cms/resolvers/queryCms.js +1 -1
  599. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -1
  600. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +2 -2
  601. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +1 -1
  602. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -1
  603. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +2 -2
  604. package/graphql/schema/cms/resolvers/updateEntryRevision.js +1 -1
  605. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -1
  606. package/graphql/schema/cms/typeDefs/mutation.d.ts +2 -2
  607. package/graphql/schema/cms/typeDefs/mutation.js +1 -1
  608. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -1
  609. package/graphql/schema/cms/typeDefs/query.d.ts +2 -2
  610. package/graphql/schema/cms/typeDefs/query.js +2 -1
  611. package/graphql/schema/cms/typeDefs/query.js.map +1 -1
  612. package/graphql/schema/cms/typeDefs/responses.d.ts +2 -2
  613. package/graphql/schema/cms/typeDefs/responses.js +6 -1
  614. package/graphql/schema/cms/typeDefs/responses.js.map +1 -1
  615. package/graphql/schema/cms/unpublishEntryResolver.js +2 -2
  616. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -1
  617. package/graphql/schema/cms/updateEntryResolver.js +2 -2
  618. package/graphql/schema/cms/updateEntryResolver.js.map +1 -1
  619. package/graphql/schema/contentEntries.js +43 -32
  620. package/graphql/schema/contentEntries.js.map +1 -1
  621. package/graphql/schema/contentModelGroups.js +39 -18
  622. package/graphql/schema/contentModelGroups.js.map +1 -1
  623. package/graphql/schema/contentModels.js +68 -16
  624. package/graphql/schema/contentModels.js.map +1 -1
  625. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  626. package/graphql/schema/createFieldResolvers.js.map +1 -1
  627. package/graphql/schema/createManageResolvers.js +4 -2
  628. package/graphql/schema/createManageResolvers.js.map +1 -1
  629. package/graphql/schema/resolvers/manage/resolveCreate.js +5 -3
  630. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  631. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +5 -3
  632. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  633. package/graphql/schema/resolvers/manage/resolveDelete.js +9 -4
  634. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  635. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +5 -3
  636. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
  637. package/graphql/schema/resolvers/manage/resolveGet.js +11 -6
  638. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  639. package/graphql/schema/resolvers/manage/resolveGetByIds.js +5 -3
  640. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  641. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +5 -3
  642. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  643. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +5 -3
  644. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -1
  645. package/graphql/schema/resolvers/manage/resolveList.js +5 -3
  646. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  647. package/graphql/schema/resolvers/manage/resolveListDeleted.js +5 -3
  648. package/graphql/schema/resolvers/manage/resolveListDeleted.js.map +1 -1
  649. package/graphql/schema/resolvers/manage/resolveMove.js +4 -2
  650. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -1
  651. package/graphql/schema/resolvers/manage/resolvePublish.js +5 -3
  652. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  653. package/graphql/schema/resolvers/manage/resolveRepublish.js +5 -3
  654. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  655. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js +5 -3
  656. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js.map +1 -1
  657. package/graphql/schema/resolvers/manage/resolveUnpublish.js +5 -3
  658. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  659. package/graphql/schema/resolvers/manage/resolveUpdate.js +5 -3
  660. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  661. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js +5 -3
  662. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js.map +1 -1
  663. package/graphql/schema/resolvers/manage/resolveValidate.js +5 -3
  664. package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -1
  665. package/graphql/schema/resolvers/preview/resolveGet.js +6 -3
  666. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  667. package/graphql/schema/resolvers/preview/resolveList.js +5 -3
  668. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  669. package/graphql/schema/resolvers/read/resolveGet.js +5 -2
  670. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  671. package/graphql/schema/resolvers/read/resolveList.js +5 -3
  672. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  673. package/graphql/schema/resolvers/singular/resolveGet.js +1 -1
  674. package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -1
  675. package/graphql/schema/resolvers/singular/resolveUpdate.js +1 -1
  676. package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -1
  677. package/graphql/schema/schemaPlugins.d.ts +2 -1
  678. package/graphql/schema/schemaPlugins.js +2 -4
  679. package/graphql/schema/schemaPlugins.js.map +1 -1
  680. package/index.d.ts +7 -6
  681. package/index.js +4 -22
  682. package/legacy/abstractions.js.map +1 -1
  683. package/package.json +23 -29
  684. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.d.ts +2 -2
  685. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js +1 -1
  686. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js.map +1 -1
  687. package/plugins/CmsModelPlugin.js +2 -1
  688. package/plugins/CmsModelPlugin.js.map +1 -1
  689. package/plugins/index.d.ts +0 -1
  690. package/plugins/index.js +0 -1
  691. package/types/fields/dynamicZoneField.d.ts +1 -0
  692. package/types/model.d.ts +6 -0
  693. package/types/modelField.d.ts +2 -0
  694. package/types/types.d.ts +10 -183
  695. package/types/types.js.map +1 -1
  696. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.d.ts +28 -0
  697. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js +324 -0
  698. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js.map +1 -0
  699. package/utils/contentModelToJsonSchema/index.d.ts +2 -0
  700. package/utils/contentModelToJsonSchema/index.js +1 -0
  701. package/utils/contentModelToJsonSchema/types.d.ts +24 -0
  702. package/utils/contentModelToJsonSchema/types.js +0 -0
  703. package/utils/converters/ConverterCollection.d.ts +2 -2
  704. package/utils/converters/ConverterCollection.js +1 -3
  705. package/utils/converters/ConverterCollection.js.map +1 -1
  706. package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -2
  707. package/utils/converters/valueKeyFromStorageConverter.js +2 -2
  708. package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
  709. package/utils/converters/valueKeyStorageConverter.js +4 -2
  710. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  711. package/utils/converters/valueKeyToStorageConverter.d.ts +2 -2
  712. package/utils/converters/valueKeyToStorageConverter.js +2 -2
  713. package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
  714. package/utils/getSchemaFromFieldPlugins.d.ts +2 -2
  715. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  716. package/utils/index.d.ts +1 -0
  717. package/utils/index.js +1 -0
  718. package/utils/isHeadlessCmsReady.d.ts +1 -1
  719. package/utils/isHeadlessCmsReady.js +3 -2
  720. package/utils/isHeadlessCmsReady.js.map +1 -1
  721. package/abstractions/entryHooks/OnEntryBeforeCreate.d.ts +0 -8
  722. package/abstractions/entryHooks/OnEntryBeforeCreate.js +0 -5
  723. package/abstractions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
  724. package/abstractions/entryHooks/index.d.ts +0 -1
  725. package/abstractions/entryHooks/index.js +0 -1
  726. package/abstractions/index.d.ts +0 -1
  727. package/abstractions/index.js +0 -1
  728. package/context.d.ts +0 -3
  729. package/context.js +0 -131
  730. package/context.js.map +0 -1
  731. package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +0 -4
  732. package/extensions/entryHooks/OnEntryBeforeCreate.js +0 -21
  733. package/extensions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
  734. package/extensions/entryHooks/index.d.ts +0 -1
  735. package/extensions/entryHooks/index.js +0 -1
  736. package/extensions/index.d.ts +0 -5
  737. package/extensions/index.js +0 -7
  738. package/extensions/index.js.map +0 -1
  739. package/features/runtimeTenant/RuntimeTenant.d.ts +0 -13
  740. package/features/runtimeTenant/RuntimeTenant.js +0 -22
  741. package/features/runtimeTenant/RuntimeTenant.js.map +0 -1
  742. package/features/runtimeTenant/abstractions.d.ts +0 -11
  743. package/features/runtimeTenant/abstractions.js +0 -5
  744. package/features/runtimeTenant/abstractions.js.map +0 -1
  745. package/features/runtimeTenant/index.d.ts +0 -2
  746. package/features/runtimeTenant/index.js +0 -2
  747. package/graphql/graphQLHandlerFactory.d.ts +0 -5
  748. package/graphql/graphQLHandlerFactory.js +0 -22
  749. package/graphql/graphQLHandlerFactory.js.map +0 -1
  750. package/graphql/handleRequest.d.ts +0 -11
  751. package/graphql/handleRequest.js +0 -62
  752. package/graphql/handleRequest.js.map +0 -1
  753. package/graphql/index.d.ts +0 -4
  754. package/graphql/index.js +0 -11
  755. package/graphql/index.js.map +0 -1
  756. package/graphql/schema/cms/index.d.ts +0 -2
  757. package/graphql/schema/cms/index.js +0 -24
  758. package/graphql/schema/cms/index.js.map +0 -1
  759. package/index.js.map +0 -1
  760. package/parameters/context.d.ts +0 -2
  761. package/parameters/context.js +0 -7
  762. package/parameters/context.js.map +0 -1
  763. package/parameters/header.d.ts +0 -2
  764. package/parameters/header.js +0 -13
  765. package/parameters/header.js.map +0 -1
  766. package/parameters/index.d.ts +0 -3
  767. package/parameters/index.js +0 -3
  768. package/parameters/path.d.ts +0 -2
  769. package/parameters/path.js +0 -12
  770. package/parameters/path.js.map +0 -1
  771. package/plugins/CmsParametersPlugin.d.ts +0 -18
  772. package/plugins/CmsParametersPlugin.js +0 -16
  773. package/plugins/CmsParametersPlugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModel/UpdateModel/UpdateModelRepository.js","sources":["../../../../src/features/contentModel/UpdateModel/UpdateModelRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateModelRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ModelCache, ModelsFetcher } from \"~/features/contentModel/shared/abstractions.js\";\nimport {\n ModelCannotUpdateCodeModelError,\n ModelPersistenceError,\n ModelValidationError\n} from \"~/domain/contentModel/errors.js\";\nimport { CmsContext, StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed.js\";\nimport { validateSingularApiName } from \"~/domain/contentModel/validation/singularApiName.js\";\nimport { validatePluralApiName } from \"~/domain/contentModel/validation/pluralApiName.js\";\nimport { validateModelFields } from \"~/domain/contentModel/validation/modelFields.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ModelFieldCompression } from \"~/features/contentModel/ModelFieldCompression/index.js\";\nimport { RuntimeTenant } from \"~/features/runtimeTenant/abstractions.js\";\n\n/**\n * UpdateModelRepository - Validates domain rules and persists model updates.\n *\n * Responsibilities:\n * - Validate API name endings\n * - Validate singularApiName uniqueness (excluding current model)\n * - Validate pluralApiName uniqueness (excluding current model)\n * - Validate model fields\n * - Persist to storage\n * - Clear ModelCache after successful update\n */\nclass UpdateModelRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private readonly modelCache: ModelCache.Interface,\n private readonly modelsFetcher: ModelsFetcher.Interface,\n private readonly storageOperations: StorageOperations.Interface,\n private readonly cmsContext: CmsContext.Interface,\n private readonly modelFieldCompression: ModelFieldCompression.Interface,\n private readonly runtimeTenant: RuntimeTenant.Interface\n ) {}\n\n async execute(\n initialModel: CmsModel,\n original: CmsModel\n ): Promise<Result<CmsModel, RepositoryAbstraction.Error>> {\n const model = this.runtimeTenant.assign(initialModel);\n try {\n // Validate API name endings\n try {\n validateEndingAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n // Get all models for validation (excluding the current model)\n const modelsResult = await this.cmsContext.security.withoutAuthorization(async () => {\n return await this.modelsFetcher.fetchAll();\n });\n\n if (modelsResult.isFail()) {\n return Result.fail(new ModelPersistenceError(modelsResult.error));\n }\n\n const allModels = modelsResult.value;\n const models = allModels.filter(m => m.modelId !== model.modelId);\n\n // Check if this is a plugin model\n const existingModelResult = await this.modelsFetcher.fetchById(model.modelId);\n if (existingModelResult.isFail()) {\n return Result.fail(new ModelPersistenceError(existingModelResult.error));\n }\n\n if (existingModelResult.value.isPlugin) {\n return Result.fail(new ModelCannotUpdateCodeModelError(model.modelId));\n }\n\n // Validate uniqueness\n try {\n for (const existingModel of models) {\n validateSingularApiName({\n existingModel,\n model\n });\n validatePluralApiName({\n existingModel,\n model\n });\n }\n\n // Validate model fields\n await validateModelFields({\n models,\n model,\n original,\n context: this.cmsContext\n });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n const fields = await this.modelFieldCompression.compress(model.fields);\n\n // Persist to storage\n await this.storageOperations.models.update({\n model: {\n ...model,\n fields\n }\n });\n\n // Clear cache\n this.modelCache.clear();\n\n return Result.ok(model);\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n}\n\nexport const UpdateModelRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateModelRepositoryImpl,\n dependencies: [\n ModelCache,\n ModelsFetcher,\n StorageOperations,\n CmsContext,\n ModelFieldCompression,\n RuntimeTenant\n ]\n});\n"],"names":["UpdateModelRepositoryImpl","modelCache","modelsFetcher","storageOperations","cmsContext","modelFieldCompression","runtimeTenant","initialModel","original","model","validateEndingAllowed","error","Result","ModelValidationError","modelsResult","ModelPersistenceError","allModels","models","m","existingModelResult","ModelCannotUpdateCodeModelError","existingModel","validateSingularApiName","validatePluralApiName","validateModelFields","fields","UpdateModelRepository","RepositoryAbstraction","ModelCache","ModelsFetcher","StorageOperations","CmsContext","ModelFieldCompression","RuntimeTenant"],"mappings":";;;;;;;;;;;AA4BA,MAAMA;IACF,YACqBC,UAAgC,EAChCC,aAAsC,EACtCC,iBAA8C,EAC9CC,UAAgC,EAChCC,qBAAsD,EACtDC,aAAsC,CACzD;aANmBL,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,iBAAiB,GAAjBA;aACAC,UAAU,GAAVA;aACAC,qBAAqB,GAArBA;aACAC,aAAa,GAAbA;IAClB;IAEH,MAAM,QACFC,YAAsB,EACtBC,QAAkB,EACoC;QACtD,MAAMC,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAACF;QACxC,IAAI;YAEA,IAAI;gBACAG,sBAAsB;oBAAED;gBAAM;YAClC,EAAE,OAAOE,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBAAqB;oBAAE,SAASF,MAAM,OAAO;oBAAE,MAAMA,MAAM,IAAI;gBAAC;YAE5E;YAGA,MAAMG,eAAe,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAC9D,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ;YAG5C,IAAIA,aAAa,MAAM,IACnB,OAAOF,OAAO,IAAI,CAAC,IAAIG,sBAAsBD,aAAa,KAAK;YAGnE,MAAME,YAAYF,aAAa,KAAK;YACpC,MAAMG,SAASD,UAAU,MAAM,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKT,MAAM,OAAO;YAGhE,MAAMU,sBAAsB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAACV,MAAM,OAAO;YAC5E,IAAIU,oBAAoB,MAAM,IAC1B,OAAOP,OAAO,IAAI,CAAC,IAAIG,sBAAsBI,oBAAoB,KAAK;YAG1E,IAAIA,oBAAoB,KAAK,CAAC,QAAQ,EAClC,OAAOP,OAAO,IAAI,CAAC,IAAIQ,gCAAgCX,MAAM,OAAO;YAIxE,IAAI;gBACA,KAAK,MAAMY,iBAAiBJ,OAAQ;oBAChCK,wBAAwB;wBACpBD;wBACAZ;oBACJ;oBACAc,sBAAsB;wBAClBF;wBACAZ;oBACJ;gBACJ;gBAGA,MAAMe,oBAAoB;oBACtBP;oBACAR;oBACAD;oBACA,SAAS,IAAI,CAAC,UAAU;gBAC5B;YACJ,EAAE,OAAOG,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBAAqB;oBAAE,SAASF,MAAM,OAAO;oBAAE,MAAMA,MAAM,IAAI;gBAAC;YAE5E;YAEA,MAAMc,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAChB,MAAM,MAAM;YAGrE,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;gBACvC,OAAO;oBACH,GAAGA,KAAK;oBACRgB;gBACJ;YACJ;YAGA,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOb,OAAO,EAAE,CAACH;QACrB,EAAE,OAAOE,OAAO;YACZ,OAAOC,OAAO,IAAI,CAAC,IAAIG,sBAAsBJ;QACjD;IACJ;AACJ;AAEO,MAAMe,8CAAwBC,sBAAAA,oBAA0C,CAAC;IAC5E,gBAAgB3B;IAChB,cAAc;QACV4B;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentModel/UpdateModel/UpdateModelRepository.js","sources":["../../../../src/features/contentModel/UpdateModel/UpdateModelRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateModelRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ModelCache, ModelsFetcher } from \"~/features/contentModel/shared/abstractions.js\";\nimport {\n ModelCannotUpdateCodeModelError,\n ModelPersistenceError,\n ModelValidationError\n} from \"~/domain/contentModel/errors.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport { UpdateModelStorageOperation } from \"~/features/shared/storageOperations/model/UpdateModelStorageOperation.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed.js\";\nimport { validateSingularApiName } from \"~/domain/contentModel/validation/singularApiName.js\";\nimport { validatePluralApiName } from \"~/domain/contentModel/validation/pluralApiName.js\";\nimport { validateModelFields } from \"~/domain/contentModel/validation/modelFields.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ModelFieldCompression } from \"~/features/contentModel/ModelFieldCompression/index.js\";\n\n/**\n * UpdateModelRepository - Validates domain rules and persists model updates.\n *\n * Responsibilities:\n * - Validate API name endings\n * - Validate singularApiName uniqueness (excluding current model)\n * - Validate pluralApiName uniqueness (excluding current model)\n * - Validate model fields\n * - Persist to storage\n * - Clear ModelCache after successful update\n */\nclass UpdateModelRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private readonly modelCache: ModelCache.Interface,\n private readonly modelsFetcher: ModelsFetcher.Interface,\n private readonly updateModel: UpdateModelStorageOperation.Interface,\n private readonly cmsContext: CmsContext.Interface,\n private readonly modelFieldCompression: ModelFieldCompression.Interface,\n private readonly identityContext: IdentityContext.Interface\n ) {}\n\n async execute(\n model: CmsModel,\n original: CmsModel\n ): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n // Validate API name endings\n try {\n validateEndingAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n // Get all models for validation (excluding the current model)\n const modelsResult = await this.identityContext.withoutAuthorization(async () => {\n return await this.modelsFetcher.fetchAll();\n });\n\n if (modelsResult.isFail()) {\n return Result.fail(new ModelPersistenceError(modelsResult.error));\n }\n\n const allModels = modelsResult.value;\n const models = allModels.filter(m => m.modelId !== model.modelId);\n\n // Check if this is a plugin model\n const existingModelResult = await this.modelsFetcher.fetchById(model.modelId);\n if (existingModelResult.isFail()) {\n return Result.fail(new ModelPersistenceError(existingModelResult.error));\n }\n\n if (existingModelResult.value.isPlugin) {\n return Result.fail(new ModelCannotUpdateCodeModelError(model.modelId));\n }\n\n // Validate uniqueness\n try {\n for (const existingModel of models) {\n validateSingularApiName({\n existingModel,\n model\n });\n validatePluralApiName({\n existingModel,\n model\n });\n }\n\n // Validate model fields\n await validateModelFields({\n models,\n model,\n original,\n context: this.cmsContext\n });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n const fields = await this.modelFieldCompression.compress(model.fields);\n\n // Persist to storage\n await this.updateModel.execute({\n model: {\n ...model,\n fields\n }\n });\n\n // Clear cache\n this.modelCache.clear();\n\n return Result.ok();\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n}\n\nexport const UpdateModelRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateModelRepositoryImpl,\n dependencies: [\n ModelCache,\n ModelsFetcher,\n UpdateModelStorageOperation,\n CmsContext,\n ModelFieldCompression,\n IdentityContext\n ]\n});\n"],"names":["UpdateModelRepositoryImpl","modelCache","modelsFetcher","updateModel","cmsContext","modelFieldCompression","identityContext","model","original","validateEndingAllowed","error","Result","ModelValidationError","modelsResult","ModelPersistenceError","allModels","models","m","existingModelResult","ModelCannotUpdateCodeModelError","existingModel","validateSingularApiName","validatePluralApiName","validateModelFields","fields","UpdateModelRepository","RepositoryAbstraction","ModelCache","ModelsFetcher","UpdateModelStorageOperation","CmsContext","ModelFieldCompression","IdentityContext"],"mappings":";;;;;;;;;;;;AA6BA,MAAMA;IACF,YACqBC,UAAgC,EAChCC,aAAsC,EACtCC,WAAkD,EAClDC,UAAgC,EAChCC,qBAAsD,EACtDC,eAA0C,CAC7D;aANmBL,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,WAAW,GAAXA;aACAC,UAAU,GAAVA;aACAC,qBAAqB,GAArBA;aACAC,eAAe,GAAfA;IAClB;IAEH,MAAM,QACFC,KAAe,EACfC,QAAkB,EACgC;QAClD,IAAI;YAEA,IAAI;gBACAC,sBAAsB;oBAAEF;gBAAM;YAClC,EAAE,OAAOG,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBAAqB;oBAAE,SAASF,MAAM,OAAO;oBAAE,MAAMA,MAAM,IAAI;gBAAC;YAE5E;YAGA,MAAMG,eAAe,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,UAC1D,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ;YAG5C,IAAIA,aAAa,MAAM,IACnB,OAAOF,OAAO,IAAI,CAAC,IAAIG,sBAAsBD,aAAa,KAAK;YAGnE,MAAME,YAAYF,aAAa,KAAK;YACpC,MAAMG,SAASD,UAAU,MAAM,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKV,MAAM,OAAO;YAGhE,MAAMW,sBAAsB,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAACX,MAAM,OAAO;YAC5E,IAAIW,oBAAoB,MAAM,IAC1B,OAAOP,OAAO,IAAI,CAAC,IAAIG,sBAAsBI,oBAAoB,KAAK;YAG1E,IAAIA,oBAAoB,KAAK,CAAC,QAAQ,EAClC,OAAOP,OAAO,IAAI,CAAC,IAAIQ,gCAAgCZ,MAAM,OAAO;YAIxE,IAAI;gBACA,KAAK,MAAMa,iBAAiBJ,OAAQ;oBAChCK,wBAAwB;wBACpBD;wBACAb;oBACJ;oBACAe,sBAAsB;wBAClBF;wBACAb;oBACJ;gBACJ;gBAGA,MAAMgB,oBAAoB;oBACtBP;oBACAT;oBACAC;oBACA,SAAS,IAAI,CAAC,UAAU;gBAC5B;YACJ,EAAE,OAAOE,OAAO;gBACZ,OAAOC,OAAO,IAAI,CACd,IAAIC,qBAAqB;oBAAE,SAASF,MAAM,OAAO;oBAAE,MAAMA,MAAM,IAAI;gBAAC;YAE5E;YAEA,MAAMc,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAACjB,MAAM,MAAM;YAGrE,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC3B,OAAO;oBACH,GAAGA,KAAK;oBACRiB;gBACJ;YACJ;YAGA,IAAI,CAAC,UAAU,CAAC,KAAK;YAErB,OAAOb,OAAO,EAAE;QACpB,EAAE,OAAOD,OAAO;YACZ,OAAOC,OAAO,IAAI,CAAC,IAAIG,sBAAsBJ;QACjD;IACJ;AACJ;AAEO,MAAMe,8CAAwBC,sBAAAA,oBAA0C,CAAC;IAC5E,gBAAgB1B;IAChB,cAAc;QACV2B;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -69,10 +69,10 @@ class UpdateModelUseCaseImpl {
69
69
  return Result.fail(result.error);
70
70
  }
71
71
  await this.eventPublisher.publish(new ModelAfterUpdateEvent({
72
- model: result.value,
72
+ model,
73
73
  original
74
74
  }));
75
- return Result.ok(result.value);
75
+ return Result.ok(model);
76
76
  }
77
77
  }
78
78
  const UpdateModelUseCase_UpdateModelUseCase = UpdateModelUseCase.createImplementation({
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModel/UpdateModel/UpdateModelUseCase.js","sources":["../../../../src/features/contentModel/UpdateModel/UpdateModelUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateModelUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UpdateModelRepository } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { ModelBeforeUpdateEvent } from \"./events.js\";\nimport { ModelAfterUpdateEvent } from \"./events.js\";\nimport { ModelUpdateErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ModelNotAuthorizedError, ModelValidationError } from \"~/domain/contentModel/errors.js\";\nimport { createZodError } from \"@webiny/utils\";\nimport { removeUndefinedValues } from \"@webiny/utils\";\nimport { createModelUpdateValidation } from \"~/domain/contentModel/schemas.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { CmsModelUpdateInput } from \"~/types/index.js\";\nimport { GetModelUseCase } from \"~/features/contentModel/GetModel/index.js\";\n\n/**\n * UpdateModelUseCase - Core model update orchestration.\n *\n * Responsibilities:\n * - Validate input (Zod)\n * - Fetch original model\n * - Create updated domain model object\n * - Handle group changes\n * - Handle field ID changes (title, description, image)\n * - Access control checks\n * - Publish before event\n * - Delegate to repository for validation and persistence\n * - Publish after event or error event\n *\n * Note: Repository handles domain validations (API name uniqueness, field validation, etc.)\n */\nclass UpdateModelUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private getModelUseCase: GetModelUseCase.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateModelRepository.Interface,\n private accessControl: AccessControl.Interface,\n private tenantContext: TenantContext.Interface\n ) {}\n\n async execute(\n modelId: string,\n input: CmsModelUpdateInput\n ): Promise<Result<CmsModel, UseCaseAbstraction.Error>> {\n // Initial access control check\n const canAccess = await this.accessControl.canAccessModel({ rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(new ModelNotAuthorizedError());\n }\n\n // Get the original model (with access control check)\n const getResult = await this.getModelUseCase.execute(modelId);\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = structuredClone(getResult.value);\n\n // Validate input\n const validationResult = await createModelUpdateValidation().safeParseAsync(input);\n if (!validationResult.success) {\n const zodError = createZodError(validationResult.error);\n return Result.fail(\n new ModelValidationError({\n message: zodError.message,\n data: zodError.data\n })\n );\n }\n\n const data = removeUndefinedValues(validationResult.data);\n\n // If no changes, return original\n if (Object.keys(data).length === 0) {\n return Result.ok(original);\n }\n\n // Create updated model\n const tenant = this.tenantContext.getTenant();\n\n const model: CmsModel = {\n ...original,\n ...data,\n icon: data.icon ?? original.icon,\n // Handle optional field IDs explicitly\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n description: data.description || original.description,\n tenant: original.tenant || tenant.id,\n savedOn: new Date().toISOString()\n };\n\n // Access control check on the updated model\n const canAccessModel = await this.accessControl.canAccessModel({ model, rwd: \"w\" });\n if (!canAccessModel) {\n return Result.fail(ModelNotAuthorizedError.fromModel(model));\n }\n\n // Ensure type tags\n model.tags = ensureTypeTag(model);\n\n // Publish before event\n await this.eventPublisher.publish(\n new ModelBeforeUpdateEvent({ model, original, input: data })\n );\n\n // Persist via repository (repository will validate)\n const result = await this.repository.execute(model, original);\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new ModelUpdateErrorEvent({\n input: data,\n model,\n original,\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 ModelAfterUpdateEvent({\n model: result.value,\n original\n })\n );\n\n return Result.ok(result.value);\n }\n}\n\nexport const UpdateModelUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateModelUseCaseImpl,\n dependencies: [\n GetModelUseCase,\n EventPublisher,\n UpdateModelRepository,\n AccessControl,\n TenantContext\n ]\n});\n"],"names":["UpdateModelUseCaseImpl","getModelUseCase","eventPublisher","repository","accessControl","tenantContext","modelId","input","canAccess","Result","ModelNotAuthorizedError","getResult","original","structuredClone","validationResult","createModelUpdateValidation","zodError","createZodError","ModelValidationError","data","removeUndefinedValues","Object","tenant","model","undefined","Date","canAccessModel","ensureTypeTag","ModelBeforeUpdateEvent","result","ModelUpdateErrorEvent","ModelAfterUpdateEvent","UpdateModelUseCase","UseCaseAbstraction","GetModelUseCase","EventPublisher","UpdateModelRepository","AccessControl","TenantContext"],"mappings":";;;;;;;;;;;AAkCA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,aAAsC,CAChD;aALUJ,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QACFC,OAAe,EACfC,KAA0B,EACyB;QAEnD,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAE,KAAK;QAAI;QACrE,IAAI,CAACA,WACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACL;QACrD,IAAIK,UAAU,MAAM,IAChB,OAAOA;QAGX,MAAMC,WAAWC,gBAAgBF,UAAU,KAAK;QAGhD,MAAMG,mBAAmB,MAAMC,8BAA8B,cAAc,CAACR;QAC5E,IAAI,CAACO,iBAAiB,OAAO,EAAE;YAC3B,MAAME,WAAWC,eAAeH,iBAAiB,KAAK;YACtD,OAAOL,OAAO,IAAI,CACd,IAAIS,qBAAqB;gBACrB,SAASF,SAAS,OAAO;gBACzB,MAAMA,SAAS,IAAI;YACvB;QAER;QAEA,MAAMG,OAAOC,sBAAsBN,iBAAiB,IAAI;QAGxD,IAAIO,AAA6B,MAA7BA,OAAO,IAAI,CAACF,MAAM,MAAM,EACxB,OAAOV,OAAO,EAAE,CAACG;QAIrB,MAAMU,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAE3C,MAAMC,QAAkB;YACpB,GAAGX,QAAQ;YACX,GAAGO,IAAI;YACP,MAAMA,KAAK,IAAI,IAAIP,SAAS,IAAI;YAEhC,cACIO,AAAsBK,WAAtBL,KAAK,YAAY,GACXP,SAAS,YAAY,GACpBO,KAAK,YAAY;YAC5B,oBACIA,AAA4BK,WAA5BL,KAAK,kBAAkB,GACjBP,SAAS,kBAAkB,GAC3BO,KAAK,kBAAkB;YACjC,cACIA,AAAsBK,WAAtBL,KAAK,YAAY,GAAiBP,SAAS,YAAY,GAAGO,KAAK,YAAY;YAC/E,aAAaA,KAAK,WAAW,IAAIP,SAAS,WAAW;YACrD,QAAQA,SAAS,MAAM,IAAIU,OAAO,EAAE;YACpC,SAAS,IAAIG,OAAO,WAAW;QACnC;QAGA,MAAMC,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAEH;YAAO,KAAK;QAAI;QACjF,IAAI,CAACG,gBACD,OAAOjB,OAAO,IAAI,CAACC,wBAAwB,SAAS,CAACa;QAIzDA,MAAM,IAAI,GAAGI,cAAcJ;QAG3B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIK,uBAAuB;YAAEL;YAAOX;YAAU,OAAOO;QAAK;QAI9D,MAAMU,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACN,OAAOX;QACpD,IAAIiB,OAAO,MAAM,IAAI;YAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,sBAAsB;gBACtB,OAAOX;gBACPI;gBACAX;gBACA,OAAOiB,OAAO,KAAK;YACvB;YAEJ,OAAOpB,OAAO,IAAI,CAACoB,OAAO,KAAK;QACnC;QAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIE,sBAAsB;YACtB,OAAOF,OAAO,KAAK;YACnBjB;QACJ;QAGJ,OAAOH,OAAO,EAAE,CAACoB,OAAO,KAAK;IACjC;AACJ;AAEO,MAAMG,wCAAqBC,mBAAAA,oBAAuC,CAAC;IACtE,gBAAgBjC;IAChB,cAAc;QACVkC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentModel/UpdateModel/UpdateModelUseCase.js","sources":["../../../../src/features/contentModel/UpdateModel/UpdateModelUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { UpdateModelUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UpdateModelRepository } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { ModelBeforeUpdateEvent } from \"./events.js\";\nimport { ModelAfterUpdateEvent } from \"./events.js\";\nimport { ModelUpdateErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ModelNotAuthorizedError, ModelValidationError } from \"~/domain/contentModel/errors.js\";\nimport { createZodError } from \"@webiny/utils\";\nimport { removeUndefinedValues } from \"@webiny/utils\";\nimport { createModelUpdateValidation } from \"~/domain/contentModel/schemas.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { CmsModelUpdateInput } from \"~/types/index.js\";\nimport { GetModelUseCase } from \"~/features/contentModel/GetModel/index.js\";\n\n/**\n * UpdateModelUseCase - Core model update orchestration.\n *\n * Responsibilities:\n * - Validate input (Zod)\n * - Fetch original model\n * - Create updated domain model object\n * - Handle group changes\n * - Handle field ID changes (title, description, image)\n * - Access control checks\n * - Publish before event\n * - Delegate to repository for validation and persistence\n * - Publish after event or error event\n *\n * Note: Repository handles domain validations (API name uniqueness, field validation, etc.)\n */\nclass UpdateModelUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private getModelUseCase: GetModelUseCase.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateModelRepository.Interface,\n private accessControl: AccessControl.Interface,\n private tenantContext: TenantContext.Interface\n ) {}\n\n async execute(\n modelId: string,\n input: CmsModelUpdateInput\n ): Promise<Result<CmsModel, UseCaseAbstraction.Error>> {\n // Initial access control check\n const canAccess = await this.accessControl.canAccessModel({ rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(new ModelNotAuthorizedError());\n }\n\n // Get the original model (with access control check)\n const getResult = await this.getModelUseCase.execute(modelId);\n if (getResult.isFail()) {\n return getResult;\n }\n\n const original = structuredClone(getResult.value);\n\n // Validate input\n const validationResult = await createModelUpdateValidation().safeParseAsync(input);\n if (!validationResult.success) {\n const zodError = createZodError(validationResult.error);\n return Result.fail(\n new ModelValidationError({\n message: zodError.message,\n data: zodError.data\n })\n );\n }\n\n const data = removeUndefinedValues(validationResult.data);\n\n // If no changes, return original\n if (Object.keys(data).length === 0) {\n return Result.ok(original);\n }\n\n // Create updated model\n const tenant = this.tenantContext.getTenant();\n\n const model: CmsModel = {\n ...original,\n ...data,\n icon: data.icon ?? original.icon,\n // Handle optional field IDs explicitly\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n description: data.description || original.description,\n tenant: original.tenant || tenant.id,\n savedOn: new Date().toISOString()\n };\n\n // Access control check on the updated model\n const canAccessModel = await this.accessControl.canAccessModel({ model, rwd: \"w\" });\n if (!canAccessModel) {\n return Result.fail(ModelNotAuthorizedError.fromModel(model));\n }\n\n // Ensure type tags\n model.tags = ensureTypeTag(model);\n\n // Publish before event\n await this.eventPublisher.publish(\n new ModelBeforeUpdateEvent({ model, original, input: data })\n );\n\n // Persist via repository (repository will validate)\n const result = await this.repository.execute(model, original);\n if (result.isFail()) {\n // Publish error event\n await this.eventPublisher.publish(\n new ModelUpdateErrorEvent({\n input: data,\n model,\n original,\n error: result.error\n })\n );\n return Result.fail(result.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(new ModelAfterUpdateEvent({ model, original }));\n\n return Result.ok(model);\n }\n}\n\nexport const UpdateModelUseCase = UseCaseAbstraction.createImplementation({\n implementation: UpdateModelUseCaseImpl,\n dependencies: [\n GetModelUseCase,\n EventPublisher,\n UpdateModelRepository,\n AccessControl,\n TenantContext\n ]\n});\n"],"names":["UpdateModelUseCaseImpl","getModelUseCase","eventPublisher","repository","accessControl","tenantContext","modelId","input","canAccess","Result","ModelNotAuthorizedError","getResult","original","structuredClone","validationResult","createModelUpdateValidation","zodError","createZodError","ModelValidationError","data","removeUndefinedValues","Object","tenant","model","undefined","Date","canAccessModel","ensureTypeTag","ModelBeforeUpdateEvent","result","ModelUpdateErrorEvent","ModelAfterUpdateEvent","UpdateModelUseCase","UseCaseAbstraction","GetModelUseCase","EventPublisher","UpdateModelRepository","AccessControl","TenantContext"],"mappings":";;;;;;;;;;;AAkCA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA2C,EAC3CC,aAAsC,EACtCC,aAAsC,CAChD;aALUJ,eAAe,GAAfA;aACAC,cAAc,GAAdA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QACFC,OAAe,EACfC,KAA0B,EACyB;QAEnD,MAAMC,YAAY,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAE,KAAK;QAAI;QACrE,IAAI,CAACA,WACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAI3B,MAAMC,YAAY,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAACL;QACrD,IAAIK,UAAU,MAAM,IAChB,OAAOA;QAGX,MAAMC,WAAWC,gBAAgBF,UAAU,KAAK;QAGhD,MAAMG,mBAAmB,MAAMC,8BAA8B,cAAc,CAACR;QAC5E,IAAI,CAACO,iBAAiB,OAAO,EAAE;YAC3B,MAAME,WAAWC,eAAeH,iBAAiB,KAAK;YACtD,OAAOL,OAAO,IAAI,CACd,IAAIS,qBAAqB;gBACrB,SAASF,SAAS,OAAO;gBACzB,MAAMA,SAAS,IAAI;YACvB;QAER;QAEA,MAAMG,OAAOC,sBAAsBN,iBAAiB,IAAI;QAGxD,IAAIO,AAA6B,MAA7BA,OAAO,IAAI,CAACF,MAAM,MAAM,EACxB,OAAOV,OAAO,EAAE,CAACG;QAIrB,MAAMU,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAE3C,MAAMC,QAAkB;YACpB,GAAGX,QAAQ;YACX,GAAGO,IAAI;YACP,MAAMA,KAAK,IAAI,IAAIP,SAAS,IAAI;YAEhC,cACIO,AAAsBK,WAAtBL,KAAK,YAAY,GACXP,SAAS,YAAY,GACpBO,KAAK,YAAY;YAC5B,oBACIA,AAA4BK,WAA5BL,KAAK,kBAAkB,GACjBP,SAAS,kBAAkB,GAC3BO,KAAK,kBAAkB;YACjC,cACIA,AAAsBK,WAAtBL,KAAK,YAAY,GAAiBP,SAAS,YAAY,GAAGO,KAAK,YAAY;YAC/E,aAAaA,KAAK,WAAW,IAAIP,SAAS,WAAW;YACrD,QAAQA,SAAS,MAAM,IAAIU,OAAO,EAAE;YACpC,SAAS,IAAIG,OAAO,WAAW;QACnC;QAGA,MAAMC,iBAAiB,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;YAAEH;YAAO,KAAK;QAAI;QACjF,IAAI,CAACG,gBACD,OAAOjB,OAAO,IAAI,CAACC,wBAAwB,SAAS,CAACa;QAIzDA,MAAM,IAAI,GAAGI,cAAcJ;QAG3B,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIK,uBAAuB;YAAEL;YAAOX;YAAU,OAAOO;QAAK;QAI9D,MAAMU,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACN,OAAOX;QACpD,IAAIiB,OAAO,MAAM,IAAI;YAEjB,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAC7B,IAAIC,sBAAsB;gBACtB,OAAOX;gBACPI;gBACAX;gBACA,OAAOiB,OAAO,KAAK;YACvB;YAEJ,OAAOpB,OAAO,IAAI,CAACoB,OAAO,KAAK;QACnC;QAGA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAIE,sBAAsB;YAAER;YAAOX;QAAS;QAE9E,OAAOH,OAAO,EAAE,CAACc;IACrB;AACJ;AAEO,MAAMS,wCAAqBC,mBAAAA,oBAAuC,CAAC;IACtE,gBAAgBjC;IAChB,cAAc;QACVkC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -32,7 +32,7 @@ export declare namespace UpdateModelUseCase {
32
32
  * UpdateModelRepository - Validates domain rules and persists model updates.
33
33
  */
34
34
  export interface IUpdateModelRepository {
35
- execute(model: CmsModel, original: CmsModel): Promise<Result<CmsModel, RepositoryError>>;
35
+ execute(model: CmsModel, original: CmsModel): Promise<Result<void, RepositoryError>>;
36
36
  }
37
37
  export interface IUpdateModelRepositoryErrors {
38
38
  alreadyExists: ModelSlugTakenError;
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModel/UpdateModel/abstractions.js","sources":["../../../../src/features/contentModel/UpdateModel/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { CmsModelUpdateInput } from \"~/types/index.js\";\nimport {\n type ModelSlugTakenError,\n ModelNotAuthorizedError,\n type ModelNotFoundError,\n type ModelValidationError,\n type ModelPersistenceError,\n ModelCannotUpdateCodeModelError\n} from \"~/domain/contentModel/errors.js\";\nimport {\n type GroupNotFoundError,\n type GroupNotAuthorizedError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * UpdateModel Use Case\n */\nexport interface IUpdateModelUseCase {\n execute(modelId: string, input: CmsModelUpdateInput): Promise<Result<CmsModel, UseCaseError>>;\n}\n\nexport interface IUpdateModelUseCaseErrors {\n notFound: ModelNotFoundError;\n notAuthorized: ModelNotAuthorizedError;\n validation: ModelValidationError;\n alreadyExists: ModelSlugTakenError;\n persistence: ModelPersistenceError;\n updateCodeModel: ModelCannotUpdateCodeModelError;\n groupNotFound: GroupNotFoundError;\n groupNotAccessible: GroupNotAuthorizedError;\n}\n\ntype UseCaseError = IUpdateModelUseCaseErrors[keyof IUpdateModelUseCaseErrors];\n\n/** Update a content model. */\nexport const UpdateModelUseCase = createAbstraction<IUpdateModelUseCase>(\"UpdateModelUseCase\");\n\nexport namespace UpdateModelUseCase {\n export type Interface = IUpdateModelUseCase;\n export type Input = CmsModelUpdateInput;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<CmsModel, UseCaseError>>;\n}\n\n/**\n * UpdateModelRepository - Validates domain rules and persists model updates.\n */\nexport interface IUpdateModelRepository {\n execute(model: CmsModel, original: CmsModel): Promise<Result<CmsModel, RepositoryError>>;\n}\n\nexport interface IUpdateModelRepositoryErrors {\n alreadyExists: ModelSlugTakenError;\n validation: ModelValidationError;\n persistence: ModelPersistenceError;\n updateCodeModel: ModelCannotUpdateCodeModelError;\n}\n\ntype RepositoryError = IUpdateModelRepositoryErrors[keyof IUpdateModelRepositoryErrors];\n\nexport const UpdateModelRepository =\n createAbstraction<IUpdateModelRepository>(\"UpdateModelRepository\");\n\nexport namespace UpdateModelRepository {\n export type Interface = IUpdateModelRepository;\n export type Error = RepositoryError;\n}\n"],"names":["UpdateModelUseCase","createAbstraction","UpdateModelRepository"],"mappings":";AAsCO,MAAMA,qBAAqBC,kBAAuC;AA0BlE,MAAMC,wBACTD,kBAA0C"}
1
+ {"version":3,"file":"features/contentModel/UpdateModel/abstractions.js","sources":["../../../../src/features/contentModel/UpdateModel/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { CmsModelUpdateInput } from \"~/types/index.js\";\nimport {\n type ModelSlugTakenError,\n ModelNotAuthorizedError,\n type ModelNotFoundError,\n type ModelValidationError,\n type ModelPersistenceError,\n ModelCannotUpdateCodeModelError\n} from \"~/domain/contentModel/errors.js\";\nimport {\n type GroupNotFoundError,\n type GroupNotAuthorizedError\n} from \"~/domain/contentModelGroup/errors.js\";\n\n/**\n * UpdateModel Use Case\n */\nexport interface IUpdateModelUseCase {\n execute(modelId: string, input: CmsModelUpdateInput): Promise<Result<CmsModel, UseCaseError>>;\n}\n\nexport interface IUpdateModelUseCaseErrors {\n notFound: ModelNotFoundError;\n notAuthorized: ModelNotAuthorizedError;\n validation: ModelValidationError;\n alreadyExists: ModelSlugTakenError;\n persistence: ModelPersistenceError;\n updateCodeModel: ModelCannotUpdateCodeModelError;\n groupNotFound: GroupNotFoundError;\n groupNotAccessible: GroupNotAuthorizedError;\n}\n\ntype UseCaseError = IUpdateModelUseCaseErrors[keyof IUpdateModelUseCaseErrors];\n\n/** Update a content model. */\nexport const UpdateModelUseCase = createAbstraction<IUpdateModelUseCase>(\"UpdateModelUseCase\");\n\nexport namespace UpdateModelUseCase {\n export type Interface = IUpdateModelUseCase;\n export type Input = CmsModelUpdateInput;\n\n export type Error = UseCaseError;\n export type Return = Promise<Result<CmsModel, UseCaseError>>;\n}\n\n/**\n * UpdateModelRepository - Validates domain rules and persists model updates.\n */\nexport interface IUpdateModelRepository {\n execute(model: CmsModel, original: CmsModel): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IUpdateModelRepositoryErrors {\n alreadyExists: ModelSlugTakenError;\n validation: ModelValidationError;\n persistence: ModelPersistenceError;\n updateCodeModel: ModelCannotUpdateCodeModelError;\n}\n\ntype RepositoryError = IUpdateModelRepositoryErrors[keyof IUpdateModelRepositoryErrors];\n\nexport const UpdateModelRepository =\n createAbstraction<IUpdateModelRepository>(\"UpdateModelRepository\");\n\nexport namespace UpdateModelRepository {\n export type Interface = IUpdateModelRepository;\n export type Error = RepositoryError;\n}\n"],"names":["UpdateModelUseCase","createAbstraction","UpdateModelRepository"],"mappings":";AAsCO,MAAMA,qBAAqBC,kBAAuC;AA0BlE,MAAMC,wBACTD,kBAA0C"}
@@ -0,0 +1,16 @@
1
+ import { type IValuesSelectionGenerator } from "./abstractions.js";
2
+ import { ModelToAstConverter } from "../ModelToAstConverter/abstractions.js";
3
+ import type { CmsModel } from "../../../types/index.js";
4
+ declare class ValuesSelectionGeneratorImpl implements IValuesSelectionGenerator {
5
+ private readonly modelToAst;
6
+ constructor(modelToAst: ModelToAstConverter.Interface);
7
+ generate(model: CmsModel): string;
8
+ private walkRoot;
9
+ private walkNode;
10
+ private walkFieldNode;
11
+ private walkCollectionNode;
12
+ }
13
+ export declare const ValuesSelectionGenerator: typeof ValuesSelectionGeneratorImpl & {
14
+ __abstraction: import("@webiny/di").Abstraction<IValuesSelectionGenerator>;
15
+ };
16
+ export {};
@@ -0,0 +1,53 @@
1
+ import { ValuesSelectionGenerator } from "./abstractions.js";
2
+ import { ModelToAstConverter } from "../ModelToAstConverter/abstractions.js";
3
+ import { createTypeName } from "../../../utils/createTypeName.js";
4
+ const REF_SELECTION = "{ id modelId }";
5
+ const ASSET_SELECTION = "{ id src url name type size image { width height crop { top left bottom right } focalPoint { x y } alt caption } document { pages } video { autoplay poster } }";
6
+ class ValuesSelectionGeneratorImpl {
7
+ constructor(modelToAst){
8
+ this.modelToAst = modelToAst;
9
+ }
10
+ generate(model) {
11
+ const ast = this.modelToAst.toAst(model);
12
+ const selection = this.walkRoot(ast, model.singularApiName);
13
+ return selection || "_empty";
14
+ }
15
+ walkRoot(ast, typePrefix) {
16
+ return ast.children.map((node)=>this.walkNode(node, typePrefix)).filter(Boolean).join("\n");
17
+ }
18
+ walkNode(node, typePrefix) {
19
+ if ("field" === node.type) return this.walkFieldNode(node, typePrefix);
20
+ if ("collection" === node.type) return this.walkCollectionNode(node, typePrefix);
21
+ return null;
22
+ }
23
+ walkFieldNode(node, typePrefix) {
24
+ const { field, children } = node;
25
+ if ("ref" === field.type) return `${field.fieldId} ${REF_SELECTION}`;
26
+ if ("asset" === field.type) return `${field.fieldId} ${ASSET_SELECTION}`;
27
+ if (0 === children.length) {
28
+ if ("object" === field.type || "dynamicZone" === field.type) return null;
29
+ return field.fieldId;
30
+ }
31
+ const nestedPrefix = `${typePrefix}_${createTypeName(field.fieldId)}`;
32
+ const childSelection = children.map((child)=>this.walkNode(child, nestedPrefix)).filter(Boolean).join("\n");
33
+ if (!childSelection) return null;
34
+ return `${field.fieldId} { ${childSelection} }`;
35
+ }
36
+ walkCollectionNode(node, typePrefix) {
37
+ const { collection, children } = node;
38
+ const gqlTypeName = collection.gqlTypeName;
39
+ if (!gqlTypeName) return null;
40
+ const templateType = `${typePrefix}_${gqlTypeName}`;
41
+ const childSelection = children.map((child)=>this.walkNode(child, templateType)).filter(Boolean).join("\n");
42
+ return `...on ${templateType} { ${childSelection} _templateId __typename }`;
43
+ }
44
+ }
45
+ const ValuesSelectionGenerator_ValuesSelectionGenerator = ValuesSelectionGenerator.createImplementation({
46
+ implementation: ValuesSelectionGeneratorImpl,
47
+ dependencies: [
48
+ ModelToAstConverter
49
+ ]
50
+ });
51
+ export { ValuesSelectionGenerator_ValuesSelectionGenerator as ValuesSelectionGenerator };
52
+
53
+ //# sourceMappingURL=ValuesSelectionGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js","sources":["../../../../src/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.ts"],"sourcesContent":["import {\n ValuesSelectionGenerator as Abstraction,\n type IValuesSelectionGenerator\n} from \"./abstractions.js\";\nimport { ModelToAstConverter } from \"../ModelToAstConverter/abstractions.js\";\nimport type {\n CmsModel,\n CmsModelAst,\n CmsModelFieldAstNode,\n CmsModelFieldAstNodeCollection,\n CmsModelFieldAstNodeField\n} from \"~/types/index.js\";\nimport { createTypeName } from \"~/utils/createTypeName.js\";\n\nconst REF_SELECTION = \"{ id modelId }\";\n\nconst ASSET_SELECTION = [\n \"{ id src url name type size\",\n \"image { width height crop { top left bottom right } focalPoint { x y } alt caption }\",\n \"document { pages }\",\n \"video { autoplay poster } }\"\n].join(\" \");\n\nclass ValuesSelectionGeneratorImpl implements IValuesSelectionGenerator {\n constructor(private readonly modelToAst: ModelToAstConverter.Interface) {}\n\n generate(model: CmsModel): string {\n const ast = this.modelToAst.toAst(model);\n const selection = this.walkRoot(ast, model.singularApiName);\n return selection || \"_empty\";\n }\n\n private walkRoot(ast: CmsModelAst, typePrefix: string): string {\n return ast.children\n .map(node => this.walkNode(node, typePrefix))\n .filter(Boolean)\n .join(\"\\n\");\n }\n\n private walkNode(node: CmsModelFieldAstNode, typePrefix: string): string | null {\n if (node.type === \"field\") {\n return this.walkFieldNode(node, typePrefix);\n }\n if (node.type === \"collection\") {\n return this.walkCollectionNode(node, typePrefix);\n }\n return null;\n }\n\n private walkFieldNode(node: CmsModelFieldAstNodeField, typePrefix: string): string | null {\n const { field, children } = node;\n\n if (field.type === \"ref\") {\n return `${field.fieldId} ${REF_SELECTION}`;\n }\n\n if (field.type === \"asset\") {\n return `${field.fieldId} ${ASSET_SELECTION}`;\n }\n\n if (children.length === 0) {\n if (field.type === \"object\" || field.type === \"dynamicZone\") {\n return null;\n }\n return field.fieldId;\n }\n\n const nestedPrefix = `${typePrefix}_${createTypeName(field.fieldId)}`;\n const childSelection = children\n .map(child => this.walkNode(child, nestedPrefix))\n .filter(Boolean)\n .join(\"\\n\");\n\n if (!childSelection) {\n return null;\n }\n\n return `${field.fieldId} { ${childSelection} }`;\n }\n\n private walkCollectionNode(\n node: CmsModelFieldAstNodeCollection,\n typePrefix: string\n ): string | null {\n const { collection, children } = node;\n const gqlTypeName = collection.gqlTypeName;\n\n if (!gqlTypeName) {\n return null;\n }\n\n const templateType = `${typePrefix}_${gqlTypeName}`;\n const childSelection = children\n .map(child => this.walkNode(child, templateType))\n .filter(Boolean)\n .join(\"\\n\");\n\n return `...on ${templateType} { ${childSelection} _templateId __typename }`;\n }\n}\n\nexport const ValuesSelectionGenerator = Abstraction.createImplementation({\n implementation: ValuesSelectionGeneratorImpl,\n dependencies: [ModelToAstConverter]\n});\n"],"names":["REF_SELECTION","ASSET_SELECTION","ValuesSelectionGeneratorImpl","modelToAst","model","ast","selection","typePrefix","node","Boolean","field","children","nestedPrefix","createTypeName","childSelection","child","collection","gqlTypeName","templateType","ValuesSelectionGenerator","Abstraction","ModelToAstConverter"],"mappings":";;;AAcA,MAAMA,gBAAgB;AAEtB,MAAMC,kBAAkB;AAOxB,MAAMC;IACF,YAA6BC,UAAyC,CAAE;aAA3CA,UAAU,GAAVA;IAA4C;IAEzE,SAASC,KAAe,EAAU;QAC9B,MAAMC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAACD;QAClC,MAAME,YAAY,IAAI,CAAC,QAAQ,CAACD,KAAKD,MAAM,eAAe;QAC1D,OAAOE,aAAa;IACxB;IAEQ,SAASD,GAAgB,EAAEE,UAAkB,EAAU;QAC3D,OAAOF,IAAI,QAAQ,CACd,GAAG,CAACG,CAAAA,OAAQ,IAAI,CAAC,QAAQ,CAACA,MAAMD,aAChC,MAAM,CAACE,SACP,IAAI,CAAC;IACd;IAEQ,SAASD,IAA0B,EAAED,UAAkB,EAAiB;QAC5E,IAAIC,AAAc,YAAdA,KAAK,IAAI,EACT,OAAO,IAAI,CAAC,aAAa,CAACA,MAAMD;QAEpC,IAAIC,AAAc,iBAAdA,KAAK,IAAI,EACT,OAAO,IAAI,CAAC,kBAAkB,CAACA,MAAMD;QAEzC,OAAO;IACX;IAEQ,cAAcC,IAA+B,EAAED,UAAkB,EAAiB;QACtF,MAAM,EAAEG,KAAK,EAAEC,QAAQ,EAAE,GAAGH;QAE5B,IAAIE,AAAe,UAAfA,MAAM,IAAI,EACV,OAAO,GAAGA,MAAM,OAAO,CAAC,CAAC,EAAEV,eAAe;QAG9C,IAAIU,AAAe,YAAfA,MAAM,IAAI,EACV,OAAO,GAAGA,MAAM,OAAO,CAAC,CAAC,EAAET,iBAAiB;QAGhD,IAAIU,AAAoB,MAApBA,SAAS,MAAM,EAAQ;YACvB,IAAID,AAAe,aAAfA,MAAM,IAAI,IAAiBA,AAAe,kBAAfA,MAAM,IAAI,EACrC,OAAO;YAEX,OAAOA,MAAM,OAAO;QACxB;QAEA,MAAME,eAAe,GAAGL,WAAW,CAAC,EAAEM,eAAeH,MAAM,OAAO,GAAG;QACrE,MAAMI,iBAAiBH,SAClB,GAAG,CAACI,CAAAA,QAAS,IAAI,CAAC,QAAQ,CAACA,OAAOH,eAClC,MAAM,CAACH,SACP,IAAI,CAAC;QAEV,IAAI,CAACK,gBACD,OAAO;QAGX,OAAO,GAAGJ,MAAM,OAAO,CAAC,GAAG,EAAEI,eAAe,EAAE,CAAC;IACnD;IAEQ,mBACJN,IAAoC,EACpCD,UAAkB,EACL;QACb,MAAM,EAAES,UAAU,EAAEL,QAAQ,EAAE,GAAGH;QACjC,MAAMS,cAAcD,WAAW,WAAW;QAE1C,IAAI,CAACC,aACD,OAAO;QAGX,MAAMC,eAAe,GAAGX,WAAW,CAAC,EAAEU,aAAa;QACnD,MAAMH,iBAAiBH,SAClB,GAAG,CAACI,CAAAA,QAAS,IAAI,CAAC,QAAQ,CAACA,OAAOG,eAClC,MAAM,CAACT,SACP,IAAI,CAAC;QAEV,OAAO,CAAC,MAAM,EAAES,aAAa,GAAG,EAAEJ,eAAe,yBAAyB,CAAC;IAC/E;AACJ;AAEO,MAAMK,oDAA2BC,yBAAAA,oBAAgC,CAAC;IACrE,gBAAgBlB;IAChB,cAAc;QAACmB;KAAoB;AACvC"}
@@ -0,0 +1,8 @@
1
+ import type { CmsModel } from "../../../types/index.js";
2
+ export interface IValuesSelectionGenerator {
3
+ generate(model: CmsModel): string;
4
+ }
5
+ export declare const ValuesSelectionGenerator: import("@webiny/di").Abstraction<IValuesSelectionGenerator>;
6
+ export declare namespace ValuesSelectionGenerator {
7
+ type Interface = IValuesSelectionGenerator;
8
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const ValuesSelectionGenerator = createAbstraction("ValuesSelectionGenerator");
3
+ export { ValuesSelectionGenerator };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/contentModel/ValuesSelectionGenerator/abstractions.js","sources":["../../../../src/features/contentModel/ValuesSelectionGenerator/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\n\nexport interface IValuesSelectionGenerator {\n generate(model: CmsModel): string;\n}\n\nexport const ValuesSelectionGenerator = createAbstraction<IValuesSelectionGenerator>(\n \"ValuesSelectionGenerator\"\n);\n\nexport namespace ValuesSelectionGenerator {\n export type Interface = IValuesSelectionGenerator;\n}\n"],"names":["ValuesSelectionGenerator","createAbstraction"],"mappings":";AAOO,MAAMA,2BAA2BC,kBACpC"}
@@ -0,0 +1,4 @@
1
+ export declare const ValuesSelectionGeneratorFeature: {
2
+ name: string;
3
+ register(container: import("@webiny/di").Container): void;
4
+ };
@@ -0,0 +1,11 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { ValuesSelectionGenerator } from "./ValuesSelectionGenerator.js";
3
+ const ValuesSelectionGeneratorFeature = createFeature({
4
+ name: "ValuesSelectionGenerator",
5
+ register (container) {
6
+ container.register(ValuesSelectionGenerator);
7
+ }
8
+ });
9
+ export { ValuesSelectionGeneratorFeature };
10
+
11
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/contentModel/ValuesSelectionGenerator/feature.js","sources":["../../../../src/features/contentModel/ValuesSelectionGenerator/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { ValuesSelectionGenerator } from \"./ValuesSelectionGenerator.js\";\n\nexport const ValuesSelectionGeneratorFeature = createFeature({\n name: \"ValuesSelectionGenerator\",\n register(container) {\n container.register(ValuesSelectionGenerator);\n }\n});\n"],"names":["ValuesSelectionGeneratorFeature","createFeature","container","ValuesSelectionGenerator"],"mappings":";;AAGO,MAAMA,kCAAkCC,cAAc;IACzD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
@@ -0,0 +1 @@
1
+ export * from "./abstractions.js";
@@ -0,0 +1 @@
1
+ export * from "./abstractions.js";
@@ -1,7 +1,7 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { ModelCache, ModelsFetcher as FetcherAbstraction } from "../../../features/contentModel/shared/abstractions.js";
3
3
  import { PluginModelsProvider } from "../../../features/contentModel/shared/abstractions.js";
4
- import { StorageOperations } from "../../../features/shared/abstractions.js";
4
+ import { ListModelsStorageOperation } from "../../../features/shared/storageOperations/model/ListModelsStorageOperation.js";
5
5
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
6
6
  import type { CmsModel } from "../../../types/index.js";
7
7
  import { ModelFieldCompression } from "../../../features/contentModel/ModelFieldCompression/index.js";
@@ -17,10 +17,10 @@ import { ModelFieldCompression } from "../../../features/contentModel/ModelField
17
17
  declare class ModelsFetcherImpl implements FetcherAbstraction.Interface {
18
18
  private readonly modelCache;
19
19
  private readonly pluginModelsProvider;
20
- private readonly storageOperations;
20
+ private readonly listModels;
21
21
  private readonly tenantContext;
22
22
  private readonly modelFieldCompression;
23
- constructor(modelCache: ModelCache.Interface, pluginModelsProvider: PluginModelsProvider.Interface, storageOperations: StorageOperations.Interface, tenantContext: TenantContext.Interface, modelFieldCompression: ModelFieldCompression.Interface);
23
+ constructor(modelCache: ModelCache.Interface, pluginModelsProvider: PluginModelsProvider.Interface, listModels: ListModelsStorageOperation.Interface, tenantContext: TenantContext.Interface, modelFieldCompression: ModelFieldCompression.Interface);
24
24
  fetchAll(): Promise<Result<CmsModel[], FetcherAbstraction.Error>>;
25
25
  fetchById(modelId: string): Promise<Result<CmsModel, FetcherAbstraction.Error>>;
26
26
  private fetchAndMergeModels;
@@ -1,16 +1,16 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import { ModelCache, ModelsFetcher, PluginModelsProvider } from "./abstractions.js";
3
- import { StorageOperations } from "../../shared/abstractions.js";
3
+ import { ListModelsStorageOperation } from "../../shared/storageOperations/model/ListModelsStorageOperation.js";
4
4
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
5
5
  import { ModelNotFoundError, ModelPersistenceError } from "../../../domain/contentModel/errors.js";
6
6
  import { createCacheKey } from "../../../utils/index.js";
7
7
  import { ensureTypeTag } from "../../../domain/contentModel/ensureTypeTag.js";
8
8
  import { ModelFieldCompression } from "../ModelFieldCompression/index.js";
9
9
  class ModelsFetcherImpl {
10
- constructor(modelCache, pluginModelsProvider, storageOperations, tenantContext, modelFieldCompression){
10
+ constructor(modelCache, pluginModelsProvider, listModels, tenantContext, modelFieldCompression){
11
11
  this.modelCache = modelCache;
12
12
  this.pluginModelsProvider = pluginModelsProvider;
13
- this.storageOperations = storageOperations;
13
+ this.listModels = listModels;
14
14
  this.tenantContext = tenantContext;
15
15
  this.modelFieldCompression = modelFieldCompression;
16
16
  }
@@ -46,7 +46,7 @@ class ModelsFetcherImpl {
46
46
  id: "storage"
47
47
  });
48
48
  const databaseModels = await this.modelCache.getOrSet(dbCacheKey, async ()=>{
49
- const models = await this.storageOperations.models.list({
49
+ const models = await this.listModels.execute({
50
50
  where: {
51
51
  tenant
52
52
  }
@@ -71,7 +71,7 @@ const ModelsFetcher_ModelsFetcher = ModelsFetcher.createImplementation({
71
71
  dependencies: [
72
72
  ModelCache,
73
73
  PluginModelsProvider,
74
- StorageOperations,
74
+ ListModelsStorageOperation,
75
75
  TenantContext,
76
76
  ModelFieldCompression
77
77
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModel/shared/ModelsFetcher.js","sources":["../../../../src/features/contentModel/shared/ModelsFetcher.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n ModelCache,\n ModelsFetcher as FetcherAbstraction\n} from \"~/features/contentModel/shared/abstractions.js\";\nimport { PluginModelsProvider } from \"~/features/contentModel/shared/abstractions.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\nimport { createCacheKey } from \"~/utils/index.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ModelFieldCompression } from \"~/features/contentModel/ModelFieldCompression/index.js\";\n\n/**\n * ModelsFetcherImpl - Implementation with multi-level caching.\n *\n * Caching strategy:\n * 1. Plugin models are cached per tenant (with access control applied by PluginModelsProvider)\n * 2. Database models are cached per tenant (raw from DB)\n * 3. Filtered database models are cached per tenant + identity (with access control applied)\n * 4. Final merged list is cached per tenant + identity\n */\nclass ModelsFetcherImpl implements FetcherAbstraction.Interface {\n public constructor(\n private readonly modelCache: ModelCache.Interface,\n private readonly pluginModelsProvider: PluginModelsProvider.Interface,\n private readonly storageOperations: StorageOperations.Interface,\n private readonly tenantContext: TenantContext.Interface,\n private readonly modelFieldCompression: ModelFieldCompression.Interface\n ) {}\n\n async fetchAll(): Promise<Result<CmsModel[], FetcherAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // Create a cache key based on tenant + identity\n const cacheKey = createCacheKey({\n tenant: tenant.id\n });\n\n // Try to get from cache first\n const cached = await this.modelCache.getOrSet(cacheKey, async () => {\n // Fetch plugin models (with caching and access control)\n const pluginModels = await this.pluginModelsProvider.list(tenant.id);\n\n const databaseModels = await this.fetchAndMergeModels(tenant.id);\n\n return [...pluginModels, ...databaseModels];\n });\n\n return Result.ok(cached);\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n\n async fetchById(modelId: string): Promise<Result<CmsModel, FetcherAbstraction.Error>> {\n const result = await this.fetchAll();\n if (result.isFail()) {\n return Result.fail(new ModelPersistenceError(result.error));\n }\n\n const model = result.value.find(m => m.modelId === modelId);\n if (!model) {\n return Result.fail(new ModelNotFoundError(modelId));\n }\n\n return Result.ok(model);\n }\n\n private async fetchAndMergeModels(tenant: string): Promise<CmsModel[]> {\n // 1. Fetch database models (with caching)\n const dbCacheKey = createCacheKey({ tenant, id: \"storage\" });\n const databaseModels = await this.modelCache.getOrSet(dbCacheKey, async () => {\n const models = await this.storageOperations.models.list({ where: { tenant } });\n\n return Promise.all(\n models.map(async model => {\n const fields = await this.modelFieldCompression.decompress(model.fields);\n\n return {\n ...model,\n fields\n };\n })\n );\n });\n\n // 2. Ensure type tags on database models\n const taggedDatabaseModels = databaseModels.map(model => {\n model.tags = ensureTypeTag(model);\n return model;\n });\n\n // 3. Return merged models.\n return taggedDatabaseModels;\n }\n}\n\nexport const ModelsFetcher = FetcherAbstraction.createImplementation({\n implementation: ModelsFetcherImpl,\n dependencies: [\n ModelCache,\n PluginModelsProvider,\n StorageOperations,\n TenantContext,\n ModelFieldCompression\n ]\n});\n"],"names":["ModelsFetcherImpl","modelCache","pluginModelsProvider","storageOperations","tenantContext","modelFieldCompression","tenant","cacheKey","createCacheKey","cached","pluginModels","databaseModels","Result","error","ModelPersistenceError","modelId","result","model","m","ModelNotFoundError","dbCacheKey","models","Promise","fields","taggedDatabaseModels","ensureTypeTag","ModelsFetcher","FetcherAbstraction","ModelCache","PluginModelsProvider","StorageOperations","TenantContext","ModelFieldCompression"],"mappings":";;;;;;;;AAuBA,MAAMA;IACF,YACqBC,UAAgC,EAChCC,oBAAoD,EACpDC,iBAA8C,EAC9CC,aAAsC,EACtCC,qBAAsD,CACzE;aALmBJ,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,iBAAiB,GAAjBA;aACAC,aAAa,GAAbA;aACAC,qBAAqB,GAArBA;IAClB;IAEH,MAAM,WAAkE;QACpE,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,MAAMC,WAAWC,eAAe;gBAC5B,QAAQF,OAAO,EAAE;YACrB;YAGA,MAAMG,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACF,UAAU;gBAEpD,MAAMG,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAACJ,OAAO,EAAE;gBAEnE,MAAMK,iBAAiB,MAAM,IAAI,CAAC,mBAAmB,CAACL,OAAO,EAAE;gBAE/D,OAAO;uBAAII;uBAAiBC;iBAAe;YAC/C;YAEA,OAAOC,OAAO,EAAE,CAACH;QACrB,EAAE,OAAOI,OAAO;YACZ,OAAOD,OAAO,IAAI,CAAC,IAAIE,sBAAsBD;QACjD;IACJ;IAEA,MAAM,UAAUE,OAAe,EAAuD;QAClF,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ;QAClC,IAAIA,OAAO,MAAM,IACb,OAAOJ,OAAO,IAAI,CAAC,IAAIE,sBAAsBE,OAAO,KAAK;QAG7D,MAAMC,QAAQD,OAAO,KAAK,CAAC,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKH;QACnD,IAAI,CAACE,OACD,OAAOL,OAAO,IAAI,CAAC,IAAIO,mBAAmBJ;QAG9C,OAAOH,OAAO,EAAE,CAACK;IACrB;IAEA,MAAc,oBAAoBX,MAAc,EAAuB;QAEnE,MAAMc,aAAaZ,eAAe;YAAEF;YAAQ,IAAI;QAAU;QAC1D,MAAMK,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACS,YAAY;YAC9D,MAAMC,SAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO;oBAAEf;gBAAO;YAAE;YAE5E,OAAOgB,QAAQ,GAAG,CACdD,OAAO,GAAG,CAAC,OAAMJ;gBACb,MAAMM,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAACN,MAAM,MAAM;gBAEvE,OAAO;oBACH,GAAGA,KAAK;oBACRM;gBACJ;YACJ;QAER;QAGA,MAAMC,uBAAuBb,eAAe,GAAG,CAACM,CAAAA;YAC5CA,MAAM,IAAI,GAAGQ,cAAcR;YAC3B,OAAOA;QACX;QAGA,OAAOO;IACX;AACJ;AAEO,MAAME,8BAAgBC,cAAAA,oBAAuC,CAAC;IACjE,gBAAgB3B;IAChB,cAAc;QACV4B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
1
+ {"version":3,"file":"features/contentModel/shared/ModelsFetcher.js","sources":["../../../../src/features/contentModel/shared/ModelsFetcher.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n ModelCache,\n ModelsFetcher as FetcherAbstraction\n} from \"~/features/contentModel/shared/abstractions.js\";\nimport { PluginModelsProvider } from \"~/features/contentModel/shared/abstractions.js\";\nimport { ListModelsStorageOperation } from \"~/features/shared/storageOperations/model/ListModelsStorageOperation.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\nimport { createCacheKey } from \"~/utils/index.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ModelFieldCompression } from \"~/features/contentModel/ModelFieldCompression/index.js\";\n\n/**\n * ModelsFetcherImpl - Implementation with multi-level caching.\n *\n * Caching strategy:\n * 1. Plugin models are cached per tenant (with access control applied by PluginModelsProvider)\n * 2. Database models are cached per tenant (raw from DB)\n * 3. Filtered database models are cached per tenant + identity (with access control applied)\n * 4. Final merged list is cached per tenant + identity\n */\nclass ModelsFetcherImpl implements FetcherAbstraction.Interface {\n public constructor(\n private readonly modelCache: ModelCache.Interface,\n private readonly pluginModelsProvider: PluginModelsProvider.Interface,\n private readonly listModels: ListModelsStorageOperation.Interface,\n private readonly tenantContext: TenantContext.Interface,\n private readonly modelFieldCompression: ModelFieldCompression.Interface\n ) {}\n\n async fetchAll(): Promise<Result<CmsModel[], FetcherAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // Create a cache key based on tenant + identity\n const cacheKey = createCacheKey({\n tenant: tenant.id\n });\n\n // Try to get from cache first\n const cached = await this.modelCache.getOrSet(cacheKey, async () => {\n // Fetch plugin models (with caching and access control)\n const pluginModels = await this.pluginModelsProvider.list(tenant.id);\n\n const databaseModels = await this.fetchAndMergeModels(tenant.id);\n\n return [...pluginModels, ...databaseModels];\n });\n\n return Result.ok(cached);\n } catch (error) {\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n\n async fetchById(modelId: string): Promise<Result<CmsModel, FetcherAbstraction.Error>> {\n const result = await this.fetchAll();\n if (result.isFail()) {\n return Result.fail(new ModelPersistenceError(result.error));\n }\n\n const model = result.value.find(m => m.modelId === modelId);\n if (!model) {\n return Result.fail(new ModelNotFoundError(modelId));\n }\n\n return Result.ok(model);\n }\n\n private async fetchAndMergeModels(tenant: string): Promise<CmsModel[]> {\n // 1. Fetch database models (with caching)\n const dbCacheKey = createCacheKey({ tenant, id: \"storage\" });\n const databaseModels = await this.modelCache.getOrSet(dbCacheKey, async () => {\n const models = await this.listModels.execute({ where: { tenant } });\n\n return Promise.all(\n models.map(async model => {\n const fields = await this.modelFieldCompression.decompress(model.fields);\n\n return {\n ...model,\n fields\n };\n })\n );\n });\n\n // 2. Ensure type tags on database models\n const taggedDatabaseModels = databaseModels.map(model => {\n model.tags = ensureTypeTag(model);\n return model;\n });\n\n // 3. Return merged models.\n return taggedDatabaseModels;\n }\n}\n\nexport const ModelsFetcher = FetcherAbstraction.createImplementation({\n implementation: ModelsFetcherImpl,\n dependencies: [\n ModelCache,\n PluginModelsProvider,\n ListModelsStorageOperation,\n TenantContext,\n ModelFieldCompression\n ]\n});\n"],"names":["ModelsFetcherImpl","modelCache","pluginModelsProvider","listModels","tenantContext","modelFieldCompression","tenant","cacheKey","createCacheKey","cached","pluginModels","databaseModels","Result","error","ModelPersistenceError","modelId","result","model","m","ModelNotFoundError","dbCacheKey","models","Promise","fields","taggedDatabaseModels","ensureTypeTag","ModelsFetcher","FetcherAbstraction","ModelCache","PluginModelsProvider","ListModelsStorageOperation","TenantContext","ModelFieldCompression"],"mappings":";;;;;;;;AAuBA,MAAMA;IACF,YACqBC,UAAgC,EAChCC,oBAAoD,EACpDC,UAAgD,EAChDC,aAAsC,EACtCC,qBAAsD,CACzE;aALmBJ,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,qBAAqB,GAArBA;IAClB;IAEH,MAAM,WAAkE;QACpE,IAAI;YACA,MAAMC,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;YAG3C,MAAMC,WAAWC,eAAe;gBAC5B,QAAQF,OAAO,EAAE;YACrB;YAGA,MAAMG,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACF,UAAU;gBAEpD,MAAMG,eAAe,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAACJ,OAAO,EAAE;gBAEnE,MAAMK,iBAAiB,MAAM,IAAI,CAAC,mBAAmB,CAACL,OAAO,EAAE;gBAE/D,OAAO;uBAAII;uBAAiBC;iBAAe;YAC/C;YAEA,OAAOC,OAAO,EAAE,CAACH;QACrB,EAAE,OAAOI,OAAO;YACZ,OAAOD,OAAO,IAAI,CAAC,IAAIE,sBAAsBD;QACjD;IACJ;IAEA,MAAM,UAAUE,OAAe,EAAuD;QAClF,MAAMC,SAAS,MAAM,IAAI,CAAC,QAAQ;QAClC,IAAIA,OAAO,MAAM,IACb,OAAOJ,OAAO,IAAI,CAAC,IAAIE,sBAAsBE,OAAO,KAAK;QAG7D,MAAMC,QAAQD,OAAO,KAAK,CAAC,IAAI,CAACE,CAAAA,IAAKA,EAAE,OAAO,KAAKH;QACnD,IAAI,CAACE,OACD,OAAOL,OAAO,IAAI,CAAC,IAAIO,mBAAmBJ;QAG9C,OAAOH,OAAO,EAAE,CAACK;IACrB;IAEA,MAAc,oBAAoBX,MAAc,EAAuB;QAEnE,MAAMc,aAAaZ,eAAe;YAAEF;YAAQ,IAAI;QAAU;QAC1D,MAAMK,iBAAiB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAACS,YAAY;YAC9D,MAAMC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,OAAO;oBAAEf;gBAAO;YAAE;YAEjE,OAAOgB,QAAQ,GAAG,CACdD,OAAO,GAAG,CAAC,OAAMJ;gBACb,MAAMM,SAAS,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAACN,MAAM,MAAM;gBAEvE,OAAO;oBACH,GAAGA,KAAK;oBACRM;gBACJ;YACJ;QAER;QAGA,MAAMC,uBAAuBb,eAAe,GAAG,CAACM,CAAAA;YAC5CA,MAAM,IAAI,GAAGQ,cAAcR;YAC3B,OAAOA;QACX;QAGA,OAAOO;IACX;AACJ;AAEO,MAAME,8BAAgBC,cAAAA,oBAAuC,CAAC;IACjE,gBAAgB3B;IAChB,cAAc;QACV4B;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,17 +1,18 @@
1
- import { AccessControl, CmsContext } from "../../../features/shared/abstractions.js";
1
+ import { AccessControl } from "../../../features/shared/abstractions.js";
2
2
  import { PluginModelsProvider as ProviderAbstraction } from "./abstractions.js";
3
3
  import type { CmsModel } from "../../../types/index.js";
4
+ import type { CmsModelPlugin } from "../../../plugins/CmsModelPlugin.js";
4
5
  import { type IModelsProvider } from "../../../features/modelBuilder/models/abstractions.js";
5
6
  /**
6
7
  * PluginModelsProvider implementation that fetches models from:
7
- * 1. Legacy CmsModelPlugin instances
8
+ * 1. Legacy CmsModelPlugin instances (resolved from the DI container)
8
9
  * 2. New ModelBuilder providers (public and private)
9
10
  */
10
11
  declare class PluginModelsProviderImpl implements ProviderAbstraction.Interface {
11
- private cmsContext;
12
+ private modelPlugins;
12
13
  private accessControl;
13
14
  private modelsProvider;
14
- constructor(cmsContext: CmsContext.Interface, accessControl: AccessControl.Interface, modelsProvider: IModelsProvider);
15
+ constructor(modelPlugins: CmsModelPlugin[], accessControl: AccessControl.Interface, modelsProvider: IModelsProvider);
15
16
  list(tenant: string): Promise<CmsModel[]>;
16
17
  private ensureTypeTag;
17
18
  }
@@ -1,17 +1,15 @@
1
- import { AccessControl, CmsContext } from "../../shared/abstractions.js";
2
- import { PluginModelsProvider } from "./abstractions.js";
3
- import { CmsModelPlugin } from "../../../plugins/CmsModelPlugin.js";
1
+ import { AccessControl } from "../../shared/abstractions.js";
2
+ import { CmsModelPluginInstance, PluginModelsProvider } from "./abstractions.js";
4
3
  import { filterAsync } from "../../../utils/filterAsync.js";
5
4
  import { ModelsProvider } from "../../modelBuilder/models/abstractions.js";
6
5
  class PluginModelsProviderImpl {
7
- constructor(cmsContext, accessControl, modelsProvider){
8
- this.cmsContext = cmsContext;
6
+ constructor(modelPlugins, accessControl, modelsProvider){
7
+ this.modelPlugins = modelPlugins;
9
8
  this.accessControl = accessControl;
10
9
  this.modelsProvider = modelsProvider;
11
10
  }
12
11
  async list(tenant) {
13
- const modelPlugins = this.cmsContext.plugins.byType(CmsModelPlugin.type);
14
- const legacyModels = modelPlugins.filter((plugin)=>{
12
+ const legacyModels = this.modelPlugins.filter((plugin)=>{
15
13
  const { tenant: modelTenant } = plugin.contentModel;
16
14
  if (modelTenant && modelTenant !== tenant) return false;
17
15
  return true;
@@ -38,7 +36,12 @@ class PluginModelsProviderImpl {
38
36
  const PluginModelsProvider_PluginModelsProvider = PluginModelsProvider.createImplementation({
39
37
  implementation: PluginModelsProviderImpl,
40
38
  dependencies: [
41
- CmsContext,
39
+ [
40
+ CmsModelPluginInstance,
41
+ {
42
+ multiple: true
43
+ }
44
+ ],
42
45
  AccessControl,
43
46
  ModelsProvider
44
47
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModel/shared/PluginModelsProvider.js","sources":["../../../../src/features/contentModel/shared/PluginModelsProvider.ts"],"sourcesContent":["import { AccessControl, CmsContext } from \"~/features/shared/abstractions.js\";\nimport { PluginModelsProvider as ProviderAbstraction } from \"./abstractions.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin.js\";\nimport { filterAsync } from \"~/utils/filterAsync.js\";\nimport {\n ModelsProvider,\n type IModelsProvider\n} from \"~/features/modelBuilder/models/abstractions.js\";\n\n/**\n * PluginModelsProvider implementation that fetches models from:\n * 1. Legacy CmsModelPlugin instances\n * 2. New ModelBuilder providers (public and private)\n */\nclass PluginModelsProviderImpl implements ProviderAbstraction.Interface {\n public constructor(\n private cmsContext: CmsContext.Interface,\n private accessControl: AccessControl.Interface,\n private modelsProvider: IModelsProvider\n ) {}\n\n async list(tenant: string): Promise<CmsModel[]> {\n // Get models from legacy plugins\n const modelPlugins = this.cmsContext.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n\n const legacyModels = modelPlugins\n .filter(plugin => {\n const { tenant: modelTenant } = plugin.contentModel;\n // Filter by tenant if specified in plugin\n if (modelTenant && modelTenant !== tenant) {\n return false;\n }\n\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: this.ensureTypeTag(plugin.contentModel),\n tenant\n };\n }) as unknown as CmsModel[];\n\n const allowedLegacyModels = await filterAsync(legacyModels, model => {\n return this.accessControl.canAccessModel({ model });\n });\n\n // Get models from new builder providers. These already have access control applied.\n const builderModels = await this.modelsProvider.list(tenant);\n\n // Combine both sources\n return [...allowedLegacyModels, ...builderModels];\n }\n\n private ensureTypeTag(model: Pick<CmsModel, \"tags\">) {\n // Let's make sure we have a `type` tag assigned.\n // If `type` tag is not set, set it to a default one (`model`).\n const tags = model.tags || [];\n if (!tags.some(tag => tag.startsWith(\"type:\"))) {\n tags.push(\"type:model\");\n }\n\n return tags;\n }\n}\n\nexport const PluginModelsProvider = ProviderAbstraction.createImplementation({\n implementation: PluginModelsProviderImpl,\n dependencies: [CmsContext, AccessControl, ModelsProvider]\n});\n"],"names":["PluginModelsProviderImpl","cmsContext","accessControl","modelsProvider","tenant","modelPlugins","CmsModelPlugin","legacyModels","plugin","modelTenant","allowedLegacyModels","filterAsync","model","builderModels","tags","tag","PluginModelsProvider","ProviderAbstraction","CmsContext","AccessControl","ModelsProvider"],"mappings":";;;;;AAeA,MAAMA;IACF,YACYC,UAAgC,EAChCC,aAAsC,EACtCC,cAA+B,CACzC;aAHUF,UAAU,GAAVA;aACAC,aAAa,GAAbA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,KAAKC,MAAc,EAAuB;QAE5C,MAAMC,eAAe,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAiBC,eAAe,IAAI;QAEvF,MAAMC,eAAeF,aAChB,MAAM,CAACG,CAAAA;YACJ,MAAM,EAAE,QAAQC,WAAW,EAAE,GAAGD,OAAO,YAAY;YAEnD,IAAIC,eAAeA,gBAAgBL,QAC/B,OAAO;YAGX,OAAO;QACX,GACC,GAAG,CAACI,CAAAA,SACM;gBACH,GAAGA,OAAO,YAAY;gBACtB,MAAM,IAAI,CAAC,aAAa,CAACA,OAAO,YAAY;gBAC5CJ;YACJ;QAGR,MAAMM,sBAAsB,MAAMC,YAAYJ,cAAcK,CAAAA,QACjD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAAEA;YAAM;QAIrD,MAAMC,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAACT;QAGrD,OAAO;eAAIM;eAAwBG;SAAc;IACrD;IAEQ,cAAcD,KAA6B,EAAE;QAGjD,MAAME,OAAOF,MAAM,IAAI,IAAI,EAAE;QAC7B,IAAI,CAACE,KAAK,IAAI,CAACC,CAAAA,MAAOA,IAAI,UAAU,CAAC,WACjCD,KAAK,IAAI,CAAC;QAGd,OAAOA;IACX;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAAwC,CAAC;IACzE,gBAAgBjB;IAChB,cAAc;QAACkB;QAAYC;QAAeC;KAAe;AAC7D"}
1
+ {"version":3,"file":"features/contentModel/shared/PluginModelsProvider.js","sources":["../../../../src/features/contentModel/shared/PluginModelsProvider.ts"],"sourcesContent":["import { AccessControl } from \"~/features/shared/abstractions.js\";\nimport {\n CmsModelPluginInstance,\n PluginModelsProvider as ProviderAbstraction\n} from \"./abstractions.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { CmsModelPlugin } from \"~/plugins/CmsModelPlugin.js\";\nimport { filterAsync } from \"~/utils/filterAsync.js\";\nimport {\n ModelsProvider,\n type IModelsProvider\n} from \"~/features/modelBuilder/models/abstractions.js\";\n\n/**\n * PluginModelsProvider implementation that fetches models from:\n * 1. Legacy CmsModelPlugin instances (resolved from the DI container)\n * 2. New ModelBuilder providers (public and private)\n */\nclass PluginModelsProviderImpl implements ProviderAbstraction.Interface {\n public constructor(\n private modelPlugins: CmsModelPlugin[],\n private accessControl: AccessControl.Interface,\n private modelsProvider: IModelsProvider\n ) {}\n\n async list(tenant: string): Promise<CmsModel[]> {\n // Get models from code-defined plugins\n const legacyModels = this.modelPlugins\n .filter(plugin => {\n const { tenant: modelTenant } = plugin.contentModel;\n // Filter by tenant if specified in plugin\n if (modelTenant && modelTenant !== tenant) {\n return false;\n }\n\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: this.ensureTypeTag(plugin.contentModel),\n tenant\n };\n }) as unknown as CmsModel[];\n\n const allowedLegacyModels = await filterAsync(legacyModels, model => {\n return this.accessControl.canAccessModel({ model });\n });\n\n // Get models from new builder providers. These already have access control applied.\n const builderModels = await this.modelsProvider.list(tenant);\n\n // Combine both sources\n return [...allowedLegacyModels, ...builderModels];\n }\n\n private ensureTypeTag(model: Pick<CmsModel, \"tags\">) {\n // Let's make sure we have a `type` tag assigned.\n // If `type` tag is not set, set it to a default one (`model`).\n const tags = model.tags || [];\n if (!tags.some(tag => tag.startsWith(\"type:\"))) {\n tags.push(\"type:model\");\n }\n\n return tags;\n }\n}\n\nexport const PluginModelsProvider = ProviderAbstraction.createImplementation({\n implementation: PluginModelsProviderImpl,\n dependencies: [[CmsModelPluginInstance, { multiple: true }], AccessControl, ModelsProvider]\n});\n"],"names":["PluginModelsProviderImpl","modelPlugins","accessControl","modelsProvider","tenant","legacyModels","plugin","modelTenant","allowedLegacyModels","filterAsync","model","builderModels","tags","tag","PluginModelsProvider","ProviderAbstraction","CmsModelPluginInstance","AccessControl","ModelsProvider"],"mappings":";;;;AAkBA,MAAMA;IACF,YACYC,YAA8B,EAC9BC,aAAsC,EACtCC,cAA+B,CACzC;aAHUF,YAAY,GAAZA;aACAC,aAAa,GAAbA;aACAC,cAAc,GAAdA;IACT;IAEH,MAAM,KAAKC,MAAc,EAAuB;QAE5C,MAAMC,eAAe,IAAI,CAAC,YAAY,CACjC,MAAM,CAACC,CAAAA;YACJ,MAAM,EAAE,QAAQC,WAAW,EAAE,GAAGD,OAAO,YAAY;YAEnD,IAAIC,eAAeA,gBAAgBH,QAC/B,OAAO;YAGX,OAAO;QACX,GACC,GAAG,CAACE,CAAAA,SACM;gBACH,GAAGA,OAAO,YAAY;gBACtB,MAAM,IAAI,CAAC,aAAa,CAACA,OAAO,YAAY;gBAC5CF;YACJ;QAGR,MAAMI,sBAAsB,MAAMC,YAAYJ,cAAcK,CAAAA,QACjD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBAAEA;YAAM;QAIrD,MAAMC,gBAAgB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAACP;QAGrD,OAAO;eAAII;eAAwBG;SAAc;IACrD;IAEQ,cAAcD,KAA6B,EAAE;QAGjD,MAAME,OAAOF,MAAM,IAAI,IAAI,EAAE;QAC7B,IAAI,CAACE,KAAK,IAAI,CAACC,CAAAA,MAAOA,IAAI,UAAU,CAAC,WACjCD,KAAK,IAAI,CAAC;QAGd,OAAOA;IACX;AACJ;AAEO,MAAME,4CAAuBC,qBAAAA,oBAAwC,CAAC;IACzE,gBAAgBf;IAChB,cAAc;QAAC;YAACgB;YAAwB;gBAAE,UAAU;YAAK;SAAE;QAAEC;QAAeC;KAAe;AAC/F"}
@@ -1,7 +1,17 @@
1
1
  import { Result } from "@webiny/feature/api";
2
2
  import type { CmsModel } from "../../../types/index.js";
3
3
  import type { ICache } from "../../../utils/caching/types.js";
4
+ import type { CmsModelPlugin } from "../../../plugins/CmsModelPlugin.js";
4
5
  import { ModelNotFoundError, ModelPersistenceError } from "../../../domain/contentModel/errors.js";
6
+ /**
7
+ * Multi-instance DI token holding the code-defined CmsModelPlugin instances
8
+ * (previously read from the plugins container via byType). PluginModelsProvider
9
+ * resolves all of these to expose plugin-defined models.
10
+ */
11
+ export declare const CmsModelPluginInstance: import("@webiny/di").Abstraction<CmsModelPlugin>;
12
+ export declare namespace CmsModelPluginInstance {
13
+ type Interface = CmsModelPlugin;
14
+ }
5
15
  /**
6
16
  * PluginModelsProvider provides access to plugin-defined (code) models.
7
17
  */
@@ -1,7 +1,8 @@
1
1
  import { createAbstraction } from "@webiny/feature/api";
2
+ const CmsModelPluginInstance = createAbstraction("CmsModelPluginInstance");
2
3
  const PluginModelsProvider = createAbstraction("PluginModelsProvider");
3
4
  const ModelCache = createAbstraction("ModelCache");
4
5
  const ModelsFetcher = createAbstraction("ModelsFetcher");
5
- export { ModelCache, ModelsFetcher, PluginModelsProvider };
6
+ export { CmsModelPluginInstance, ModelCache, ModelsFetcher, PluginModelsProvider };
6
7
 
7
8
  //# sourceMappingURL=abstractions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features/contentModel/shared/abstractions.js","sources":["../../../../src/features/contentModel/shared/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { ICache } from \"~/utils/caching/types.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\n\n/**\n * PluginModelsProvider provides access to plugin-defined (code) models.\n */\nexport interface IPluginModelsProvider {\n list(tenant: string): Promise<CmsModel[]>;\n}\n\nexport const PluginModelsProvider =\n createAbstraction<IPluginModelsProvider>(\"PluginModelsProvider\");\n\nexport namespace PluginModelsProvider {\n export type Interface = IPluginModelsProvider;\n}\n\nexport const ModelCache = createAbstraction<ICache<Promise<CmsModel[]>>>(\"ModelCache\");\n\nexport namespace ModelCache {\n export type Interface = ICache<Promise<CmsModel[]>>;\n}\n\n/**\n * ModelsFetcher - Centralized model fetching with caching.\n *\n * This abstraction handles fetching models from both plugins and database,\n * applies access control filtering, and caches the results for optimal performance.\n */\nexport interface IModelsFetcher {\n /**\n * Fetch all accessible models for the current tenant and identity.\n * Results are cached based on tenant + identity.\n */\n fetchAll(): Promise<Result<CmsModel[], ModelsFetcherError>>;\n\n /**\n * Fetch a single model by modelId.\n * Uses the cached fetchAll result.\n */\n fetchById(modelId: string): Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n\nexport interface IModelsFetcherErrors {\n notFound: ModelNotFoundError;\n persistence: ModelPersistenceError;\n}\n\ntype ModelsFetcherError = IModelsFetcherErrors[keyof IModelsFetcherErrors];\n\nexport const ModelsFetcher = createAbstraction<IModelsFetcher>(\"ModelsFetcher\");\n\nexport namespace ModelsFetcher {\n export type Interface = IModelsFetcher;\n export type Error = ModelsFetcherError;\n\n export type FetchAllReturn = Promise<Result<CmsModel[], ModelsFetcherError>>;\n export type FetchByIdReturn = Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n"],"names":["PluginModelsProvider","createAbstraction","ModelCache","ModelsFetcher"],"mappings":";AAYO,MAAMA,uBACTC,kBAAyC;AAMtC,MAAMC,aAAaD,kBAA+C;AAiClE,MAAME,gBAAgBF,kBAAkC"}
1
+ {"version":3,"file":"features/contentModel/shared/abstractions.js","sources":["../../../../src/features/contentModel/shared/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport type { ICache } from \"~/utils/caching/types.js\";\nimport type { CmsModelPlugin } from \"~/plugins/CmsModelPlugin.js\";\nimport { ModelNotFoundError, ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\n\n/**\n * Multi-instance DI token holding the code-defined CmsModelPlugin instances\n * (previously read from the plugins container via byType). PluginModelsProvider\n * resolves all of these to expose plugin-defined models.\n */\nexport const CmsModelPluginInstance = createAbstraction<CmsModelPlugin>(\"CmsModelPluginInstance\");\n\nexport namespace CmsModelPluginInstance {\n export type Interface = CmsModelPlugin;\n}\n\n/**\n * PluginModelsProvider provides access to plugin-defined (code) models.\n */\nexport interface IPluginModelsProvider {\n list(tenant: string): Promise<CmsModel[]>;\n}\n\nexport const PluginModelsProvider =\n createAbstraction<IPluginModelsProvider>(\"PluginModelsProvider\");\n\nexport namespace PluginModelsProvider {\n export type Interface = IPluginModelsProvider;\n}\n\nexport const ModelCache = createAbstraction<ICache<Promise<CmsModel[]>>>(\"ModelCache\");\n\nexport namespace ModelCache {\n export type Interface = ICache<Promise<CmsModel[]>>;\n}\n\n/**\n * ModelsFetcher - Centralized model fetching with caching.\n *\n * This abstraction handles fetching models from both plugins and database,\n * applies access control filtering, and caches the results for optimal performance.\n */\nexport interface IModelsFetcher {\n /**\n * Fetch all accessible models for the current tenant and identity.\n * Results are cached based on tenant + identity.\n */\n fetchAll(): Promise<Result<CmsModel[], ModelsFetcherError>>;\n\n /**\n * Fetch a single model by modelId.\n * Uses the cached fetchAll result.\n */\n fetchById(modelId: string): Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n\nexport interface IModelsFetcherErrors {\n notFound: ModelNotFoundError;\n persistence: ModelPersistenceError;\n}\n\ntype ModelsFetcherError = IModelsFetcherErrors[keyof IModelsFetcherErrors];\n\nexport const ModelsFetcher = createAbstraction<IModelsFetcher>(\"ModelsFetcher\");\n\nexport namespace ModelsFetcher {\n export type Interface = IModelsFetcher;\n export type Error = ModelsFetcherError;\n\n export type FetchAllReturn = Promise<Result<CmsModel[], ModelsFetcherError>>;\n export type FetchByIdReturn = Promise<Result<CmsModel, ModelsFetcherError>>;\n}\n"],"names":["CmsModelPluginInstance","createAbstraction","PluginModelsProvider","ModelCache","ModelsFetcher"],"mappings":";AAWO,MAAMA,yBAAyBC,kBAAkC;AAajE,MAAMC,uBACTD,kBAAyC;AAMtC,MAAME,aAAaF,kBAA+C;AAiClE,MAAMG,gBAAgBH,kBAAkC"}
@@ -2,10 +2,11 @@ import { Result } from "@webiny/feature/api";
2
2
  import { CreateGroupRepository as RepositoryAbstraction } from "./abstractions.js";
3
3
  import { GroupCache } from "../../../features/contentModelGroup/shared/abstractions.js";
4
4
  import { PluginGroupsProvider } from "../../../features/contentModelGroup/shared/abstractions.js";
5
- import { StorageOperations } from "../../../features/shared/abstractions.js";
5
+ import { ListGroupsStorageOperation } from "../../../features/shared/storageOperations/group/ListGroupsStorageOperation.js";
6
+ import { CreateGroupStorageOperation } from "../../../features/shared/storageOperations/group/CreateGroupStorageOperation.js";
6
7
  import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
8
+ import { StringFormatter } from "@webiny/api-core/features/stringFormatter/index.js";
7
9
  import type { CmsGroup } from "../../../types/index.js";
8
- import { RuntimeTenant } from "../../../features/runtimeTenant/abstractions.js";
9
10
  /**
10
11
  * CreateGroupRepository - Validates and persists a new group.
11
12
  *
@@ -19,12 +20,15 @@ import { RuntimeTenant } from "../../../features/runtimeTenant/abstractions.js";
19
20
  declare class CreateGroupRepositoryImpl implements RepositoryAbstraction.Interface {
20
21
  private groupCache;
21
22
  private pluginGroupsProvider;
22
- private storageOperations;
23
+ private listGroups;
24
+ private createGroup;
23
25
  private tenantContext;
24
- private runtimeTenant;
25
- constructor(groupCache: GroupCache.Interface, pluginGroupsProvider: PluginGroupsProvider.Interface, storageOperations: StorageOperations.Interface, tenantContext: TenantContext.Interface, runtimeTenant: RuntimeTenant.Interface);
26
- execute(initialGroup: CmsGroup): Promise<Result<CmsGroup, RepositoryAbstraction.Error>>;
26
+ private stringFormatter;
27
+ constructor(groupCache: GroupCache.Interface, pluginGroupsProvider: PluginGroupsProvider.Interface, listGroups: ListGroupsStorageOperation.Interface, createGroup: CreateGroupStorageOperation.Interface, tenantContext: TenantContext.Interface, stringFormatter: StringFormatter.Interface);
28
+ execute(group: CmsGroup): Promise<Result<void, RepositoryAbstraction.Error>>;
27
29
  private isSlugTaken;
28
30
  }
29
- export declare const CreateGroupRepository: import("@webiny/di").Implementation<typeof CreateGroupRepositoryImpl>;
31
+ export declare const CreateGroupRepository: typeof CreateGroupRepositoryImpl & {
32
+ __abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateGroupRepository>;
33
+ };
30
34
  export {};