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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1056) hide show
  1. package/constants.d.ts +2 -1
  2. package/constants.js +4 -0
  3. package/constants.js.map +1 -1
  4. package/context.d.ts +2 -5
  5. package/context.js +16 -7
  6. package/context.js.map +1 -1
  7. package/crud/AccessControl/AccessControl.d.ts +18 -28
  8. package/crud/AccessControl/AccessControl.js.map +1 -1
  9. package/crud/AccessControl/README.md +1 -1
  10. package/crud/contentEntry/entryDataFactories/createEntryData.js +27 -12
  11. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
  12. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +13 -6
  13. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
  14. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +4 -1
  15. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -1
  16. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +4 -1
  17. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -1
  18. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +2 -1
  19. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -1
  20. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +4 -3
  21. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -1
  22. package/crud/contentEntry/entryDataFactories/system.d.ts +10 -0
  23. package/crud/contentEntry/entryDataFactories/system.js +14 -0
  24. package/crud/contentEntry/entryDataFactories/system.js.map +1 -0
  25. package/crud/contentEntry/entryDataValidation.d.ts +1 -1
  26. package/crud/contentEntry/entryDataValidation.js +19 -16
  27. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  28. package/crud/contentEntry/references/buildPaths.d.ts +1 -1
  29. package/crud/contentEntry/references/buildPaths.js +3 -3
  30. package/crud/contentEntry/references/buildPaths.js.map +1 -1
  31. package/crud/contentEntry/searchableFields.d.ts +2 -3
  32. package/crud/contentEntry/searchableFields.js +15 -19
  33. package/crud/contentEntry/searchableFields.js.map +1 -1
  34. package/crud/contentEntry.crud.js +16 -11
  35. package/crud/contentEntry.crud.js.map +1 -1
  36. package/crud/contentModel/fields/descriptionField.js +1 -1
  37. package/crud/contentModel/fields/descriptionField.js.map +1 -1
  38. package/crud/contentModel/fields/imageField.js +1 -1
  39. package/crud/contentModel/fields/imageField.js.map +1 -1
  40. package/crud/contentModel/fields/titleField.js +1 -1
  41. package/crud/contentModel/fields/titleField.js.map +1 -1
  42. package/crud/contentModel/validation.d.ts +224 -902
  43. package/crud/contentModel/validation.js +64 -36
  44. package/crud/contentModel/validation.js.map +1 -1
  45. package/crud/contentModel.crud.js +2 -1
  46. package/crud/contentModel.crud.js.map +1 -1
  47. package/domain/contentEntry/EntryId.d.ts +1 -0
  48. package/domain/contentEntry/EntryId.js +2 -0
  49. package/domain/contentEntry/EntryId.js.map +1 -1
  50. package/domain/contentEntry/errors.d.ts +2 -2
  51. package/domain/contentEntry/errors.js.map +1 -1
  52. package/domain/contentModel/errors.d.ts +1 -1
  53. package/domain/contentModel/errors.js.map +1 -1
  54. package/domain/contentModel/schemas.d.ts +198 -616
  55. package/domain/contentModel/schemas.js +55 -37
  56. package/domain/contentModel/schemas.js.map +1 -1
  57. package/domain/contentModel/validation/fields/descriptionField.js +1 -1
  58. package/domain/contentModel/validation/fields/descriptionField.js.map +1 -1
  59. package/domain/contentModel/validation/fields/imageField.js +1 -1
  60. package/domain/contentModel/validation/fields/imageField.js.map +1 -1
  61. package/domain/contentModel/validation/fields/titleField.js +1 -1
  62. package/domain/contentModel/validation/fields/titleField.js.map +1 -1
  63. package/domain/contentModel/validation/modelFields.js +15 -20
  64. package/domain/contentModel/validation/modelFields.js.map +1 -1
  65. package/domain/contentModelGroup/validation.d.ts +34 -82
  66. package/domain/contentModelGroup/validation.js +2 -2
  67. package/domain/contentModelGroup/validation.js.map +1 -1
  68. package/export/graphql/index.js +1 -1
  69. package/export/graphql/index.js.map +1 -1
  70. package/export/types.js.map +1 -1
  71. package/exports/api/cms/entry.d.ts +3 -0
  72. package/exports/api/cms/entry.js +6 -0
  73. package/exports/api/cms/entry.js.map +1 -1
  74. package/exports/api/cms/graphql.d.ts +1 -0
  75. package/exports/api/cms/graphql.js +3 -0
  76. package/exports/api/cms/graphql.js.map +1 -0
  77. package/exports/api/cms/model.d.ts +5 -1
  78. package/exports/api/cms/model.js +3 -1
  79. package/exports/api/cms/model.js.map +1 -1
  80. package/exports/api/cms/storage.d.ts +3 -0
  81. package/exports/api/cms/storage.js +5 -0
  82. package/exports/api/cms/storage.js.map +1 -0
  83. package/exports/api/cms/validation.d.ts +4 -0
  84. package/exports/api/cms/validation.js +6 -0
  85. package/exports/api/cms/validation.js.map +1 -0
  86. package/extensions/entryHooks/OnEntryBeforeCreate.d.ts +3 -7
  87. package/extensions/index.d.ts +2 -6
  88. package/features/contentEntry/ContentEntriesFeature.d.ts +4 -1
  89. package/features/contentEntry/ContentEntriesFeature.js +6 -0
  90. package/features/contentEntry/ContentEntriesFeature.js.map +1 -1
  91. package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.d.ts +1 -1
  92. package/{utils/contentEntryTraverser → features/contentEntry/ContentEntryTraverser}/ContentEntryTraverser.js +2 -2
  93. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverser.js.map +1 -0
  94. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.d.ts +14 -0
  95. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.js +25 -0
  96. package/features/contentEntry/ContentEntryTraverser/ContentEntryTraverserProvider.js.map +1 -0
  97. package/features/contentEntry/ContentEntryTraverser/abstractions.d.ts +12 -0
  98. package/features/contentEntry/ContentEntryTraverser/abstractions.js +7 -0
  99. package/features/contentEntry/ContentEntryTraverser/abstractions.js.map +1 -0
  100. package/features/contentEntry/ContentEntryTraverser/feature.d.ts +4 -0
  101. package/features/contentEntry/ContentEntryTraverser/feature.js +10 -0
  102. package/features/contentEntry/ContentEntryTraverser/feature.js.map +1 -0
  103. package/features/contentEntry/ContentEntryTraverser/index.d.ts +2 -0
  104. package/features/contentEntry/ContentEntryTraverser/index.js +4 -0
  105. package/features/contentEntry/ContentEntryTraverser/index.js.map +1 -0
  106. package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -3
  107. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +3 -3
  108. package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
  109. package/features/contentEntry/CreateEntry/abstractions.d.ts +1 -0
  110. package/features/contentEntry/CreateEntry/abstractions.js +1 -0
  111. package/features/contentEntry/CreateEntry/abstractions.js.map +1 -1
  112. package/features/contentEntry/CreateEntry/events.d.ts +4 -2
  113. package/features/contentEntry/CreateEntry/events.js +5 -1
  114. package/features/contentEntry/CreateEntry/events.js.map +1 -1
  115. package/features/contentEntry/CreateEntry/feature.d.ts +4 -1
  116. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -3
  117. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +3 -3
  118. package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
  119. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.d.ts +1 -0
  120. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.js +1 -0
  121. package/features/contentEntry/CreateEntryRevisionFrom/abstractions.js.map +1 -1
  122. package/features/contentEntry/CreateEntryRevisionFrom/events.d.ts +4 -2
  123. package/features/contentEntry/CreateEntryRevisionFrom/events.js +5 -1
  124. package/features/contentEntry/CreateEntryRevisionFrom/events.js.map +1 -1
  125. package/features/contentEntry/CreateEntryRevisionFrom/feature.d.ts +4 -1
  126. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +1 -1
  127. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +1 -1
  128. package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
  129. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +2 -2
  130. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -2
  131. package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
  132. package/features/contentEntry/DeleteEntry/abstractions.d.ts +2 -0
  133. package/features/contentEntry/DeleteEntry/abstractions.js +2 -0
  134. package/features/contentEntry/DeleteEntry/abstractions.js.map +1 -1
  135. package/features/contentEntry/DeleteEntry/events.d.ts +4 -2
  136. package/features/contentEntry/DeleteEntry/events.js +5 -1
  137. package/features/contentEntry/DeleteEntry/events.js.map +1 -1
  138. package/features/contentEntry/DeleteEntry/feature.d.ts +4 -1
  139. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +1 -1
  140. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +1 -1
  141. package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
  142. package/features/contentEntry/DeleteEntryRevision/abstractions.d.ts +1 -0
  143. package/features/contentEntry/DeleteEntryRevision/abstractions.js +1 -0
  144. package/features/contentEntry/DeleteEntryRevision/abstractions.js.map +1 -1
  145. package/features/contentEntry/DeleteEntryRevision/events.d.ts +4 -2
  146. package/features/contentEntry/DeleteEntryRevision/events.js +5 -1
  147. package/features/contentEntry/DeleteEntryRevision/events.js.map +1 -1
  148. package/features/contentEntry/DeleteEntryRevision/feature.d.ts +4 -1
  149. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +1 -1
  150. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +1 -1
  151. package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
  152. package/features/contentEntry/DeleteMultipleEntries/abstractions.d.ts +1 -0
  153. package/features/contentEntry/DeleteMultipleEntries/abstractions.js +1 -0
  154. package/features/contentEntry/DeleteMultipleEntries/abstractions.js.map +1 -1
  155. package/features/contentEntry/DeleteMultipleEntries/events.d.ts +4 -2
  156. package/features/contentEntry/DeleteMultipleEntries/events.js +5 -1
  157. package/features/contentEntry/DeleteMultipleEntries/events.js.map +1 -1
  158. package/features/contentEntry/DeleteMultipleEntries/feature.d.ts +4 -1
  159. package/features/contentEntry/GetEntriesByIds/abstractions.d.ts +1 -0
  160. package/features/contentEntry/GetEntriesByIds/abstractions.js +1 -0
  161. package/features/contentEntry/GetEntriesByIds/abstractions.js.map +1 -1
  162. package/features/contentEntry/GetEntriesByIds/feature.d.ts +4 -1
  163. package/features/contentEntry/GetEntry/abstractions.d.ts +1 -0
  164. package/features/contentEntry/GetEntry/abstractions.js +1 -0
  165. package/features/contentEntry/GetEntry/abstractions.js.map +1 -1
  166. package/features/contentEntry/GetEntry/feature.d.ts +4 -1
  167. package/features/contentEntry/GetEntryById/abstractions.d.ts +1 -0
  168. package/features/contentEntry/GetEntryById/abstractions.js +1 -0
  169. package/features/contentEntry/GetEntryById/abstractions.js.map +1 -1
  170. package/features/contentEntry/GetEntryById/feature.d.ts +4 -1
  171. package/features/contentEntry/GetLatestEntriesByIds/abstractions.d.ts +1 -0
  172. package/features/contentEntry/GetLatestEntriesByIds/abstractions.js +1 -0
  173. package/features/contentEntry/GetLatestEntriesByIds/abstractions.js.map +1 -1
  174. package/features/contentEntry/GetLatestEntriesByIds/feature.d.ts +4 -1
  175. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.d.ts +4 -9
  176. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.js +4 -9
  177. package/features/contentEntry/GetLatestRevisionByEntryId/abstractions.js.map +1 -1
  178. package/features/contentEntry/GetLatestRevisionByEntryId/feature.d.ts +4 -1
  179. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.d.ts +2 -3
  180. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.js +2 -3
  181. package/features/contentEntry/GetPreviousRevisionByEntryId/abstractions.js.map +1 -1
  182. package/features/contentEntry/GetPreviousRevisionByEntryId/feature.d.ts +4 -1
  183. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.d.ts +1 -0
  184. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.js +1 -0
  185. package/features/contentEntry/GetPublishedEntriesByIds/abstractions.js.map +1 -1
  186. package/features/contentEntry/GetPublishedEntriesByIds/feature.d.ts +4 -1
  187. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.d.ts +1 -0
  188. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.js +1 -0
  189. package/features/contentEntry/GetPublishedRevisionByEntryId/abstractions.js.map +1 -1
  190. package/features/contentEntry/GetPublishedRevisionByEntryId/feature.d.ts +4 -1
  191. package/features/contentEntry/GetRevisionById/abstractions.d.ts +1 -0
  192. package/features/contentEntry/GetRevisionById/abstractions.js +1 -0
  193. package/features/contentEntry/GetRevisionById/abstractions.js.map +1 -1
  194. package/features/contentEntry/GetRevisionById/feature.d.ts +4 -1
  195. package/features/contentEntry/GetRevisionsByEntryId/abstractions.d.ts +1 -0
  196. package/features/contentEntry/GetRevisionsByEntryId/abstractions.js +1 -0
  197. package/features/contentEntry/GetRevisionsByEntryId/abstractions.js.map +1 -1
  198. package/features/contentEntry/GetRevisionsByEntryId/feature.d.ts +4 -1
  199. package/features/contentEntry/GetSingletonEntry/abstractions.d.ts +1 -0
  200. package/features/contentEntry/GetSingletonEntry/abstractions.js +1 -0
  201. package/features/contentEntry/GetSingletonEntry/abstractions.js.map +1 -1
  202. package/features/contentEntry/GetSingletonEntry/feature.d.ts +4 -1
  203. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.d.ts +2 -2
  204. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +9 -15
  205. package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
  206. package/features/contentEntry/GetUniqueFieldValues/feature.d.ts +4 -1
  207. package/features/contentEntry/ListEntries/ListEntriesRepository.js +6 -1
  208. package/features/contentEntry/ListEntries/ListEntriesRepository.js.map +1 -1
  209. package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +1 -1
  210. package/features/contentEntry/ListEntries/ListEntriesUseCase.js +1 -1
  211. package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
  212. package/features/contentEntry/ListEntries/abstractions.d.ts +4 -0
  213. package/features/contentEntry/ListEntries/abstractions.js +4 -0
  214. package/features/contentEntry/ListEntries/abstractions.js.map +1 -1
  215. package/features/contentEntry/ListEntries/feature.d.ts +4 -1
  216. package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +1 -1
  217. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +1 -1
  218. package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
  219. package/features/contentEntry/MoveEntry/abstractions.d.ts +1 -0
  220. package/features/contentEntry/MoveEntry/abstractions.js +1 -0
  221. package/features/contentEntry/MoveEntry/abstractions.js.map +1 -1
  222. package/features/contentEntry/MoveEntry/events.d.ts +4 -2
  223. package/features/contentEntry/MoveEntry/events.js +5 -1
  224. package/features/contentEntry/MoveEntry/events.js.map +1 -1
  225. package/features/contentEntry/MoveEntry/feature.d.ts +4 -1
  226. package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +2 -2
  227. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -2
  228. package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
  229. package/features/contentEntry/PublishEntry/abstractions.d.ts +1 -0
  230. package/features/contentEntry/PublishEntry/abstractions.js +1 -0
  231. package/features/contentEntry/PublishEntry/abstractions.js.map +1 -1
  232. package/features/contentEntry/PublishEntry/events.d.ts +4 -2
  233. package/features/contentEntry/PublishEntry/events.js +5 -1
  234. package/features/contentEntry/PublishEntry/events.js.map +1 -1
  235. package/features/contentEntry/PublishEntry/feature.d.ts +4 -1
  236. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +2 -2
  237. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -2
  238. package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
  239. package/features/contentEntry/RepublishEntry/abstractions.d.ts +1 -0
  240. package/features/contentEntry/RepublishEntry/abstractions.js +1 -0
  241. package/features/contentEntry/RepublishEntry/abstractions.js.map +1 -1
  242. package/features/contentEntry/RepublishEntry/events.d.ts +4 -2
  243. package/features/contentEntry/RepublishEntry/events.js +5 -1
  244. package/features/contentEntry/RepublishEntry/events.js.map +1 -1
  245. package/features/contentEntry/RepublishEntry/feature.d.ts +4 -1
  246. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +2 -2
  247. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -2
  248. package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
  249. package/features/contentEntry/RestoreEntryFromBin/abstractions.d.ts +1 -0
  250. package/features/contentEntry/RestoreEntryFromBin/abstractions.js +1 -0
  251. package/features/contentEntry/RestoreEntryFromBin/abstractions.js.map +1 -1
  252. package/features/contentEntry/RestoreEntryFromBin/events.d.ts +4 -2
  253. package/features/contentEntry/RestoreEntryFromBin/events.js +5 -1
  254. package/features/contentEntry/RestoreEntryFromBin/events.js.map +1 -1
  255. package/features/contentEntry/RestoreEntryFromBin/feature.d.ts +4 -1
  256. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +2 -2
  257. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -2
  258. package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
  259. package/features/contentEntry/UnpublishEntry/abstractions.d.ts +1 -0
  260. package/features/contentEntry/UnpublishEntry/abstractions.js +1 -0
  261. package/features/contentEntry/UnpublishEntry/abstractions.js.map +1 -1
  262. package/features/contentEntry/UnpublishEntry/events.d.ts +4 -2
  263. package/features/contentEntry/UnpublishEntry/events.js +5 -1
  264. package/features/contentEntry/UnpublishEntry/events.js.map +1 -1
  265. package/features/contentEntry/UnpublishEntry/feature.d.ts +4 -1
  266. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -3
  267. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +3 -3
  268. package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
  269. package/features/contentEntry/UpdateEntry/abstractions.d.ts +1 -0
  270. package/features/contentEntry/UpdateEntry/abstractions.js +1 -0
  271. package/features/contentEntry/UpdateEntry/abstractions.js.map +1 -1
  272. package/features/contentEntry/UpdateEntry/events.d.ts +4 -2
  273. package/features/contentEntry/UpdateEntry/events.js +5 -1
  274. package/features/contentEntry/UpdateEntry/events.js.map +1 -1
  275. package/features/contentEntry/UpdateEntry/feature.d.ts +4 -1
  276. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.d.ts +22 -0
  277. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js +90 -0
  278. package/features/contentEntry/UpdateRevisionDescription/UpdateRevisionDescriptionUseCase.js.map +1 -0
  279. package/features/contentEntry/UpdateRevisionDescription/abstractions.d.ts +25 -0
  280. package/features/contentEntry/UpdateRevisionDescription/abstractions.js +10 -0
  281. package/features/contentEntry/UpdateRevisionDescription/abstractions.js.map +1 -0
  282. package/features/contentEntry/UpdateRevisionDescription/events.d.ts +44 -0
  283. package/features/contentEntry/UpdateRevisionDescription/events.js +33 -0
  284. package/features/contentEntry/UpdateRevisionDescription/events.js.map +1 -0
  285. package/features/contentEntry/UpdateRevisionDescription/feature.d.ts +12 -0
  286. package/features/contentEntry/UpdateRevisionDescription/feature.js +20 -0
  287. package/features/contentEntry/UpdateRevisionDescription/feature.js.map +1 -0
  288. package/features/contentEntry/UpdateRevisionDescription/index.d.ts +2 -0
  289. package/features/contentEntry/UpdateRevisionDescription/index.js +4 -0
  290. package/features/contentEntry/UpdateRevisionDescription/index.js.map +1 -0
  291. package/features/contentEntry/UpdateSingletonEntry/abstractions.d.ts +1 -0
  292. package/features/contentEntry/UpdateSingletonEntry/abstractions.js +1 -0
  293. package/features/contentEntry/UpdateSingletonEntry/abstractions.js.map +1 -1
  294. package/features/contentEntry/UpdateSingletonEntry/feature.d.ts +4 -1
  295. package/features/contentEntry/ValidateEntry/abstractions.d.ts +1 -0
  296. package/features/contentEntry/ValidateEntry/abstractions.js +1 -0
  297. package/features/contentEntry/ValidateEntry/abstractions.js.map +1 -1
  298. package/features/contentEntry/ValidateEntry/feature.d.ts +4 -1
  299. package/features/contentModel/ContentModelFeature.d.ts +4 -1
  300. package/features/contentModel/ContentModelFeature.js +2 -0
  301. package/features/contentModel/ContentModelFeature.js.map +1 -1
  302. package/features/contentModel/CreateModel/CreateModelRepository.d.ts +12 -12
  303. package/features/contentModel/CreateModel/CreateModelRepository.js +17 -12
  304. package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
  305. package/features/contentModel/CreateModel/CreateModelUseCase.d.ts +3 -3
  306. package/features/contentModel/CreateModel/CreateModelUseCase.js +3 -3
  307. package/features/contentModel/CreateModel/CreateModelUseCase.js.map +1 -1
  308. package/features/contentModel/CreateModel/abstractions.d.ts +1 -0
  309. package/features/contentModel/CreateModel/abstractions.js +1 -0
  310. package/features/contentModel/CreateModel/abstractions.js.map +1 -1
  311. package/features/contentModel/CreateModel/events.d.ts +4 -2
  312. package/features/contentModel/CreateModel/events.js +5 -1
  313. package/features/contentModel/CreateModel/events.js.map +1 -1
  314. package/features/contentModel/CreateModel/feature.d.ts +4 -1
  315. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +12 -13
  316. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +25 -15
  317. package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
  318. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.d.ts +3 -3
  319. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js +4 -3
  320. package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js.map +1 -1
  321. package/features/contentModel/CreateModelFrom/abstractions.d.ts +1 -0
  322. package/features/contentModel/CreateModelFrom/abstractions.js +1 -0
  323. package/features/contentModel/CreateModelFrom/abstractions.js.map +1 -1
  324. package/features/contentModel/CreateModelFrom/events.d.ts +4 -2
  325. package/features/contentModel/CreateModelFrom/events.js +5 -1
  326. package/features/contentModel/CreateModelFrom/events.js.map +1 -1
  327. package/features/contentModel/CreateModelFrom/feature.d.ts +4 -1
  328. package/features/contentModel/DeleteModel/DeleteModelUseCase.d.ts +1 -1
  329. package/features/contentModel/DeleteModel/DeleteModelUseCase.js +1 -1
  330. package/features/contentModel/DeleteModel/DeleteModelUseCase.js.map +1 -1
  331. package/features/contentModel/DeleteModel/abstractions.d.ts +1 -0
  332. package/features/contentModel/DeleteModel/abstractions.js +1 -0
  333. package/features/contentModel/DeleteModel/abstractions.js.map +1 -1
  334. package/features/contentModel/DeleteModel/events.d.ts +4 -2
  335. package/features/contentModel/DeleteModel/events.js +5 -1
  336. package/features/contentModel/DeleteModel/events.js.map +1 -1
  337. package/features/contentModel/DeleteModel/feature.d.ts +4 -1
  338. package/features/contentModel/GetModel/abstractions.d.ts +1 -0
  339. package/features/contentModel/GetModel/abstractions.js +1 -0
  340. package/features/contentModel/GetModel/abstractions.js.map +1 -1
  341. package/features/contentModel/GetModel/feature.d.ts +4 -1
  342. package/features/contentModel/ListModels/abstractions.d.ts +1 -0
  343. package/features/contentModel/ListModels/abstractions.js +1 -0
  344. package/features/contentModel/ListModels/abstractions.js.map +1 -1
  345. package/features/contentModel/ListModels/feature.d.ts +4 -1
  346. package/features/contentModel/ModelFieldCompression/ModelFieldCompression.d.ts +15 -0
  347. package/features/contentModel/ModelFieldCompression/ModelFieldCompression.js +27 -0
  348. package/features/contentModel/ModelFieldCompression/ModelFieldCompression.js.map +1 -0
  349. package/features/contentModel/ModelFieldCompression/abstractions.d.ts +17 -0
  350. package/features/contentModel/ModelFieldCompression/abstractions.js +4 -0
  351. package/features/contentModel/ModelFieldCompression/abstractions.js.map +1 -0
  352. package/features/contentModel/ModelFieldCompression/feature.d.ts +4 -0
  353. package/features/contentModel/ModelFieldCompression/feature.js +10 -0
  354. package/features/contentModel/ModelFieldCompression/feature.js.map +1 -0
  355. package/features/contentModel/ModelFieldCompression/index.d.ts +1 -0
  356. package/features/contentModel/ModelFieldCompression/index.js +3 -0
  357. package/features/contentModel/ModelFieldCompression/index.js.map +1 -0
  358. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.d.ts +3 -3
  359. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js +6 -6
  360. package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js.map +1 -1
  361. package/features/contentModel/ModelToAstConverter/feature.d.ts +4 -1
  362. package/features/contentModel/UpdateModel/UpdateModelRepository.d.ts +9 -9
  363. package/features/contentModel/UpdateModel/UpdateModelRepository.js +21 -12
  364. package/features/contentModel/UpdateModel/UpdateModelRepository.js.map +1 -1
  365. package/features/contentModel/UpdateModel/UpdateModelUseCase.d.ts +2 -2
  366. package/features/contentModel/UpdateModel/UpdateModelUseCase.js +6 -3
  367. package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
  368. package/features/contentModel/UpdateModel/abstractions.d.ts +1 -0
  369. package/features/contentModel/UpdateModel/abstractions.js +1 -0
  370. package/features/contentModel/UpdateModel/abstractions.js.map +1 -1
  371. package/features/contentModel/UpdateModel/events.d.ts +4 -2
  372. package/features/contentModel/UpdateModel/events.js +5 -1
  373. package/features/contentModel/UpdateModel/events.js.map +1 -1
  374. package/features/contentModel/UpdateModel/feature.d.ts +4 -1
  375. package/features/contentModel/shared/ModelsFetcher.d.ts +8 -6
  376. package/features/contentModel/shared/ModelsFetcher.js +14 -4
  377. package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
  378. package/features/contentModelGroup/ContentModelGroupFeature.d.ts +4 -1
  379. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +1 -1
  380. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +1 -1
  381. package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
  382. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +3 -3
  383. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +3 -3
  384. package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
  385. package/features/contentModelGroup/CreateGroup/abstractions.d.ts +1 -0
  386. package/features/contentModelGroup/CreateGroup/abstractions.js +1 -0
  387. package/features/contentModelGroup/CreateGroup/abstractions.js.map +1 -1
  388. package/features/contentModelGroup/CreateGroup/events.d.ts +4 -2
  389. package/features/contentModelGroup/CreateGroup/events.js +5 -1
  390. package/features/contentModelGroup/CreateGroup/events.js.map +1 -1
  391. package/features/contentModelGroup/CreateGroup/feature.d.ts +4 -1
  392. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +1 -1
  393. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +1 -1
  394. package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
  395. package/features/contentModelGroup/DeleteGroup/abstractions.d.ts +1 -0
  396. package/features/contentModelGroup/DeleteGroup/abstractions.js +1 -0
  397. package/features/contentModelGroup/DeleteGroup/abstractions.js.map +1 -1
  398. package/features/contentModelGroup/DeleteGroup/events.d.ts +4 -2
  399. package/features/contentModelGroup/DeleteGroup/events.js +5 -1
  400. package/features/contentModelGroup/DeleteGroup/events.js.map +1 -1
  401. package/features/contentModelGroup/DeleteGroup/feature.d.ts +4 -1
  402. package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +2 -2
  403. package/features/contentModelGroup/GetGroup/GetGroupRepository.js +2 -2
  404. package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
  405. package/features/contentModelGroup/GetGroup/abstractions.d.ts +1 -0
  406. package/features/contentModelGroup/GetGroup/abstractions.js +1 -0
  407. package/features/contentModelGroup/GetGroup/abstractions.js.map +1 -1
  408. package/features/contentModelGroup/GetGroup/feature.d.ts +4 -1
  409. package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +2 -2
  410. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +2 -2
  411. package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
  412. package/features/contentModelGroup/ListGroups/abstractions.d.ts +1 -0
  413. package/features/contentModelGroup/ListGroups/abstractions.js +1 -0
  414. package/features/contentModelGroup/ListGroups/abstractions.js.map +1 -1
  415. package/features/contentModelGroup/ListGroups/feature.d.ts +4 -1
  416. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +2 -2
  417. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +2 -2
  418. package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
  419. package/features/contentModelGroup/UpdateGroup/abstractions.d.ts +1 -0
  420. package/features/contentModelGroup/UpdateGroup/abstractions.js +1 -0
  421. package/features/contentModelGroup/UpdateGroup/abstractions.js.map +1 -1
  422. package/features/contentModelGroup/UpdateGroup/events.d.ts +4 -2
  423. package/features/contentModelGroup/UpdateGroup/events.js +5 -1
  424. package/features/contentModelGroup/UpdateGroup/events.js.map +1 -1
  425. package/features/contentModelGroup/UpdateGroup/feature.d.ts +4 -1
  426. package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +2 -2
  427. package/features/contentModelGroup/shared/PluginGroupsProvider.js +2 -2
  428. package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
  429. package/features/contentModelGroup/shared/abstractions.d.ts +1 -0
  430. package/features/contentModelGroup/shared/abstractions.js +1 -0
  431. package/features/contentModelGroup/shared/abstractions.js.map +1 -1
  432. package/features/graphql/feature.d.ts +4 -0
  433. package/features/graphql/feature.js +34 -0
  434. package/features/graphql/feature.js.map +1 -0
  435. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.d.ts +13 -0
  436. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js +27 -0
  437. package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js.map +1 -0
  438. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +97 -0
  439. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js +4 -0
  440. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -0
  441. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.d.ts +10 -0
  442. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js +4 -0
  443. package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js.map +1 -0
  444. package/features/graphql/fields/base/BooleanToGraphQL.d.ts +26 -0
  445. package/features/graphql/fields/base/BooleanToGraphQL.js +68 -0
  446. package/features/graphql/fields/base/BooleanToGraphQL.js.map +1 -0
  447. package/features/graphql/fields/base/DateTimeToGraphQL.d.ts +26 -0
  448. package/features/graphql/fields/base/DateTimeToGraphQL.js +97 -0
  449. package/features/graphql/fields/base/DateTimeToGraphQL.js.map +1 -0
  450. package/features/graphql/fields/base/DynamicZoneToGraphQL.d.ts +30 -0
  451. package/features/graphql/fields/base/DynamicZoneToGraphQL.js +280 -0
  452. package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -0
  453. package/features/graphql/fields/base/FileToGraphQL.d.ts +22 -0
  454. package/features/graphql/fields/base/FileToGraphQL.js +39 -0
  455. package/features/graphql/fields/base/FileToGraphQL.js.map +1 -0
  456. package/features/graphql/fields/base/JsonToGraphQL.d.ts +24 -0
  457. package/features/graphql/fields/base/JsonToGraphQL.js +52 -0
  458. package/features/graphql/fields/base/JsonToGraphQL.js.map +1 -0
  459. package/features/graphql/fields/base/LongTextToGraphQL.d.ts +24 -0
  460. package/features/graphql/fields/base/LongTextToGraphQL.js +57 -0
  461. package/features/graphql/fields/base/LongTextToGraphQL.js.map +1 -0
  462. package/features/graphql/fields/base/NumberToGraphQL.d.ts +26 -0
  463. package/features/graphql/fields/base/NumberToGraphQL.js +78 -0
  464. package/features/graphql/fields/base/NumberToGraphQL.js.map +1 -0
  465. package/features/graphql/fields/base/ObjectToGraphQL.d.ts +31 -0
  466. package/features/graphql/fields/base/ObjectToGraphQL.js +264 -0
  467. package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -0
  468. package/features/graphql/fields/base/RefToGraphQL.d.ts +29 -0
  469. package/features/graphql/fields/base/RefToGraphQL.js +261 -0
  470. package/features/graphql/fields/base/RefToGraphQL.js.map +1 -0
  471. package/features/graphql/fields/base/RichTextToGraphQL.d.ts +25 -0
  472. package/features/graphql/fields/base/RichTextToGraphQL.js +58 -0
  473. package/features/graphql/fields/base/RichTextToGraphQL.js.map +1 -0
  474. package/features/graphql/fields/base/SearchableJsonToGraphQL.d.ts +26 -0
  475. package/features/graphql/fields/base/SearchableJsonToGraphQL.js +62 -0
  476. package/features/graphql/fields/base/SearchableJsonToGraphQL.js.map +1 -0
  477. package/features/graphql/fields/base/TextToGraphQL.d.ts +26 -0
  478. package/features/graphql/fields/base/TextToGraphQL.js +74 -0
  479. package/features/graphql/fields/base/TextToGraphQL.js.map +1 -0
  480. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.d.ts +16 -0
  481. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js +37 -0
  482. package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js.map +1 -0
  483. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.d.ts +3 -0
  484. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js +14 -0
  485. package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js.map +1 -0
  486. package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.d.ts +1 -1
  487. package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.js +4 -4
  488. package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -0
  489. package/{graphqlFields/helpers.d.ts → features/graphql/fields/base/utils/createGraphQLInputField.d.ts} +1 -1
  490. package/features/graphql/fields/base/utils/createGraphQLInputField.js +17 -0
  491. package/features/graphql/fields/base/utils/createGraphQLInputField.js.map +1 -0
  492. package/features/graphql/index.d.ts +4 -0
  493. package/features/graphql/index.js +6 -0
  494. package/features/graphql/index.js.map +1 -0
  495. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.d.ts +13 -0
  496. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js +4 -0
  497. package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js.map +1 -0
  498. package/features/installer/CmsInstaller.d.ts +1 -1
  499. package/features/installer/CmsInstaller.js +1 -1
  500. package/features/installer/CmsInstaller.js.map +1 -1
  501. package/features/installer/feature.d.ts +4 -1
  502. package/features/modelBuilder/abstractions.d.ts +8 -4
  503. package/features/modelBuilder/abstractions.js +5 -2
  504. package/features/modelBuilder/abstractions.js.map +1 -1
  505. package/features/modelBuilder/feature.d.ts +4 -1
  506. package/features/modelBuilder/feature.js +6 -0
  507. package/features/modelBuilder/feature.js.map +1 -1
  508. package/features/modelBuilder/fields/BaseFieldBuilder.d.ts +36 -0
  509. package/features/modelBuilder/fields/BaseFieldBuilder.js +41 -0
  510. package/features/modelBuilder/fields/BaseFieldBuilder.js.map +1 -0
  511. package/features/modelBuilder/fields/BooleanFieldType.d.ts +2 -2
  512. package/features/modelBuilder/fields/BooleanFieldType.js +2 -2
  513. package/features/modelBuilder/fields/BooleanFieldType.js.map +1 -1
  514. package/features/modelBuilder/fields/DataFieldBuilder.d.ts +220 -0
  515. package/features/modelBuilder/fields/DataFieldBuilder.js +211 -0
  516. package/features/modelBuilder/fields/DataFieldBuilder.js.map +1 -0
  517. package/features/modelBuilder/fields/DateTimeFieldType.d.ts +3 -3
  518. package/features/modelBuilder/fields/DateTimeFieldType.js +22 -2
  519. package/features/modelBuilder/fields/DateTimeFieldType.js.map +1 -1
  520. package/features/modelBuilder/fields/DynamicZoneFieldType.d.ts +3 -3
  521. package/features/modelBuilder/fields/DynamicZoneFieldType.js +12 -5
  522. package/features/modelBuilder/fields/DynamicZoneFieldType.js.map +1 -1
  523. package/features/modelBuilder/fields/FieldBuilder.d.ts +5 -46
  524. package/features/modelBuilder/fields/FieldBuilder.js +3 -152
  525. package/features/modelBuilder/fields/FieldBuilder.js.map +1 -1
  526. package/features/modelBuilder/fields/FieldBuilderRegistry.d.ts +3 -3
  527. package/features/modelBuilder/fields/FieldBuilderRegistry.js +11 -1
  528. package/features/modelBuilder/fields/FieldBuilderRegistry.js.map +1 -1
  529. package/features/modelBuilder/fields/FileFieldType.d.ts +3 -3
  530. package/features/modelBuilder/fields/FileFieldType.js +2 -2
  531. package/features/modelBuilder/fields/FileFieldType.js.map +1 -1
  532. package/features/modelBuilder/fields/JsonFieldType.d.ts +2 -2
  533. package/features/modelBuilder/fields/JsonFieldType.js +2 -2
  534. package/features/modelBuilder/fields/JsonFieldType.js.map +1 -1
  535. package/features/modelBuilder/fields/LayoutFieldBuilder.d.ts +7 -0
  536. package/features/modelBuilder/fields/LayoutFieldBuilder.js +9 -0
  537. package/features/modelBuilder/fields/LayoutFieldBuilder.js.map +1 -0
  538. package/features/modelBuilder/fields/LongTextFieldType.d.ts +3 -4
  539. package/features/modelBuilder/fields/LongTextFieldType.js +2 -2
  540. package/features/modelBuilder/fields/LongTextFieldType.js.map +1 -1
  541. package/features/modelBuilder/fields/NumberFieldType.d.ts +3 -3
  542. package/features/modelBuilder/fields/NumberFieldType.js +2 -2
  543. package/features/modelBuilder/fields/NumberFieldType.js.map +1 -1
  544. package/features/modelBuilder/fields/ObjectFieldType.d.ts +7 -6
  545. package/features/modelBuilder/fields/ObjectFieldType.js +21 -6
  546. package/features/modelBuilder/fields/ObjectFieldType.js.map +1 -1
  547. package/features/modelBuilder/fields/RefFieldType.d.ts +3 -3
  548. package/features/modelBuilder/fields/RefFieldType.js +2 -2
  549. package/features/modelBuilder/fields/RefFieldType.js.map +1 -1
  550. package/features/modelBuilder/fields/RichTextFieldType.d.ts +2 -2
  551. package/features/modelBuilder/fields/RichTextFieldType.js +2 -2
  552. package/features/modelBuilder/fields/RichTextFieldType.js.map +1 -1
  553. package/features/modelBuilder/fields/SearchableJsonFieldType.d.ts +2 -2
  554. package/features/modelBuilder/fields/SearchableJsonFieldType.js +2 -2
  555. package/features/modelBuilder/fields/SearchableJsonFieldType.js.map +1 -1
  556. package/features/modelBuilder/fields/TextFieldType.d.ts +3 -3
  557. package/features/modelBuilder/fields/TextFieldType.js +2 -2
  558. package/features/modelBuilder/fields/TextFieldType.js.map +1 -1
  559. package/features/modelBuilder/fields/UiAlertFieldType.d.ts +19 -0
  560. package/features/modelBuilder/fields/UiAlertFieldType.js +36 -0
  561. package/features/modelBuilder/fields/UiAlertFieldType.js.map +1 -0
  562. package/features/modelBuilder/fields/UiSeparatorFieldType.d.ts +17 -0
  563. package/features/modelBuilder/fields/UiSeparatorFieldType.js +31 -0
  564. package/features/modelBuilder/fields/UiSeparatorFieldType.js.map +1 -0
  565. package/features/modelBuilder/fields/UiTabsFieldType.d.ts +28 -0
  566. package/features/modelBuilder/fields/UiTabsFieldType.js +75 -0
  567. package/features/modelBuilder/fields/UiTabsFieldType.js.map +1 -0
  568. package/features/modelBuilder/fields/abstractions.d.ts +6 -3
  569. package/features/modelBuilder/fields/abstractions.js +1 -1
  570. package/features/modelBuilder/fields/abstractions.js.map +1 -1
  571. package/features/modelBuilder/fields/{validators.d.ts → fieldTypeValidator.d.ts} +23 -1
  572. package/features/modelBuilder/fields/fieldTypeValidator.js +31 -0
  573. package/features/modelBuilder/fields/fieldTypeValidator.js.map +1 -0
  574. package/features/modelBuilder/index.d.ts +3 -0
  575. package/features/modelBuilder/index.js +3 -0
  576. package/features/modelBuilder/index.js.map +1 -1
  577. package/features/modelBuilder/models/BaseModelBuilder.d.ts +9 -4
  578. package/features/modelBuilder/models/BaseModelBuilder.js +19 -0
  579. package/features/modelBuilder/models/BaseModelBuilder.js.map +1 -1
  580. package/features/modelBuilder/models/PrivateModelBuilder.js +4 -2
  581. package/features/modelBuilder/models/PrivateModelBuilder.js.map +1 -1
  582. package/features/modelBuilder/models/PublicModelBuilder.js +16 -4
  583. package/features/modelBuilder/models/PublicModelBuilder.js.map +1 -1
  584. package/features/shared/abstractions.d.ts +9 -2
  585. package/features/shared/abstractions.js +1 -0
  586. package/features/shared/abstractions.js.map +1 -1
  587. package/features/sortMapper/abstractions.d.ts +1 -0
  588. package/features/sortMapper/abstractions.js +1 -0
  589. package/features/sortMapper/abstractions.js.map +1 -1
  590. package/features/sortMapper/feature.d.ts +4 -1
  591. package/features/storage/StorageTransformRegistry.d.ts +13 -0
  592. package/features/storage/StorageTransformRegistry.js +27 -0
  593. package/features/storage/StorageTransformRegistry.js.map +1 -0
  594. package/features/storage/abstractions/StorageTransform.d.ts +26 -0
  595. package/features/storage/abstractions/StorageTransform.js +4 -0
  596. package/features/storage/abstractions/StorageTransform.js.map +1 -0
  597. package/features/storage/abstractions/StorageTransformRegistry.d.ts +10 -0
  598. package/features/storage/abstractions/StorageTransformRegistry.js +4 -0
  599. package/features/storage/abstractions/StorageTransformRegistry.js.map +1 -0
  600. package/features/storage/feature.d.ts +4 -0
  601. package/features/storage/feature.js +24 -0
  602. package/features/storage/feature.js.map +1 -0
  603. package/features/storage/fields/DateStorageTransform.d.ts +10 -0
  604. package/features/storage/fields/DateStorageTransform.js +110 -0
  605. package/features/storage/fields/DateStorageTransform.js.map +1 -0
  606. package/features/storage/fields/DefaultStorageTransform.d.ts +10 -0
  607. package/features/storage/fields/DefaultStorageTransform.js +20 -0
  608. package/features/storage/fields/DefaultStorageTransform.js.map +1 -0
  609. package/features/storage/fields/DynamicZoneStorageTransform.d.ts +10 -0
  610. package/features/storage/fields/DynamicZoneStorageTransform.js +142 -0
  611. package/features/storage/fields/DynamicZoneStorageTransform.js.map +1 -0
  612. package/features/storage/fields/JsonStorageTransform.d.ts +13 -0
  613. package/features/storage/fields/JsonStorageTransform.js +31 -0
  614. package/features/storage/fields/JsonStorageTransform.js.map +1 -0
  615. package/features/storage/fields/LongTextStorageTransform.d.ts +18 -0
  616. package/features/storage/fields/LongTextStorageTransform.js +55 -0
  617. package/features/storage/fields/LongTextStorageTransform.js.map +1 -0
  618. package/features/storage/fields/ObjectStorageTransform.d.ts +10 -0
  619. package/features/storage/fields/ObjectStorageTransform.js +99 -0
  620. package/features/storage/fields/ObjectStorageTransform.js.map +1 -0
  621. package/features/storage/fields/RichTextStorageTransform.d.ts +13 -0
  622. package/features/storage/fields/RichTextStorageTransform.js +39 -0
  623. package/features/storage/fields/RichTextStorageTransform.js.map +1 -0
  624. package/features/storage/index.d.ts +3 -0
  625. package/features/storage/index.js +5 -0
  626. package/features/storage/index.js.map +1 -0
  627. package/features/validation/CmsModelFieldPatternValidatorRegistry.d.ts +12 -0
  628. package/features/validation/CmsModelFieldPatternValidatorRegistry.js +21 -0
  629. package/features/validation/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
  630. package/features/validation/CmsModelFieldValidatorRegistry.d.ts +12 -0
  631. package/features/validation/CmsModelFieldValidatorRegistry.js +23 -0
  632. package/features/validation/CmsModelFieldValidatorRegistry.js.map +1 -0
  633. package/features/validation/abstractions/CmsModelFieldPatternValidator.d.ts +13 -0
  634. package/features/validation/abstractions/CmsModelFieldPatternValidator.js +4 -0
  635. package/features/validation/abstractions/CmsModelFieldPatternValidator.js.map +1 -0
  636. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.d.ts +9 -0
  637. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js +4 -0
  638. package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
  639. package/features/validation/abstractions/CmsModelFieldValidator.d.ts +11 -0
  640. package/features/validation/abstractions/CmsModelFieldValidator.js +4 -0
  641. package/features/validation/abstractions/CmsModelFieldValidator.js.map +1 -0
  642. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.d.ts +9 -0
  643. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js +4 -0
  644. package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js.map +1 -0
  645. package/features/validation/feature.d.ts +4 -0
  646. package/features/validation/feature.js +48 -0
  647. package/features/validation/feature.js.map +1 -0
  648. package/features/validation/index.d.ts +5 -0
  649. package/features/validation/index.js +7 -0
  650. package/features/validation/index.js.map +1 -0
  651. package/features/validation/validators/DateGteValidator.d.ts +10 -0
  652. package/features/validation/validators/DateGteValidator.js +26 -0
  653. package/features/validation/validators/DateGteValidator.js.map +1 -0
  654. package/features/validation/validators/DateLteValidator.d.ts +10 -0
  655. package/features/validation/validators/DateLteValidator.js +26 -0
  656. package/features/validation/validators/DateLteValidator.js.map +1 -0
  657. package/features/validation/validators/GteValidator.d.ts +10 -0
  658. package/features/validation/validators/GteValidator.js +21 -0
  659. package/features/validation/validators/GteValidator.js.map +1 -0
  660. package/features/validation/validators/InValidator.d.ts +10 -0
  661. package/features/validation/validators/InValidator.js +21 -0
  662. package/features/validation/validators/InValidator.js.map +1 -0
  663. package/features/validation/validators/LteValidator.d.ts +10 -0
  664. package/features/validation/validators/LteValidator.js +21 -0
  665. package/features/validation/validators/LteValidator.js.map +1 -0
  666. package/features/validation/validators/MaxLengthValidator.d.ts +10 -0
  667. package/features/validation/validators/MaxLengthValidator.js +21 -0
  668. package/features/validation/validators/MaxLengthValidator.js.map +1 -0
  669. package/features/validation/validators/MinLengthValidator.d.ts +10 -0
  670. package/features/validation/validators/MinLengthValidator.js +21 -0
  671. package/features/validation/validators/MinLengthValidator.js.map +1 -0
  672. package/features/validation/validators/PatternValidator.d.ts +13 -0
  673. package/features/validation/validators/PatternValidator.js +38 -0
  674. package/features/validation/validators/PatternValidator.js.map +1 -0
  675. package/features/validation/validators/RequiredValidator.d.ts +10 -0
  676. package/features/validation/validators/RequiredValidator.js +16 -0
  677. package/features/validation/validators/RequiredValidator.js.map +1 -0
  678. package/features/validation/validators/TimeGteValidator.d.ts +10 -0
  679. package/features/validation/validators/TimeGteValidator.js +21 -0
  680. package/features/validation/validators/TimeGteValidator.js.map +1 -0
  681. package/features/validation/validators/TimeLteValidator.d.ts +10 -0
  682. package/features/validation/validators/TimeLteValidator.js +21 -0
  683. package/features/validation/validators/TimeLteValidator.js.map +1 -0
  684. package/features/validation/validators/UniqueValidator.d.ts +10 -0
  685. package/features/validation/validators/UniqueValidator.js +47 -0
  686. package/features/validation/validators/UniqueValidator.js.map +1 -0
  687. package/features/validation/validators/patterns/EmailPattern.d.ts +12 -0
  688. package/features/validation/validators/patterns/EmailPattern.js +14 -0
  689. package/features/validation/validators/patterns/EmailPattern.js.map +1 -0
  690. package/features/validation/validators/patterns/LowerCasePattern.d.ts +12 -0
  691. package/features/validation/validators/patterns/LowerCasePattern.js +14 -0
  692. package/features/validation/validators/patterns/LowerCasePattern.js.map +1 -0
  693. package/features/validation/validators/patterns/LowerCaseSpacePattern.d.ts +12 -0
  694. package/features/validation/validators/patterns/LowerCaseSpacePattern.js +14 -0
  695. package/features/validation/validators/patterns/LowerCaseSpacePattern.js.map +1 -0
  696. package/features/validation/validators/patterns/UpperCasePattern.d.ts +12 -0
  697. package/features/validation/validators/patterns/UpperCasePattern.js +14 -0
  698. package/features/validation/validators/patterns/UpperCasePattern.js.map +1 -0
  699. package/features/validation/validators/patterns/UpperCaseSpacePattern.d.ts +12 -0
  700. package/features/validation/validators/patterns/UpperCaseSpacePattern.js +14 -0
  701. package/features/validation/validators/patterns/UpperCaseSpacePattern.js.map +1 -0
  702. package/features/validation/validators/patterns/UrlPattern.d.ts +12 -0
  703. package/features/validation/validators/patterns/UrlPattern.js +14 -0
  704. package/features/validation/validators/patterns/UrlPattern.js.map +1 -0
  705. package/features/whereMapper/abstractions.d.ts +1 -0
  706. package/features/whereMapper/abstractions.js +1 -0
  707. package/features/whereMapper/abstractions.js.map +1 -1
  708. package/features/whereMapper/feature.d.ts +4 -1
  709. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +2 -2
  710. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  711. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +2 -2
  712. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  713. package/graphql/getSchema/generateCacheKey.js +15 -7
  714. package/graphql/getSchema/generateCacheKey.js.map +1 -1
  715. package/graphql/index.js +2 -1
  716. package/graphql/index.js.map +1 -1
  717. package/graphql/schema/baseSchema.d.ts +2 -1
  718. package/graphql/schema/baseSchema.js +28 -24
  719. package/graphql/schema/baseSchema.js.map +1 -1
  720. package/graphql/schema/cms/createEntryResolver.d.ts +10 -0
  721. package/graphql/schema/cms/createEntryResolver.js +65 -0
  722. package/graphql/schema/cms/createEntryResolver.js.map +1 -0
  723. package/graphql/schema/cms/deleteEntryResolver.d.ts +10 -0
  724. package/graphql/schema/cms/deleteEntryResolver.js +65 -0
  725. package/graphql/schema/cms/deleteEntryResolver.js.map +1 -0
  726. package/graphql/schema/cms/getEntryResolver.d.ts +11 -0
  727. package/graphql/schema/cms/getEntryResolver.js +67 -0
  728. package/graphql/schema/cms/getEntryResolver.js.map +1 -0
  729. package/graphql/schema/cms/helpers/buildFieldsSelection.d.ts +23 -0
  730. package/graphql/schema/cms/helpers/buildFieldsSelection.js +79 -0
  731. package/graphql/schema/cms/helpers/buildFieldsSelection.js.map +1 -0
  732. package/graphql/schema/cms/helpers/getErrorMessage.d.ts +4 -0
  733. package/graphql/schema/cms/helpers/getErrorMessage.js +14 -0
  734. package/graphql/schema/cms/helpers/getErrorMessage.js.map +1 -0
  735. package/graphql/schema/cms/helpers/getModel.d.ts +6 -0
  736. package/graphql/schema/cms/helpers/getModel.js +12 -0
  737. package/graphql/schema/cms/helpers/getModel.js.map +1 -0
  738. package/graphql/schema/cms/helpers/index.d.ts +5 -0
  739. package/graphql/schema/cms/helpers/index.js +7 -0
  740. package/graphql/schema/cms/helpers/index.js.map +1 -0
  741. package/graphql/schema/cms/helpers/transformSortToArray.d.ts +18 -0
  742. package/graphql/schema/cms/helpers/transformSortToArray.js +38 -0
  743. package/graphql/schema/cms/helpers/transformSortToArray.js.map +1 -0
  744. package/graphql/schema/cms/helpers/transformWhereToNested.d.ts +17 -0
  745. package/graphql/schema/cms/helpers/transformWhereToNested.js +54 -0
  746. package/graphql/schema/cms/helpers/transformWhereToNested.js.map +1 -0
  747. package/graphql/schema/cms/helpers.d.ts +5 -0
  748. package/graphql/schema/cms/helpers.js +7 -0
  749. package/graphql/schema/cms/helpers.js.map +1 -0
  750. package/graphql/schema/cms/index.d.ts +2 -0
  751. package/graphql/schema/cms/index.js +26 -0
  752. package/graphql/schema/cms/index.js.map +1 -0
  753. package/graphql/schema/cms/listEntriesResolver.d.ts +15 -0
  754. package/graphql/schema/cms/listEntriesResolver.js +115 -0
  755. package/graphql/schema/cms/listEntriesResolver.js.map +1 -0
  756. package/graphql/schema/cms/publishEntryResolver.d.ts +10 -0
  757. package/graphql/schema/cms/publishEntryResolver.js +65 -0
  758. package/graphql/schema/cms/publishEntryResolver.js.map +1 -0
  759. package/graphql/schema/cms/resolvers/createEntry.d.ts +8 -0
  760. package/graphql/schema/cms/resolvers/createEntry.js +17 -0
  761. package/graphql/schema/cms/resolvers/createEntry.js.map +1 -0
  762. package/graphql/schema/cms/resolvers/deleteEntryRevision.d.ts +8 -0
  763. package/graphql/schema/cms/resolvers/deleteEntryRevision.js +17 -0
  764. package/graphql/schema/cms/resolvers/deleteEntryRevision.js.map +1 -0
  765. package/graphql/schema/cms/resolvers/getEntry.d.ts +8 -0
  766. package/graphql/schema/cms/resolvers/getEntry.js +17 -0
  767. package/graphql/schema/cms/resolvers/getEntry.js.map +1 -0
  768. package/graphql/schema/cms/resolvers/index.d.ts +9 -0
  769. package/graphql/schema/cms/resolvers/index.js +11 -0
  770. package/graphql/schema/cms/resolvers/index.js.map +1 -0
  771. package/graphql/schema/cms/resolvers/listEntries.d.ts +8 -0
  772. package/graphql/schema/cms/resolvers/listEntries.js +17 -0
  773. package/graphql/schema/cms/resolvers/listEntries.js.map +1 -0
  774. package/graphql/schema/cms/resolvers/mutationCms.d.ts +8 -0
  775. package/graphql/schema/cms/resolvers/mutationCms.js +24 -0
  776. package/graphql/schema/cms/resolvers/mutationCms.js.map +1 -0
  777. package/graphql/schema/cms/resolvers/publishEntryRevision.d.ts +8 -0
  778. package/graphql/schema/cms/resolvers/publishEntryRevision.js +17 -0
  779. package/graphql/schema/cms/resolvers/publishEntryRevision.js.map +1 -0
  780. package/graphql/schema/cms/resolvers/queryCms.d.ts +8 -0
  781. package/graphql/schema/cms/resolvers/queryCms.js +23 -0
  782. package/graphql/schema/cms/resolvers/queryCms.js.map +1 -0
  783. package/graphql/schema/cms/resolvers/unpublishEntryRevision.d.ts +8 -0
  784. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js +17 -0
  785. package/graphql/schema/cms/resolvers/unpublishEntryRevision.js.map +1 -0
  786. package/graphql/schema/cms/resolvers/updateEntryRevision.d.ts +8 -0
  787. package/graphql/schema/cms/resolvers/updateEntryRevision.js +17 -0
  788. package/graphql/schema/cms/resolvers/updateEntryRevision.js.map +1 -0
  789. package/graphql/schema/cms/typeDefs/index.d.ts +3 -0
  790. package/graphql/schema/cms/typeDefs/index.js +5 -0
  791. package/graphql/schema/cms/typeDefs/index.js.map +1 -0
  792. package/graphql/schema/cms/typeDefs/mutation.d.ts +8 -0
  793. package/graphql/schema/cms/typeDefs/mutation.js +42 -0
  794. package/graphql/schema/cms/typeDefs/mutation.js.map +1 -0
  795. package/graphql/schema/cms/typeDefs/query.d.ts +8 -0
  796. package/graphql/schema/cms/typeDefs/query.js +36 -0
  797. package/graphql/schema/cms/typeDefs/query.js.map +1 -0
  798. package/graphql/schema/cms/typeDefs/responses.d.ts +8 -0
  799. package/graphql/schema/cms/typeDefs/responses.js +35 -0
  800. package/graphql/schema/cms/typeDefs/responses.js.map +1 -0
  801. package/graphql/schema/cms/unpublishEntryResolver.d.ts +10 -0
  802. package/graphql/schema/cms/unpublishEntryResolver.js +65 -0
  803. package/graphql/schema/cms/unpublishEntryResolver.js.map +1 -0
  804. package/graphql/schema/cms/updateEntryResolver.d.ts +11 -0
  805. package/graphql/schema/cms/updateEntryResolver.js +67 -0
  806. package/graphql/schema/cms/updateEntryResolver.js.map +1 -0
  807. package/graphql/schema/contentEntries.js +1 -1
  808. package/graphql/schema/contentEntries.js.map +1 -1
  809. package/graphql/schema/contentModels.js +31 -9
  810. package/graphql/schema/contentModels.js.map +1 -1
  811. package/graphql/schema/createFieldResolvers.d.ts +3 -2
  812. package/graphql/schema/createFieldResolvers.js +5 -4
  813. package/graphql/schema/createFieldResolvers.js.map +1 -1
  814. package/graphql/schema/createManageResolvers.d.ts +3 -2
  815. package/graphql/schema/createManageResolvers.js +5 -3
  816. package/graphql/schema/createManageResolvers.js.map +1 -1
  817. package/graphql/schema/createManageSDL.d.ts +4 -4
  818. package/graphql/schema/createManageSDL.js +16 -11
  819. package/graphql/schema/createManageSDL.js.map +1 -1
  820. package/graphql/schema/createPreviewResolvers.d.ts +3 -2
  821. package/graphql/schema/createPreviewResolvers.js +4 -4
  822. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  823. package/graphql/schema/createReadResolvers.d.ts +3 -2
  824. package/graphql/schema/createReadResolvers.js +4 -4
  825. package/graphql/schema/createReadResolvers.js.map +1 -1
  826. package/graphql/schema/createReadSDL.d.ts +4 -4
  827. package/graphql/schema/createReadSDL.js +7 -7
  828. package/graphql/schema/createReadSDL.js.map +1 -1
  829. package/graphql/schema/createSingularResolvers.d.ts +3 -2
  830. package/graphql/schema/createSingularResolvers.js +3 -3
  831. package/graphql/schema/createSingularResolvers.js.map +1 -1
  832. package/graphql/schema/createSingularSDL.d.ts +3 -2
  833. package/graphql/schema/createSingularSDL.js +5 -4
  834. package/graphql/schema/createSingularSDL.js.map +1 -1
  835. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js +9 -7
  836. package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -1
  837. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.d.ts +8 -0
  838. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js +13 -0
  839. package/graphql/schema/resolvers/manage/resolveUpdateRevisionDescription.js.map +1 -0
  840. package/graphql/schema/schemaPlugins.js +14 -17
  841. package/graphql/schema/schemaPlugins.js.map +1 -1
  842. package/index.d.ts +3 -5
  843. package/index.js +4 -7
  844. package/index.js.map +1 -1
  845. package/package.json +36 -32
  846. package/plugins/CmsModelPlugin.js +19 -4
  847. package/plugins/CmsModelPlugin.js.map +1 -1
  848. package/plugins/index.d.ts +0 -2
  849. package/plugins/index.js +0 -2
  850. package/plugins/index.js.map +1 -1
  851. package/types/context.d.ts +5 -5
  852. package/types/context.js.map +1 -1
  853. package/types/fields/objectField.d.ts +2 -0
  854. package/types/fields/objectField.js.map +1 -1
  855. package/types/model.d.ts +39 -3
  856. package/types/model.js.map +1 -1
  857. package/types/modelField.d.ts +47 -15
  858. package/types/modelField.js.map +1 -1
  859. package/types/plugins.d.ts +1 -305
  860. package/types/plugins.js.map +1 -1
  861. package/types/types.d.ts +28 -61
  862. package/types/types.js +0 -4
  863. package/types/types.js.map +1 -1
  864. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.d.ts +3 -2
  865. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js +3 -3
  866. package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js.map +1 -1
  867. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.d.ts +4 -3
  868. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js +3 -3
  869. package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js.map +1 -1
  870. package/utils/converters/ConverterCollection.d.ts +2 -0
  871. package/utils/converters/ConverterCollection.js +3 -2
  872. package/utils/converters/ConverterCollection.js.map +1 -1
  873. package/utils/converters/types.js.map +1 -1
  874. package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -0
  875. package/utils/converters/valueKeyFromStorageConverter.js +4 -2
  876. package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
  877. package/utils/converters/valueKeyStorageConverter.d.ts +2 -3
  878. package/utils/converters/valueKeyStorageConverter.js +7 -3
  879. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  880. package/utils/converters/valueKeyToStorageConverter.d.ts +2 -0
  881. package/utils/converters/valueKeyToStorageConverter.js +4 -2
  882. package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
  883. package/utils/createModelField.js +10 -8
  884. package/utils/createModelField.js.map +1 -1
  885. package/utils/createTypeFromFields.d.ts +3 -2
  886. package/utils/createTypeFromFields.js +3 -3
  887. package/utils/createTypeFromFields.js.map +1 -1
  888. package/utils/entryStorage.d.ts +8 -15
  889. package/utils/entryStorage.js +31 -59
  890. package/utils/entryStorage.js.map +1 -1
  891. package/utils/getBaseFieldType.js +3 -0
  892. package/utils/getBaseFieldType.js.map +1 -1
  893. package/utils/getSchemaFromFieldPlugins.d.ts +3 -2
  894. package/utils/getSchemaFromFieldPlugins.js +5 -9
  895. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  896. package/utils/renderFields.d.ts +4 -3
  897. package/utils/renderFields.js +14 -9
  898. package/utils/renderFields.js.map +1 -1
  899. package/utils/renderGetFilterFields.d.ts +3 -2
  900. package/utils/renderGetFilterFields.js +2 -2
  901. package/utils/renderGetFilterFields.js.map +1 -1
  902. package/utils/renderInputFields.d.ts +4 -3
  903. package/utils/renderInputFields.js +5 -11
  904. package/utils/renderInputFields.js.map +1 -1
  905. package/utils/renderListFilterFields.d.ts +3 -2
  906. package/utils/renderListFilterFields.js +5 -3
  907. package/utils/renderListFilterFields.js.map +1 -1
  908. package/utils/renderSortEnum.d.ts +4 -4
  909. package/utils/renderSortEnum.js +11 -11
  910. package/utils/renderSortEnum.js.map +1 -1
  911. package/utils/toSlug.js +1 -1
  912. package/utils/toSlug.js.map +1 -1
  913. package/crud/contentEntry/entryDataFactories/state.d.ts +0 -10
  914. package/crud/contentEntry/entryDataFactories/state.js +0 -16
  915. package/crud/contentEntry/entryDataFactories/state.js.map +0 -1
  916. package/crud/contentModel/validateModel.d.ts +0 -9
  917. package/crud/contentModel/validateModel.js +0 -21
  918. package/crud/contentModel/validateModel.js.map +0 -1
  919. package/crud/contentModel/validateModelFields.d.ts +0 -9
  920. package/crud/contentModel/validateModelFields.js +0 -267
  921. package/crud/contentModel/validateModelFields.js.map +0 -1
  922. package/features/modelBuilder/fields/validators.js +0 -3
  923. package/features/modelBuilder/fields/validators.js.map +0 -1
  924. package/graphql/schema/createFieldTypePluginRecords.d.ts +0 -3
  925. package/graphql/schema/createFieldTypePluginRecords.js +0 -8
  926. package/graphql/schema/createFieldTypePluginRecords.js.map +0 -1
  927. package/graphqlFields/boolean.d.ts +0 -2
  928. package/graphqlFields/boolean.js +0 -52
  929. package/graphqlFields/boolean.js.map +0 -1
  930. package/graphqlFields/datetime.d.ts +0 -2
  931. package/graphqlFields/datetime.js +0 -71
  932. package/graphqlFields/datetime.js.map +0 -1
  933. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +0 -2
  934. package/graphqlFields/dynamicZone/dynamicZoneField.js +0 -313
  935. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +0 -1
  936. package/graphqlFields/dynamicZone/index.d.ts +0 -1
  937. package/graphqlFields/dynamicZone/index.js +0 -3
  938. package/graphqlFields/dynamicZone/index.js.map +0 -1
  939. package/graphqlFields/file.d.ts +0 -2
  940. package/graphqlFields/file.js +0 -37
  941. package/graphqlFields/file.js.map +0 -1
  942. package/graphqlFields/helpers.js +0 -20
  943. package/graphqlFields/helpers.js.map +0 -1
  944. package/graphqlFields/index.d.ts +0 -2
  945. package/graphqlFields/index.js +0 -15
  946. package/graphqlFields/index.js.map +0 -1
  947. package/graphqlFields/json.d.ts +0 -2
  948. package/graphqlFields/json.js +0 -42
  949. package/graphqlFields/json.js.map +0 -1
  950. package/graphqlFields/longText.d.ts +0 -2
  951. package/graphqlFields/longText.js +0 -57
  952. package/graphqlFields/longText.js.map +0 -1
  953. package/graphqlFields/number.d.ts +0 -2
  954. package/graphqlFields/number.js +0 -63
  955. package/graphqlFields/number.js.map +0 -1
  956. package/graphqlFields/object.d.ts +0 -2
  957. package/graphqlFields/object.js +0 -245
  958. package/graphqlFields/object.js.map +0 -1
  959. package/graphqlFields/ref.d.ts +0 -2
  960. package/graphqlFields/ref.js +0 -286
  961. package/graphqlFields/ref.js.map +0 -1
  962. package/graphqlFields/richText/richTextResolver.js.map +0 -1
  963. package/graphqlFields/richText.d.ts +0 -2
  964. package/graphqlFields/richText.js +0 -48
  965. package/graphqlFields/richText.js.map +0 -1
  966. package/graphqlFields/searchableJson.d.ts +0 -2
  967. package/graphqlFields/searchableJson.js +0 -53
  968. package/graphqlFields/searchableJson.js.map +0 -1
  969. package/graphqlFields/text.d.ts +0 -2
  970. package/graphqlFields/text.js +0 -59
  971. package/graphqlFields/text.js.map +0 -1
  972. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +0 -20
  973. package/plugins/CmsGraphQLSchemaSorterPlugin.js +0 -19
  974. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +0 -1
  975. package/plugins/StorageTransformPlugin.d.ts +0 -35
  976. package/plugins/StorageTransformPlugin.js +0 -26
  977. package/plugins/StorageTransformPlugin.js.map +0 -1
  978. package/storage/date.d.ts +0 -3
  979. package/storage/date.js +0 -110
  980. package/storage/date.js.map +0 -1
  981. package/storage/default.d.ts +0 -2
  982. package/storage/default.js +0 -19
  983. package/storage/default.js.map +0 -1
  984. package/storage/dynamicZone.d.ts +0 -2
  985. package/storage/dynamicZone.js +0 -149
  986. package/storage/dynamicZone.js.map +0 -1
  987. package/storage/index.d.ts +0 -1
  988. package/storage/index.js +0 -13
  989. package/storage/index.js.map +0 -1
  990. package/storage/json.d.ts +0 -2
  991. package/storage/json.js +0 -49
  992. package/storage/json.js.map +0 -1
  993. package/storage/object.d.ts +0 -2
  994. package/storage/object.js +0 -104
  995. package/storage/object.js.map +0 -1
  996. package/utils/contentEntryTraverser/ContentEntryTraverser.js.map +0 -1
  997. package/validators/dateGte.d.ts +0 -2
  998. package/validators/dateGte.js +0 -25
  999. package/validators/dateGte.js.map +0 -1
  1000. package/validators/dateLte.d.ts +0 -2
  1001. package/validators/dateLte.js +0 -25
  1002. package/validators/dateLte.js.map +0 -1
  1003. package/validators/gte.d.ts +0 -2
  1004. package/validators/gte.js +0 -22
  1005. package/validators/gte.js.map +0 -1
  1006. package/validators/in.d.ts +0 -2
  1007. package/validators/in.js +0 -22
  1008. package/validators/in.js.map +0 -1
  1009. package/validators/index.d.ts +0 -1
  1010. package/validators/index.js +0 -16
  1011. package/validators/index.js.map +0 -1
  1012. package/validators/lte.d.ts +0 -2
  1013. package/validators/lte.js +0 -22
  1014. package/validators/lte.js.map +0 -1
  1015. package/validators/maxLength.d.ts +0 -2
  1016. package/validators/maxLength.js +0 -22
  1017. package/validators/maxLength.js.map +0 -1
  1018. package/validators/minLength.d.ts +0 -2
  1019. package/validators/minLength.js +0 -22
  1020. package/validators/minLength.js.map +0 -1
  1021. package/validators/pattern.d.ts +0 -2
  1022. package/validators/pattern.js +0 -36
  1023. package/validators/pattern.js.map +0 -1
  1024. package/validators/patternPlugins/email.d.ts +0 -2
  1025. package/validators/patternPlugins/email.js +0 -13
  1026. package/validators/patternPlugins/email.js.map +0 -1
  1027. package/validators/patternPlugins/index.d.ts +0 -2
  1028. package/validators/patternPlugins/index.js +0 -11
  1029. package/validators/patternPlugins/index.js.map +0 -1
  1030. package/validators/patternPlugins/lowerCase.d.ts +0 -2
  1031. package/validators/patternPlugins/lowerCase.js +0 -13
  1032. package/validators/patternPlugins/lowerCase.js.map +0 -1
  1033. package/validators/patternPlugins/lowerCaseSpace.d.ts +0 -2
  1034. package/validators/patternPlugins/lowerCaseSpace.js +0 -13
  1035. package/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
  1036. package/validators/patternPlugins/upperCase.d.ts +0 -2
  1037. package/validators/patternPlugins/upperCase.js +0 -13
  1038. package/validators/patternPlugins/upperCase.js.map +0 -1
  1039. package/validators/patternPlugins/upperCaseSpace.d.ts +0 -2
  1040. package/validators/patternPlugins/upperCaseSpace.js +0 -13
  1041. package/validators/patternPlugins/upperCaseSpace.js.map +0 -1
  1042. package/validators/patternPlugins/url.d.ts +0 -2
  1043. package/validators/patternPlugins/url.js +0 -13
  1044. package/validators/patternPlugins/url.js.map +0 -1
  1045. package/validators/required.d.ts +0 -2
  1046. package/validators/required.js +0 -17
  1047. package/validators/required.js.map +0 -1
  1048. package/validators/timeGte.d.ts +0 -2
  1049. package/validators/timeGte.js +0 -20
  1050. package/validators/timeGte.js.map +0 -1
  1051. package/validators/timeLte.d.ts +0 -2
  1052. package/validators/timeLte.js +0 -20
  1053. package/validators/timeLte.js.map +0 -1
  1054. package/validators/unique.d.ts +0 -6
  1055. package/validators/unique.js +0 -57
  1056. package/validators/unique.js.map +0 -1
package/constants.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { CmsIdentity } from "./types/index.js";
1
+ import type { CmsIdentity, ICmsEntryLive } from "./types/index.js";
2
2
  export declare const ROOT_FOLDER = "root";
3
3
  export declare const CMS_MODEL_SINGLETON_TAG = "singleEntry";
4
4
  export declare const ENTRY_META_FIELDS: readonly ["createdOn", "modifiedOn", "savedOn", "deletedOn", "restoredOn", "firstPublishedOn", "lastPublishedOn", "createdBy", "modifiedBy", "savedBy", "deletedBy", "restoredBy", "firstPublishedBy", "lastPublishedBy", "revisionCreatedOn", "revisionModifiedOn", "revisionSavedOn", "revisionDeletedOn", "revisionRestoredOn", "revisionFirstPublishedOn", "revisionLastPublishedOn", "revisionCreatedBy", "revisionModifiedBy", "revisionSavedBy", "revisionDeletedBy", "revisionRestoredBy", "revisionFirstPublishedBy", "revisionLastPublishedBy"];
@@ -32,6 +32,7 @@ export interface RecordWithEntryMetaFields {
32
32
  restoredBy: CmsIdentity | null;
33
33
  firstPublishedBy: CmsIdentity | null;
34
34
  lastPublishedBy: CmsIdentity | null;
35
+ live: ICmsEntryLive | null;
35
36
  }
36
37
  export declare const pickEntryMetaFields: (object: Partial<RecordWithEntryMetaFields>, filter?: (fieldName: EntryMetaFieldName | string) => boolean) => Partial<RecordWithEntryMetaFields>;
37
38
  export declare const isNullableEntryMetaField: (fieldName: string) => boolean;
package/constants.js CHANGED
@@ -21,6 +21,10 @@ export const pickEntryMetaFields = (object, filter) => {
21
21
  });
22
22
  }
23
23
  }
24
+ /**
25
+ * Also add live field, as it's not part of entry meta fields, but it's required to be transfered.
26
+ */
27
+ pickedEntryMetaFields.live = object.live;
24
28
  return pickedEntryMetaFields;
25
29
  };
26
30
  export const isNullableEntryMetaField = fieldName => {
package/constants.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["ROOT_FOLDER","CMS_MODEL_SINGLETON_TAG","ENTRY_META_FIELDS","pickEntryMetaFields","object","filter","pickedEntryMetaFields","entryMetaFieldName","fieldExists","undefined","mustPick","Object","assign","isNullableEntryMetaField","fieldName","lcFieldName","toLowerCase","includes","isNonNullableEntryMetaField","isDateTimeEntryMetaField","endsWith","isIdentityEntryMetaField","isRevisionEntryMetaField","startsWith","isEntryLevelEntryMetaField","isDeletedEntryMetaField","isRestoredEntryMetaField"],"sources":["constants.ts"],"sourcesContent":["import type { CmsIdentity } from \"~/types/index.js\";\n\nexport const ROOT_FOLDER = \"root\";\n\nexport const CMS_MODEL_SINGLETON_TAG = \"singleEntry\";\n\n// Content entries - xOn and xBy meta fields.\nexport const ENTRY_META_FIELDS = [\n // Entry-level meta fields.\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\",\n \"createdBy\",\n \"modifiedBy\",\n \"savedBy\",\n \"deletedBy\",\n \"restoredBy\",\n \"firstPublishedBy\",\n \"lastPublishedBy\",\n\n // Revision-level meta fields.\n \"revisionCreatedOn\",\n \"revisionModifiedOn\",\n \"revisionSavedOn\",\n \"revisionDeletedOn\",\n \"revisionRestoredOn\",\n \"revisionFirstPublishedOn\",\n \"revisionLastPublishedOn\",\n \"revisionCreatedBy\",\n \"revisionModifiedBy\",\n \"revisionSavedBy\",\n \"revisionDeletedBy\",\n \"revisionRestoredBy\",\n \"revisionFirstPublishedBy\",\n \"revisionLastPublishedBy\"\n] as const;\n\nexport type EntryMetaFieldName = (typeof ENTRY_META_FIELDS)[number];\n\nexport interface RecordWithEntryMetaFields {\n revisionCreatedOn: string;\n revisionSavedOn: string;\n revisionModifiedOn: string | null;\n revisionDeletedOn: string | null;\n revisionRestoredOn: string | null;\n revisionFirstPublishedOn: string | null;\n revisionLastPublishedOn: string | null;\n revisionCreatedBy: CmsIdentity;\n revisionSavedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionDeletedBy: CmsIdentity | null;\n revisionRestoredBy: CmsIdentity | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n // Entry-level meta fields.\n createdOn: string;\n savedOn: string;\n modifiedOn: string | null;\n deletedOn: string | null;\n restoredOn: string | null;\n firstPublishedOn: string | null;\n lastPublishedOn: string | null;\n createdBy: CmsIdentity;\n savedBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n deletedBy: CmsIdentity | null;\n restoredBy: CmsIdentity | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n}\n\nexport const pickEntryMetaFields = (\n object: Partial<RecordWithEntryMetaFields>,\n filter?: (fieldName: EntryMetaFieldName | string) => boolean\n) => {\n const pickedEntryMetaFields: Partial<RecordWithEntryMetaFields> = {};\n for (const entryMetaFieldName of ENTRY_META_FIELDS) {\n const fieldExists = entryMetaFieldName in object;\n if (!fieldExists) {\n object[entryMetaFieldName] = undefined;\n }\n\n const mustPick = !filter || filter(entryMetaFieldName);\n if (mustPick) {\n Object.assign(pickedEntryMetaFields, {\n [entryMetaFieldName]: object[entryMetaFieldName]\n });\n }\n }\n\n return pickedEntryMetaFields;\n};\n\nexport const isNullableEntryMetaField = (fieldName: string) => {\n // Only modifiedX, publishedX, deletedX fields are nullable.\n const lcFieldName = fieldName.toLowerCase();\n return (\n lcFieldName.includes(\"modified\") ||\n lcFieldName.includes(\"published\") ||\n lcFieldName.includes(\"deleted\") ||\n lcFieldName.includes(\"restored\")\n );\n};\n\nexport const isNonNullableEntryMetaField = (fieldName: string) => {\n return !isNullableEntryMetaField(fieldName);\n};\n\nexport const isDateTimeEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"On\");\n};\n\nexport const isIdentityEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"By\");\n};\n\nexport const isRevisionEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isEntryLevelEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n !fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isDeletedEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) && fieldName.includes(\"deleted\")\n );\n};\n\nexport const isRestoredEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.includes(\"restored\")\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ROOT_FOLDER","CMS_MODEL_SINGLETON_TAG","ENTRY_META_FIELDS","pickEntryMetaFields","object","filter","pickedEntryMetaFields","entryMetaFieldName","fieldExists","undefined","mustPick","Object","assign","live","isNullableEntryMetaField","fieldName","lcFieldName","toLowerCase","includes","isNonNullableEntryMetaField","isDateTimeEntryMetaField","endsWith","isIdentityEntryMetaField","isRevisionEntryMetaField","startsWith","isEntryLevelEntryMetaField","isDeletedEntryMetaField","isRestoredEntryMetaField"],"sources":["constants.ts"],"sourcesContent":["import type { CmsIdentity, ICmsEntryLive } from \"~/types/index.js\";\n\nexport const ROOT_FOLDER = \"root\";\n\nexport const CMS_MODEL_SINGLETON_TAG = \"singleEntry\";\n\n// Content entries - xOn and xBy meta fields.\nexport const ENTRY_META_FIELDS = [\n // Entry-level meta fields.\n \"createdOn\",\n \"modifiedOn\",\n \"savedOn\",\n \"deletedOn\",\n \"restoredOn\",\n \"firstPublishedOn\",\n \"lastPublishedOn\",\n \"createdBy\",\n \"modifiedBy\",\n \"savedBy\",\n \"deletedBy\",\n \"restoredBy\",\n \"firstPublishedBy\",\n \"lastPublishedBy\",\n\n // Revision-level meta fields.\n \"revisionCreatedOn\",\n \"revisionModifiedOn\",\n \"revisionSavedOn\",\n \"revisionDeletedOn\",\n \"revisionRestoredOn\",\n \"revisionFirstPublishedOn\",\n \"revisionLastPublishedOn\",\n \"revisionCreatedBy\",\n \"revisionModifiedBy\",\n \"revisionSavedBy\",\n \"revisionDeletedBy\",\n \"revisionRestoredBy\",\n \"revisionFirstPublishedBy\",\n \"revisionLastPublishedBy\"\n] as const;\n\nexport type EntryMetaFieldName = (typeof ENTRY_META_FIELDS)[number];\n\nexport interface RecordWithEntryMetaFields {\n revisionCreatedOn: string;\n revisionSavedOn: string;\n revisionModifiedOn: string | null;\n revisionDeletedOn: string | null;\n revisionRestoredOn: string | null;\n revisionFirstPublishedOn: string | null;\n revisionLastPublishedOn: string | null;\n revisionCreatedBy: CmsIdentity;\n revisionSavedBy: CmsIdentity;\n revisionModifiedBy: CmsIdentity | null;\n revisionDeletedBy: CmsIdentity | null;\n revisionRestoredBy: CmsIdentity | null;\n revisionFirstPublishedBy: CmsIdentity | null;\n revisionLastPublishedBy: CmsIdentity | null;\n\n // Entry-level meta fields.\n createdOn: string;\n savedOn: string;\n modifiedOn: string | null;\n deletedOn: string | null;\n restoredOn: string | null;\n firstPublishedOn: string | null;\n lastPublishedOn: string | null;\n createdBy: CmsIdentity;\n savedBy: CmsIdentity;\n modifiedBy: CmsIdentity | null;\n deletedBy: CmsIdentity | null;\n restoredBy: CmsIdentity | null;\n firstPublishedBy: CmsIdentity | null;\n lastPublishedBy: CmsIdentity | null;\n live: ICmsEntryLive | null;\n}\n\nexport const pickEntryMetaFields = (\n object: Partial<RecordWithEntryMetaFields>,\n filter?: (fieldName: EntryMetaFieldName | string) => boolean\n) => {\n const pickedEntryMetaFields: Partial<RecordWithEntryMetaFields> = {};\n for (const entryMetaFieldName of ENTRY_META_FIELDS) {\n const fieldExists = entryMetaFieldName in object;\n if (!fieldExists) {\n object[entryMetaFieldName] = undefined;\n }\n\n const mustPick = !filter || filter(entryMetaFieldName);\n if (mustPick) {\n Object.assign(pickedEntryMetaFields, {\n [entryMetaFieldName]: object[entryMetaFieldName]\n });\n }\n }\n /**\n * Also add live field, as it's not part of entry meta fields, but it's required to be transfered.\n */\n pickedEntryMetaFields.live = object.live;\n\n return pickedEntryMetaFields;\n};\n\nexport const isNullableEntryMetaField = (fieldName: string) => {\n // Only modifiedX, publishedX, deletedX fields are nullable.\n const lcFieldName = fieldName.toLowerCase();\n return (\n lcFieldName.includes(\"modified\") ||\n lcFieldName.includes(\"published\") ||\n lcFieldName.includes(\"deleted\") ||\n lcFieldName.includes(\"restored\")\n );\n};\n\nexport const isNonNullableEntryMetaField = (fieldName: string) => {\n return !isNullableEntryMetaField(fieldName);\n};\n\nexport const isDateTimeEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"On\");\n};\n\nexport const isIdentityEntryMetaField = (fieldName: string) => {\n // Only field ending with \"On\" are date/time fields.\n return fieldName.endsWith(\"By\");\n};\n\nexport const isRevisionEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isEntryLevelEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n !fieldName.startsWith(\"revision\")\n );\n};\n\nexport const isDeletedEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) && fieldName.includes(\"deleted\")\n );\n};\n\nexport const isRestoredEntryMetaField = (fieldName: string) => {\n return (\n ENTRY_META_FIELDS.includes(fieldName as EntryMetaFieldName) &&\n fieldName.includes(\"restored\")\n );\n};\n"],"mappings":"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","ignoreList":[]}
package/context.d.ts CHANGED
@@ -1,6 +1,3 @@
1
- import type { CmsContext, HeadlessCmsStorageOperations } from "./types/index.js";
1
+ import type { CmsContext } from "./types/index.js";
2
2
  import { ContextPlugin } from "@webiny/api";
3
- export interface CrudParams {
4
- storageOperations: HeadlessCmsStorageOperations;
5
- }
6
- export declare const createContextPlugin: ({ storageOperations }: CrudParams) => ContextPlugin<CmsContext>;
3
+ export declare const createContextPlugin: () => ContextPlugin<CmsContext>;
package/context.js CHANGED
@@ -13,7 +13,7 @@ import { createImportCrud } from "./export/crud/importing.js";
13
13
  import { getSchema } from "./graphql/getSchema.js";
14
14
  import { CmsInstallerFeature } from "./features/installer/feature.js";
15
15
  import { ContentEntriesFeature } from "./features/contentEntry/ContentEntriesFeature.js";
16
- import { AccessControl as AccessControlAbstraction, CmsContext as CmsContextAbstraction, StorageOperations } from "./features/shared/abstractions.js";
16
+ import { AccessControl as AccessControlAbstraction, CmsContext as CmsContextAbstraction, StorageOperations, StorageOperationsFactory } from "./features/shared/abstractions.js";
17
17
  import { EntryFromStorageTransform, EntryToStorageTransform, PluginsContainer, SearchableFieldsProvider } from "./legacy/abstractions.js";
18
18
  import { entryFromStorageTransform, entryToStorageTransform } from "./utils/entryStorage.js";
19
19
  import { getSearchableFields } from "./crud/contentEntry/searchableFields.js";
@@ -22,6 +22,9 @@ import { ContentModelFeature } from "./features/contentModel/ContentModelFeature
22
22
  import { ModelBuilderFeature } from "./features/modelBuilder/index.js";
23
23
  import { CmsWhereMapperFeature } from "./features/whereMapper/feature.js";
24
24
  import { CmsSortMapperFeature } from "./features/sortMapper/feature.js";
25
+ import { GraphQLFeature } from "./features/graphql/index.js";
26
+ import { ValidationFeature } from "./features/validation/index.js";
27
+ import { StorageFeature } from "./features/storage/index.js";
25
28
  const getParameters = async context => {
26
29
  const plugins = context.plugins.byType(CmsParametersPlugin.type);
27
30
  for (const plugin of plugins) {
@@ -32,9 +35,7 @@ const getParameters = async context => {
32
35
  }
33
36
  throw new WebinyError("Could not determine type of the CMS.", "CMS_TYPE_ERROR");
34
37
  };
35
- export const createContextPlugin = ({
36
- storageOperations
37
- }) => {
38
+ export const createContextPlugin = () => {
38
39
  const plugin = new ContextPlugin(async context => {
39
40
  const {
40
41
  type
@@ -58,6 +59,12 @@ export const createContextPlugin = ({
58
59
  context.cms.MANAGE = true;
59
60
  }
60
61
  };
62
+
63
+ // TODO figure out a better way. maybe this stuff should be on before handler?
64
+ // GraphQL fields must be loaded before anything else
65
+ GraphQLFeature.register(context.container);
66
+ ValidationFeature.register(context.container);
67
+ StorageFeature.register(context.container);
61
68
  async function getExecutableSchema(type) {
62
69
  const originalType = context.cms.type;
63
70
  setSchemaType(type);
@@ -73,8 +80,7 @@ export const createContextPlugin = ({
73
80
  return processRequestBody(input, schema, context);
74
81
  };
75
82
  }
76
- context.plugins.register(new StorageOperationsCmsModelPlugin(createCmsModelFieldConvertersAttachFactory(context.plugins)));
77
- await storageOperations.beforeInit(context);
83
+ context.plugins.register(new StorageOperationsCmsModelPlugin(createCmsModelFieldConvertersAttachFactory(context)));
78
84
  const accessControl = new AccessControl({
79
85
  getIdentity: async () => context.security.getIdentity(),
80
86
  getGroupsPermissions: () => context.security.getPermissions("cms.contentModelGroup"),
@@ -86,6 +92,9 @@ export const createContextPlugin = ({
86
92
  });
87
93
  }
88
94
  });
95
+ const storageOperationsFactory = context.container.resolve(StorageOperationsFactory);
96
+ const storageOperations = await storageOperationsFactory.create(context);
97
+ await storageOperations.beforeInit(context);
89
98
  context.cms = {
90
99
  type,
91
100
  READ: type === "read",
@@ -124,7 +133,7 @@ export const createContextPlugin = ({
124
133
  });
125
134
  context.container.registerInstance(SearchableFieldsProvider, params => {
126
135
  return getSearchableFields({
127
- plugins: context.plugins,
136
+ context,
128
137
  fields: params.fields,
129
138
  input: []
130
139
  });
package/context.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["WebinyError","ContextPlugin","processRequestBody","CmsParametersPlugin","AccessControl","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","StorageOperationsCmsModelPlugin","createCmsModelFieldConvertersAttachFactory","createExportCrud","createImportCrud","getSchema","CmsInstallerFeature","ContentEntriesFeature","AccessControlAbstraction","CmsContext","CmsContextAbstraction","StorageOperations","EntryFromStorageTransform","EntryToStorageTransform","PluginsContainer","SearchableFieldsProvider","entryFromStorageTransform","entryToStorageTransform","getSearchableFields","ContentModelGroupFeature","ContentModelFeature","ModelBuilderFeature","CmsWhereMapperFeature","CmsSortMapperFeature","getParameters","context","plugins","byType","type","plugin","result","createContextPlugin","storageOperations","getTenant","tenancy","getCurrentTenant","setSchemaType","cms","READ","PREVIEW","MANAGE","getExecutableSchema","originalType","schema","security","withoutAuthorization","input","register","beforeInit","accessControl","getIdentity","getGroupsPermissions","getPermissions","getModelsPermissions","getEntriesPermissions","listAllGroups","listGroups","export","importing","container","registerInstance","model","entry","params","fields","init","name"],"sources":["context.ts"],"sourcesContent":["import type { ApiEndpoint, CmsContext, HeadlessCmsStorageOperations } from \"~/types/index.js\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport type { GraphQLRequestBody } from \"@webiny/handler-graphql/types.js\";\nimport { processRequestBody } from \"@webiny/handler-graphql\";\nimport type { CmsParametersPluginResponse } from \"~/plugins/CmsParametersPlugin.js\";\nimport { CmsParametersPlugin } from \"~/plugins/CmsParametersPlugin.js\";\nimport { AccessControl } from \"~/crud/AccessControl/AccessControl.js\";\nimport { createModelGroupsCrud } from \"~/crud/contentModelGroup.crud.js\";\nimport { createModelsCrud } from \"~/crud/contentModel.crud.js\";\nimport { createContentEntryCrud } from \"~/crud/contentEntry.crud.js\";\nimport { StorageOperationsCmsModelPlugin } from \"~/plugins/index.js\";\nimport { createCmsModelFieldConvertersAttachFactory } from \"~/utils/converters/valueKeyStorageConverter.js\";\nimport { createExportCrud } from \"~/export/index.js\";\nimport { createImportCrud } from \"~/export/crud/importing.js\";\nimport { getSchema } from \"~/graphql/getSchema.js\";\nimport { CmsInstallerFeature } from \"~/features/installer/feature.js\";\nimport { ContentEntriesFeature } from \"~/features/contentEntry/ContentEntriesFeature.js\";\nimport {\n AccessControl as AccessControlAbstraction,\n CmsContext as CmsContextAbstraction,\n StorageOperations\n} from \"~/features/shared/abstractions.js\";\nimport {\n EntryFromStorageTransform,\n EntryToStorageTransform,\n PluginsContainer,\n SearchableFieldsProvider\n} from \"./legacy/abstractions.js\";\nimport { entryFromStorageTransform, entryToStorageTransform } from \"~/utils/entryStorage.js\";\nimport { getSearchableFields } from \"~/crud/contentEntry/searchableFields.js\";\nimport { ContentModelGroupFeature } from \"~/features/contentModelGroup/ContentModelGroupFeature.js\";\nimport { ContentModelFeature } from \"~/features/contentModel/ContentModelFeature.js\";\nimport { ModelBuilderFeature } from \"~/features/modelBuilder/index.js\";\nimport { CmsWhereMapperFeature } from \"~/features/whereMapper/feature.js\";\nimport { CmsSortMapperFeature } from \"~/features/sortMapper/feature.js\";\n\nconst getParameters = async (context: CmsContext): Promise<CmsParametersPluginResponse> => {\n const plugins = context.plugins.byType<CmsParametersPlugin>(CmsParametersPlugin.type);\n\n for (const plugin of plugins) {\n const result = await plugin.getParameters(context);\n if (result !== null) {\n return result;\n }\n }\n throw new WebinyError(\"Could not determine type of the CMS.\", \"CMS_TYPE_ERROR\");\n};\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContextPlugin = ({ storageOperations }: CrudParams) => {\n const plugin = new ContextPlugin<CmsContext>(async context => {\n const { type } = await getParameters(context);\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n const setSchemaType = (type: ApiEndpoint | null) => {\n if (!type) {\n return;\n }\n\n context.cms.type = type;\n\n switch (type) {\n case \"read\":\n context.cms.READ = true;\n break;\n case \"preview\":\n context.cms.PREVIEW = true;\n break;\n default:\n context.cms.MANAGE = true;\n }\n };\n\n async function getExecutableSchema(type: ApiEndpoint) {\n const originalType = context.cms.type;\n setSchemaType(type);\n\n const schema = await context.security.withoutAuthorization(() => {\n return getSchema({\n context,\n getTenant,\n type\n });\n });\n\n setSchemaType(originalType);\n\n return async <TData, TExtensions>(input: GraphQLRequestBody | GraphQLRequestBody[]) => {\n return processRequestBody<TData, TExtensions>(input, schema, context);\n };\n }\n\n context.plugins.register(\n new StorageOperationsCmsModelPlugin(\n createCmsModelFieldConvertersAttachFactory(context.plugins)\n )\n );\n\n await storageOperations.beforeInit(context);\n\n const accessControl = new AccessControl({\n getIdentity: async () => context.security.getIdentity(),\n getGroupsPermissions: () => context.security.getPermissions(\"cms.contentModelGroup\"),\n getModelsPermissions: () => context.security.getPermissions(\"cms.contentModel\"),\n getEntriesPermissions: () => context.security.getPermissions(\"cms.contentEntry\"),\n listAllGroups: () => {\n return context.security.withoutAuthorization(() => {\n return context.cms.listGroups();\n });\n }\n });\n\n context.cms = {\n type,\n READ: type === \"read\",\n PREVIEW: type === \"preview\",\n MANAGE: type === \"manage\",\n storageOperations,\n accessControl,\n getExecutableSchema,\n ...createModelGroupsCrud({\n context\n }),\n ...createModelsCrud({\n context\n }),\n ...createContentEntryCrud({\n context\n }),\n export: {\n ...createExportCrud(context)\n },\n importing: {\n ...createImportCrud(context)\n }\n };\n\n // Register legacy dependencies\n context.container.registerInstance(StorageOperations, storageOperations);\n context.container.registerInstance(AccessControlAbstraction, accessControl);\n context.container.registerInstance(CmsContextAbstraction, context);\n context.container.registerInstance(PluginsContainer, context.plugins);\n context.container.registerInstance(EntryToStorageTransform, (model, entry) => {\n return entryToStorageTransform(context, model, entry);\n });\n context.container.registerInstance(EntryFromStorageTransform, (model, entry) => {\n return entryFromStorageTransform(context, model, entry);\n });\n context.container.registerInstance(SearchableFieldsProvider, params => {\n return getSearchableFields({\n plugins: context.plugins,\n fields: params.fields,\n input: []\n });\n });\n\n // Register features\n CmsInstallerFeature.register(context.container);\n ContentEntriesFeature.register(context.container);\n ContentModelFeature.register(context.container);\n ContentModelGroupFeature.register(context.container);\n ModelBuilderFeature.register(context.container);\n\n CmsWhereMapperFeature.register(context.container);\n CmsSortMapperFeature.register(context.container);\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n\n plugin.name = \"cms.createContext\";\n\n return plugin;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["WebinyError","ContextPlugin","processRequestBody","CmsParametersPlugin","AccessControl","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","StorageOperationsCmsModelPlugin","createCmsModelFieldConvertersAttachFactory","createExportCrud","createImportCrud","getSchema","CmsInstallerFeature","ContentEntriesFeature","AccessControlAbstraction","CmsContext","CmsContextAbstraction","StorageOperations","StorageOperationsFactory","EntryFromStorageTransform","EntryToStorageTransform","PluginsContainer","SearchableFieldsProvider","entryFromStorageTransform","entryToStorageTransform","getSearchableFields","ContentModelGroupFeature","ContentModelFeature","ModelBuilderFeature","CmsWhereMapperFeature","CmsSortMapperFeature","GraphQLFeature","ValidationFeature","StorageFeature","getParameters","context","plugins","byType","type","plugin","result","createContextPlugin","getTenant","tenancy","getCurrentTenant","setSchemaType","cms","READ","PREVIEW","MANAGE","register","container","getExecutableSchema","originalType","schema","security","withoutAuthorization","input","accessControl","getIdentity","getGroupsPermissions","getPermissions","getModelsPermissions","getEntriesPermissions","listAllGroups","listGroups","storageOperationsFactory","resolve","storageOperations","create","beforeInit","export","importing","registerInstance","model","entry","params","fields","init","name"],"sources":["context.ts"],"sourcesContent":["import type { ApiEndpoint, CmsContext } from \"~/types/index.js\";\nimport WebinyError from \"@webiny/error\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport type { GraphQLRequestBody } from \"@webiny/handler-graphql/types.js\";\nimport { processRequestBody } from \"@webiny/handler-graphql\";\nimport type { CmsParametersPluginResponse } from \"~/plugins/CmsParametersPlugin.js\";\nimport { CmsParametersPlugin } from \"~/plugins/CmsParametersPlugin.js\";\nimport { AccessControl } from \"~/crud/AccessControl/AccessControl.js\";\nimport { createModelGroupsCrud } from \"~/crud/contentModelGroup.crud.js\";\nimport { createModelsCrud } from \"~/crud/contentModel.crud.js\";\nimport { createContentEntryCrud } from \"~/crud/contentEntry.crud.js\";\nimport { StorageOperationsCmsModelPlugin } from \"~/plugins/index.js\";\nimport { createCmsModelFieldConvertersAttachFactory } from \"~/utils/converters/valueKeyStorageConverter.js\";\nimport { createExportCrud } from \"~/export/index.js\";\nimport { createImportCrud } from \"~/export/crud/importing.js\";\nimport { getSchema } from \"~/graphql/getSchema.js\";\nimport { CmsInstallerFeature } from \"~/features/installer/feature.js\";\nimport { ContentEntriesFeature } from \"~/features/contentEntry/ContentEntriesFeature.js\";\nimport {\n AccessControl as AccessControlAbstraction,\n CmsContext as CmsContextAbstraction,\n StorageOperations,\n StorageOperationsFactory\n} from \"~/features/shared/abstractions.js\";\nimport {\n EntryFromStorageTransform,\n EntryToStorageTransform,\n PluginsContainer,\n SearchableFieldsProvider\n} from \"./legacy/abstractions.js\";\nimport { entryFromStorageTransform, entryToStorageTransform } from \"~/utils/entryStorage.js\";\nimport { getSearchableFields } from \"~/crud/contentEntry/searchableFields.js\";\nimport { ContentModelGroupFeature } from \"~/features/contentModelGroup/ContentModelGroupFeature.js\";\nimport { ContentModelFeature } from \"~/features/contentModel/ContentModelFeature.js\";\nimport { ModelBuilderFeature } from \"~/features/modelBuilder/index.js\";\nimport { CmsWhereMapperFeature } from \"~/features/whereMapper/feature.js\";\nimport { CmsSortMapperFeature } from \"~/features/sortMapper/feature.js\";\nimport { GraphQLFeature } from \"~/features/graphql/index.js\";\nimport { ValidationFeature } from \"~/features/validation/index.js\";\nimport { StorageFeature } from \"~/features/storage/index.js\";\n\nconst getParameters = async (context: CmsContext): Promise<CmsParametersPluginResponse> => {\n const plugins = context.plugins.byType<CmsParametersPlugin>(CmsParametersPlugin.type);\n\n for (const plugin of plugins) {\n const result = await plugin.getParameters(context);\n if (result !== null) {\n return result;\n }\n }\n throw new WebinyError(\"Could not determine type of the CMS.\", \"CMS_TYPE_ERROR\");\n};\n\nexport const createContextPlugin = () => {\n const plugin = new ContextPlugin<CmsContext>(async context => {\n const { type } = await getParameters(context);\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n const setSchemaType = (type: ApiEndpoint | null) => {\n if (!type) {\n return;\n }\n\n context.cms.type = type;\n\n switch (type) {\n case \"read\":\n context.cms.READ = true;\n break;\n case \"preview\":\n context.cms.PREVIEW = true;\n break;\n default:\n context.cms.MANAGE = true;\n }\n };\n\n // TODO figure out a better way. maybe this stuff should be on before handler?\n // GraphQL fields must be loaded before anything else\n GraphQLFeature.register(context.container);\n ValidationFeature.register(context.container);\n StorageFeature.register(context.container);\n\n async function getExecutableSchema(type: ApiEndpoint) {\n const originalType = context.cms.type;\n setSchemaType(type);\n\n const schema = await context.security.withoutAuthorization(() => {\n return getSchema({\n context,\n getTenant,\n type\n });\n });\n\n setSchemaType(originalType);\n\n return async <TData, TExtensions>(input: GraphQLRequestBody | GraphQLRequestBody[]) => {\n return processRequestBody<TData, TExtensions>(input, schema, context);\n };\n }\n\n context.plugins.register(\n new StorageOperationsCmsModelPlugin(createCmsModelFieldConvertersAttachFactory(context))\n );\n\n const accessControl = new AccessControl({\n getIdentity: async () => context.security.getIdentity(),\n getGroupsPermissions: () => context.security.getPermissions(\"cms.contentModelGroup\"),\n getModelsPermissions: () => context.security.getPermissions(\"cms.contentModel\"),\n getEntriesPermissions: () => context.security.getPermissions(\"cms.contentEntry\"),\n listAllGroups: () => {\n return context.security.withoutAuthorization(() => {\n return context.cms.listGroups();\n });\n }\n });\n\n const storageOperationsFactory = context.container.resolve(StorageOperationsFactory);\n\n const storageOperations = await storageOperationsFactory.create(context);\n await storageOperations.beforeInit(context);\n\n context.cms = {\n type,\n READ: type === \"read\",\n PREVIEW: type === \"preview\",\n MANAGE: type === \"manage\",\n storageOperations,\n accessControl,\n getExecutableSchema,\n ...createModelGroupsCrud({\n context\n }),\n ...createModelsCrud({\n context\n }),\n ...createContentEntryCrud({\n context\n }),\n export: {\n ...createExportCrud(context)\n },\n importing: {\n ...createImportCrud(context)\n }\n };\n\n // Register legacy dependencies\n context.container.registerInstance(StorageOperations, storageOperations);\n context.container.registerInstance(AccessControlAbstraction, accessControl);\n context.container.registerInstance(CmsContextAbstraction, context);\n context.container.registerInstance(PluginsContainer, context.plugins);\n context.container.registerInstance(EntryToStorageTransform, (model, entry) => {\n return entryToStorageTransform(context, model, entry);\n });\n context.container.registerInstance(EntryFromStorageTransform, (model, entry) => {\n return entryFromStorageTransform(context, model, entry);\n });\n context.container.registerInstance(SearchableFieldsProvider, params => {\n return getSearchableFields({\n context,\n fields: params.fields,\n input: []\n });\n });\n\n // Register features\n CmsInstallerFeature.register(context.container);\n ContentEntriesFeature.register(context.container);\n ContentModelFeature.register(context.container);\n ContentModelGroupFeature.register(context.container);\n ModelBuilderFeature.register(context.container);\n CmsWhereMapperFeature.register(context.container);\n CmsSortMapperFeature.register(context.container);\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n\n plugin.name = \"cms.createContext\";\n\n return plugin;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -27,22 +27,12 @@ export interface CanAccessEntryParams extends GetEntriesAccessControlListParams
27
27
  rwd?: string;
28
28
  pw?: string;
29
29
  }
30
- interface AccessControlEntry {
31
- rwd: string;
32
- canAccessNonOwned: boolean;
33
- canAccessOnlyOwned: boolean;
34
- }
35
- type AccessControlList = AccessControlEntry[];
36
- interface EntriesAccessControlEntry extends AccessControlEntry {
37
- pw?: string;
38
- }
39
- type EntriesAccessControlList = EntriesAccessControlEntry[];
40
30
  export declare class AccessControl {
41
- getIdentity: AccessControlParams["getIdentity"];
42
- getGroupsPermissions: AccessControlParams["getGroupsPermissions"];
43
- getModelsPermissions: AccessControlParams["getModelsPermissions"];
44
- getEntriesPermissions: AccessControlParams["getEntriesPermissions"];
45
- listAllGroupsCallback: AccessControlParams["listAllGroups"];
31
+ private getIdentity;
32
+ private getGroupsPermissions;
33
+ private getModelsPermissions;
34
+ private getEntriesPermissions;
35
+ private listAllGroupsCallback;
46
36
  private fullAccessPermissions;
47
37
  private allGroups;
48
38
  constructor({ getIdentity, getGroupsPermissions, getModelsPermissions, getEntriesPermissions, listAllGroups }: AccessControlParams);
@@ -56,10 +46,10 @@ export declare class AccessControl {
56
46
  * - hasFullAccessToGroups
57
47
  */
58
48
  canAccessGroup(params?: CanAccessGroupParams): Promise<boolean>;
59
- canAccessNonOwnedGroups(params: GetGroupsAccessControlListParams): Promise<boolean>;
60
- canAccessOnlyOwnedGroups(params: GetGroupsAccessControlListParams): Promise<boolean>;
61
- getGroupsAccessControlList(params: GetGroupsAccessControlListParams): Promise<AccessControlList>;
62
- hasFullAccessToGroups(): Promise<boolean>;
49
+ private canAccessNonOwnedGroups;
50
+ private canAccessOnlyOwnedGroups;
51
+ private getGroupsAccessControlList;
52
+ private hasFullAccessToGroups;
63
53
  /**
64
54
  * Models-related methods below. 👇
65
55
  * - canAccessModel
@@ -70,11 +60,11 @@ export declare class AccessControl {
70
60
  * - hasFullAccessToModels
71
61
  */
72
62
  canAccessModel(params: CanAccessModelParams): Promise<boolean>;
73
- ensureCanAccessModel(params?: CanAccessModelParams): Promise<void>;
74
- canAccessNonOwnedModels(params: GetModelsAccessControlListParams): Promise<boolean>;
75
- canAccessOnlyOwnedModels(params: GetModelsAccessControlListParams): Promise<boolean>;
76
- getModelsAccessControlList(params: GetModelsAccessControlListParams): Promise<AccessControlList>;
77
- hasFullAccessToModels(params: GetModelsAccessControlListParams): Promise<boolean>;
63
+ private ensureCanAccessModel;
64
+ private canAccessNonOwnedModels;
65
+ private canAccessOnlyOwnedModels;
66
+ private getModelsAccessControlList;
67
+ private hasFullAccessToModels;
78
68
  /**
79
69
  * Entries-related methods below. 👇
80
70
  * - canAccessEntry
@@ -85,11 +75,11 @@ export declare class AccessControl {
85
75
  * - hasFullAccessToEntries
86
76
  */
87
77
  canAccessEntry(params: CanAccessEntryParams): Promise<boolean>;
88
- ensureCanAccessEntry(params: CanAccessEntryParams): Promise<void>;
89
- canAccessNonOwnedEntries(params: GetEntriesAccessControlListParams): Promise<boolean>;
78
+ private ensureCanAccessEntry;
79
+ private canAccessNonOwnedEntries;
90
80
  canAccessOnlyOwnedEntries(params: GetEntriesAccessControlListParams): Promise<boolean>;
91
- getEntriesAccessControlList(params: GetEntriesAccessControlListParams): Promise<EntriesAccessControlList>;
92
- hasFullAccessToEntries(params: GetEntriesAccessControlListParams): Promise<boolean>;
81
+ private getEntriesAccessControlList;
82
+ private hasFullAccessToEntries;
93
83
  private modelAuthorizationDisabled;
94
84
  private listAllGroups;
95
85
  private getGroup;
@@ -1 +1 @@
1
- {"version":3,"names":["NotAuthorizedError","AccessControl","constructor","getIdentity","getGroupsPermissions","getModelsPermissions","getEntriesPermissions","listAllGroups","fullAccessPermissions","listAllGroupsCallback","allGroups","canAccessGroup","params","acl","getGroupsAccessControlList","canRead","find","ace","rwd","includes","hasRwd","canAccessNonOwnedGroups","some","canAccessNonOwned","canAccessOnlyOwnedGroups","hasFullAccessToGroups","canAccessOnlyOwned","groupsPermissionsList","groupsPermissions","own","modelGroupCreatedBy","group","createdBy","identity","id","push","groups","Array","isArray","permissions","p","filter","Boolean","name","canAccessModel","getModelsAccessControlList","ensureCanAccessModel","canAccess","modelName","model","canAccessNonOwnedModels","canAccessOnlyOwnedModels","hasFullAccessToModels","i","length","modelsPermissionsList","relatedModelPermissions","_src","getGroup","fullAccess","models","modelCreatedBy","modelId","modelAuthorizationDisabled","canAccessEntry","getEntriesAccessControlList","pw","hasPw","ensureCanAccessEntry","entry","entryId","canAccessNonOwnedEntries","canAccessOnlyOwnedEntries","hasFullAccessToEntries","groupPermissions","relatedModelsPermissions","entriesPermissionsList","relatedEntriesPermissions","groupCreatedBy","entryCreatedBy","authorization","slug"],"sources":["AccessControl.ts"],"sourcesContent":["import type {\n CmsEntry,\n CmsEntryPermission,\n CmsGroup,\n CmsGroupPermission,\n CmsModel,\n CmsModelPermission\n} from \"~/types/index.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport { NotAuthorizedError } from \"~/utils/errors.js\";\n\nexport interface AccessControlParams {\n getIdentity: () => Promise<SecurityIdentity>;\n getGroupsPermissions: () => Promise<CmsGroupPermission[]>;\n getModelsPermissions: () => Promise<CmsModelPermission[]>;\n getEntriesPermissions: () => Promise<CmsEntryPermission[]>;\n listAllGroups: () => Promise<CmsGroup[]>;\n}\n\ninterface GetGroupsAccessControlListParams {\n group?: CmsGroup;\n}\n\ninterface CanAccessGroupParams extends GetGroupsAccessControlListParams {\n rwd?: string;\n}\n\ninterface GetModelsAccessControlListParams {\n model?: CmsModel;\n}\n\ninterface CanAccessModelParams extends GetModelsAccessControlListParams {\n rwd?: string;\n}\n\ninterface GetEntriesAccessControlListParams {\n model: Pick<CmsModel, \"modelId\" | \"createdBy\" | \"group\" | \"authorization\">;\n entry?: Pick<CmsEntry, \"entryId\" | \"createdBy\">;\n}\n\nexport interface CanAccessEntryParams extends GetEntriesAccessControlListParams {\n rwd?: string;\n pw?: string;\n}\n\ninterface AccessControlEntry {\n rwd: string;\n canAccessNonOwned: boolean;\n canAccessOnlyOwned: boolean;\n}\n\ntype AccessControlList = AccessControlEntry[];\n\ninterface EntriesAccessControlEntry extends AccessControlEntry {\n pw?: string;\n}\n\ntype EntriesAccessControlList = EntriesAccessControlEntry[];\n\ninterface IModelAuthorizationDisabledParams {\n model: Pick<CmsModel, \"authorization\">;\n}\n\nexport class AccessControl {\n getIdentity: AccessControlParams[\"getIdentity\"];\n getGroupsPermissions: AccessControlParams[\"getGroupsPermissions\"];\n getModelsPermissions: AccessControlParams[\"getModelsPermissions\"];\n getEntriesPermissions: AccessControlParams[\"getEntriesPermissions\"];\n listAllGroupsCallback: AccessControlParams[\"listAllGroups\"];\n\n private fullAccessPermissions: string[];\n private allGroups: null | Promise<CmsGroup[]>;\n\n constructor({\n getIdentity,\n getGroupsPermissions,\n getModelsPermissions,\n getEntriesPermissions,\n listAllGroups\n }: AccessControlParams) {\n this.getIdentity = getIdentity;\n this.getGroupsPermissions = getGroupsPermissions;\n this.getModelsPermissions = getModelsPermissions;\n this.getEntriesPermissions = getEntriesPermissions;\n this.fullAccessPermissions = [\"*\", \"cms.*\"];\n this.listAllGroupsCallback = listAllGroups;\n this.allGroups = null;\n }\n\n /**\n * Groups-related methods below. 👇\n * - canAccessGroup\n * - ensureCanAccessGroup\n * - canAccessNonOwnedGroups\n * - canAccessOnlyOwnedGroups\n * - getGroupsAccessControlList\n * - hasFullAccessToGroups\n */\n\n async canAccessGroup(params: CanAccessGroupParams = {}) {\n const acl = await this.getGroupsAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd?.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n return true;\n }\n\n async canAccessNonOwnedGroups(params: GetGroupsAccessControlListParams) {\n const acl = await this.getGroupsAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedGroups(params: GetGroupsAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedGroups(params);\n return !canAccessNonOwned;\n }\n\n async getGroupsAccessControlList(\n params: GetGroupsAccessControlListParams\n ): Promise<AccessControlList> {\n if (await this.hasFullAccessToGroups()) {\n return [{ rwd: \"rwd\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: AccessControlList = [];\n\n for (const groupsPermissions of groupsPermissionsList) {\n if (groupsPermissions.own) {\n if (\"group\" in params) {\n const modelGroupCreatedBy = params.group?.createdBy;\n if (!modelGroupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n\n if (modelGroupCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n }\n\n if (groupsPermissions.groups) {\n if (\"group\" in params) {\n const { group } = params;\n if (!group) {\n continue;\n }\n\n const { groups } = groupsPermissions;\n if (!Array.isArray(groups)) {\n continue;\n }\n\n if (!groups.includes(group.id)) {\n continue;\n }\n }\n }\n\n acl.push({\n rwd: groupsPermissions.rwd as string,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n }\n\n return acl;\n }\n\n async hasFullAccessToGroups() {\n const permissions = await this.getGroupsPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n /**\n * Models-related methods below. 👇\n * - canAccessModel\n * - ensureCanAccessModel\n * - canAccessNonOwnedModels\n * - canAccessOnlyOwnedModels\n * - getModelsAccessControlList\n * - hasFullAccessToModels\n */\n\n async canAccessModel(params: CanAccessModelParams) {\n const acl = await this.getModelsAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n return true;\n }\n\n async ensureCanAccessModel(params: CanAccessModelParams = {}) {\n const canAccess = await this.canAccessModel(params);\n if (canAccess) {\n return;\n }\n\n if (\"model\" in params) {\n let modelName = \"(could not determine name)\";\n if (params.model?.name) {\n modelName = `\"${params.model.name}\"`;\n }\n\n throw new NotAuthorizedError(`Not allowed to access content model ${modelName}.`);\n }\n\n throw new NotAuthorizedError(`Not allowed to access content models.`);\n }\n\n async canAccessNonOwnedModels(params: GetModelsAccessControlListParams) {\n const acl = await this.getModelsAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedModels(params: GetModelsAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedModels(params);\n return !canAccessNonOwned;\n }\n\n async getModelsAccessControlList(\n params: GetModelsAccessControlListParams\n ): Promise<AccessControlList> {\n if (await this.hasFullAccessToModels(params)) {\n return [{ rwd: \"rwd\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: AccessControlList = [];\n\n for (let i = 0; i < groupsPermissionsList.length; i++) {\n const groupsPermissions = groupsPermissionsList[i];\n\n const modelsPermissionsList = await this.getModelsPermissions();\n const relatedModelPermissions = modelsPermissionsList.find(\n permissions => permissions._src === groupsPermissions._src\n );\n\n if (!relatedModelPermissions) {\n continue;\n }\n\n if (groupsPermissions.own) {\n if (\"model\" in params) {\n const { model } = params;\n if (!model) {\n continue;\n }\n\n const group = await this.getGroup(model.group);\n if (!group) {\n continue;\n }\n\n const modelGroupCreatedBy = group.createdBy;\n if (!modelGroupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelGroupCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n\n continue;\n }\n\n if (groupsPermissions.groups) {\n if (\"model\" in params) {\n const { model } = params;\n if (!model) {\n continue;\n }\n\n if (!Array.isArray(groupsPermissions.groups)) {\n continue;\n }\n\n if (!groupsPermissions.groups.includes(model.group)) {\n continue;\n }\n }\n }\n\n const fullAccess =\n !relatedModelPermissions.rwd &&\n !relatedModelPermissions.own &&\n !relatedModelPermissions.models;\n\n if (fullAccess) {\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n\n continue;\n }\n\n if (relatedModelPermissions.own) {\n if (\"model\" in params) {\n if (!params.model) {\n continue;\n }\n\n const modelCreatedBy = params.model.createdBy;\n if (!modelCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n\n continue;\n }\n\n if (relatedModelPermissions.models) {\n const { models } = relatedModelPermissions;\n if (\"model\" in params) {\n if (!params.model) {\n continue;\n }\n\n if (!Array.isArray(models)) {\n continue;\n }\n\n if (!models.includes(params.model.modelId)) {\n continue;\n }\n }\n }\n\n acl.push({\n rwd: relatedModelPermissions.rwd as string,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n }\n\n return acl;\n }\n\n async hasFullAccessToModels(params: GetModelsAccessControlListParams) {\n const { model } = params;\n if (model) {\n if (this.modelAuthorizationDisabled({ model })) {\n return true;\n }\n }\n\n const permissions = await this.getModelsPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n /**\n * Entries-related methods below. 👇\n * - canAccessEntry\n * - ensureCanAccessEntry\n * - canAccessNonOwnedEntries\n * - canAccessOnlyOwnedEntries\n * - getEntriesAccessControlList\n * - hasFullAccessToEntries\n */\n\n async canAccessEntry(params: CanAccessEntryParams) {\n const acl = await this.getEntriesAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n const { pw } = params;\n if (pw) {\n const hasPw = acl.find(ace => ace.pw?.includes(pw));\n if (!hasPw) {\n return false;\n }\n }\n\n return true;\n }\n\n async ensureCanAccessEntry(params: CanAccessEntryParams) {\n const canAccess = await this.canAccessEntry(params);\n if (!canAccess) {\n if (params.entry) {\n throw new NotAuthorizedError(\n `Not allowed to access entry \"${params.entry.entryId}\".`\n );\n }\n\n throw new NotAuthorizedError(\n `Not allowed to access \"${params.model.modelId}\" entries.`\n );\n }\n }\n\n async canAccessNonOwnedEntries(params: GetEntriesAccessControlListParams) {\n const acl = await this.getEntriesAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedEntries(params: GetEntriesAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedEntries(params);\n return !canAccessNonOwned;\n }\n\n async getEntriesAccessControlList(\n params: GetEntriesAccessControlListParams\n ): Promise<EntriesAccessControlList> {\n if (await this.hasFullAccessToEntries(params)) {\n return [{ rwd: \"rwd\", pw: \"pu\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n // We need a map of groups slugs to ids, to perform checks on models\n const { model } = params;\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: EntriesAccessControlList = [];\n\n for (let i = 0; i < groupsPermissionsList.length; i++) {\n const groupPermissions = groupsPermissionsList[i];\n\n const modelsPermissionsList = await this.getModelsPermissions();\n const relatedModelsPermissions = modelsPermissionsList.find(\n permissions => permissions._src === groupPermissions._src\n );\n\n if (!relatedModelsPermissions) {\n continue;\n }\n\n const entriesPermissionsList = await this.getEntriesPermissions();\n const relatedEntriesPermissions = entriesPermissionsList.find(\n permissions => permissions._src === groupPermissions._src\n );\n\n if (!relatedEntriesPermissions) {\n continue;\n }\n\n if (groupPermissions.own) {\n const group = await this.getGroup(model.group);\n if (!group) {\n continue;\n }\n\n const groupCreatedBy = group.createdBy;\n if (!groupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (groupCreatedBy.id !== identity.id) {\n continue;\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n\n continue;\n }\n\n if (groupPermissions.groups) {\n const { groups } = groupPermissions;\n\n if (!Array.isArray(groups)) {\n continue;\n }\n\n if (!groups.includes(model.group)) {\n continue;\n }\n }\n\n if (relatedModelsPermissions.own) {\n const modelCreatedBy = model.createdBy;\n if (!modelCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelCreatedBy.id !== identity.id) {\n continue;\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n }\n\n if (relatedModelsPermissions.models) {\n if (!Array.isArray(relatedModelsPermissions.models)) {\n continue;\n }\n\n if (!relatedModelsPermissions.models.includes(model.modelId)) {\n continue;\n }\n }\n\n const fullAccess =\n !relatedEntriesPermissions.rwd &&\n !relatedEntriesPermissions.own &&\n !relatedEntriesPermissions.models;\n\n if (fullAccess) {\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: \"pu\"\n });\n\n continue;\n }\n\n if (relatedEntriesPermissions.own) {\n if (\"entry\" in params) {\n const entryCreatedBy = params.entry?.createdBy;\n if (!entryCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (entryCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: relatedEntriesPermissions.rwd,\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n\n continue;\n }\n\n acl.push({\n rwd: relatedEntriesPermissions.rwd,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false,\n pw: relatedEntriesPermissions.pw\n });\n }\n\n return acl;\n }\n\n async hasFullAccessToEntries(params: GetEntriesAccessControlListParams) {\n if (this.modelAuthorizationDisabled(params)) {\n return true;\n }\n\n const permissions = await this.getEntriesPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n private modelAuthorizationDisabled(params: IModelAuthorizationDisabledParams) {\n if (\"authorization\" in params.model) {\n const { authorization } = params.model;\n if (typeof authorization === \"boolean\") {\n return authorization === false;\n }\n\n return authorization?.permissions === false;\n }\n\n return false;\n }\n\n private async listAllGroups(): Promise<CmsGroup[]> {\n if (this.allGroups === null) {\n this.allGroups = this.listAllGroupsCallback();\n }\n\n return this.allGroups;\n }\n\n private async getGroup(slug: string): Promise<CmsGroup | undefined> {\n const groups = await this.listAllGroups();\n return groups.find(group => group.slug === slug);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NotAuthorizedError","AccessControl","constructor","getIdentity","getGroupsPermissions","getModelsPermissions","getEntriesPermissions","listAllGroups","fullAccessPermissions","listAllGroupsCallback","allGroups","canAccessGroup","params","acl","getGroupsAccessControlList","canRead","find","ace","rwd","includes","hasRwd","canAccessNonOwnedGroups","some","canAccessNonOwned","canAccessOnlyOwnedGroups","hasFullAccessToGroups","canAccessOnlyOwned","groupsPermissionsList","groupsPermissions","own","modelGroupCreatedBy","group","createdBy","identity","id","push","groups","Array","isArray","permissions","p","filter","Boolean","name","canAccessModel","getModelsAccessControlList","ensureCanAccessModel","canAccess","modelName","model","canAccessNonOwnedModels","canAccessOnlyOwnedModels","hasFullAccessToModels","i","length","modelsPermissionsList","relatedModelPermissions","_src","getGroup","fullAccess","models","modelCreatedBy","modelId","modelAuthorizationDisabled","canAccessEntry","getEntriesAccessControlList","pw","hasPw","ensureCanAccessEntry","entry","entryId","canAccessNonOwnedEntries","canAccessOnlyOwnedEntries","hasFullAccessToEntries","groupPermissions","relatedModelsPermissions","entriesPermissionsList","relatedEntriesPermissions","groupCreatedBy","entryCreatedBy","authorization","slug"],"sources":["AccessControl.ts"],"sourcesContent":["import type {\n CmsEntry,\n CmsEntryPermission,\n CmsGroup,\n CmsGroupPermission,\n CmsModel,\n CmsModelPermission\n} from \"~/types/index.js\";\nimport type { SecurityIdentity } from \"@webiny/api-core/types/security.js\";\nimport { NotAuthorizedError } from \"~/utils/errors.js\";\n\nexport interface AccessControlParams {\n getIdentity: () => Promise<SecurityIdentity>;\n getGroupsPermissions: () => Promise<CmsGroupPermission[]>;\n getModelsPermissions: () => Promise<CmsModelPermission[]>;\n getEntriesPermissions: () => Promise<CmsEntryPermission[]>;\n listAllGroups: () => Promise<CmsGroup[]>;\n}\n\ninterface GetGroupsAccessControlListParams {\n group?: CmsGroup;\n}\n\ninterface CanAccessGroupParams extends GetGroupsAccessControlListParams {\n rwd?: string;\n}\n\ninterface GetModelsAccessControlListParams {\n model?: CmsModel;\n}\n\ninterface CanAccessModelParams extends GetModelsAccessControlListParams {\n rwd?: string;\n}\n\ninterface GetEntriesAccessControlListParams {\n model: Pick<CmsModel, \"modelId\" | \"createdBy\" | \"group\" | \"authorization\">;\n entry?: Pick<CmsEntry, \"entryId\" | \"createdBy\">;\n}\n\nexport interface CanAccessEntryParams extends GetEntriesAccessControlListParams {\n rwd?: string;\n pw?: string;\n}\n\ninterface AccessControlEntry {\n rwd: string;\n canAccessNonOwned: boolean;\n canAccessOnlyOwned: boolean;\n}\n\ntype AccessControlList = AccessControlEntry[];\n\ninterface EntriesAccessControlEntry extends AccessControlEntry {\n pw?: string;\n}\n\ntype EntriesAccessControlList = EntriesAccessControlEntry[];\n\ninterface IModelAuthorizationDisabledParams {\n model: Pick<CmsModel, \"authorization\">;\n}\n\nexport class AccessControl {\n private getIdentity: AccessControlParams[\"getIdentity\"];\n private getGroupsPermissions: AccessControlParams[\"getGroupsPermissions\"];\n private getModelsPermissions: AccessControlParams[\"getModelsPermissions\"];\n private getEntriesPermissions: AccessControlParams[\"getEntriesPermissions\"];\n private listAllGroupsCallback: AccessControlParams[\"listAllGroups\"];\n\n private fullAccessPermissions: string[];\n private allGroups: null | Promise<CmsGroup[]>;\n\n constructor({\n getIdentity,\n getGroupsPermissions,\n getModelsPermissions,\n getEntriesPermissions,\n listAllGroups\n }: AccessControlParams) {\n this.getIdentity = getIdentity;\n this.getGroupsPermissions = getGroupsPermissions;\n this.getModelsPermissions = getModelsPermissions;\n this.getEntriesPermissions = getEntriesPermissions;\n this.fullAccessPermissions = [\"*\", \"cms.*\"];\n this.listAllGroupsCallback = listAllGroups;\n this.allGroups = null;\n }\n\n /**\n * Groups-related methods below. 👇\n * - canAccessGroup\n * - ensureCanAccessGroup\n * - canAccessNonOwnedGroups\n * - canAccessOnlyOwnedGroups\n * - getGroupsAccessControlList\n * - hasFullAccessToGroups\n */\n\n async canAccessGroup(params: CanAccessGroupParams = {}) {\n const acl = await this.getGroupsAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd?.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n return true;\n }\n\n private async canAccessNonOwnedGroups(params: GetGroupsAccessControlListParams) {\n const acl = await this.getGroupsAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n private async canAccessOnlyOwnedGroups(params: GetGroupsAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedGroups(params);\n return !canAccessNonOwned;\n }\n\n private async getGroupsAccessControlList(\n params: GetGroupsAccessControlListParams\n ): Promise<AccessControlList> {\n if (await this.hasFullAccessToGroups()) {\n return [{ rwd: \"rwd\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: AccessControlList = [];\n\n for (const groupsPermissions of groupsPermissionsList) {\n if (groupsPermissions.own) {\n if (\"group\" in params) {\n const modelGroupCreatedBy = params.group?.createdBy;\n if (!modelGroupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n\n if (modelGroupCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n }\n\n if (groupsPermissions.groups) {\n if (\"group\" in params) {\n const { group } = params;\n if (!group) {\n continue;\n }\n\n const { groups } = groupsPermissions;\n if (!Array.isArray(groups)) {\n continue;\n }\n\n if (!groups.includes(group.id)) {\n continue;\n }\n }\n }\n\n acl.push({\n rwd: groupsPermissions.rwd as string,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n }\n\n return acl;\n }\n\n private async hasFullAccessToGroups() {\n const permissions = await this.getGroupsPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n /**\n * Models-related methods below. 👇\n * - canAccessModel\n * - ensureCanAccessModel\n * - canAccessNonOwnedModels\n * - canAccessOnlyOwnedModels\n * - getModelsAccessControlList\n * - hasFullAccessToModels\n */\n\n async canAccessModel(params: CanAccessModelParams) {\n const acl = await this.getModelsAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n return true;\n }\n\n private async ensureCanAccessModel(params: CanAccessModelParams = {}) {\n const canAccess = await this.canAccessModel(params);\n if (canAccess) {\n return;\n }\n\n if (\"model\" in params) {\n let modelName = \"(could not determine name)\";\n if (params.model?.name) {\n modelName = `\"${params.model.name}\"`;\n }\n\n throw new NotAuthorizedError(`Not allowed to access content model ${modelName}.`);\n }\n\n throw new NotAuthorizedError(`Not allowed to access content models.`);\n }\n\n private async canAccessNonOwnedModels(params: GetModelsAccessControlListParams) {\n const acl = await this.getModelsAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n private async canAccessOnlyOwnedModels(params: GetModelsAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedModels(params);\n return !canAccessNonOwned;\n }\n\n private async getModelsAccessControlList(\n params: GetModelsAccessControlListParams\n ): Promise<AccessControlList> {\n if (await this.hasFullAccessToModels(params)) {\n return [{ rwd: \"rwd\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: AccessControlList = [];\n\n for (let i = 0; i < groupsPermissionsList.length; i++) {\n const groupsPermissions = groupsPermissionsList[i];\n\n const modelsPermissionsList = await this.getModelsPermissions();\n const relatedModelPermissions = modelsPermissionsList.find(\n permissions => permissions._src === groupsPermissions._src\n );\n\n if (!relatedModelPermissions) {\n continue;\n }\n\n if (groupsPermissions.own) {\n if (\"model\" in params) {\n const { model } = params;\n if (!model) {\n continue;\n }\n\n const group = await this.getGroup(model.group);\n if (!group) {\n continue;\n }\n\n const modelGroupCreatedBy = group.createdBy;\n if (!modelGroupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelGroupCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n\n continue;\n }\n\n if (groupsPermissions.groups) {\n if (\"model\" in params) {\n const { model } = params;\n if (!model) {\n continue;\n }\n\n if (!Array.isArray(groupsPermissions.groups)) {\n continue;\n }\n\n if (!groupsPermissions.groups.includes(model.group)) {\n continue;\n }\n }\n }\n\n const fullAccess =\n !relatedModelPermissions.rwd &&\n !relatedModelPermissions.own &&\n !relatedModelPermissions.models;\n\n if (fullAccess) {\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n\n continue;\n }\n\n if (relatedModelPermissions.own) {\n if (\"model\" in params) {\n if (!params.model) {\n continue;\n }\n\n const modelCreatedBy = params.model.createdBy;\n if (!modelCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true\n });\n\n continue;\n }\n\n if (relatedModelPermissions.models) {\n const { models } = relatedModelPermissions;\n if (\"model\" in params) {\n if (!params.model) {\n continue;\n }\n\n if (!Array.isArray(models)) {\n continue;\n }\n\n if (!models.includes(params.model.modelId)) {\n continue;\n }\n }\n }\n\n acl.push({\n rwd: relatedModelPermissions.rwd as string,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false\n });\n }\n\n return acl;\n }\n\n private async hasFullAccessToModels(params: GetModelsAccessControlListParams) {\n const { model } = params;\n if (model) {\n if (this.modelAuthorizationDisabled({ model })) {\n return true;\n }\n }\n\n const permissions = await this.getModelsPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n /**\n * Entries-related methods below. 👇\n * - canAccessEntry\n * - ensureCanAccessEntry\n * - canAccessNonOwnedEntries\n * - canAccessOnlyOwnedEntries\n * - getEntriesAccessControlList\n * - hasFullAccessToEntries\n */\n\n async canAccessEntry(params: CanAccessEntryParams) {\n const acl = await this.getEntriesAccessControlList(params);\n\n const canRead = acl.find(ace => ace.rwd.includes(\"r\"));\n if (!canRead) {\n return false;\n }\n\n const { rwd } = params;\n if (rwd) {\n const hasRwd = acl.find(ace => ace.rwd.includes(rwd));\n if (!hasRwd) {\n return false;\n }\n }\n\n const { pw } = params;\n if (pw) {\n const hasPw = acl.find(ace => ace.pw?.includes(pw));\n if (!hasPw) {\n return false;\n }\n }\n\n return true;\n }\n\n private async ensureCanAccessEntry(params: CanAccessEntryParams) {\n const canAccess = await this.canAccessEntry(params);\n if (!canAccess) {\n if (params.entry) {\n throw new NotAuthorizedError(\n `Not allowed to access entry \"${params.entry.entryId}\".`\n );\n }\n\n throw new NotAuthorizedError(\n `Not allowed to access \"${params.model.modelId}\" entries.`\n );\n }\n }\n\n private async canAccessNonOwnedEntries(params: GetEntriesAccessControlListParams) {\n const acl = await this.getEntriesAccessControlList(params);\n return acl.some(ace => ace.canAccessNonOwned);\n }\n\n async canAccessOnlyOwnedEntries(params: GetEntriesAccessControlListParams) {\n const canAccessNonOwned = await this.canAccessNonOwnedEntries(params);\n return !canAccessNonOwned;\n }\n\n private async getEntriesAccessControlList(\n params: GetEntriesAccessControlListParams\n ): Promise<EntriesAccessControlList> {\n if (await this.hasFullAccessToEntries(params)) {\n return [{ rwd: \"rwd\", pw: \"pu\", canAccessNonOwned: true, canAccessOnlyOwned: false }];\n }\n\n // We need a map of groups slugs to ids, to perform checks on models\n const { model } = params;\n const groupsPermissionsList = await this.getGroupsPermissions();\n const acl: EntriesAccessControlList = [];\n\n for (let i = 0; i < groupsPermissionsList.length; i++) {\n const groupPermissions = groupsPermissionsList[i];\n\n const modelsPermissionsList = await this.getModelsPermissions();\n const relatedModelsPermissions = modelsPermissionsList.find(\n permissions => permissions._src === groupPermissions._src\n );\n\n if (!relatedModelsPermissions) {\n continue;\n }\n\n const entriesPermissionsList = await this.getEntriesPermissions();\n const relatedEntriesPermissions = entriesPermissionsList.find(\n permissions => permissions._src === groupPermissions._src\n );\n\n if (!relatedEntriesPermissions) {\n continue;\n }\n\n if (groupPermissions.own) {\n const group = await this.getGroup(model.group);\n if (!group) {\n continue;\n }\n\n const groupCreatedBy = group.createdBy;\n if (!groupCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (groupCreatedBy.id !== identity.id) {\n continue;\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n\n continue;\n }\n\n if (groupPermissions.groups) {\n const { groups } = groupPermissions;\n\n if (!Array.isArray(groups)) {\n continue;\n }\n\n if (!groups.includes(model.group)) {\n continue;\n }\n }\n\n if (relatedModelsPermissions.own) {\n const modelCreatedBy = model.createdBy;\n if (!modelCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (modelCreatedBy.id !== identity.id) {\n continue;\n }\n\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n }\n\n if (relatedModelsPermissions.models) {\n if (!Array.isArray(relatedModelsPermissions.models)) {\n continue;\n }\n\n if (!relatedModelsPermissions.models.includes(model.modelId)) {\n continue;\n }\n }\n\n const fullAccess =\n !relatedEntriesPermissions.rwd &&\n !relatedEntriesPermissions.own &&\n !relatedEntriesPermissions.models;\n\n if (fullAccess) {\n acl.push({\n rwd: \"rwd\",\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: \"pu\"\n });\n\n continue;\n }\n\n if (relatedEntriesPermissions.own) {\n if (\"entry\" in params) {\n const entryCreatedBy = params.entry?.createdBy;\n if (!entryCreatedBy) {\n continue;\n }\n\n const identity = await this.getIdentity();\n if (entryCreatedBy.id !== identity.id) {\n continue;\n }\n }\n\n acl.push({\n rwd: relatedEntriesPermissions.rwd,\n canAccessNonOwned: false,\n canAccessOnlyOwned: true,\n pw: relatedEntriesPermissions.pw\n });\n\n continue;\n }\n\n acl.push({\n rwd: relatedEntriesPermissions.rwd,\n canAccessNonOwned: true,\n canAccessOnlyOwned: false,\n pw: relatedEntriesPermissions.pw\n });\n }\n\n return acl;\n }\n\n private async hasFullAccessToEntries(params: GetEntriesAccessControlListParams) {\n if (this.modelAuthorizationDisabled(params)) {\n return true;\n }\n\n const permissions = await this.getEntriesPermissions();\n return permissions.some(p => this.fullAccessPermissions.filter(Boolean).includes(p.name));\n }\n\n private modelAuthorizationDisabled(params: IModelAuthorizationDisabledParams) {\n if (\"authorization\" in params.model) {\n const { authorization } = params.model;\n if (typeof authorization === \"boolean\") {\n return authorization === false;\n }\n\n return authorization?.permissions === false;\n }\n\n return false;\n }\n\n private async listAllGroups(): Promise<CmsGroup[]> {\n if (this.allGroups === null) {\n this.allGroups = this.listAllGroupsCallback();\n }\n\n return this.allGroups;\n }\n\n private async getGroup(slug: string): Promise<CmsGroup | undefined> {\n const groups = await this.listAllGroups();\n return groups.find(group => group.slug === slug);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -44,4 +44,4 @@ When choosing "Only models created by the user" access scope via the `cms.conten
44
44
 
45
45
  <img src="./models-own.png">
46
46
 
47
- Note that only the entry publishing actions-related permissions are not automatically set here. They need to be defined when defining the role explicitly.
47
+ Note that only the entry publishing actions-related permissions are not automatically set here. They need to be defined when defining the role explicitly.
@@ -6,7 +6,8 @@ import { referenceFieldsMapping } from "../referenceFieldsMapping.js";
6
6
  import { createIdentifier, mdbid } from "@webiny/utils";
7
7
  import { STATUS_DRAFT, STATUS_PUBLISHED, STATUS_UNPUBLISHED } from "./statuses.js";
8
8
  import { getIdentity } from "../../../utils/identity.js";
9
- import { getState } from "./state.js";
9
+ import { NotAuthorizedError } from "../../../utils/errors.js";
10
+ import { getSystem } from "./system.js";
10
11
  /**
11
12
  * Used for some fields to convert their values.
12
13
  */
@@ -23,7 +24,7 @@ const convertDefaultValue = (field, value) => {
23
24
  const getDefaultValue = field => {
24
25
  const {
25
26
  settings,
26
- multipleValues
27
+ list
27
28
  } = field;
28
29
  if (settings && settings.defaultValue !== undefined) {
29
30
  return convertDefaultValue(field, settings.defaultValue);
@@ -34,7 +35,7 @@ const getDefaultValue = field => {
34
35
  if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
35
36
  return undefined;
36
37
  }
37
- if (!multipleValues) {
38
+ if (!list) {
38
39
  const selectedValue = predefinedValues.values.find(value => {
39
40
  return !!value.selected;
40
41
  });
@@ -54,7 +55,7 @@ const getDefaultValue = field => {
54
55
  const createEntryId = input => {
55
56
  let entryId = mdbid();
56
57
  if (input.id) {
57
- if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9\-]+)([a-zA-Z0-9])$/) === null) {
58
+ if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9-]+)([a-zA-Z0-9])$/) === null) {
58
59
  throw new WebinyError("The provided ID is not valid. It must be a string which can be A-Z, a-z, 0-9, - and it cannot start or end with a -.", "INVALID_ID", {
59
60
  id: input.id
60
61
  });
@@ -138,16 +139,21 @@ export const createEntryData = async ({
138
139
  const status = rawInput.status || STATUS_DRAFT;
139
140
  if (status !== STATUS_DRAFT) {
140
141
  if (status === STATUS_PUBLISHED) {
141
- await accessControl.ensureCanAccessEntry({
142
+ const canPublish = await accessControl.canAccessEntry({
142
143
  model,
143
144
  pw: "p"
144
145
  });
146
+ if (!canPublish) {
147
+ throw new NotAuthorizedError(`Not allowed to access "${model.modelId}" entries.`);
148
+ }
145
149
  } else if (status === STATUS_UNPUBLISHED) {
146
- // If setting the status other than draft, we have to check if the user has permissions to publish.
147
- await accessControl.ensureCanAccessEntry({
150
+ const canUnpublish = await accessControl.canAccessEntry({
148
151
  model,
149
152
  pw: "u"
150
153
  });
154
+ if (!canUnpublish) {
155
+ throw new NotAuthorizedError(`Not allowed to access "${model.modelId}" entries.`);
156
+ }
151
157
  }
152
158
  }
153
159
  const locked = status !== STATUS_DRAFT;
@@ -217,24 +223,33 @@ export const createEntryData = async ({
217
223
  location: {
218
224
  folderId: rawInput.location?.folderId || rawInput.wbyAco_location?.folderId || ROOT_FOLDER
219
225
  },
220
- state: getState({
226
+ system: getSystem({
221
227
  input: rawInput
222
- })
228
+ }),
229
+ live: status === STATUS_PUBLISHED ? {
230
+ version
231
+ } : null,
232
+ revisionDescription: ""
223
233
  };
224
234
  if (status !== STATUS_DRAFT) {
225
235
  if (status === STATUS_PUBLISHED) {
226
- await accessControl.ensureCanAccessEntry({
236
+ const canPublish = await accessControl.canAccessEntry({
227
237
  model,
228
238
  entry,
229
239
  pw: "p"
230
240
  });
241
+ if (!canPublish) {
242
+ throw new NotAuthorizedError(`Not allowed to access entry "${entry.entryId}".`);
243
+ }
231
244
  } else if (status === STATUS_UNPUBLISHED) {
232
- // If setting the status other than draft, we have to check if the user has permissions to publish.
233
- await accessControl.ensureCanAccessEntry({
245
+ const canUnpublish = await accessControl.canAccessEntry({
234
246
  model,
235
247
  entry,
236
248
  pw: "u"
237
249
  });
250
+ if (!canUnpublish) {
251
+ throw new NotAuthorizedError(`Not allowed to access entry "${entry.entryId}".`);
252
+ }
238
253
  }
239
254
  }
240
255
  return {