@webiny/api-headless-cms 6.4.5 → 6.6.0-alpha.0

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 (666) 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 +192 -0
  9. package/HeadlessCmsFeature.js.map +1 -0
  10. package/createCmsRoute.d.ts +21 -0
  11. package/createCmsRoute.js +49 -0
  12. package/createCmsRoute.js.map +1 -0
  13. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  14. package/crud/contentEntry/entryDataValidation.js +2 -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.crud.js +8 -6
  22. package/crud/contentModel.crud.js.map +1 -1
  23. package/crud/contentModelGroup.crud.js +7 -5
  24. package/crud/contentModelGroup.crud.js.map +1 -1
  25. package/domain/contentModel/schemas.d.ts +6 -6
  26. package/domain/contentModel/schemas.js +1 -1
  27. package/domain/contentModel/schemas.js.map +1 -1
  28. package/domain/contentModel/validation/modelFields.js +21 -15
  29. package/domain/contentModel/validation/modelFields.js.map +1 -1
  30. package/export/abstractions.d.ts +9 -0
  31. package/export/abstractions.js +6 -0
  32. package/export/abstractions.js.map +1 -0
  33. package/export/crud/exporting.js +8 -2
  34. package/export/crud/exporting.js.map +1 -1
  35. package/export/crud/importing.js +13 -4
  36. package/export/crud/importing.js.map +1 -1
  37. package/export/crud/imports/importGroups.js +23 -23
  38. package/export/crud/imports/importGroups.js.map +1 -1
  39. package/export/crud/imports/importModels.js +25 -22
  40. package/export/crud/imports/importModels.js.map +1 -1
  41. package/export/graphql/index.d.ts +2 -3
  42. package/export/graphql/index.js +6 -10
  43. package/export/graphql/index.js.map +1 -1
  44. package/exports/api/cms/storage.d.ts +0 -1
  45. package/exports/api/cms/storage.js +0 -1
  46. package/features/contentEntry/CreateEntry/CreateEntryRepository.d.ts +6 -4
  47. package/features/contentEntry/CreateEntry/CreateEntryRepository.js +7 -8
  48. package/features/contentEntry/CreateEntry/CreateEntryRepository.js.map +1 -1
  49. package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -1
  50. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +2 -3
  51. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
  52. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.d.ts +6 -4
  53. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js +7 -8
  54. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromRepository.js.map +1 -1
  55. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -1
  56. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +2 -3
  57. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
  58. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.d.ts +6 -4
  59. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js +7 -8
  60. package/features/contentEntry/DeleteEntry/DeleteEntryRepository.js.map +1 -1
  61. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +3 -1
  62. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +2 -3
  63. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
  64. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.d.ts +6 -4
  65. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js +7 -8
  66. package/features/contentEntry/DeleteEntry/MoveEntryToBinRepository.js.map +1 -1
  67. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +3 -1
  68. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -3
  69. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
  70. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.d.ts +3 -3
  71. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js +5 -5
  72. package/features/contentEntry/DeleteEntry/decorators/ForceDeleteDecorator.js.map +1 -1
  73. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.d.ts +6 -4
  74. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js +7 -8
  75. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionRepository.js.map +1 -1
  76. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +3 -1
  77. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +2 -3
  78. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
  79. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.d.ts +6 -4
  80. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js +7 -8
  81. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesRepository.js.map +1 -1
  82. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +3 -1
  83. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +2 -3
  84. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
  85. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.d.ts +6 -4
  86. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js +7 -8
  87. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsRepository.js.map +1 -1
  88. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.d.ts +3 -1
  89. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js +2 -3
  90. package/features/contentEntry/GetEntriesByIds/GetEntriesByIdsUseCase.js.map +1 -1
  91. package/features/contentEntry/GetEntry/GetEntryUseCase.d.ts +3 -1
  92. package/features/contentEntry/GetEntry/GetEntryUseCase.js +2 -3
  93. package/features/contentEntry/GetEntry/GetEntryUseCase.js.map +1 -1
  94. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.d.ts +3 -1
  95. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js +2 -3
  96. package/features/contentEntry/GetEntryById/GetEntryByIdUseCase.js.map +1 -1
  97. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.d.ts +6 -4
  98. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js +7 -8
  99. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsRepository.js.map +1 -1
  100. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.d.ts +3 -1
  101. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js +2 -3
  102. package/features/contentEntry/GetLatestEntriesByIds/GetLatestEntriesByIdsUseCase.js.map +1 -1
  103. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.d.ts +3 -1
  104. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js +2 -3
  105. package/features/contentEntry/GetLatestRevisionByEntryId/BaseUseCase.js.map +1 -1
  106. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.d.ts +6 -4
  107. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js +7 -8
  108. package/features/contentEntry/GetLatestRevisionByEntryId/GetLatestRevisionByEntryIdRepository.js.map +1 -1
  109. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.d.ts +3 -1
  110. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js +2 -3
  111. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestDeletedRevisionByEntryIdUseCase.js.map +1 -1
  112. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.d.ts +3 -1
  113. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js +1 -3
  114. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdIncludingDeletedUseCase.js.map +1 -1
  115. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.d.ts +3 -1
  116. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js +2 -3
  117. package/features/contentEntry/GetLatestRevisionByEntryId/variations/GetLatestRevisionByEntryIdUseCase.js.map +1 -1
  118. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.d.ts +3 -1
  119. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js +2 -3
  120. package/features/contentEntry/GetPreviousRevisionByEntryId/BaseUseCase.js.map +1 -1
  121. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.d.ts +6 -4
  122. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js +7 -8
  123. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdRepository.js.map +1 -1
  124. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.d.ts +3 -1
  125. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js +2 -3
  126. package/features/contentEntry/GetPreviousRevisionByEntryId/GetPreviousRevisionByEntryIdUseCase.js.map +1 -1
  127. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.d.ts +6 -4
  128. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js +7 -8
  129. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsRepository.js.map +1 -1
  130. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.d.ts +3 -1
  131. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js +2 -3
  132. package/features/contentEntry/GetPublishedEntriesByIds/GetPublishedEntriesByIdsUseCase.js.map +1 -1
  133. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.d.ts +6 -4
  134. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js +7 -8
  135. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdRepository.js.map +1 -1
  136. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.d.ts +3 -1
  137. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js +2 -3
  138. package/features/contentEntry/GetPublishedRevisionByEntryId/GetPublishedRevisionByEntryIdUseCase.js.map +1 -1
  139. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.d.ts +6 -4
  140. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js +7 -8
  141. package/features/contentEntry/GetRevisionById/GetRevisionByIdRepository.js.map +1 -1
  142. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.d.ts +3 -1
  143. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js +1 -3
  144. package/features/contentEntry/GetRevisionById/GetRevisionByIdUseCase.js.map +1 -1
  145. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.d.ts +6 -4
  146. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js +7 -8
  147. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdRepository.js.map +1 -1
  148. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.d.ts +3 -1
  149. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js +2 -3
  150. package/features/contentEntry/GetRevisionsByEntryId/GetRevisionsByEntryIdUseCase.js.map +1 -1
  151. package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js +1 -3
  152. package/features/contentEntry/GetSingletonEntry/GetSingletonEntryUseCase.js.map +1 -1
  153. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.d.ts +6 -4
  154. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js +7 -8
  155. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesRepository.js.map +1 -1
  156. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +6 -2
  157. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +8 -6
  158. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  159. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.d.ts +3 -1
  160. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js +1 -3
  161. package/features/contentEntry/ListEntries/ListDeletedEntriesUseCase.js.map +1 -1
  162. package/features/contentEntry/ListEntries/ListEntriesRepository.d.ts +6 -4
  163. package/features/contentEntry/ListEntries/ListEntriesRepository.js +7 -8
  164. package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
  165. package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +3 -1
  166. package/features/contentEntry/ListEntries/ListEntriesUseCase.js +2 -3
  167. package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
  168. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.d.ts +3 -1
  169. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js +1 -3
  170. package/features/contentEntry/ListEntries/ListLatestEntriesUseCase.js.map +1 -1
  171. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.d.ts +3 -1
  172. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js +1 -3
  173. package/features/contentEntry/ListEntries/ListPublishedEntriesUseCase.js.map +1 -1
  174. package/features/contentEntry/MoveEntry/MoveEntryRepository.d.ts +6 -4
  175. package/features/contentEntry/MoveEntry/MoveEntryRepository.js +7 -8
  176. package/features/contentEntry/MoveEntry/MoveEntryRepository.js.map +1 -1
  177. package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +3 -1
  178. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +2 -3
  179. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
  180. package/features/contentEntry/PublishEntry/PublishEntryRepository.d.ts +6 -4
  181. package/features/contentEntry/PublishEntry/PublishEntryRepository.js +7 -8
  182. package/features/contentEntry/PublishEntry/PublishEntryRepository.js.map +1 -1
  183. package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +3 -1
  184. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -3
  185. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
  186. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.d.ts +8 -4
  187. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js +11 -9
  188. package/features/contentEntry/RepublishEntry/RepublishEntryRepository.js.map +1 -1
  189. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +3 -1
  190. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -3
  191. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
  192. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.d.ts +6 -4
  193. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js +7 -8
  194. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinRepository.js.map +1 -1
  195. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +3 -1
  196. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -3
  197. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
  198. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.d.ts +6 -4
  199. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js +7 -8
  200. package/features/contentEntry/UnpublishEntry/UnpublishEntryRepository.js.map +1 -1
  201. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +3 -1
  202. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -3
  203. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
  204. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.d.ts +6 -4
  205. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js +7 -8
  206. package/features/contentEntry/UpdateEntry/UpdateEntryRepository.js.map +1 -1
  207. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -1
  208. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +2 -3
  209. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
  210. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +3 -1
  211. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +2 -3
  212. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -1
  213. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.d.ts +3 -1
  214. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js +2 -3
  215. package/features/contentEntry/ValidateEntry/ValidateEntryUseCase.js.map +1 -1
  216. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.d.ts +3 -1
  217. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js +2 -4
  218. package/features/contentEntry/entryDataFactories/CreateEntryDataFactory/CreateEntryDataFactory.js.map +1 -1
  219. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.d.ts +4 -4
  220. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js +4 -8
  221. package/features/contentEntry/entryDataFactories/CreateEntryRevisionFromDataFactory/CreateEntryRevisionFromDataFactory.js.map +1 -1
  222. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.d.ts +3 -1
  223. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js +1 -3
  224. package/features/contentEntry/entryDataFactories/CreatePublishEntryDataFactory/CreatePublishEntryDataFactory.js.map +1 -1
  225. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.d.ts +3 -1
  226. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js +1 -3
  227. package/features/contentEntry/entryDataFactories/CreateRepublishEntryDataFactory/CreateRepublishEntryDataFactory.js.map +1 -1
  228. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.d.ts +3 -1
  229. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js +1 -3
  230. package/features/contentEntry/entryDataFactories/CreateUnpublishEntryDataFactory/CreateUnpublishEntryDataFactory.js.map +1 -1
  231. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.d.ts +3 -1
  232. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js +2 -4
  233. package/features/contentEntry/entryDataFactories/UpdateEntryDataFactory/UpdateEntryDataFactory.js.map +1 -1
  234. package/features/contentModel/ContentModelFeature.js +2 -0
  235. package/features/contentModel/ContentModelFeature.js.map +1 -1
  236. package/features/contentModel/CreateModel/CreateModelRepository.d.ts +4 -3
  237. package/features/contentModel/CreateModel/CreateModelRepository.js +6 -5
  238. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  239. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +4 -3
  240. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +6 -5
  241. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  242. package/features/contentModel/DeleteModel/DeleteModelRepository.d.ts +3 -3
  243. package/features/contentModel/DeleteModel/DeleteModelRepository.js +5 -5
  244. package/features/contentModel/DeleteModel/DeleteModelRepository.js.map +1 -1
  245. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.d.ts +1 -0
  246. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js +11 -8
  247. package/features/contentModel/DeleteModel/DeleteModelWithEntryCleanup.js.map +1 -1
  248. package/features/contentModel/UpdateModel/UpdateModelRepository.d.ts +6 -3
  249. package/features/contentModel/UpdateModel/UpdateModelRepository.js +11 -7
  250. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  251. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.d.ts +16 -0
  252. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js +51 -0
  253. package/features/contentModel/ValuesSelectionGenerator/ValuesSelectionGenerator.js.map +1 -0
  254. package/features/contentModel/ValuesSelectionGenerator/abstractions.d.ts +8 -0
  255. package/features/contentModel/ValuesSelectionGenerator/abstractions.js +5 -0
  256. package/features/contentModel/ValuesSelectionGenerator/abstractions.js.map +1 -0
  257. package/features/contentModel/ValuesSelectionGenerator/feature.d.ts +4 -0
  258. package/features/contentModel/ValuesSelectionGenerator/feature.js +11 -0
  259. package/features/contentModel/ValuesSelectionGenerator/feature.js.map +1 -0
  260. package/features/contentModel/ValuesSelectionGenerator/index.d.ts +1 -0
  261. package/features/contentModel/ValuesSelectionGenerator/index.js +1 -0
  262. package/features/contentModel/shared/ModelsFetcher.d.ts +3 -3
  263. package/features/contentModel/shared/ModelsFetcher.js +5 -5
  264. package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
  265. package/features/contentModel/shared/PluginModelsProvider.d.ts +5 -4
  266. package/features/contentModel/shared/PluginModelsProvider.js +11 -8
  267. package/features/contentModel/shared/PluginModelsProvider.js.map +1 -1
  268. package/features/contentModel/shared/abstractions.d.ts +10 -0
  269. package/features/contentModel/shared/abstractions.js +2 -1
  270. package/features/contentModel/shared/abstractions.js.map +1 -1
  271. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +8 -4
  272. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +13 -11
  273. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
  274. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +3 -1
  275. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +2 -3
  276. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
  277. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.d.ts +8 -4
  278. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js +11 -9
  279. package/features/contentModelGroup/DeleteGroup/DeleteGroupRepository.js.map +1 -1
  280. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +3 -1
  281. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +2 -3
  282. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
  283. package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +6 -4
  284. package/features/contentModelGroup/GetGroup/GetGroupRepository.js +9 -9
  285. package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
  286. package/features/contentModelGroup/GetGroup/GetGroupUseCase.d.ts +3 -1
  287. package/features/contentModelGroup/GetGroup/GetGroupUseCase.js +2 -3
  288. package/features/contentModelGroup/GetGroup/GetGroupUseCase.js.map +1 -1
  289. package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +6 -4
  290. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +9 -9
  291. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
  292. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.d.ts +3 -1
  293. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js +2 -3
  294. package/features/contentModelGroup/ListGroups/ListGroupsUseCase.js.map +1 -1
  295. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.d.ts +6 -4
  296. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js +7 -8
  297. package/features/contentModelGroup/UpdateGroup/UpdateGroupRepository.js.map +1 -1
  298. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +3 -1
  299. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +2 -3
  300. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
  301. package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +6 -4
  302. package/features/contentModelGroup/shared/PluginGroupsProvider.js +13 -11
  303. package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
  304. package/features/contentModelGroup/shared/abstractions.d.ts +10 -0
  305. package/features/contentModelGroup/shared/abstractions.js +2 -1
  306. package/features/contentModelGroup/shared/abstractions.js.map +1 -1
  307. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +2 -2
  308. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -1
  309. package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -1
  310. package/features/graphql/fields/base/RefToGraphQL.d.ts +1 -1
  311. package/features/graphql/fields/base/RefToGraphQL.js +3 -1
  312. package/features/graphql/fields/base/RefToGraphQL.js.map +1 -1
  313. package/features/graphql/fields/base/richText/richTextResolver.d.ts +1 -1
  314. package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -1
  315. package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +1 -3
  316. package/features/modelBuilder/fields/BaseFieldBuilder.js +0 -4
  317. package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -1
  318. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +12 -18
  319. package/features/modelBuilder/fields/DataFieldBuilder.js +1 -2
  320. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -1
  321. package/features/modelBuilder/fields/DynamicZoneFieldType.js +3 -8
  322. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  323. package/features/modelBuilder/fields/TextFieldType.d.ts +3 -1
  324. package/features/modelBuilder/fields/TextFieldType.js +1 -3
  325. package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
  326. package/features/modelBuilder/fields/UiAlertFieldType.js +1 -2
  327. package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -1
  328. package/features/modelBuilder/fields/UiSeparatorFieldType.js +1 -2
  329. package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -1
  330. package/features/modelBuilder/fields/UiTabsFieldType.d.ts +1 -2
  331. package/features/modelBuilder/fields/UiTabsFieldType.js +3 -6
  332. package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -1
  333. package/features/shared/abstractions.d.ts +11 -15
  334. package/features/shared/abstractions.js +3 -3
  335. package/features/shared/abstractions.js.map +1 -1
  336. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.d.ts +8 -0
  337. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js +5 -0
  338. package/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js.map +1 -0
  339. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.d.ts +8 -0
  340. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js +5 -0
  341. package/features/shared/storageOperations/entry/CreateEntryStorageOperation.js.map +1 -0
  342. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.d.ts +8 -0
  343. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js +5 -0
  344. package/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js.map +1 -0
  345. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.d.ts +8 -0
  346. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js +5 -0
  347. package/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js.map +1 -0
  348. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.d.ts +8 -0
  349. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js +5 -0
  350. package/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js.map +1 -0
  351. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.d.ts +8 -0
  352. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js +5 -0
  353. package/features/shared/storageOperations/entry/GetEntriesByIdsStorageOperation.js.map +1 -0
  354. package/features/shared/storageOperations/entry/GetEntryStorageOperation.d.ts +8 -0
  355. package/features/shared/storageOperations/entry/GetEntryStorageOperation.js +5 -0
  356. package/features/shared/storageOperations/entry/GetEntryStorageOperation.js.map +1 -0
  357. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.d.ts +8 -0
  358. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js +5 -0
  359. package/features/shared/storageOperations/entry/GetLatestEntriesByIdsStorageOperation.js.map +1 -0
  360. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.d.ts +8 -0
  361. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js +5 -0
  362. package/features/shared/storageOperations/entry/GetLatestRevisionByEntryIdStorageOperation.js.map +1 -0
  363. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.d.ts +8 -0
  364. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js +5 -0
  365. package/features/shared/storageOperations/entry/GetPreviousRevisionStorageOperation.js.map +1 -0
  366. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.d.ts +8 -0
  367. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js +5 -0
  368. package/features/shared/storageOperations/entry/GetPublishedEntriesByIdsStorageOperation.js.map +1 -0
  369. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.d.ts +8 -0
  370. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js +5 -0
  371. package/features/shared/storageOperations/entry/GetPublishedRevisionByEntryIdStorageOperation.js.map +1 -0
  372. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.d.ts +8 -0
  373. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js +5 -0
  374. package/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js.map +1 -0
  375. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.d.ts +8 -0
  376. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js +5 -0
  377. package/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js.map +1 -0
  378. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.d.ts +8 -0
  379. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js +5 -0
  380. package/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js.map +1 -0
  381. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.d.ts +8 -0
  382. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js +5 -0
  383. package/features/shared/storageOperations/entry/ListEntriesStorageOperation.js.map +1 -0
  384. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.d.ts +8 -0
  385. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js +5 -0
  386. package/features/shared/storageOperations/entry/MoveEntryStorageOperation.js.map +1 -0
  387. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.d.ts +8 -0
  388. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js +5 -0
  389. package/features/shared/storageOperations/entry/MoveToBinStorageOperation.js.map +1 -0
  390. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.d.ts +8 -0
  391. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js +5 -0
  392. package/features/shared/storageOperations/entry/PublishEntryStorageOperation.js.map +1 -0
  393. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.d.ts +8 -0
  394. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js +5 -0
  395. package/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js.map +1 -0
  396. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.d.ts +8 -0
  397. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js +5 -0
  398. package/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js.map +1 -0
  399. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.d.ts +8 -0
  400. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js +5 -0
  401. package/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js.map +1 -0
  402. package/features/shared/storageOperations/group/CreateGroupStorageOperation.d.ts +8 -0
  403. package/features/shared/storageOperations/group/CreateGroupStorageOperation.js +5 -0
  404. package/features/shared/storageOperations/group/CreateGroupStorageOperation.js.map +1 -0
  405. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.d.ts +8 -0
  406. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js +5 -0
  407. package/features/shared/storageOperations/group/DeleteGroupStorageOperation.js.map +1 -0
  408. package/features/shared/storageOperations/group/GetGroupStorageOperation.d.ts +8 -0
  409. package/features/shared/storageOperations/group/GetGroupStorageOperation.js +5 -0
  410. package/features/shared/storageOperations/group/GetGroupStorageOperation.js.map +1 -0
  411. package/features/shared/storageOperations/group/ListGroupsStorageOperation.d.ts +8 -0
  412. package/features/shared/storageOperations/group/ListGroupsStorageOperation.js +5 -0
  413. package/features/shared/storageOperations/group/ListGroupsStorageOperation.js.map +1 -0
  414. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.d.ts +8 -0
  415. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js +5 -0
  416. package/features/shared/storageOperations/group/UpdateGroupStorageOperation.js.map +1 -0
  417. package/features/shared/storageOperations/index.d.ts +32 -0
  418. package/features/shared/storageOperations/index.js +32 -0
  419. package/features/shared/storageOperations/model/CreateModelStorageOperation.d.ts +8 -0
  420. package/features/shared/storageOperations/model/CreateModelStorageOperation.js +5 -0
  421. package/features/shared/storageOperations/model/CreateModelStorageOperation.js.map +1 -0
  422. package/features/shared/storageOperations/model/DeleteModelStorageOperation.d.ts +8 -0
  423. package/features/shared/storageOperations/model/DeleteModelStorageOperation.js +5 -0
  424. package/features/shared/storageOperations/model/DeleteModelStorageOperation.js.map +1 -0
  425. package/features/shared/storageOperations/model/GetModelStorageOperation.d.ts +8 -0
  426. package/features/shared/storageOperations/model/GetModelStorageOperation.js +5 -0
  427. package/features/shared/storageOperations/model/GetModelStorageOperation.js.map +1 -0
  428. package/features/shared/storageOperations/model/ListModelsStorageOperation.d.ts +8 -0
  429. package/features/shared/storageOperations/model/ListModelsStorageOperation.js +5 -0
  430. package/features/shared/storageOperations/model/ListModelsStorageOperation.js.map +1 -0
  431. package/features/shared/storageOperations/model/UpdateModelStorageOperation.d.ts +8 -0
  432. package/features/shared/storageOperations/model/UpdateModelStorageOperation.js +5 -0
  433. package/features/shared/storageOperations/model/UpdateModelStorageOperation.js.map +1 -0
  434. package/fieldConverters/abstractions.d.ts +14 -0
  435. package/fieldConverters/abstractions.js +13 -0
  436. package/fieldConverters/abstractions.js.map +1 -0
  437. package/fieldConverters/index.d.ts +1 -1
  438. package/graphql/CmsGraphQLSchemaFactory.d.ts +8 -0
  439. package/graphql/CmsGraphQLSchemaFactory.js +5 -0
  440. package/graphql/CmsGraphQLSchemaFactory.js.map +1 -0
  441. package/graphql/CmsSchemaExecutor.d.ts +10 -0
  442. package/graphql/CmsSchemaExecutor.js +5 -0
  443. package/graphql/CmsSchemaExecutor.js.map +1 -0
  444. package/graphql/buildSchemaPlugins.d.ts +2 -1
  445. package/graphql/buildSchemaPlugins.js +1 -3
  446. package/graphql/buildSchemaPlugins.js.map +1 -1
  447. package/graphql/checkEndpointAccess.js +5 -2
  448. package/graphql/checkEndpointAccess.js.map +1 -1
  449. package/graphql/createExecutableSchema.d.ts +1 -1
  450. package/graphql/createExecutableSchema.js +1 -1
  451. package/graphql/createExecutableSchema.js.map +1 -1
  452. package/graphql/generateSchema.d.ts +2 -1
  453. package/graphql/generateSchema.js +14 -5
  454. package/graphql/generateSchema.js.map +1 -1
  455. package/graphql/getSchema.js +7 -2
  456. package/graphql/getSchema.js.map +1 -1
  457. package/graphql/scalars/RevisionIdScalarPlugin.d.ts +1 -1
  458. package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -1
  459. package/graphql/schema/baseContentSchema.d.ts +1 -6
  460. package/graphql/schema/baseContentSchema.js +5 -8
  461. package/graphql/schema/baseContentSchema.js.map +1 -1
  462. package/graphql/schema/baseSchema.d.ts +2 -2
  463. package/graphql/schema/baseSchema.js +6 -41
  464. package/graphql/schema/baseSchema.js.map +1 -1
  465. package/graphql/schema/cms/CmsBaseErrorTypeFactory.d.ts +14 -0
  466. package/graphql/schema/cms/CmsBaseErrorTypeFactory.js +21 -0
  467. package/graphql/schema/cms/CmsBaseErrorTypeFactory.js.map +1 -0
  468. package/graphql/schema/cms/createEntryResolver.js +2 -2
  469. package/graphql/schema/cms/createEntryResolver.js.map +1 -1
  470. package/graphql/schema/cms/deleteEntryResolver.js +2 -2
  471. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -1
  472. package/graphql/schema/cms/getEntryResolver.js +2 -2
  473. package/graphql/schema/cms/getEntryResolver.js.map +1 -1
  474. package/graphql/schema/cms/helpers/getModel.d.ts +0 -3
  475. package/graphql/schema/cms/helpers/getModel.js +5 -3
  476. package/graphql/schema/cms/helpers/getModel.js.map +1 -1
  477. package/graphql/schema/cms/helpers/transformWhereToNested.js +17 -39
  478. package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -1
  479. package/graphql/schema/cms/listEntriesResolver.js +2 -2
  480. package/graphql/schema/cms/listEntriesResolver.js.map +1 -1
  481. package/graphql/schema/cms/publishEntryResolver.js +2 -2
  482. package/graphql/schema/cms/publishEntryResolver.js.map +1 -1
  483. package/graphql/schema/cms/resolvers/createEntry.d.ts +2 -2
  484. package/graphql/schema/cms/resolvers/createEntry.js +1 -1
  485. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -1
  486. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +2 -2
  487. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +1 -1
  488. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -1
  489. package/graphql/schema/cms/resolvers/getEntry.d.ts +2 -2
  490. package/graphql/schema/cms/resolvers/getEntry.js +1 -1
  491. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -1
  492. package/graphql/schema/cms/resolvers/listEntries.d.ts +2 -2
  493. package/graphql/schema/cms/resolvers/listEntries.js +1 -1
  494. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -1
  495. package/graphql/schema/cms/resolvers/mutationCms.d.ts +2 -2
  496. package/graphql/schema/cms/resolvers/mutationCms.js +1 -1
  497. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -1
  498. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +2 -2
  499. package/graphql/schema/cms/resolvers/publishEntryRevision.js +1 -1
  500. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -1
  501. package/graphql/schema/cms/resolvers/queryCms.d.ts +2 -2
  502. package/graphql/schema/cms/resolvers/queryCms.js +1 -1
  503. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -1
  504. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +2 -2
  505. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +1 -1
  506. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -1
  507. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +2 -2
  508. package/graphql/schema/cms/resolvers/updateEntryRevision.js +1 -1
  509. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -1
  510. package/graphql/schema/cms/typeDefs/mutation.d.ts +2 -2
  511. package/graphql/schema/cms/typeDefs/mutation.js +1 -1
  512. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -1
  513. package/graphql/schema/cms/typeDefs/query.d.ts +2 -2
  514. package/graphql/schema/cms/typeDefs/query.js +1 -1
  515. package/graphql/schema/cms/typeDefs/query.js.map +1 -1
  516. package/graphql/schema/cms/typeDefs/responses.d.ts +2 -2
  517. package/graphql/schema/cms/typeDefs/responses.js +1 -1
  518. package/graphql/schema/cms/typeDefs/responses.js.map +1 -1
  519. package/graphql/schema/cms/unpublishEntryResolver.js +2 -2
  520. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -1
  521. package/graphql/schema/cms/updateEntryResolver.js +2 -2
  522. package/graphql/schema/cms/updateEntryResolver.js.map +1 -1
  523. package/graphql/schema/contentEntries.js +43 -32
  524. package/graphql/schema/contentEntries.js.map +1 -1
  525. package/graphql/schema/contentModelGroups.js +39 -18
  526. package/graphql/schema/contentModelGroups.js.map +1 -1
  527. package/graphql/schema/contentModels.js +37 -16
  528. package/graphql/schema/contentModels.js.map +1 -1
  529. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  530. package/graphql/schema/createFieldResolvers.js.map +1 -1
  531. package/graphql/schema/createManageResolvers.js +4 -2
  532. package/graphql/schema/createManageResolvers.js.map +1 -1
  533. package/graphql/schema/resolvers/manage/resolveCreate.js +5 -3
  534. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  535. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +5 -3
  536. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  537. package/graphql/schema/resolvers/manage/resolveDelete.js +9 -4
  538. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  539. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +5 -3
  540. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
  541. package/graphql/schema/resolvers/manage/resolveGet.js +11 -6
  542. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  543. package/graphql/schema/resolvers/manage/resolveGetByIds.js +5 -3
  544. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  545. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +5 -3
  546. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  547. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +5 -3
  548. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -1
  549. package/graphql/schema/resolvers/manage/resolveList.js +5 -3
  550. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  551. package/graphql/schema/resolvers/manage/resolveListDeleted.js +5 -3
  552. package/graphql/schema/resolvers/manage/resolveListDeleted.js.map +1 -1
  553. package/graphql/schema/resolvers/manage/resolveMove.js +4 -2
  554. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -1
  555. package/graphql/schema/resolvers/manage/resolvePublish.js +5 -3
  556. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  557. package/graphql/schema/resolvers/manage/resolveRepublish.js +5 -3
  558. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  559. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js +5 -3
  560. package/graphql/schema/resolvers/manage/resolveRestoreFromBin.js.map +1 -1
  561. package/graphql/schema/resolvers/manage/resolveUnpublish.js +5 -3
  562. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  563. package/graphql/schema/resolvers/manage/resolveUpdate.js +5 -3
  564. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  565. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js +5 -3
  566. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js.map +1 -1
  567. package/graphql/schema/resolvers/manage/resolveValidate.js +5 -3
  568. package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -1
  569. package/graphql/schema/resolvers/preview/resolveGet.js +6 -3
  570. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  571. package/graphql/schema/resolvers/preview/resolveList.js +5 -3
  572. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  573. package/graphql/schema/resolvers/read/resolveGet.js +5 -2
  574. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  575. package/graphql/schema/resolvers/read/resolveList.js +5 -3
  576. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  577. package/graphql/schema/resolvers/singular/resolveGet.js +1 -1
  578. package/graphql/schema/resolvers/singular/resolveGet.js.map +1 -1
  579. package/graphql/schema/resolvers/singular/resolveUpdate.js +1 -1
  580. package/graphql/schema/resolvers/singular/resolveUpdate.js.map +1 -1
  581. package/graphql/schema/schemaPlugins.d.ts +2 -1
  582. package/graphql/schema/schemaPlugins.js +2 -4
  583. package/graphql/schema/schemaPlugins.js.map +1 -1
  584. package/index.d.ts +7 -6
  585. package/index.js +4 -22
  586. package/legacy/abstractions.js.map +1 -1
  587. package/package.json +22 -27
  588. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.d.ts +2 -2
  589. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js +1 -1
  590. package/plugins/CmsGraphQLSchemaPlugin/CmsGraphQLSchemaPlugin.js.map +1 -1
  591. package/plugins/index.d.ts +0 -1
  592. package/plugins/index.js +0 -1
  593. package/types/fields/dynamicZoneField.d.ts +2 -2
  594. package/types/modelField.d.ts +1 -1
  595. package/types/types.d.ts +10 -183
  596. package/types/types.js.map +1 -1
  597. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.d.ts +28 -0
  598. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js +324 -0
  599. package/utils/contentModelToJsonSchema/CmsModelToJsonSchemaConverter.js.map +1 -0
  600. package/utils/contentModelToJsonSchema/index.d.ts +2 -0
  601. package/utils/contentModelToJsonSchema/index.js +1 -0
  602. package/utils/contentModelToJsonSchema/types.d.ts +24 -0
  603. package/utils/contentModelToJsonSchema/types.js +0 -0
  604. package/utils/converters/ConverterCollection.d.ts +2 -2
  605. package/utils/converters/ConverterCollection.js +1 -3
  606. package/utils/converters/ConverterCollection.js.map +1 -1
  607. package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -2
  608. package/utils/converters/valueKeyFromStorageConverter.js +2 -2
  609. package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
  610. package/utils/converters/valueKeyStorageConverter.js +4 -2
  611. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  612. package/utils/converters/valueKeyToStorageConverter.d.ts +2 -2
  613. package/utils/converters/valueKeyToStorageConverter.js +2 -2
  614. package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
  615. package/utils/getSchemaFromFieldPlugins.d.ts +2 -2
  616. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  617. package/utils/index.d.ts +1 -0
  618. package/utils/index.js +1 -0
  619. package/utils/isHeadlessCmsReady.d.ts +1 -1
  620. package/utils/isHeadlessCmsReady.js +3 -2
  621. package/utils/isHeadlessCmsReady.js.map +1 -1
  622. package/abstractions/entryHooks/OnEntryBeforeCreate.d.ts +0 -8
  623. package/abstractions/entryHooks/OnEntryBeforeCreate.js +0 -5
  624. package/abstractions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
  625. package/abstractions/entryHooks/index.d.ts +0 -1
  626. package/abstractions/entryHooks/index.js +0 -1
  627. package/abstractions/index.d.ts +0 -1
  628. package/abstractions/index.js +0 -1
  629. package/context.d.ts +0 -3
  630. package/context.js +0 -131
  631. package/context.js.map +0 -1
  632. package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +0 -4
  633. package/extensions/entryHooks/OnEntryBeforeCreate.js +0 -21
  634. package/extensions/entryHooks/OnEntryBeforeCreate.js.map +0 -1
  635. package/extensions/entryHooks/index.d.ts +0 -1
  636. package/extensions/entryHooks/index.js +0 -1
  637. package/extensions/index.d.ts +0 -5
  638. package/extensions/index.js +0 -7
  639. package/extensions/index.js.map +0 -1
  640. package/graphql/graphQLHandlerFactory.d.ts +0 -5
  641. package/graphql/graphQLHandlerFactory.js +0 -22
  642. package/graphql/graphQLHandlerFactory.js.map +0 -1
  643. package/graphql/handleRequest.d.ts +0 -11
  644. package/graphql/handleRequest.js +0 -62
  645. package/graphql/handleRequest.js.map +0 -1
  646. package/graphql/index.d.ts +0 -4
  647. package/graphql/index.js +0 -11
  648. package/graphql/index.js.map +0 -1
  649. package/graphql/schema/cms/index.d.ts +0 -2
  650. package/graphql/schema/cms/index.js +0 -24
  651. package/graphql/schema/cms/index.js.map +0 -1
  652. package/index.js.map +0 -1
  653. package/parameters/context.d.ts +0 -2
  654. package/parameters/context.js +0 -7
  655. package/parameters/context.js.map +0 -1
  656. package/parameters/header.d.ts +0 -2
  657. package/parameters/header.js +0 -13
  658. package/parameters/header.js.map +0 -1
  659. package/parameters/index.d.ts +0 -3
  660. package/parameters/index.js +0 -3
  661. package/parameters/path.d.ts +0 -2
  662. package/parameters/path.js +0 -12
  663. package/parameters/path.js.map +0 -1
  664. package/plugins/CmsParametersPlugin.d.ts +0 -18
  665. package/plugins/CmsParametersPlugin.js +0 -16
  666. package/plugins/CmsParametersPlugin.js.map +0 -1
@@ -1,5 +1,4 @@
1
- import error from "@webiny/error";
2
- import { ErrorResponse, Response } from "@webiny/handler-graphql";
1
+ import { ErrorResponse, Response } from "@webiny/api-graphql";
3
2
  import { getEntryTitle } from "../../utils/getEntryTitle.js";
4
3
  import { createCmsGraphQLSchemaPlugin } from "../../plugins/index.js";
5
4
  import { getEntryDescription } from "../../utils/getEntryDescription.js";
@@ -8,6 +7,11 @@ import { entryFieldFromStorageTransform } from "../../utils/entryStorage.js";
8
7
  import { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from "../../constants.js";
9
8
  import NotAuthorizedResponse from "@webiny/api-core/graphql/security/NotAuthorizedResponse.js";
10
9
  import { ListLatestEntriesUseCase } from "../../features/contentEntry/ListEntries/index.js";
10
+ import { ListModelsUseCase } from "../../features/contentModel/ListModels/index.js";
11
+ import { GetLatestEntriesByIdsUseCase } from "../../features/contentEntry/GetLatestEntriesByIds/index.js";
12
+ import { GetPublishedEntriesByIdsUseCase } from "../../features/contentEntry/GetPublishedEntriesByIds/index.js";
13
+ import { GetEntriesByIdsUseCase } from "../../features/contentEntry/GetEntriesByIds/index.js";
14
+ import { HeadlessCmsEndpointConfig } from "../../HeadlessCmsEndpointConfig.js";
11
15
  const createDate = (date)=>{
12
16
  if (!date) return null;
13
17
  try {
@@ -52,25 +56,28 @@ const createCmsEntryRecord = (model, entry)=>({
52
56
  }
53
57
  });
54
58
  const getFetchMethod = (type, context)=>{
55
- if (!getContentEntriesMethods[type]) throw new error(`Unknown getContentEntries method "${type}". Could not fetch content entries.`, "UNKNOWN_METHOD_ERROR", {
56
- type
57
- });
58
- const methodName = getContentEntriesMethods[type];
59
- if (!context.cms[methodName]) throw new error(`Unknown context.cms method "${methodName}". Could not fetch content entries.`, "UNKNOWN_METHOD_ERROR", {
60
- type,
61
- methodName
62
- });
63
- return context.cms[methodName];
64
- };
65
- const getContentEntriesMethods = {
66
- latest: "getLatestEntriesByIds",
67
- published: "getPublishedEntriesByIds",
68
- exact: "getEntriesByIds"
59
+ if ("latest" === type) return async (model, ids)=>{
60
+ const result = await context.container.resolve(GetLatestEntriesByIdsUseCase).execute(model, ids);
61
+ if (result.isFail()) throw result.error;
62
+ return result.value;
63
+ };
64
+ if ("published" === type) return async (model, ids)=>{
65
+ const result = await context.container.resolve(GetPublishedEntriesByIdsUseCase).execute(model, ids);
66
+ if (result.isFail()) throw result.error;
67
+ return result.value;
68
+ };
69
+ return async (model, ids)=>{
70
+ const result = await context.container.resolve(GetEntriesByIdsUseCase).execute(model, ids);
71
+ if (result.isFail()) throw result.error;
72
+ return result.value;
73
+ };
69
74
  };
70
75
  const getContentEntries = async (params)=>{
71
76
  const { args, context, type } = params;
72
77
  const method = getFetchMethod(type, context);
73
- const models = await context.cms.listModels();
78
+ const modelsResult = await context.container.resolve(ListModelsUseCase).execute();
79
+ if (modelsResult.isFail()) throw modelsResult.error;
80
+ const models = modelsResult.value;
74
81
  const modelsMap = models.reduce((collection, model)=>{
75
82
  collection[model.modelId] = model;
76
83
  return collection;
@@ -98,14 +105,11 @@ const getContentEntries = async (params)=>{
98
105
  };
99
106
  const getContentEntry = async (params)=>{
100
107
  const { args, context, type } = params;
101
- if (!getContentEntriesMethods[type]) throw new error(`Unknown getContentEntry method "${type}". Could not fetch content entry.`, "UNKNOWN_METHOD_ERROR", {
102
- args,
103
- type
104
- });
105
108
  const method = getFetchMethod(type, context);
106
109
  const { modelId, id } = args.entry;
107
- const models = await context.cms.listModels();
108
- const model = models.find((m)=>m.modelId === modelId);
110
+ const modelsResult = await context.container.resolve(ListModelsUseCase).execute();
111
+ if (modelsResult.isFail()) throw modelsResult.error;
112
+ const model = modelsResult.value.find((m)=>m.modelId === modelId);
109
113
  if (!model) return new NotAuthorizedResponse({
110
114
  data: {
111
115
  modelId
@@ -119,8 +123,9 @@ const getContentEntry = async (params)=>{
119
123
  return new Response(createCmsEntryRecord(model, entry));
120
124
  };
121
125
  const createResolveDescription = ()=>async (parent, _, context)=>{
122
- const models = await context.cms.listModels();
123
- const model = models.find(({ modelId })=>parent.model.modelId === modelId);
126
+ const modelsResult = await context.container.resolve(ListModelsUseCase).execute();
127
+ if (modelsResult.isFail()) return null;
128
+ const model = modelsResult.value.find(({ modelId })=>parent.model.modelId === modelId);
124
129
  if (!model) return null;
125
130
  const field = model.fields.find((f)=>f.fieldId === model.descriptionFieldId);
126
131
  if (!field) return null;
@@ -134,12 +139,13 @@ const createResolveDescription = ()=>async (parent, _, context)=>{
134
139
  });
135
140
  };
136
141
  const createContentEntriesSchema = ({ context })=>{
137
- if (!context.cms.MANAGE) {
142
+ const enhancerConfig = context.container.resolve(HeadlessCmsEndpointConfig);
143
+ if ("manage" !== enhancerConfig.type) {
138
144
  const plugin = createCmsGraphQLSchemaPlugin({
139
145
  typeDefs: "",
140
146
  resolvers: {}
141
147
  });
142
- plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;
148
+ plugin.name = `headless-cms.graphql.schema.${enhancerConfig.type}.empty`;
143
149
  return plugin;
144
150
  }
145
151
  const onByMetaFields = ENTRY_META_FIELDS.map((field)=>{
@@ -218,12 +224,15 @@ const createContentEntriesSchema = ({ context })=>{
218
224
  CmsContentEntry: {
219
225
  published: async (parent, _, context)=>{
220
226
  try {
221
- const models = await context.cms.listModels();
222
- const model = models.find(({ modelId })=>parent.model.modelId === modelId);
227
+ const modelsResult = await context.container.resolve(ListModelsUseCase).execute();
228
+ if (modelsResult.isFail()) return null;
229
+ const model = modelsResult.value.find(({ modelId })=>parent.model.modelId === modelId);
223
230
  if (!model) return null;
224
- const [entry] = await context.cms.getPublishedEntriesByIds(model, [
231
+ const result = await context.container.resolve(GetPublishedEntriesByIdsUseCase).execute(model, [
225
232
  parent.id
226
233
  ]);
234
+ if (result.isFail()) return null;
235
+ const entry = result.value[0];
227
236
  if (!entry) return null;
228
237
  return createCmsEntryRecord(model, entry);
229
238
  } catch {
@@ -238,7 +247,9 @@ const createContentEntriesSchema = ({ context })=>{
238
247
  Query: {
239
248
  async searchContentEntries (_, args, context) {
240
249
  const { modelIds, fields, query, limit = 10 } = args;
241
- const models = await context.cms.listModels();
250
+ const modelsResult = await context.container.resolve(ListModelsUseCase).execute();
251
+ if (modelsResult.isFail()) return new ErrorResponse(modelsResult.error);
252
+ const models = modelsResult.value;
242
253
  const getters = models.filter((model)=>modelIds.includes(model.modelId)).map(async (model)=>{
243
254
  const listLatest = await context.container.resolve(ListLatestEntriesUseCase);
244
255
  const where = {};
@@ -304,7 +315,7 @@ const createContentEntriesSchema = ({ context })=>{
304
315
  }
305
316
  }
306
317
  });
307
- plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;
318
+ plugin.name = `headless-cms.graphql.schema.${context.container.resolve(HeadlessCmsEndpointConfig).type}.content-entries`;
308
319
  return plugin;
309
320
  };
310
321
  export { createContentEntriesSchema };
@@ -1 +1 @@
1
- {"version":3,"file":"graphql/schema/contentEntries.js","sources":["../../../src/graphql/schema/contentEntries.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql\";\nimport type {\n CmsContext,\n CmsEntry,\n CmsEntryListWhere,\n CmsIdentity,\n CmsModel\n} from \"~/types/index.js\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle.js\";\nimport type { ICmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { createCmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { getEntryDescription } from \"~/utils/getEntryDescription.js\";\nimport { getEntryImage } from \"~/utils/getEntryImage.js\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage.js\";\nimport type { GraphQLFieldResolver } from \"@webiny/handler-graphql/types.js\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { ListLatestEntriesUseCase } from \"~/features/contentEntry/ListEntries/index.js\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\nconst createDate = (date: string | null): Date | null => {\n if (!date) {\n return null;\n }\n\n try {\n return new Date(date);\n } catch {\n return new Date();\n }\n};\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n description?: string | null;\n image?: string | null;\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: Date;\n modifiedOn: Date | null;\n savedOn: Date;\n createdBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n savedBy: CmsIdentity;\n firstPublishedOn: Date | null;\n lastPublishedOn: Date | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: Date;\n revisionModifiedOn: Date | null;\n revisionSavedOn: Date;\n revisionCreatedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionSavedBy: CmsIdentity;\n revisionFirstPublishedOn: Date | null;\n revisionLastPublishedOn: Date | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n wbyAco_location?: {\n folderId?: string | null;\n };\n}\n\nconst createCmsEntryRecord = (model: CmsModel, entry: CmsEntry): CmsEntryRecord => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n description: getEntryDescription(model, entry),\n image: getEntryImage(model, entry),\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: createDate(entry.createdOn)!,\n modifiedOn: createDate(entry.modifiedOn),\n savedOn: createDate(entry.savedOn)!,\n createdBy: entry.createdBy,\n savedBy: entry.savedBy,\n modifiedBy: entry.modifiedBy,\n firstPublishedOn: createDate(entry.firstPublishedOn),\n lastPublishedOn: createDate(entry.lastPublishedOn),\n firstPublishedBy: entry.firstPublishedBy,\n lastPublishedBy: entry.lastPublishedBy,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: createDate(entry.revisionCreatedOn)!,\n revisionSavedOn: createDate(entry.revisionSavedOn)!,\n revisionModifiedOn: createDate(entry.revisionModifiedOn),\n revisionCreatedBy: entry.revisionCreatedBy,\n revisionModifiedBy: entry.revisionModifiedBy,\n revisionSavedBy: entry.revisionSavedBy,\n revisionFirstPublishedOn: createDate(entry.revisionFirstPublishedOn),\n revisionLastPublishedOn: createDate(entry.revisionLastPublishedOn),\n revisionFirstPublishedBy: entry.revisionFirstPublishedBy,\n revisionLastPublishedBy: entry.revisionLastPublishedBy,\n\n wbyAco_location: {\n folderId: entry.location?.folderId || null\n }\n };\n};\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\n\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\n\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (\n params: GetContentEntriesParams\n): Promise<Response | ErrorResponse> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce(\n (collection, model) => {\n collection[model.modelId] = model;\n return collection;\n },\n {} as Record<string, CmsModel>\n );\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n try {\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce<CmsEntryRecord[]>((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return createCmsEntryRecord(model, item);\n })\n );\n }, [])\n .filter(Boolean);\n\n return new Response(entries);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\n\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response<CmsEntryRecord | null> | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response(createCmsEntryRecord(model, entry));\n};\n/**\n * As we support description field, we need to transform the value from storage.\n */\nconst createResolveDescription = (): GraphQLFieldResolver<any, any, CmsContext> => {\n return async (parent, _, context) => {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);\n if (!field) {\n return null;\n }\n const value = parent.description || parent[field.fieldId];\n if (!value) {\n return null;\n }\n return entryFieldFromStorageTransform({\n context,\n model,\n field,\n value\n });\n };\n};\n\ninterface Params {\n context: CmsContext;\n}\n\nexport const createContentEntriesSchema = ({\n context\n}: Params): ICmsGraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;\n return plugin;\n }\n\n const onByMetaFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const plugin = createCmsGraphQLSchemaPlugin({\n // Had to remove /* GraphQL */ because it causes issues with oxfmt formatting.\n typeDefs: `\n type CmsModelMeta {\n modelId: String!\n name: String!\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n description: String\n image: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta!\n status: String!\n published: CmsPublishedContentEntry\n title: String!\n description: String\n image: String\n \n ${onByMetaFields}\n \n wbyAco_location: WbyAcoLocation\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry!]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse!\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse!\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return createCmsEntryRecord(model, entry);\n } catch {\n return null;\n }\n },\n description: createResolveDescription()\n },\n CmsPublishedContentEntry: {\n description: createResolveDescription()\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const listLatest =\n await context.container.resolve(ListLatestEntriesUseCase);\n const where: CmsEntryListWhere = {};\n\n const result = await listLatest.execute(model, {\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n // TODO figure a better way to handle errors in parallel execution\n if (result.isFail()) {\n throw result.error;\n }\n const { entries } = result.value;\n return entries.map((entry: CmsEntry) => {\n return createCmsEntryRecord(model, entry);\n });\n });\n\n try {\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => b.savedOn.getTime() - a.savedOn.getTime())\n .slice(0, limit)\n );\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;\n\n return plugin;\n};\n"],"names":["createDate","date","Date","createCmsEntryRecord","model","entry","getEntryTitle","getEntryDescription","getEntryImage","getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","getContentEntries","params","args","method","models","modelsMap","collection","argsEntries","entriesByModel","ref","getters","Object","modelId","Response","results","Promise","entries","items","item","Boolean","ex","ErrorResponse","getContentEntry","id","m","NotAuthorizedResponse","result","createResolveDescription","parent","_","field","f","value","entryFieldFromStorageTransform","createContentEntriesSchema","plugin","createCmsGraphQLSchemaPlugin","onByMetaFields","ENTRY_META_FIELDS","fieldType","isDateTimeEntryMetaField","modelIds","fields","query","limit","listLatest","ListLatestEntriesUseCase","where","undefined","a","b"],"mappings":"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"}
1
+ {"version":3,"file":"graphql/schema/contentEntries.js","sources":["../../../src/graphql/schema/contentEntries.ts"],"sourcesContent":["import { ErrorResponse, Response } from \"@webiny/api-graphql\";\nimport type {\n CmsContext,\n CmsEntry,\n CmsEntryListWhere,\n CmsIdentity,\n CmsModel\n} from \"~/types/index.js\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle.js\";\nimport type { ICmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { createCmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { getEntryDescription } from \"~/utils/getEntryDescription.js\";\nimport { getEntryImage } from \"~/utils/getEntryImage.js\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage.js\";\nimport type { GraphQLFieldResolver } from \"@webiny/api-graphql/types.js\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants.js\";\nimport NotAuthorizedResponse from \"@webiny/api-core/graphql/security/NotAuthorizedResponse.js\";\nimport { ListLatestEntriesUseCase } from \"~/features/contentEntry/ListEntries/index.js\";\nimport { ListModelsUseCase } from \"~/features/contentModel/ListModels/index.js\";\nimport { GetLatestEntriesByIdsUseCase } from \"~/features/contentEntry/GetLatestEntriesByIds/index.js\";\nimport { GetPublishedEntriesByIdsUseCase } from \"~/features/contentEntry/GetPublishedEntriesByIds/index.js\";\nimport { GetEntriesByIdsUseCase } from \"~/features/contentEntry/GetEntriesByIds/index.js\";\nimport { HeadlessCmsEndpointConfig } from \"~/HeadlessCmsEndpointConfig.js\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\nconst createDate = (date: string | null): Date | null => {\n if (!date) {\n return null;\n }\n\n try {\n return new Date(date);\n } catch {\n return new Date();\n }\n};\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n description?: string | null;\n image?: string | null;\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: Date;\n modifiedOn: Date | null;\n savedOn: Date;\n createdBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n savedBy: CmsIdentity;\n firstPublishedOn: Date | null;\n lastPublishedOn: Date | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: Date;\n revisionModifiedOn: Date | null;\n revisionSavedOn: Date;\n revisionCreatedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionSavedBy: CmsIdentity;\n revisionFirstPublishedOn: Date | null;\n revisionLastPublishedOn: Date | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n wbyAco_location?: {\n folderId?: string | null;\n };\n}\n\nconst createCmsEntryRecord = (model: CmsModel, entry: CmsEntry): CmsEntryRecord => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n description: getEntryDescription(model, entry),\n image: getEntryImage(model, entry),\n\n /**\n * Entry-level meta fields. 👇\n */\n createdOn: createDate(entry.createdOn)!,\n modifiedOn: createDate(entry.modifiedOn),\n savedOn: createDate(entry.savedOn)!,\n createdBy: entry.createdBy,\n savedBy: entry.savedBy,\n modifiedBy: entry.modifiedBy,\n firstPublishedOn: createDate(entry.firstPublishedOn),\n lastPublishedOn: createDate(entry.lastPublishedOn),\n firstPublishedBy: entry.firstPublishedBy,\n lastPublishedBy: entry.lastPublishedBy,\n\n /**\n * Revision-level meta fields. 👇\n */\n revisionCreatedOn: createDate(entry.revisionCreatedOn)!,\n revisionSavedOn: createDate(entry.revisionSavedOn)!,\n revisionModifiedOn: createDate(entry.revisionModifiedOn),\n revisionCreatedBy: entry.revisionCreatedBy,\n revisionModifiedBy: entry.revisionModifiedBy,\n revisionSavedBy: entry.revisionSavedBy,\n revisionFirstPublishedOn: createDate(entry.revisionFirstPublishedOn),\n revisionLastPublishedOn: createDate(entry.revisionLastPublishedOn),\n revisionFirstPublishedBy: entry.revisionFirstPublishedBy,\n revisionLastPublishedBy: entry.revisionLastPublishedBy,\n\n wbyAco_location: {\n folderId: entry.location?.folderId || null\n }\n };\n};\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (type === \"latest\") {\n return async (model, ids) => {\n const result = await context.container\n .resolve(GetLatestEntriesByIdsUseCase)\n .execute(model, ids);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n };\n } else if (type === \"published\") {\n return async (model, ids) => {\n const result = await context.container\n .resolve(GetPublishedEntriesByIdsUseCase)\n .execute(model, ids);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n };\n } else {\n return async (model, ids) => {\n const result = await context.container\n .resolve(GetEntriesByIdsUseCase)\n .execute(model, ids);\n if (result.isFail()) {\n throw result.error;\n }\n return result.value;\n };\n }\n};\n\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\n\nconst getContentEntries = async (\n params: GetContentEntriesParams\n): Promise<Response | ErrorResponse> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const modelsResult = await context.container.resolve(ListModelsUseCase).execute();\n if (modelsResult.isFail()) {\n throw modelsResult.error;\n }\n const models = modelsResult.value;\n\n const modelsMap = models.reduce(\n (collection, model) => {\n collection[model.modelId] = model;\n return collection;\n },\n {} as Record<string, CmsModel>\n );\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n try {\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce<CmsEntryRecord[]>((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return createCmsEntryRecord(model, item);\n })\n );\n }, [])\n .filter(Boolean);\n\n return new Response(entries);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\n\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response<CmsEntryRecord | null> | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const modelsResult = await context.container.resolve(ListModelsUseCase).execute();\n if (modelsResult.isFail()) {\n throw modelsResult.error;\n }\n const model = modelsResult.value.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response(createCmsEntryRecord(model, entry));\n};\n/**\n * As we support description field, we need to transform the value from storage.\n */\nconst createResolveDescription = (): GraphQLFieldResolver<any, any, CmsContext> => {\n return async (parent, _, context) => {\n const modelsResult = await context.container.resolve(ListModelsUseCase).execute();\n if (modelsResult.isFail()) {\n return null;\n }\n const model = modelsResult.value.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);\n if (!field) {\n return null;\n }\n const value = parent.description || parent[field.fieldId];\n if (!value) {\n return null;\n }\n return entryFieldFromStorageTransform({\n context,\n model,\n field,\n value\n });\n };\n};\n\ninterface Params {\n context: CmsContext;\n}\n\nexport const createContentEntriesSchema = ({\n context\n}: Params): ICmsGraphQLSchemaPlugin<CmsContext> => {\n const enhancerConfig = context.container.resolve(HeadlessCmsEndpointConfig);\n if (enhancerConfig.type !== \"manage\") {\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n plugin.name = `headless-cms.graphql.schema.${enhancerConfig.type}.empty`;\n return plugin;\n }\n\n const onByMetaFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n const plugin = createCmsGraphQLSchemaPlugin({\n // Had to remove /* GraphQL */ because it causes issues with oxfmt formatting.\n typeDefs: `\n type CmsModelMeta {\n modelId: String!\n name: String!\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n description: String\n image: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta!\n status: String!\n published: CmsPublishedContentEntry\n title: String!\n description: String\n image: String\n \n ${onByMetaFields}\n \n wbyAco_location: WbyAcoLocation\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry!]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse!\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse!\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const modelsResult = await context.container\n .resolve(ListModelsUseCase)\n .execute();\n if (modelsResult.isFail()) {\n return null;\n }\n const model = modelsResult.value.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const result = await context.container\n .resolve(GetPublishedEntriesByIdsUseCase)\n .execute(model, [parent.id]);\n if (result.isFail()) {\n return null;\n }\n const entry = result.value[0];\n if (!entry) {\n return null;\n }\n return createCmsEntryRecord(model, entry);\n } catch {\n return null;\n }\n },\n description: createResolveDescription()\n },\n CmsPublishedContentEntry: {\n description: createResolveDescription()\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const modelsResult = await context.container\n .resolve(ListModelsUseCase)\n .execute();\n if (modelsResult.isFail()) {\n return new ErrorResponse(modelsResult.error);\n }\n const models = modelsResult.value;\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const listLatest =\n await context.container.resolve(ListLatestEntriesUseCase);\n const where: CmsEntryListWhere = {};\n\n const result = await listLatest.execute(model, {\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n // TODO figure a better way to handle errors in parallel execution\n if (result.isFail()) {\n throw result.error;\n }\n const { entries } = result.value;\n return entries.map((entry: CmsEntry) => {\n return createCmsEntryRecord(model, entry);\n });\n });\n\n try {\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => b.savedOn.getTime() - a.savedOn.getTime())\n .slice(0, limit)\n );\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n\n plugin.name = `headless-cms.graphql.schema.${context.container.resolve(HeadlessCmsEndpointConfig).type}.content-entries`;\n\n return plugin;\n};\n"],"names":["createDate","date","Date","createCmsEntryRecord","model","entry","getEntryTitle","getEntryDescription","getEntryImage","getFetchMethod","type","context","ids","result","GetLatestEntriesByIdsUseCase","GetPublishedEntriesByIdsUseCase","GetEntriesByIdsUseCase","getContentEntries","params","args","method","modelsResult","ListModelsUseCase","models","modelsMap","collection","argsEntries","entriesByModel","ref","getters","Object","modelId","Response","results","Promise","entries","items","item","Boolean","ex","ErrorResponse","getContentEntry","id","m","NotAuthorizedResponse","createResolveDescription","parent","_","field","f","value","entryFieldFromStorageTransform","createContentEntriesSchema","enhancerConfig","HeadlessCmsEndpointConfig","plugin","createCmsGraphQLSchemaPlugin","onByMetaFields","ENTRY_META_FIELDS","fieldType","isDateTimeEntryMetaField","modelIds","fields","query","limit","listLatest","ListLatestEntriesUseCase","where","undefined","a","b"],"mappings":";;;;;;;;;;;;;;AA8BA,MAAMA,aAAa,CAACC;IAChB,IAAI,CAACA,MACD,OAAO;IAGX,IAAI;QACA,OAAO,IAAIC,KAAKD;IACpB,EAAE,OAAM;QACJ,OAAO,IAAIC;IACf;AACJ;AA+CA,MAAMC,uBAAuB,CAACC,OAAiBC,QACpC;QACH,IAAIA,MAAM,EAAE;QACZ,SAASA,MAAM,OAAO;QACtB,OAAO;YACH,SAASD,MAAM,OAAO;YACtB,MAAMA,MAAM,IAAI;QACpB;QACA,QAAQC,MAAM,MAAM;QACpB,OAAOC,cAAcF,OAAOC;QAC5B,aAAaE,oBAAoBH,OAAOC;QACxC,OAAOG,cAAcJ,OAAOC;QAK5B,WAAWL,WAAWK,MAAM,SAAS;QACrC,YAAYL,WAAWK,MAAM,UAAU;QACvC,SAASL,WAAWK,MAAM,OAAO;QACjC,WAAWA,MAAM,SAAS;QAC1B,SAASA,MAAM,OAAO;QACtB,YAAYA,MAAM,UAAU;QAC5B,kBAAkBL,WAAWK,MAAM,gBAAgB;QACnD,iBAAiBL,WAAWK,MAAM,eAAe;QACjD,kBAAkBA,MAAM,gBAAgB;QACxC,iBAAiBA,MAAM,eAAe;QAKtC,mBAAmBL,WAAWK,MAAM,iBAAiB;QACrD,iBAAiBL,WAAWK,MAAM,eAAe;QACjD,oBAAoBL,WAAWK,MAAM,kBAAkB;QACvD,mBAAmBA,MAAM,iBAAiB;QAC1C,oBAAoBA,MAAM,kBAAkB;QAC5C,iBAAiBA,MAAM,eAAe;QACtC,0BAA0BL,WAAWK,MAAM,wBAAwB;QACnE,yBAAyBL,WAAWK,MAAM,uBAAuB;QACjE,0BAA0BA,MAAM,wBAAwB;QACxD,yBAAyBA,MAAM,uBAAuB;QAEtD,iBAAiB;YACb,UAAUA,MAAM,QAAQ,EAAE,YAAY;QAC1C;IACJ;AAOJ,MAAMI,iBAAiB,CAACC,MAA2BC;IAC/C,IAAID,AAAS,aAATA,MACA,OAAO,OAAON,OAAOQ;QACjB,MAAMC,SAAS,MAAMF,QAAQ,SAAS,CACjC,OAAO,CAACG,8BACR,OAAO,CAACV,OAAOQ;QACpB,IAAIC,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;IACG,IAAIH,AAAS,gBAATA,MACP,OAAO,OAAON,OAAOQ;QACjB,MAAMC,SAAS,MAAMF,QAAQ,SAAS,CACjC,OAAO,CAACI,iCACR,OAAO,CAACX,OAAOQ;QACpB,IAAIC,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;IAEA,OAAO,OAAOT,OAAOQ;QACjB,MAAMC,SAAS,MAAMF,QAAQ,SAAS,CACjC,OAAO,CAACK,wBACR,OAAO,CAACZ,OAAOQ;QACpB,IAAIC,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;QAEtB,OAAOA,OAAO,KAAK;IACvB;AAER;AAaA,MAAMI,oBAAoB,OACtBC;IAEA,MAAM,EAAEC,IAAI,EAAER,OAAO,EAAED,IAAI,EAAE,GAAGQ;IAEhC,MAAME,SAASX,eAAeC,MAAMC;IAEpC,MAAMU,eAAe,MAAMV,QAAQ,SAAS,CAAC,OAAO,CAACW,mBAAmB,OAAO;IAC/E,IAAID,aAAa,MAAM,IACnB,MAAMA,aAAa,KAAK;IAE5B,MAAME,SAASF,aAAa,KAAK;IAEjC,MAAMG,YAAYD,OAAO,MAAM,CAC3B,CAACE,YAAYrB;QACTqB,UAAU,CAACrB,MAAM,OAAO,CAAC,GAAGA;QAC5B,OAAOqB;IACX,GACA,CAAC;IAGL,MAAMC,cAAcP,KAAK,OAAO;IAEhC,MAAMQ,iBAAiBD,YAAY,MAAM,CAAC,CAACD,YAAYG;QACnD,IAAKH,UAAU,CAACG,IAAI,OAAO,CAAC,EAErB;YAAA,IAAIH,UAAU,CAACG,IAAI,OAAO,CAAC,CAAC,QAAQ,CAACA,IAAI,EAAE,GAC9C,OAAOH;QACX,OAHIA,UAAU,CAACG,IAAI,OAAO,CAAC,GAAG,EAAE;QAIhCH,UAAU,CAACG,IAAI,OAAO,CAAC,CAAC,IAAI,CAACA,IAAI,EAAE;QACnC,OAAOH;IACX,GAAG,CAAC;IAEJ,MAAMI,UAAiCC,OAAO,IAAI,CAACH,gBAAgB,GAAG,CAAC,OAAMI,UAClEX,OAAOI,SAAS,CAACO,QAAQ,EAAEJ,cAAc,CAACI,QAAQ;IAG7D,IAAIF,AAAmB,MAAnBA,QAAQ,MAAM,EACd,OAAO,IAAIG,SAAS,EAAE;IAG1B,IAAI;QACA,MAAMC,UAAU,MAAMC,QAAQ,GAAG,CAACL;QAElC,MAAMM,UAAUF,QACX,MAAM,CAAmB,CAACR,YAAYW,QAC5BX,WAAW,MAAM,CACpBW,MAAM,GAAG,CAACC,CAAAA;gBACN,MAAMjC,QAAQoB,SAAS,CAACa,KAAK,OAAO,CAAC;gBAErC,OAAOlC,qBAAqBC,OAAOiC;YACvC,KAEL,EAAE,EACJ,MAAM,CAACC;QAEZ,OAAO,IAAIN,SAASG;IACxB,EAAE,OAAOI,IAAI;QACT,OAAO,IAAIC,cAAcD;IAC7B;AACJ;AAaA,MAAME,kBAAkB,OACpBvB;IAEA,MAAM,EAAEC,IAAI,EAAER,OAAO,EAAED,IAAI,EAAE,GAAGQ;IAEhC,MAAME,SAASX,eAAeC,MAAMC;IAEpC,MAAM,EAAEoB,OAAO,EAAEW,EAAE,EAAE,GAAGvB,KAAK,KAAK;IAClC,MAAME,eAAe,MAAMV,QAAQ,SAAS,CAAC,OAAO,CAACW,mBAAmB,OAAO;IAC/E,IAAID,aAAa,MAAM,IACnB,MAAMA,aAAa,KAAK;IAE5B,MAAMjB,QAAQiB,aAAa,KAAK,CAAC,IAAI,CAACsB,CAAAA,IAAKA,EAAE,OAAO,KAAKZ;IAEzD,IAAI,CAAC3B,OACD,OAAO,IAAIwC,sBAAsB;QAC7B,MAAM;YACFb;QACJ;IACJ;IAGJ,MAAMlB,SAAS,MAAMO,OAAOhB,OAAO;QAACsC;KAAG;IAEvC,MAAMrC,QAAQQ,OAAO,KAAK;IAC1B,IAAI,CAACR,OACD,OAAO,IAAI2B,SAAS;IAGxB,OAAO,IAAIA,SAAS7B,qBAAqBC,OAAOC;AACpD;AAIA,MAAMwC,2BAA2B,IACtB,OAAOC,QAAQC,GAAGpC;QACrB,MAAMU,eAAe,MAAMV,QAAQ,SAAS,CAAC,OAAO,CAACW,mBAAmB,OAAO;QAC/E,IAAID,aAAa,MAAM,IACnB,OAAO;QAEX,MAAMjB,QAAQiB,aAAa,KAAK,CAAC,IAAI,CAAC,CAAC,EAAEU,OAAO,EAAE,GACvCe,OAAO,KAAK,CAAC,OAAO,KAAKf;QAEpC,IAAI,CAAC3B,OACD,OAAO;QAEX,MAAM4C,QAAQ5C,MAAM,MAAM,CAAC,IAAI,CAAC6C,CAAAA,IAAKA,EAAE,OAAO,KAAK7C,MAAM,kBAAkB;QAC3E,IAAI,CAAC4C,OACD,OAAO;QAEX,MAAME,QAAQJ,OAAO,WAAW,IAAIA,MAAM,CAACE,MAAM,OAAO,CAAC;QACzD,IAAI,CAACE,OACD,OAAO;QAEX,OAAOC,+BAA+B;YAClCxC;YACAP;YACA4C;YACAE;QACJ;IACJ;AAOG,MAAME,6BAA6B,CAAC,EACvCzC,OAAO,EACF;IACL,MAAM0C,iBAAiB1C,QAAQ,SAAS,CAAC,OAAO,CAAC2C;IACjD,IAAID,AAAwB,aAAxBA,eAAe,IAAI,EAAe;QAClC,MAAME,SAASC,6BAA6B;YACxC,UAAU;YACV,WAAW,CAAC;QAChB;QACAD,OAAO,IAAI,GAAG,CAAC,4BAA4B,EAAEF,eAAe,IAAI,CAAC,MAAM,CAAC;QACxE,OAAOE;IACX;IAEA,MAAME,iBAAiBC,kBAAkB,GAAG,CAACV,CAAAA;QACzC,MAAMW,YAAYC,yBAAyBZ,SAAS,aAAa;QAEjE,OAAO,GAAGA,MAAM,EAAE,EAAEW,WAAW;IACnC,GAAG,IAAI,CAAC;IAER,MAAMJ,SAASC,6BAA6B;QAExC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;gBAwBH,EAAEC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0CzB,CAAC;QACD,WAAW;YACP,iBAAiB;gBACb,WAAW,OAAOX,QAAQC,GAAGpC;oBACzB,IAAI;wBACA,MAAMU,eAAe,MAAMV,QAAQ,SAAS,CACvC,OAAO,CAACW,mBACR,OAAO;wBACZ,IAAID,aAAa,MAAM,IACnB,OAAO;wBAEX,MAAMjB,QAAQiB,aAAa,KAAK,CAAC,IAAI,CAAC,CAAC,EAAEU,OAAO,EAAE,GACvCe,OAAO,KAAK,CAAC,OAAO,KAAKf;wBAEpC,IAAI,CAAC3B,OACD,OAAO;wBAEX,MAAMS,SAAS,MAAMF,QAAQ,SAAS,CACjC,OAAO,CAACI,iCACR,OAAO,CAACX,OAAO;4BAAC0C,OAAO,EAAE;yBAAC;wBAC/B,IAAIjC,OAAO,MAAM,IACb,OAAO;wBAEX,MAAMR,QAAQQ,OAAO,KAAK,CAAC,EAAE;wBAC7B,IAAI,CAACR,OACD,OAAO;wBAEX,OAAOF,qBAAqBC,OAAOC;oBACvC,EAAE,OAAM;wBACJ,OAAO;oBACX;gBACJ;gBACA,aAAawC;YACjB;YACA,0BAA0B;gBACtB,aAAaA;YACjB;YACA,OAAO;gBACH,MAAM,sBAAqBE,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBAC5C,MAAM,EAAEkD,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAE,EAAE,GAAG7C;oBAChD,MAAME,eAAe,MAAMV,QAAQ,SAAS,CACvC,OAAO,CAACW,mBACR,OAAO;oBACZ,IAAID,aAAa,MAAM,IACnB,OAAO,IAAImB,cAAcnB,aAAa,KAAK;oBAE/C,MAAME,SAASF,aAAa,KAAK;oBAEjC,MAAMQ,UAAUN,OACX,MAAM,CAACnB,CAAAA,QAASyD,SAAS,QAAQ,CAACzD,MAAM,OAAO,GAC/C,GAAG,CAAC,OAAMA;wBACP,MAAM6D,aACF,MAAMtD,QAAQ,SAAS,CAAC,OAAO,CAACuD;wBACpC,MAAMC,QAA2B,CAAC;wBAElC,MAAMtD,SAAS,MAAMoD,WAAW,OAAO,CAAC7D,OAAO;4BAC3C4D;4BACAG;4BACA,QAAQ,AAAEJ,QAAQA,QAAQK;4BAC1B,QAAQN,UAAU,EAAE;wBACxB;wBAEA,IAAIjD,OAAO,MAAM,IACb,MAAMA,OAAO,KAAK;wBAEtB,MAAM,EAAEsB,OAAO,EAAE,GAAGtB,OAAO,KAAK;wBAChC,OAAOsB,QAAQ,GAAG,CAAC,CAAC9B,QACTF,qBAAqBC,OAAOC;oBAE3C;oBAEJ,IAAI;wBACA,MAAM8B,UAAU,MAAMD,QAAQ,GAAG,CAACL,SAAS,IAAI,CAACI,CAAAA,UAC5CA,QAAQ,MAAM,CAAC,CAACpB,QAAQwB,OAASxB,OAAO,MAAM,CAACwB,OAAO,EAAE;wBAG5D,OAAO,IAAIL,SACPG,QACK,IAAI,CAAC,CAACkC,GAAGC,IAAMA,EAAE,OAAO,CAAC,OAAO,KAAKD,EAAE,OAAO,CAAC,OAAO,IACtD,KAAK,CAAC,GAAGL;oBAEtB,EAAE,OAAOzB,IAAI;wBACT,OAAO,IAAIC,cAAcD;oBAC7B;gBACJ;gBACA,MAAM,iBAAgBQ,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBACvC,OAAO8B,gBAAgB;wBACnBtB;wBACAR;wBACA,MAAM;oBACV;gBACJ;gBACA,MAAM,uBAAsBoC,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBAC7C,OAAO8B,gBAAgB;wBACnBtB;wBACAR;wBACA,MAAM;oBACV;gBACJ;gBACA,MAAM,0BAAyBoC,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBAChD,OAAO8B,gBAAgB;wBACnBtB;wBACAR;wBACA,MAAM;oBACV;gBACJ;gBACA,MAAM,mBAAkBoC,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBACzC,OAAOM,kBAAkB;wBACrBE;wBACAR;wBACA,MAAM;oBACV;gBACJ;gBACA,MAAM,yBAAwBoC,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBAC/C,OAAOM,kBAAkB;wBACrBE;wBACAR;wBACA,MAAM;oBACV;gBACJ;gBACA,MAAM,4BAA2BoC,CAAC,EAAE5B,IAAS,EAAER,OAAO;oBAClD,OAAOM,kBAAkB;wBACrBE;wBACAR;wBACA,MAAM;oBACV;gBACJ;YACJ;QACJ;IACJ;IAEA4C,OAAO,IAAI,GAAG,CAAC,4BAA4B,EAAE5C,QAAQ,SAAS,CAAC,OAAO,CAAC2C,2BAA2B,IAAI,CAAC,gBAAgB,CAAC;IAExH,OAAOC;AACX"}
@@ -1,9 +1,18 @@
1
- import { ErrorResponse, NotFoundError, Response } from "@webiny/handler-graphql";
2
- import { CmsGroupPlugin } from "../../plugins/CmsGroupPlugin.js";
1
+ import { ErrorResponse, NotFoundError, Response } from "@webiny/api-graphql";
2
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/abstractions.js";
3
3
  import { createCmsGraphQLSchemaPlugin } from "../../plugins/index.js";
4
+ import { GetGroupUseCase } from "../../features/contentModelGroup/GetGroup/index.js";
5
+ import { ListGroupsUseCase } from "../../features/contentModelGroup/ListGroups/index.js";
6
+ import { CreateGroupUseCase } from "../../features/contentModelGroup/CreateGroup/index.js";
7
+ import { UpdateGroupUseCase } from "../../features/contentModelGroup/UpdateGroup/index.js";
8
+ import { DeleteGroupUseCase } from "../../features/contentModelGroup/DeleteGroup/index.js";
9
+ import { PluginGroupsProvider } from "../../features/contentModelGroup/shared/index.js";
10
+ import { ListModelsUseCase } from "../../features/contentModel/ListModels/index.js";
11
+ import { HeadlessCmsEndpointConfig } from "../../HeadlessCmsEndpointConfig.js";
4
12
  const createGroupsSchema = ({ context })=>{
13
+ const isManage = "manage" === context.container.resolve(HeadlessCmsEndpointConfig).type;
5
14
  let manageSchema = "";
6
- if (context.cms.MANAGE) manageSchema = `
15
+ if (isManage) manageSchema = `
7
16
  input CmsContentModelGroupInput {
8
17
  id: ID
9
18
  name: String!
@@ -42,29 +51,36 @@ const createGroupsSchema = ({ context })=>{
42
51
  }
43
52
  `;
44
53
  let resolvers = {};
45
- if (context.cms.MANAGE) resolvers = {
54
+ if (isManage) resolvers = {
46
55
  CmsContentModelGroup: {
47
56
  contentModels: async (group, _, context)=>{
48
- const models = await context.security.withoutAuthorization(async ()=>context.cms.listModels());
49
- return models.filter((model)=>{
57
+ const result = await context.container.resolve(IdentityContext).withoutAuthorization(async ()=>context.container.resolve(ListModelsUseCase).execute());
58
+ if (result.isFail()) return [];
59
+ return result.value.filter((model)=>{
50
60
  if (true === model.isPrivate) return false;
51
61
  return model.group === group.slug;
52
62
  });
53
63
  },
54
64
  totalContentModels: async (group, _, context)=>{
55
- const models = await context.security.withoutAuthorization(async ()=>context.cms.listModels());
56
- return models.filter((model)=>{
65
+ const result = await context.container.resolve(IdentityContext).withoutAuthorization(async ()=>context.container.resolve(ListModelsUseCase).execute());
66
+ if (result.isFail()) return 0;
67
+ return result.value.filter((model)=>{
57
68
  if (true === model.isPrivate) return false;
58
69
  return model.group === group.slug;
59
70
  }).length;
60
71
  },
61
- plugin: async (group, _, context)=>context.plugins.byType(CmsGroupPlugin.type).some((item)=>item.contentModelGroup.id === group.id)
72
+ plugin: async (group, _, context)=>{
73
+ const pluginGroups = await context.container.resolve(PluginGroupsProvider).getGroups();
74
+ return pluginGroups.some((pg)=>pg.id === group.id);
75
+ }
62
76
  },
63
77
  Query: {
64
78
  getContentModelGroup: async (_, args, context)=>{
65
79
  try {
66
80
  const { id } = args;
67
- const group = await context.cms.getGroup(id);
81
+ const result = await context.container.resolve(GetGroupUseCase).execute(id);
82
+ if (result.isFail()) throw result.error;
83
+ const group = result.value;
68
84
  if (group?.isPrivate) throw new NotFoundError(`Cms Group "${id}" was not found!`);
69
85
  return new Response(group);
70
86
  } catch (e) {
@@ -73,8 +89,9 @@ const createGroupsSchema = ({ context })=>{
73
89
  },
74
90
  listContentModelGroups: async (_, __, context)=>{
75
91
  try {
76
- const groups = await context.cms.listGroups();
77
- return new Response(groups.filter((group)=>true !== group.isPrivate));
92
+ const result = await context.container.resolve(ListGroupsUseCase).execute();
93
+ if (result.isFail()) throw result.error;
94
+ return new Response(result.value.filter((group)=>true !== group.isPrivate));
78
95
  } catch (e) {
79
96
  return new ErrorResponse(e);
80
97
  }
@@ -83,23 +100,26 @@ const createGroupsSchema = ({ context })=>{
83
100
  Mutation: {
84
101
  createContentModelGroup: async (_, args, context)=>{
85
102
  try {
86
- const model = await context.cms.createGroup(args.data);
87
- return new Response(model);
103
+ const result = await context.container.resolve(CreateGroupUseCase).execute(args.data);
104
+ if (result.isFail()) throw result.error;
105
+ return new Response(result.value);
88
106
  } catch (e) {
89
107
  return new ErrorResponse(e);
90
108
  }
91
109
  },
92
110
  updateContentModelGroup: async (_, args, context)=>{
93
111
  try {
94
- const group = await context.cms.updateGroup(args.id, args.data);
95
- return new Response(group);
112
+ const result = await context.container.resolve(UpdateGroupUseCase).execute(args.id, args.data);
113
+ if (result.isFail()) throw result.error;
114
+ return new Response(result.value);
96
115
  } catch (e) {
97
116
  return new ErrorResponse(e);
98
117
  }
99
118
  },
100
119
  deleteContentModelGroup: async (_, args, context)=>{
101
120
  try {
102
- await context.cms.deleteGroup(args.id);
121
+ const result = await context.container.resolve(DeleteGroupUseCase).execute(args.id);
122
+ if (result.isFail()) throw result.error;
103
123
  return new Response(true);
104
124
  } catch (e) {
105
125
  return new ErrorResponse(e);
@@ -128,7 +148,8 @@ const createGroupsSchema = ({ context })=>{
128
148
  `,
129
149
  resolvers
130
150
  });
131
- plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-model-groups`;
151
+ const endpointType = context.container.resolve(HeadlessCmsEndpointConfig).type;
152
+ plugin.name = `headless-cms.graphql.schema.${endpointType}.content-model-groups`;
132
153
  return plugin;
133
154
  };
134
155
  export { createGroupsSchema };
@@ -1 +1 @@
1
- {"version":3,"file":"graphql/schema/contentModelGroups.js","sources":["../../../src/graphql/schema/contentModelGroups.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/handler-graphql\";\nimport type { CmsContext } from \"~/types/index.js\";\nimport type { Resolvers } from \"@webiny/handler-graphql/types.js\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin.js\";\nimport type { ICmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { createCmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\n\ninterface Params {\n context: CmsContext;\n}\nexport const createGroupsSchema = ({ context }: Params): ICmsGraphQLSchemaPlugin => {\n let manageSchema = \"\";\n if (context.cms.MANAGE) {\n manageSchema = /* GraphQL */ `\n input CmsContentModelGroupInput {\n id: ID\n name: String!\n slug: String\n description: String\n icon: Icon!\n }\n\n type CmsContentModelGroupResponse {\n data: CmsContentModelGroup\n error: CmsError\n }\n\n type CmsContentModelGroupListResponse {\n data: [CmsContentModelGroup]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModelGroup(id: ID): CmsContentModelGroupResponse\n listContentModelGroups: CmsContentModelGroupListResponse\n }\n\n extend type Mutation {\n createContentModelGroup(\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n updateContentModelGroup(\n id: ID!\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n deleteContentModelGroup(id: ID!): CmsDeleteResponse\n }\n `;\n }\n\n let resolvers: Resolvers<CmsContext> = {};\n\n if (context.cms.MANAGE) {\n resolvers = {\n CmsContentModelGroup: {\n contentModels: async (group, _, context) => {\n const models = await context.security.withoutAuthorization(async () => {\n return context.cms.listModels();\n });\n return models.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group === group.slug;\n });\n },\n totalContentModels: async (group, _, context) => {\n const models = await context.security.withoutAuthorization(async () => {\n return context.cms.listModels();\n });\n return models.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group === group.slug;\n }).length;\n },\n plugin: async (group, _, context: CmsContext): Promise<boolean> => {\n return context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .some(item => item.contentModelGroup.id === group.id);\n }\n },\n Query: {\n getContentModelGroup: async (_, args: any, context) => {\n try {\n const { id } = args;\n const group = await context.cms.getGroup(id);\n if (group?.isPrivate) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModelGroups: async (_, __, context) => {\n try {\n const groups = await context.cms.listGroups();\n return new Response(groups.filter(group => group.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n Mutation: {\n createContentModelGroup: async (_, args: any, context) => {\n try {\n const model = await context.cms.createGroup(args.data);\n return new Response(model);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModelGroup: async (_, args: any, context) => {\n try {\n const group = await context.cms.updateGroup(args.id, args.data);\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModelGroup: async (_, args: any, context) => {\n try {\n await context.cms.deleteGroup(args.id);\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n };\n }\n\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsContentModelGroup {\n id: ID!\n createdOn: DateTime\n savedOn: DateTime\n name: String!\n contentModels: [CmsContentModel!]\n totalContentModels: Int!\n slug: String!\n description: String\n icon: Icon\n createdBy: CmsIdentity\n\n # Returns true if the content model group is registered via a plugin.\n plugin: Boolean!\n }\n ${manageSchema}\n `,\n resolvers\n });\n\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-model-groups`;\n\n return plugin;\n};\n"],"names":["createGroupsSchema","context","manageSchema","resolvers","group","_","models","model","CmsGroupPlugin","item","args","id","NotFoundError","Response","e","ErrorResponse","__","groups","plugin","createCmsGraphQLSchemaPlugin"],"mappings":"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"}
1
+ {"version":3,"file":"graphql/schema/contentModelGroups.js","sources":["../../../src/graphql/schema/contentModelGroups.ts"],"sourcesContent":["import { ErrorResponse, NotFoundError, Response } from \"@webiny/api-graphql\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/abstractions.js\";\nimport type { CmsContext } from \"~/types/index.js\";\nimport type { Resolvers } from \"@webiny/api-graphql/types.js\";\nimport type { ICmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { createCmsGraphQLSchemaPlugin } from \"~/plugins/index.js\";\nimport { GetGroupUseCase } from \"~/features/contentModelGroup/GetGroup/index.js\";\nimport { ListGroupsUseCase } from \"~/features/contentModelGroup/ListGroups/index.js\";\nimport { CreateGroupUseCase } from \"~/features/contentModelGroup/CreateGroup/index.js\";\nimport { UpdateGroupUseCase } from \"~/features/contentModelGroup/UpdateGroup/index.js\";\nimport { DeleteGroupUseCase } from \"~/features/contentModelGroup/DeleteGroup/index.js\";\nimport { PluginGroupsProvider } from \"~/features/contentModelGroup/shared/index.js\";\nimport { ListModelsUseCase } from \"~/features/contentModel/ListModels/index.js\";\nimport { HeadlessCmsEndpointConfig } from \"~/HeadlessCmsEndpointConfig.js\";\n\ninterface Params {\n context: CmsContext;\n}\nexport const createGroupsSchema = ({ context }: Params): ICmsGraphQLSchemaPlugin => {\n const isManage = context.container.resolve(HeadlessCmsEndpointConfig).type === \"manage\";\n\n let manageSchema = \"\";\n if (isManage) {\n manageSchema = /* GraphQL */ `\n input CmsContentModelGroupInput {\n id: ID\n name: String!\n slug: String\n description: String\n icon: Icon!\n }\n\n type CmsContentModelGroupResponse {\n data: CmsContentModelGroup\n error: CmsError\n }\n\n type CmsContentModelGroupListResponse {\n data: [CmsContentModelGroup]\n meta: CmsListMeta\n error: CmsError\n }\n\n extend type Query {\n getContentModelGroup(id: ID): CmsContentModelGroupResponse\n listContentModelGroups: CmsContentModelGroupListResponse\n }\n\n extend type Mutation {\n createContentModelGroup(\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n updateContentModelGroup(\n id: ID!\n data: CmsContentModelGroupInput!\n ): CmsContentModelGroupResponse\n\n deleteContentModelGroup(id: ID!): CmsDeleteResponse\n }\n `;\n }\n\n let resolvers: Resolvers<CmsContext> = {};\n\n if (isManage) {\n resolvers = {\n CmsContentModelGroup: {\n contentModels: async (group, _, context) => {\n const result = await context.container\n .resolve(IdentityContext)\n .withoutAuthorization(async () => {\n return context.container.resolve(ListModelsUseCase).execute();\n });\n if (result.isFail()) {\n return [];\n }\n return result.value.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group === group.slug;\n });\n },\n totalContentModels: async (group, _, context) => {\n const result = await context.container\n .resolve(IdentityContext)\n .withoutAuthorization(async () => {\n return context.container.resolve(ListModelsUseCase).execute();\n });\n if (result.isFail()) {\n return 0;\n }\n return result.value.filter(model => {\n if (model.isPrivate === true) {\n return false;\n }\n return model.group === group.slug;\n }).length;\n },\n plugin: async (group, _, context) => {\n const pluginGroups = await context.container\n .resolve(PluginGroupsProvider)\n .getGroups();\n return pluginGroups.some(pg => pg.id === group.id);\n }\n },\n Query: {\n getContentModelGroup: async (_, args: any, context) => {\n try {\n const { id } = args;\n const result = await context.container.resolve(GetGroupUseCase).execute(id);\n if (result.isFail()) {\n throw result.error;\n }\n const group = result.value;\n if (group?.isPrivate) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return new Response(group);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n listContentModelGroups: async (_, __, context) => {\n try {\n const result = await context.container.resolve(ListGroupsUseCase).execute();\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(result.value.filter(group => group.isPrivate !== true));\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n Mutation: {\n createContentModelGroup: async (_, args: any, context) => {\n try {\n const result = await context.container\n .resolve(CreateGroupUseCase)\n .execute(args.data);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(result.value);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n updateContentModelGroup: async (_, args: any, context) => {\n try {\n const result = await context.container\n .resolve(UpdateGroupUseCase)\n .execute(args.id, args.data);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(result.value);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n deleteContentModelGroup: async (_, args: any, context) => {\n try {\n const result = await context.container\n .resolve(DeleteGroupUseCase)\n .execute(args.id);\n if (result.isFail()) {\n throw result.error;\n }\n return new Response(true);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n };\n }\n\n const plugin = createCmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsContentModelGroup {\n id: ID!\n createdOn: DateTime\n savedOn: DateTime\n name: String!\n contentModels: [CmsContentModel!]\n totalContentModels: Int!\n slug: String!\n description: String\n icon: Icon\n createdBy: CmsIdentity\n\n # Returns true if the content model group is registered via a plugin.\n plugin: Boolean!\n }\n ${manageSchema}\n `,\n resolvers\n });\n\n const endpointType = context.container.resolve(HeadlessCmsEndpointConfig).type;\n plugin.name = `headless-cms.graphql.schema.${endpointType}.content-model-groups`;\n\n return plugin;\n};\n"],"names":["createGroupsSchema","context","isManage","HeadlessCmsEndpointConfig","manageSchema","resolvers","group","_","result","IdentityContext","ListModelsUseCase","model","pluginGroups","PluginGroupsProvider","pg","args","id","GetGroupUseCase","NotFoundError","Response","e","ErrorResponse","__","ListGroupsUseCase","CreateGroupUseCase","UpdateGroupUseCase","DeleteGroupUseCase","plugin","createCmsGraphQLSchemaPlugin","endpointType"],"mappings":"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"}
@@ -1,24 +1,35 @@
1
- import { ErrorResponse, NotFoundError, Response } from "@webiny/handler-graphql";
1
+ import { ErrorResponse, NotFoundError, Response } from "@webiny/api-graphql";
2
2
  import { createCmsGraphQLSchemaPlugin } from "../../plugins/index.js";
3
+ import { GetModelUseCase } from "../../features/contentModel/GetModel/index.js";
4
+ import { ListModelsUseCase } from "../../features/contentModel/ListModels/index.js";
5
+ import { CreateModelUseCase } from "../../features/contentModel/CreateModel/index.js";
6
+ import { CreateModelFromUseCase } from "../../features/contentModel/CreateModelFrom/index.js";
7
+ import { UpdateModelUseCase } from "../../features/contentModel/UpdateModel/index.js";
8
+ import { DeleteModelUseCase } from "../../features/contentModel/DeleteModel/index.js";
9
+ import { HeadlessCmsEndpointConfig } from "../../HeadlessCmsEndpointConfig.js";
10
+ import { ValuesSelectionGenerator } from "../../features/contentModel/ValuesSelectionGenerator/abstractions.js";
3
11
  const createModelsSchema = ({ context })=>{
12
+ const isManage = "manage" === context.container.resolve(HeadlessCmsEndpointConfig).type;
4
13
  const resolvers = {
5
14
  Query: {
6
15
  getContentModel: async (_, args, context)=>{
7
16
  try {
8
- const model = await context.cms.getModel(args.modelId);
9
- if (!model) throw new NotFoundError(`Content model "${args.modelId}" was not found!`);
10
- return new Response(model);
17
+ const result = await context.container.resolve(GetModelUseCase).execute(args.modelId);
18
+ if (result.isFail()) throw result.error;
19
+ if (!result.value) throw new NotFoundError(`Content model "${args.modelId}" was not found!`);
20
+ return new Response(result.value);
11
21
  } catch (e) {
12
22
  return new ErrorResponse(e);
13
23
  }
14
24
  },
15
25
  listContentModels: async (_, args, context)=>{
16
26
  try {
17
- const models = await context.cms.listModels({
27
+ const result = await context.container.resolve(ListModelsUseCase).execute({
18
28
  includePrivate: false,
19
29
  includePlugins: args?.includePlugins !== false
20
30
  });
21
- return new Response(models);
31
+ if (result.isFail()) throw result.error;
32
+ return new Response(result.value);
22
33
  } catch (e) {
23
34
  return new ErrorResponse(e);
24
35
  }
@@ -44,24 +55,30 @@ const createModelsSchema = ({ context })=>{
44
55
  ...model.tags || []
45
56
  ];
46
57
  },
47
- plugin: (model)=>model.isPlugin ?? false
58
+ plugin: (model)=>model.isPlugin ?? false,
59
+ valuesSelection: (model, _, ctx)=>{
60
+ const generator = ctx.container.resolve(ValuesSelectionGenerator);
61
+ return generator.generate(model);
62
+ }
48
63
  }
49
64
  };
50
65
  let manageSchema = "";
51
- if (context.cms.MANAGE) {
66
+ if (isManage) {
52
67
  resolvers["Mutation"] = {
53
68
  createContentModel: async (_, args, context)=>{
54
69
  try {
55
- const model = await context.cms.createModel(args.data);
56
- return new Response(model);
70
+ const result = await context.container.resolve(CreateModelUseCase).execute(args.data);
71
+ if (result.isFail()) throw result.error;
72
+ return new Response(result.value);
57
73
  } catch (e) {
58
74
  return new ErrorResponse(e);
59
75
  }
60
76
  },
61
77
  createContentModelFrom: async (_, args, context)=>{
62
78
  try {
63
- const model = await context.cms.createModelFrom(args.modelId, args.data);
64
- return new Response(model);
79
+ const result = await context.container.resolve(CreateModelFromUseCase).execute(args.modelId, args.data);
80
+ if (result.isFail()) throw result.error;
81
+ return new Response(result.value);
65
82
  } catch (e) {
66
83
  return new ErrorResponse(e);
67
84
  }
@@ -69,8 +86,9 @@ const createModelsSchema = ({ context })=>{
69
86
  updateContentModel: async (_, args, context)=>{
70
87
  const { modelId, data } = args;
71
88
  try {
72
- const model = await context.cms.updateModel(modelId, data);
73
- return new Response(model);
89
+ const result = await context.container.resolve(UpdateModelUseCase).execute(modelId, data);
90
+ if (result.isFail()) throw result.error;
91
+ return new Response(result.value);
74
92
  } catch (e) {
75
93
  return new ErrorResponse(e);
76
94
  }
@@ -78,7 +96,8 @@ const createModelsSchema = ({ context })=>{
78
96
  deleteContentModel: async (_, args, context)=>{
79
97
  const { modelId } = args;
80
98
  try {
81
- await context.cms.deleteModel(modelId);
99
+ const result = await context.container.resolve(DeleteModelUseCase).execute(modelId);
100
+ if (result.isFail()) throw result.error;
82
101
  return new Response(true);
83
102
  } catch (e) {
84
103
  return new ErrorResponse(e);
@@ -271,6 +290,7 @@ const createModelsSchema = ({ context })=>{
271
290
  tenant: String!
272
291
  # Returns true if the content model is registered via a plugin.
273
292
  plugin: Boolean!
293
+ valuesSelection: String
274
294
  }
275
295
 
276
296
  type CmsContentModelResponse {
@@ -294,7 +314,8 @@ const createModelsSchema = ({ context })=>{
294
314
  `,
295
315
  resolvers
296
316
  });
297
- plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-models`;
317
+ const endpointType = context.container.resolve(HeadlessCmsEndpointConfig).type;
318
+ plugin.name = `headless-cms.graphql.schema.${endpointType}.content-models`;
298
319
  return plugin;
299
320
  };
300
321
  export { createModelsSchema };