@webiny/api-headless-cms 0.0.0-unstable.aad28a72ae → 0.0.0-unstable.acacc54f0e

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 (448) hide show
  1. package/constants.d.ts +1 -0
  2. package/constants.js +8 -0
  3. package/constants.js.map +1 -0
  4. package/context.d.ts +5 -2
  5. package/context.js +94 -24
  6. package/context.js.map +1 -1
  7. package/crud/contentEntry/afterDelete.js +0 -5
  8. package/crud/contentEntry/afterDelete.js.map +1 -1
  9. package/crud/contentEntry/beforeCreate.js +0 -3
  10. package/crud/contentEntry/beforeCreate.js.map +1 -1
  11. package/crud/contentEntry/beforeUpdate.js +0 -3
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataValidation.js +1 -40
  14. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  15. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  16. package/crud/contentEntry/markLockedFields.js +15 -28
  17. package/crud/contentEntry/markLockedFields.js.map +1 -1
  18. package/crud/contentEntry/referenceFieldsMapping.js +39 -66
  19. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  20. package/crud/contentEntry/searchableFields.js +1 -12
  21. package/crud/contentEntry/searchableFields.js.map +1 -1
  22. package/crud/contentEntry.crud.d.ts +12 -5
  23. package/crud/contentEntry.crud.js +1183 -921
  24. package/crud/contentEntry.crud.js.map +1 -1
  25. package/crud/contentModel/afterCreate.js +0 -2
  26. package/crud/contentModel/afterCreate.js.map +1 -1
  27. package/crud/contentModel/afterCreateFrom.js +0 -2
  28. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  29. package/crud/contentModel/afterDelete.js +0 -2
  30. package/crud/contentModel/afterDelete.js.map +1 -1
  31. package/crud/contentModel/afterUpdate.js +0 -2
  32. package/crud/contentModel/afterUpdate.js.map +1 -1
  33. package/crud/contentModel/beforeCreate.d.ts +2 -3
  34. package/crud/contentModel/beforeCreate.js +43 -109
  35. package/crud/contentModel/beforeCreate.js.map +1 -1
  36. package/crud/contentModel/beforeDelete.d.ts +1 -1
  37. package/crud/contentModel/beforeDelete.js +1 -15
  38. package/crud/contentModel/beforeDelete.js.map +1 -1
  39. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  40. package/crud/contentModel/beforeUpdate.js +33 -10
  41. package/crud/contentModel/beforeUpdate.js.map +1 -1
  42. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  43. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  44. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  45. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  46. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  47. package/crud/contentModel/createFieldStorageId.js +0 -3
  48. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  49. package/crud/contentModel/defaultFields.d.ts +5 -0
  50. package/crud/contentModel/defaultFields.js +58 -0
  51. package/crud/contentModel/defaultFields.js.map +1 -0
  52. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  53. package/crud/contentModel/fields/descriptionField.js +42 -0
  54. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  55. package/crud/contentModel/fields/imageField.d.ts +2 -0
  56. package/crud/contentModel/fields/imageField.js +46 -0
  57. package/crud/contentModel/fields/imageField.js.map +1 -0
  58. package/crud/contentModel/fields/titleField.d.ts +2 -0
  59. package/crud/contentModel/fields/titleField.js +58 -0
  60. package/crud/contentModel/fields/titleField.js.map +1 -0
  61. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  62. package/crud/contentModel/validate/endingAllowed.js +26 -0
  63. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  64. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  65. package/crud/contentModel/validate/isModelEndingAllowed.js +24 -0
  66. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  67. package/crud/contentModel/validate/modelId.d.ts +11 -0
  68. package/crud/contentModel/validate/modelId.js +36 -0
  69. package/crud/contentModel/validate/modelId.js.map +1 -0
  70. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  71. package/crud/contentModel/validate/pluralApiName.js +24 -0
  72. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  73. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  74. package/crud/contentModel/validate/singularApiName.js +24 -0
  75. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  76. package/crud/contentModel/validateLayout.js +0 -8
  77. package/crud/contentModel/validateLayout.js.map +1 -1
  78. package/crud/contentModel/validateModel.d.ts +4 -4
  79. package/crud/contentModel/validateModel.js +6 -11
  80. package/crud/contentModel/validateModel.js.map +1 -1
  81. package/crud/contentModel/validateModelFields.d.ts +4 -4
  82. package/crud/contentModel/validateModelFields.js +98 -127
  83. package/crud/contentModel/validateModelFields.js.map +1 -1
  84. package/crud/contentModel/validation.d.ts +591 -0
  85. package/crud/contentModel/validation.js +145 -0
  86. package/crud/contentModel/validation.js.map +1 -0
  87. package/crud/contentModel.crud.d.ts +2 -0
  88. package/crud/contentModel.crud.js +373 -397
  89. package/crud/contentModel.crud.js.map +1 -1
  90. package/crud/contentModelGroup/beforeCreate.js +0 -12
  91. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  92. package/crud/contentModelGroup/beforeDelete.js +0 -8
  93. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  94. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  95. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  96. package/crud/contentModelGroup/validation.d.ts +30 -0
  97. package/crud/contentModelGroup/validation.js +34 -0
  98. package/crud/contentModelGroup/validation.js.map +1 -0
  99. package/crud/contentModelGroup.crud.d.ts +2 -0
  100. package/crud/contentModelGroup.crud.js +206 -235
  101. package/crud/contentModelGroup.crud.js.map +1 -1
  102. package/crud/settings.crud.d.ts +3 -1
  103. package/crud/settings.crud.js +7 -28
  104. package/crud/settings.crud.js.map +1 -1
  105. package/crud/system.crud.js +1 -96
  106. package/crud/system.crud.js.map +1 -1
  107. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  108. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  109. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +0 -36
  110. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
  111. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +1 -54
  112. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  113. package/fieldConverters/index.js +0 -5
  114. package/fieldConverters/index.js.map +1 -1
  115. package/graphql/buildSchemaPlugins.d.ts +8 -3
  116. package/graphql/buildSchemaPlugins.js +7 -11
  117. package/graphql/buildSchemaPlugins.js.map +1 -1
  118. package/graphql/checkEndpointAccess.d.ts +2 -0
  119. package/graphql/checkEndpointAccess.js +18 -0
  120. package/graphql/checkEndpointAccess.js.map +1 -0
  121. package/graphql/createExecutableSchema.d.ts +6 -0
  122. package/graphql/createExecutableSchema.js +29 -0
  123. package/graphql/createExecutableSchema.js.map +1 -0
  124. package/graphql/createRequestBody.d.ts +2 -0
  125. package/graphql/createRequestBody.js +14 -0
  126. package/graphql/createRequestBody.js.map +1 -0
  127. package/graphql/formatErrorPayload.d.ts +1 -0
  128. package/graphql/formatErrorPayload.js +25 -0
  129. package/graphql/formatErrorPayload.js.map +1 -0
  130. package/graphql/generateSchema.d.ts +8 -0
  131. package/graphql/generateSchema.js +31 -0
  132. package/graphql/generateSchema.js.map +1 -0
  133. package/graphql/getSchema.d.ts +17 -0
  134. package/graphql/getSchema.js +102 -0
  135. package/graphql/getSchema.js.map +1 -0
  136. package/graphql/graphQLHandlerFactory.js +8 -169
  137. package/graphql/graphQLHandlerFactory.js.map +1 -1
  138. package/graphql/handleRequest.d.ts +11 -0
  139. package/graphql/handleRequest.js +81 -0
  140. package/graphql/handleRequest.js.map +1 -0
  141. package/graphql/index.d.ts +1 -3
  142. package/graphql/index.js +2 -46
  143. package/graphql/index.js.map +1 -1
  144. package/graphql/schema/baseContentSchema.d.ts +6 -2
  145. package/graphql/schema/baseContentSchema.js +10 -20
  146. package/graphql/schema/baseContentSchema.js.map +1 -1
  147. package/graphql/schema/baseSchema.d.ts +3 -0
  148. package/graphql/schema/baseSchema.js +84 -0
  149. package/graphql/schema/baseSchema.js.map +1 -0
  150. package/graphql/schema/contentEntries.d.ts +6 -2
  151. package/graphql/schema/contentEntries.js +126 -110
  152. package/graphql/schema/contentEntries.js.map +1 -1
  153. package/graphql/schema/contentModelGroups.d.ts +6 -2
  154. package/graphql/schema/contentModelGroups.js +16 -29
  155. package/graphql/schema/contentModelGroups.js.map +1 -1
  156. package/graphql/schema/contentModels.d.ts +6 -2
  157. package/graphql/schema/contentModels.js +41 -24
  158. package/graphql/schema/contentModels.js.map +1 -1
  159. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  160. package/graphql/schema/createFieldResolvers.js +19 -36
  161. package/graphql/schema/createFieldResolvers.js.map +1 -1
  162. package/graphql/schema/createFieldTypePluginRecords.d.ts +3 -0
  163. package/graphql/schema/createFieldTypePluginRecords.js +13 -0
  164. package/graphql/schema/createFieldTypePluginRecords.js.map +1 -0
  165. package/graphql/schema/createManageResolvers.d.ts +1 -1
  166. package/graphql/schema/createManageResolvers.js +47 -43
  167. package/graphql/schema/createManageResolvers.js.map +1 -1
  168. package/graphql/schema/createManageSDL.d.ts +3 -0
  169. package/graphql/schema/createManageSDL.js +96 -77
  170. package/graphql/schema/createManageSDL.js.map +1 -1
  171. package/graphql/schema/createPreviewResolvers.js +3 -17
  172. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  173. package/graphql/schema/createReadResolvers.js +8 -17
  174. package/graphql/schema/createReadResolvers.js.map +1 -1
  175. package/graphql/schema/createReadSDL.d.ts +3 -0
  176. package/graphql/schema/createReadSDL.js +47 -47
  177. package/graphql/schema/createReadSDL.js.map +1 -1
  178. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  179. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  180. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  181. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  182. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  183. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  184. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  185. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +2 -1
  186. package/graphql/schema/resolvers/manage/resolveDelete.js +13 -9
  187. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  188. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +7 -0
  189. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +20 -0
  190. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -0
  191. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  192. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  193. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  194. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  195. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  196. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  197. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
  198. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +18 -0
  199. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
  200. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  201. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  202. package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
  203. package/graphql/schema/resolvers/manage/resolveMove.js +25 -0
  204. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
  205. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  206. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  207. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  208. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  209. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  210. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  211. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  212. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  213. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  214. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  215. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  216. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  217. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  218. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  219. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  220. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  221. package/graphql/schema/schemaPlugins.d.ts +8 -3
  222. package/graphql/schema/schemaPlugins.js +58 -69
  223. package/graphql/schema/schemaPlugins.js.map +1 -1
  224. package/graphql/system.d.ts +2 -5
  225. package/graphql/system.js +56 -98
  226. package/graphql/system.js.map +1 -1
  227. package/graphqlFields/boolean.js +0 -12
  228. package/graphqlFields/boolean.js.map +1 -1
  229. package/graphqlFields/datetime.js +0 -17
  230. package/graphqlFields/datetime.js.map +1 -1
  231. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +1 -1
  232. package/graphqlFields/dynamicZone/dynamicZoneField.js +57 -48
  233. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  234. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
  235. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  236. package/graphqlFields/dynamicZone/index.js +0 -2
  237. package/graphqlFields/dynamicZone/index.js.map +1 -1
  238. package/graphqlFields/file.js +0 -8
  239. package/graphqlFields/file.js.map +1 -1
  240. package/graphqlFields/helpers.js +0 -10
  241. package/graphqlFields/helpers.js.map +1 -1
  242. package/graphqlFields/index.js +0 -12
  243. package/graphqlFields/index.js.map +1 -1
  244. package/graphqlFields/longText.js +0 -10
  245. package/graphqlFields/longText.js.map +1 -1
  246. package/graphqlFields/number.js +1 -12
  247. package/graphqlFields/number.js.map +1 -1
  248. package/graphqlFields/object.js +25 -42
  249. package/graphqlFields/object.js.map +1 -1
  250. package/graphqlFields/ref.js +64 -66
  251. package/graphqlFields/ref.js.map +1 -1
  252. package/graphqlFields/richText.js +0 -9
  253. package/graphqlFields/richText.js.map +1 -1
  254. package/graphqlFields/text.js +2 -11
  255. package/graphqlFields/text.js.map +1 -1
  256. package/index.d.ts +5 -3
  257. package/index.js +26 -28
  258. package/index.js.map +1 -1
  259. package/modelManager/DefaultCmsModelManager.js +0 -16
  260. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  261. package/modelManager/index.js +0 -4
  262. package/modelManager/index.js.map +1 -1
  263. package/package.json +35 -41
  264. package/parameters/context.js +0 -4
  265. package/parameters/context.js.map +1 -1
  266. package/parameters/header.js +3 -14
  267. package/parameters/header.js.map +1 -1
  268. package/parameters/index.js +0 -8
  269. package/parameters/index.js.map +1 -1
  270. package/parameters/manual.js +1 -8
  271. package/parameters/manual.js.map +1 -1
  272. package/parameters/path.js +0 -11
  273. package/parameters/path.js.map +1 -1
  274. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  275. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  276. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  277. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  278. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  279. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  280. package/plugins/CmsGroupPlugin.js +0 -8
  281. package/plugins/CmsGroupPlugin.js.map +1 -1
  282. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  283. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  284. package/plugins/CmsModelPlugin.d.ts +21 -3
  285. package/plugins/CmsModelPlugin.js +30 -40
  286. package/plugins/CmsModelPlugin.js.map +1 -1
  287. package/plugins/CmsParametersPlugin.js +3 -6
  288. package/plugins/CmsParametersPlugin.js.map +1 -1
  289. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  290. package/plugins/StorageOperationsCmsModelPlugin.js +42 -0
  291. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  292. package/plugins/StorageTransformPlugin.js +0 -9
  293. package/plugins/StorageTransformPlugin.js.map +1 -1
  294. package/plugins/index.d.ts +3 -0
  295. package/plugins/index.js +33 -10
  296. package/plugins/index.js.map +1 -1
  297. package/storage/default.js +0 -3
  298. package/storage/default.js.map +1 -1
  299. package/storage/object.js +0 -19
  300. package/storage/object.js.map +1 -1
  301. package/types.d.ts +302 -95
  302. package/types.js +41 -77
  303. package/types.js.map +1 -1
  304. package/utils/converters/Converter.js +0 -13
  305. package/utils/converters/Converter.js.map +1 -1
  306. package/utils/converters/ConverterCollection.js +9 -33
  307. package/utils/converters/ConverterCollection.js.map +1 -1
  308. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  309. package/utils/converters/valueKeyStorageConverter.js +30 -45
  310. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  311. package/utils/createTypeFromFields.d.ts +1 -0
  312. package/utils/createTypeFromFields.js +12 -21
  313. package/utils/createTypeFromFields.js.map +1 -1
  314. package/utils/createTypeName.d.ts +0 -2
  315. package/utils/createTypeName.js +2 -19
  316. package/utils/createTypeName.js.map +1 -1
  317. package/utils/entryStorage.js +10 -26
  318. package/utils/entryStorage.js.map +1 -1
  319. package/utils/filterAsync.js +0 -5
  320. package/utils/filterAsync.js.map +1 -1
  321. package/utils/getBaseFieldType.d.ts +1 -3
  322. package/utils/getBaseFieldType.js +0 -2
  323. package/utils/getBaseFieldType.js.map +1 -1
  324. package/utils/getEntryDescription.d.ts +2 -0
  325. package/utils/getEntryDescription.js +17 -0
  326. package/utils/getEntryDescription.js.map +1 -0
  327. package/utils/getEntryImage.d.ts +2 -0
  328. package/utils/getEntryImage.js +17 -0
  329. package/utils/getEntryImage.js.map +1 -0
  330. package/utils/getEntryTitle.d.ts +1 -1
  331. package/utils/getEntryTitle.js +0 -9
  332. package/utils/getEntryTitle.js.map +1 -1
  333. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  334. package/utils/getSchemaFromFieldPlugins.js +23 -19
  335. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  336. package/utils/incrementEntryIdVersion.d.ts +5 -0
  337. package/utils/incrementEntryIdVersion.js +29 -0
  338. package/utils/incrementEntryIdVersion.js.map +1 -0
  339. package/utils/permissions/EntriesPermissions.d.ts +4 -0
  340. package/utils/permissions/EntriesPermissions.js +9 -0
  341. package/utils/permissions/EntriesPermissions.js.map +1 -0
  342. package/utils/permissions/ModelGroupsPermissions.d.ts +11 -0
  343. package/utils/permissions/ModelGroupsPermissions.js +48 -0
  344. package/utils/permissions/ModelGroupsPermissions.js.map +1 -0
  345. package/utils/permissions/ModelsPermissions.d.ts +20 -0
  346. package/utils/permissions/ModelsPermissions.js +91 -0
  347. package/utils/permissions/ModelsPermissions.js.map +1 -0
  348. package/utils/permissions/SettingsPermissions.d.ts +4 -0
  349. package/utils/permissions/SettingsPermissions.js +9 -0
  350. package/utils/permissions/SettingsPermissions.js.map +1 -0
  351. package/utils/renderFields.d.ts +4 -2
  352. package/utils/renderFields.js +10 -11
  353. package/utils/renderFields.js.map +1 -1
  354. package/utils/renderGetFilterFields.d.ts +2 -2
  355. package/utils/renderGetFilterFields.js +7 -33
  356. package/utils/renderGetFilterFields.js.map +1 -1
  357. package/utils/renderInputFields.d.ts +4 -2
  358. package/utils/renderInputFields.js +17 -14
  359. package/utils/renderInputFields.js.map +1 -1
  360. package/utils/renderListFilterFields.d.ts +3 -1
  361. package/utils/renderListFilterFields.js +16 -30
  362. package/utils/renderListFilterFields.js.map +1 -1
  363. package/utils/renderSortEnum.d.ts +9 -5
  364. package/utils/renderSortEnum.js +24 -12
  365. package/utils/renderSortEnum.js.map +1 -1
  366. package/utils/toSlug.js +0 -4
  367. package/utils/toSlug.js.map +1 -1
  368. package/validators/dateGte.js +0 -7
  369. package/validators/dateGte.js.map +1 -1
  370. package/validators/dateLte.js +0 -7
  371. package/validators/dateLte.js.map +1 -1
  372. package/validators/dynamicZone.js +0 -4
  373. package/validators/dynamicZone.js.map +1 -1
  374. package/validators/gte.js +0 -8
  375. package/validators/gte.js.map +1 -1
  376. package/validators/in.js +0 -8
  377. package/validators/in.js.map +1 -1
  378. package/validators/index.js +0 -16
  379. package/validators/index.js.map +1 -1
  380. package/validators/lte.js +0 -8
  381. package/validators/lte.js.map +1 -1
  382. package/validators/maxLength.js +0 -8
  383. package/validators/maxLength.js.map +1 -1
  384. package/validators/minLength.js +0 -8
  385. package/validators/minLength.js.map +1 -1
  386. package/validators/pattern.js +0 -9
  387. package/validators/pattern.js.map +1 -1
  388. package/validators/patternPlugins/email.js +0 -2
  389. package/validators/patternPlugins/email.js.map +1 -1
  390. package/validators/patternPlugins/index.js +0 -8
  391. package/validators/patternPlugins/index.js.map +1 -1
  392. package/validators/patternPlugins/lowerCase.js +0 -2
  393. package/validators/patternPlugins/lowerCase.js.map +1 -1
  394. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  395. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  396. package/validators/patternPlugins/upperCase.js +0 -2
  397. package/validators/patternPlugins/upperCase.js.map +1 -1
  398. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  399. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  400. package/validators/patternPlugins/url.js +0 -2
  401. package/validators/patternPlugins/url.js.map +1 -1
  402. package/validators/required.js +0 -5
  403. package/validators/required.js.map +1 -1
  404. package/validators/timeGte.js +0 -8
  405. package/validators/timeGte.js.map +1 -1
  406. package/validators/timeLte.js +0 -8
  407. package/validators/timeLte.js.map +1 -1
  408. package/validators/unique.js +0 -7
  409. package/validators/unique.js.map +1 -1
  410. package/crud/contentModel/createFieldModels.d.ts +0 -2
  411. package/crud/contentModel/createFieldModels.js +0 -26
  412. package/crud/contentModel/createFieldModels.js.map +0 -1
  413. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  414. package/crud/contentModel/fieldIdValidation.js +0 -25
  415. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  416. package/crud/contentModel/idValidation.d.ts +0 -1
  417. package/crud/contentModel/idValidation.js +0 -22
  418. package/crud/contentModel/idValidation.js.map +0 -1
  419. package/crud/contentModel/models.d.ts +0 -4
  420. package/crud/contentModel/models.js +0 -192
  421. package/crud/contentModel/models.js.map +0 -1
  422. package/crud/contentModel/systemFields.d.ts +0 -1
  423. package/crud/contentModel/systemFields.js +0 -8
  424. package/crud/contentModel/systemFields.js.map +0 -1
  425. package/crud/index.d.ts +0 -6
  426. package/crud/index.js +0 -85
  427. package/crud/index.js.map +0 -1
  428. package/upgrades/5.33.0/index.d.ts +0 -3
  429. package/upgrades/5.33.0/index.js +0 -182
  430. package/upgrades/5.33.0/index.js.map +0 -1
  431. package/upgrades/index.d.ts +0 -1
  432. package/upgrades/index.js +0 -12
  433. package/upgrades/index.js.map +0 -1
  434. package/utils/access.d.ts +0 -8
  435. package/utils/access.js +0 -90
  436. package/utils/access.js.map +0 -1
  437. package/utils/filterModelFields.d.ts +0 -16
  438. package/utils/filterModelFields.js +0 -77
  439. package/utils/filterModelFields.js.map +0 -1
  440. package/utils/ownership.d.ts +0 -8
  441. package/utils/ownership.js +0 -41
  442. package/utils/ownership.js.map +0 -1
  443. package/utils/permissions.d.ts +0 -7
  444. package/utils/permissions.js +0 -106
  445. package/utils/permissions.js.map +0 -1
  446. package/utils/pluralizedTypeName.d.ts +0 -1
  447. package/utils/pluralizedTypeName.js +0 -26
  448. package/utils/pluralizedTypeName.js.map +0 -1
@@ -1,59 +1,75 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createContentEntriesSchema = void 0;
9
-
8
+ var _error = _interopRequireDefault(require("@webiny/error"));
10
9
  var _handlerGraphql = require("@webiny/handler-graphql");
11
-
12
10
  var _apiSecurity = require("@webiny/api-security");
13
-
14
- var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
15
-
16
11
  var _getEntryTitle = require("../../utils/getEntryTitle");
17
-
18
- var _error = _interopRequireDefault(require("@webiny/error"));
19
-
12
+ var _plugins = require("../../plugins");
13
+ var _getEntryDescription = require("../../utils/getEntryDescription");
14
+ var _getEntryImage = require("../../utils/getEntryImage");
15
+ var _entryStorage = require("../../utils/entryStorage");
16
+ const createDate = date => {
17
+ try {
18
+ return new Date(date);
19
+ } catch {}
20
+ return new Date();
21
+ };
22
+ const createCmsEntryRecord = (model, entry) => {
23
+ var _entry$location;
24
+ return {
25
+ id: entry.id,
26
+ entryId: entry.entryId,
27
+ model: {
28
+ modelId: model.modelId,
29
+ name: model.name
30
+ },
31
+ status: entry.status,
32
+ title: (0, _getEntryTitle.getEntryTitle)(model, entry),
33
+ description: (0, _getEntryDescription.getEntryDescription)(model, entry),
34
+ image: (0, _getEntryImage.getEntryImage)(model, entry),
35
+ createdBy: entry.createdBy,
36
+ modifiedBy: entry.modifiedBy,
37
+ createdOn: createDate(entry.createdOn),
38
+ savedOn: createDate(entry.savedOn),
39
+ wbyAco_location: {
40
+ folderId: ((_entry$location = entry.location) === null || _entry$location === void 0 ? void 0 : _entry$location.folderId) || null
41
+ }
42
+ };
43
+ };
20
44
  const getFetchMethod = (type, context) => {
21
45
  if (!getContentEntriesMethods[type]) {
22
46
  throw new _error.default(`Unknown getContentEntries method "${type}". Could not fetch content entries.`, "UNKNOWN_METHOD_ERROR", {
23
47
  type
24
48
  });
25
49
  }
26
-
27
50
  const methodName = getContentEntriesMethods[type];
28
-
29
51
  if (!context.cms[methodName]) {
30
52
  throw new _error.default(`Unknown context.cms method "${methodName}". Could not fetch content entries.`, "UNKNOWN_METHOD_ERROR", {
31
53
  type,
32
54
  methodName
33
55
  });
34
56
  }
35
-
36
57
  return context.cms[methodName];
37
58
  };
38
59
  /**
39
60
  * Function to get the list of content entries depending on latest, published or exact GraphQL queries.
40
61
  */
41
-
42
-
43
- var GetContentEntryMethods;
44
-
45
- (function (GetContentEntryMethods) {
62
+ var GetContentEntryMethods = /*#__PURE__*/function (GetContentEntryMethods) {
46
63
  GetContentEntryMethods["getLatestEntriesByIds"] = "getLatestEntriesByIds";
47
64
  GetContentEntryMethods["getPublishedEntriesByIds"] = "getPublishedEntriesByIds";
48
65
  GetContentEntryMethods["getEntriesByIds"] = "getEntriesByIds";
49
- })(GetContentEntryMethods || (GetContentEntryMethods = {}));
50
-
66
+ return GetContentEntryMethods;
67
+ }(GetContentEntryMethods || {});
51
68
  const getContentEntriesMethods = {
52
69
  latest: "getLatestEntriesByIds",
53
70
  published: "getPublishedEntriesByIds",
54
71
  exact: "getEntriesByIds"
55
72
  };
56
-
57
73
  const getContentEntries = async params => {
58
74
  const {
59
75
  args,
@@ -73,55 +89,45 @@ const getContentEntries = async params => {
73
89
  } else if (collection[ref.modelId].includes(ref.id)) {
74
90
  return collection;
75
91
  }
76
-
77
92
  collection[ref.modelId].push(ref.id);
78
93
  return collection;
79
94
  }, {});
80
95
  const getters = Object.keys(entriesByModel).map(async modelId => {
81
96
  return method(modelsMap[modelId], entriesByModel[modelId]);
82
97
  });
83
-
84
98
  if (getters.length === 0) {
85
99
  return new _handlerGraphql.Response([]);
86
100
  }
87
-
88
- const results = await Promise.all(getters);
89
- const entries = results.reduce((collection, items) => {
90
- return collection.concat(items.map(item => {
91
- const model = modelsMap[item.modelId];
92
- return {
93
- id: item.id,
94
- entryId: item.entryId,
95
- model: {
96
- modelId: model.modelId,
97
- name: model.name
98
- },
99
- status: item.status,
100
- title: (0, _getEntryTitle.getEntryTitle)(model, item)
101
- };
102
- }));
103
- }, []).filter(Boolean);
104
- return new _handlerGraphql.Response(entries);
101
+ try {
102
+ const results = await Promise.all(getters);
103
+ const entries = results.reduce((collection, items) => {
104
+ return collection.concat(items.map(item => {
105
+ const model = modelsMap[item.modelId];
106
+ return createCmsEntryRecord(model, item);
107
+ }));
108
+ }, []).filter(Boolean);
109
+ return new _handlerGraphql.Response(entries);
110
+ } catch (ex) {
111
+ return new _handlerGraphql.ErrorResponse(ex);
112
+ }
105
113
  };
114
+
106
115
  /**
107
116
  * Function to fetch a single content entry depending on latest, published or exact GraphQL query.
108
117
  */
109
118
 
110
-
111
119
  const getContentEntry = async params => {
112
120
  const {
113
121
  args,
114
122
  context,
115
123
  type
116
124
  } = params;
117
-
118
125
  if (!getContentEntriesMethods[type]) {
119
126
  throw new _error.default(`Unknown getContentEntry method "${type}". Could not fetch content entry.`, "UNKNOWN_METHOD_ERROR", {
120
127
  args,
121
128
  type
122
129
  });
123
130
  }
124
-
125
131
  const method = getFetchMethod(type, context);
126
132
  const {
127
133
  modelId,
@@ -129,7 +135,6 @@ const getContentEntry = async params => {
129
135
  } = args.entry;
130
136
  const models = await context.cms.listModels();
131
137
  const model = models.find(m => m.modelId === modelId);
132
-
133
138
  if (!model) {
134
139
  return new _apiSecurity.NotAuthorizedResponse({
135
140
  data: {
@@ -137,60 +142,88 @@ const getContentEntry = async params => {
137
142
  }
138
143
  });
139
144
  }
140
-
141
145
  const result = await method(model, [id]);
142
146
  const entry = result.shift();
143
-
144
147
  if (!entry) {
145
148
  return new _handlerGraphql.Response(null);
146
149
  }
147
-
148
- return new _handlerGraphql.Response({
149
- id: entry.id,
150
- entryId: entry.entryId,
151
- model: {
152
- modelId: model.modelId,
153
- name: model.name
154
- },
155
- status: entry.status,
156
- title: (0, _getEntryTitle.getEntryTitle)(model, entry)
157
- });
150
+ return new _handlerGraphql.Response(createCmsEntryRecord(model, entry));
158
151
  };
159
-
160
- const createContentEntriesSchema = context => {
152
+ /**
153
+ * As we support description field, we need to transform the value from storage.
154
+ */
155
+ const createResolveDescription = () => {
156
+ return async (parent, _, context) => {
157
+ const models = await context.cms.listModels();
158
+ const model = models.find(({
159
+ modelId
160
+ }) => {
161
+ return parent.model.modelId === modelId;
162
+ });
163
+ if (!model) {
164
+ return null;
165
+ }
166
+ const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);
167
+ if (!field) {
168
+ return null;
169
+ }
170
+ const value = parent.description || parent[field.fieldId];
171
+ if (!value) {
172
+ return null;
173
+ }
174
+ return (0, _entryStorage.entryFieldFromStorageTransform)({
175
+ context,
176
+ model,
177
+ field,
178
+ value
179
+ });
180
+ };
181
+ };
182
+ const createContentEntriesSchema = ({
183
+ context
184
+ }) => {
161
185
  if (!context.cms.MANAGE) {
162
- return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
186
+ const plugin = new _plugins.CmsGraphQLSchemaPlugin({
163
187
  typeDefs: "",
164
188
  resolvers: {}
165
189
  });
190
+ plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;
191
+ return plugin;
166
192
  }
167
-
168
- return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
169
- typeDefs:
170
- /* GraphQL */
171
- `
193
+ const plugin = new _plugins.CmsGraphQLSchemaPlugin({
194
+ typeDefs: /* GraphQL */`
172
195
  type CmsModelMeta {
173
- modelId: String
174
- name: String
196
+ modelId: String!
197
+ name: String!
175
198
  }
176
199
 
177
200
  type CmsPublishedContentEntry {
178
201
  id: ID!
179
202
  entryId: String!
180
203
  title: String
204
+ description: String
205
+ image: String
181
206
  }
182
207
 
183
208
  type CmsContentEntry {
184
209
  id: ID!
185
210
  entryId: String!
186
- model: CmsModelMeta
187
- status: String
188
- title: String
211
+ model: CmsModelMeta!
212
+ status: String!
213
+ title: String!
214
+ description: String
215
+ image: String
216
+ createdBy: CmsIdentity!
217
+ ownedBy: CmsIdentity!
218
+ modifiedBy: CmsIdentity
189
219
  published: CmsPublishedContentEntry
220
+ createdOn: DateTime!
221
+ savedOn: DateTime!
222
+ wbyAco_location: WbyAcoLocation
190
223
  }
191
224
 
192
225
  type CmsContentEntriesResponse {
193
- data: [CmsContentEntry]
226
+ data: [CmsContentEntry!]
194
227
  error: CmsError
195
228
  }
196
229
 
@@ -211,20 +244,20 @@ const createContentEntriesSchema = context => {
211
244
  query: String
212
245
  fields: [String!]
213
246
  limit: Int
214
- ): CmsContentEntriesResponse
247
+ ): CmsContentEntriesResponse!
215
248
 
216
249
  # Get content entry meta data
217
- getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse
250
+ getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!
218
251
 
219
- getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse
220
- getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse
252
+ getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!
253
+ getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!
221
254
 
222
255
  # Get content entries meta data
223
- getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse
224
- getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse
256
+ getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!
257
+ getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!
225
258
  getPublishedContentEntries(
226
259
  entries: [CmsModelEntryInput!]!
227
- ): CmsContentEntriesResponse
260
+ ): CmsContentEntriesResponse!
228
261
  }
229
262
  `,
230
263
  resolvers: {
@@ -237,26 +270,22 @@ const createContentEntriesSchema = context => {
237
270
  }) => {
238
271
  return parent.model.modelId === modelId;
239
272
  });
240
-
241
273
  if (!model) {
242
274
  return null;
243
275
  }
244
-
245
276
  const [entry] = await context.cms.getPublishedEntriesByIds(model, [parent.id]);
246
-
247
277
  if (!entry) {
248
278
  return null;
249
279
  }
250
-
251
- return {
252
- id: entry.id,
253
- entryId: entry.entryId,
254
- title: (0, _getEntryTitle.getEntryTitle)(model, entry)
255
- };
280
+ return createCmsEntryRecord(model, entry);
256
281
  } catch (ex) {
257
282
  return null;
258
283
  }
259
- }
284
+ },
285
+ description: createResolveDescription()
286
+ },
287
+ CmsPublishedContentEntry: {
288
+ description: createResolveDescription()
260
289
  },
261
290
  Query: {
262
291
  async searchContentEntries(_, args, context) {
@@ -277,24 +306,16 @@ const createContentEntriesSchema = context => {
277
306
  fields: fields || []
278
307
  });
279
308
  return items.map(entry => {
280
- return {
281
- id: entry.id,
282
- entryId: entry.entryId,
283
- model: {
284
- modelId: model.modelId,
285
- name: model.name
286
- },
287
- status: entry.status,
288
- title: (0, _getEntryTitle.getEntryTitle)(model, entry),
289
- // We need `savedOn` to sort entries from latest to oldest
290
- savedOn: entry.savedOn
291
- };
309
+ return createCmsEntryRecord(model, entry);
292
310
  });
293
311
  });
294
- const entries = await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
295
- return new _handlerGraphql.Response(entries.sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn)).slice(0, limit));
312
+ try {
313
+ const entries = await Promise.all(getters).then(results => results.reduce((result, item) => result.concat(item), []));
314
+ return new _handlerGraphql.Response(entries.sort((a, b) => b.savedOn.getTime() - a.savedOn.getTime()).slice(0, limit));
315
+ } catch (ex) {
316
+ return new _handlerGraphql.ErrorResponse(ex);
317
+ }
296
318
  },
297
-
298
319
  async getContentEntry(_, args, context) {
299
320
  return getContentEntry({
300
321
  args,
@@ -302,7 +323,6 @@ const createContentEntriesSchema = context => {
302
323
  type: "exact"
303
324
  });
304
325
  },
305
-
306
326
  async getLatestContentEntry(_, args, context) {
307
327
  return getContentEntry({
308
328
  args,
@@ -310,7 +330,6 @@ const createContentEntriesSchema = context => {
310
330
  type: "latest"
311
331
  });
312
332
  },
313
-
314
333
  async getPublishedContentEntry(_, args, context) {
315
334
  return getContentEntry({
316
335
  args,
@@ -318,7 +337,6 @@ const createContentEntriesSchema = context => {
318
337
  type: "published"
319
338
  });
320
339
  },
321
-
322
340
  async getContentEntries(_, args, context) {
323
341
  return getContentEntries({
324
342
  args,
@@ -326,7 +344,6 @@ const createContentEntriesSchema = context => {
326
344
  type: "exact"
327
345
  });
328
346
  },
329
-
330
347
  async getLatestContentEntries(_, args, context) {
331
348
  return getContentEntries({
332
349
  args,
@@ -334,7 +351,6 @@ const createContentEntriesSchema = context => {
334
351
  type: "latest"
335
352
  });
336
353
  },
337
-
338
354
  async getPublishedContentEntries(_, args, context) {
339
355
  return getContentEntries({
340
356
  args,
@@ -342,10 +358,10 @@ const createContentEntriesSchema = context => {
342
358
  type: "published"
343
359
  });
344
360
  }
345
-
346
361
  }
347
362
  }
348
363
  });
364
+ plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;
365
+ return plugin;
349
366
  };
350
-
351
367
  exports.createContentEntriesSchema = createContentEntriesSchema;
@@ -1 +1 @@
1
- {"version":3,"names":["getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","model","modelId","argsEntries","entries","entriesByModel","ref","includes","id","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","entryId","name","status","title","getEntryTitle","filter","Boolean","getContentEntry","entry","find","m","NotAuthorizedResponse","data","result","shift","createContentEntriesSchema","MANAGE","GraphQLSchemaPlugin","typeDefs","resolvers","CmsContentEntry","parent","_","getPublishedEntriesByIds","ex","Query","searchContentEntries","modelIds","fields","query","limit","modelManager","getModelManager","where","listLatest","search","undefined","savedOn","then","sort","a","b","Date","parse","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries"],"sources":["contentEntries.ts"],"sourcesContent":["import { Response } from \"@webiny/handler-graphql\";\nimport { CmsEntry, CmsContext, CmsModel, CmsEntryListWhere } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins/GraphQLSchemaPlugin\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport WebinyError from \"@webiny/error\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n}\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (params: GetContentEntriesParams): Promise<Response> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return {\n id: item.id,\n entryId: item.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: item.status,\n title: getEntryTitle(model, item)\n };\n })\n );\n }, [] as CmsEntryRecord[])\n .filter(Boolean);\n\n return new Response(entries);\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response({\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry)\n });\n};\n\nexport const createContentEntriesSchema = (\n context: CmsContext\n): GraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n return new GraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n }\n\n return new GraphQLSchemaPlugin<CmsContext>({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String\n name: String\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta\n status: String\n title: String\n published: CmsPublishedContentEntry\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return {\n id: entry.id,\n entryId: entry.entryId,\n title: getEntryTitle(model, entry)\n };\n } catch (ex) {\n return null;\n }\n }\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {};\n\n const [items] = await modelManager.listLatest({\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n\n return items.map((entry: CmsEntry) => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n // We need `savedOn` to sort entries from latest to oldest\n savedOn: entry.savedOn\n };\n });\n });\n\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => Date.parse(b.savedOn) - Date.parse(a.savedOn))\n .slice(0, limit)\n );\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_handlerGraphql","_apiSecurity","_getEntryTitle","_plugins","_getEntryDescription","_getEntryImage","_entryStorage","createDate","date","Date","createCmsEntryRecord","model","entry","_entry$location","id","entryId","modelId","name","status","title","getEntryTitle","description","getEntryDescription","image","getEntryImage","createdBy","modifiedBy","createdOn","savedOn","wbyAco_location","folderId","location","getFetchMethod","type","context","getContentEntriesMethods","WebinyError","methodName","cms","GetContentEntryMethods","latest","published","exact","getContentEntries","params","args","method","models","listModels","modelsMap","reduce","collection","argsEntries","entries","entriesByModel","ref","includes","push","getters","Object","keys","map","length","Response","results","Promise","all","items","concat","item","filter","Boolean","ex","ErrorResponse","getContentEntry","find","m","NotAuthorizedResponse","data","result","shift","createResolveDescription","parent","_","field","fields","f","fieldId","descriptionFieldId","value","entryFieldFromStorageTransform","createContentEntriesSchema","MANAGE","plugin","CmsGraphQLSchemaPlugin","typeDefs","resolvers","CmsContentEntry","getPublishedEntriesByIds","CmsPublishedContentEntry","Query","searchContentEntries","modelIds","query","limit","modelManager","getModelManager","where","listLatest","search","undefined","then","sort","a","b","getTime","slice","getLatestContentEntry","getPublishedContentEntry","getLatestContentEntries","getPublishedContentEntries","exports"],"sources":["contentEntries.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql\";\nimport { CmsContext, CmsEntry, CmsEntryListWhere, CmsIdentity, CmsModel } from \"~/types\";\nimport { NotAuthorizedResponse } from \"@webiny/api-security\";\nimport { getEntryTitle } from \"~/utils/getEntryTitle\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\nimport { getEntryDescription } from \"~/utils/getEntryDescription\";\nimport { getEntryImage } from \"~/utils/getEntryImage\";\nimport { entryFieldFromStorageTransform } from \"~/utils/entryStorage\";\nimport { Resolvers } from \"@webiny/handler-graphql/types\";\n\ninterface EntriesByModel {\n [key: string]: string[];\n}\n\ntype GetContentEntryType = \"latest\" | \"published\" | \"exact\";\n\nconst createDate = (date: string): Date => {\n try {\n return new Date(date);\n } catch {}\n return new Date();\n};\ninterface CmsEntryRecord {\n id: string;\n entryId: string;\n model: {\n modelId: string;\n name: string;\n };\n status: string;\n title: string;\n description?: string | null;\n image?: string | null;\n createdBy: CmsIdentity;\n modifiedBy?: CmsIdentity | null;\n /**\n * We can use the number since it is an internal field.\n * Created via Date.parse() method.\n */\n createdOn: Date;\n savedOn: Date;\n wbyAco_location?: {\n folderId?: string | null;\n };\n}\n\nconst createCmsEntryRecord = (model: CmsModel, entry: CmsEntry): CmsEntryRecord => {\n return {\n id: entry.id,\n entryId: entry.entryId,\n model: {\n modelId: model.modelId,\n name: model.name\n },\n status: entry.status,\n title: getEntryTitle(model, entry),\n description: getEntryDescription(model, entry),\n image: getEntryImage(model, entry),\n createdBy: entry.createdBy,\n modifiedBy: entry.modifiedBy,\n createdOn: createDate(entry.createdOn),\n savedOn: createDate(entry.savedOn),\n wbyAco_location: {\n folderId: entry.location?.folderId || null\n }\n };\n};\n\ninterface FetchMethod {\n (model: CmsModel, ids: string[]): Promise<CmsEntry[]>;\n}\n\nconst getFetchMethod = (type: GetContentEntryType, context: CmsContext): FetchMethod => {\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntries method \"${type}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type\n }\n );\n }\n const methodName = getContentEntriesMethods[type] as GetContentEntryMethods;\n if (!context.cms[methodName]) {\n throw new WebinyError(\n `Unknown context.cms method \"${methodName}\". Could not fetch content entries.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n type,\n methodName\n }\n );\n }\n\n return context.cms[methodName];\n};\n/**\n * Function to get the list of content entries depending on latest, published or exact GraphQL queries.\n */\ninterface GetContentEntriesParams {\n args: {\n entries: Pick<CmsEntry, \"id\" | \"modelId\">[];\n };\n context: CmsContext;\n type: GetContentEntryType;\n}\nenum GetContentEntryMethods {\n getLatestEntriesByIds = \"getLatestEntriesByIds\",\n getPublishedEntriesByIds = \"getPublishedEntriesByIds\",\n getEntriesByIds = \"getEntriesByIds\"\n}\nconst getContentEntriesMethods = {\n latest: \"getLatestEntriesByIds\",\n published: \"getPublishedEntriesByIds\",\n exact: \"getEntriesByIds\"\n};\nconst getContentEntries = async (\n params: GetContentEntriesParams\n): Promise<Response | ErrorResponse> => {\n const { args, context, type } = params;\n\n const method = getFetchMethod(type, context);\n\n const models = await context.cms.listModels();\n\n const modelsMap = models.reduce((collection, model) => {\n collection[model.modelId] = model;\n return collection;\n }, {} as Record<string, CmsModel>);\n\n const argsEntries = args.entries as Pick<CmsEntry, \"id\" | \"modelId\">[];\n\n const entriesByModel = argsEntries.reduce((collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.id)) {\n return collection;\n }\n collection[ref.modelId].push(ref.id);\n return collection;\n }, {} as EntriesByModel);\n\n const getters: Promise<CmsEntry[]>[] = Object.keys(entriesByModel).map(async modelId => {\n return method(modelsMap[modelId], entriesByModel[modelId]);\n });\n\n if (getters.length === 0) {\n return new Response([]);\n }\n\n try {\n const results = await Promise.all(getters);\n\n const entries = results\n .reduce<CmsEntryRecord[]>((collection, items) => {\n return collection.concat(\n items.map(item => {\n const model = modelsMap[item.modelId];\n\n return createCmsEntryRecord(model, item);\n })\n );\n }, [])\n .filter(Boolean);\n\n return new Response(entries);\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n};\n\n/**\n * Function to fetch a single content entry depending on latest, published or exact GraphQL query.\n */\ninterface GetContentEntryParams {\n args: {\n entry: Pick<CmsEntry, \"id\" | \"modelId\">;\n };\n context: CmsContext;\n type: \"latest\" | \"published\" | \"exact\";\n}\nconst getContentEntry = async (\n params: GetContentEntryParams\n): Promise<Response<CmsEntryRecord | null> | NotAuthorizedResponse> => {\n const { args, context, type } = params;\n if (!getContentEntriesMethods[type]) {\n throw new WebinyError(\n `Unknown getContentEntry method \"${type}\". Could not fetch content entry.`,\n \"UNKNOWN_METHOD_ERROR\",\n {\n args,\n type\n }\n );\n }\n\n const method = getFetchMethod(type, context);\n\n const { modelId, id } = args.entry;\n const models = await context.cms.listModels();\n const model = models.find(m => m.modelId === modelId);\n\n if (!model) {\n return new NotAuthorizedResponse({\n data: {\n modelId\n }\n });\n }\n\n const result = await method(model, [id]);\n\n const entry = result.shift();\n if (!entry) {\n return new Response(null);\n }\n\n return new Response(createCmsEntryRecord(model, entry));\n};\n/**\n * As we support description field, we need to transform the value from storage.\n */\nconst createResolveDescription = (): Resolvers<CmsContext> => {\n return async (parent, _, context) => {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);\n if (!field) {\n return null;\n }\n const value = parent.description || parent[field.fieldId];\n if (!value) {\n return null;\n }\n return entryFieldFromStorageTransform({\n context,\n model,\n field,\n value\n });\n };\n};\n\ninterface Params {\n context: CmsContext;\n}\nexport const createContentEntriesSchema = ({\n context\n}: Params): CmsGraphQLSchemaPlugin<CmsContext> => {\n if (!context.cms.MANAGE) {\n const plugin = new CmsGraphQLSchemaPlugin({\n typeDefs: \"\",\n resolvers: {}\n });\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.empty`;\n return plugin;\n }\n\n const plugin = new CmsGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type CmsModelMeta {\n modelId: String!\n name: String!\n }\n\n type CmsPublishedContentEntry {\n id: ID!\n entryId: String!\n title: String\n description: String\n image: String\n }\n\n type CmsContentEntry {\n id: ID!\n entryId: String!\n model: CmsModelMeta!\n status: String!\n title: String!\n description: String\n image: String\n createdBy: CmsIdentity!\n ownedBy: CmsIdentity!\n modifiedBy: CmsIdentity\n published: CmsPublishedContentEntry\n createdOn: DateTime!\n savedOn: DateTime!\n wbyAco_location: WbyAcoLocation\n }\n\n type CmsContentEntriesResponse {\n data: [CmsContentEntry!]\n error: CmsError\n }\n\n type CmsContentEntryResponse {\n data: CmsContentEntry\n error: CmsError\n }\n\n input CmsModelEntryInput {\n modelId: ID!\n id: ID!\n }\n\n extend type Query {\n # Search content entries for given content models using the query string.\n searchContentEntries(\n modelIds: [ID!]!\n query: String\n fields: [String!]\n limit: Int\n ): CmsContentEntriesResponse!\n\n # Get content entry meta data\n getContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n getLatestContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n getPublishedContentEntry(entry: CmsModelEntryInput!): CmsContentEntryResponse!\n\n # Get content entries meta data\n getContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getLatestContentEntries(entries: [CmsModelEntryInput!]!): CmsContentEntriesResponse!\n getPublishedContentEntries(\n entries: [CmsModelEntryInput!]!\n ): CmsContentEntriesResponse!\n }\n `,\n resolvers: {\n CmsContentEntry: {\n published: async (parent, _, context) => {\n try {\n const models = await context.cms.listModels();\n const model = models.find(({ modelId }) => {\n return parent.model.modelId === modelId;\n });\n if (!model) {\n return null;\n }\n const [entry] = await context.cms.getPublishedEntriesByIds(model, [\n parent.id\n ]);\n if (!entry) {\n return null;\n }\n return createCmsEntryRecord(model, entry);\n } catch (ex) {\n return null;\n }\n },\n description: createResolveDescription()\n },\n CmsPublishedContentEntry: {\n description: createResolveDescription()\n },\n Query: {\n async searchContentEntries(_, args: any, context) {\n const { modelIds, fields, query, limit = 10 } = args;\n const models = await context.cms.listModels();\n\n const getters = models\n .filter(model => modelIds.includes(model.modelId))\n .map(async model => {\n const modelManager = await context.cms.getModelManager(model.modelId);\n const where: CmsEntryListWhere = {};\n\n const [items] = await modelManager.listLatest({\n limit,\n where,\n search: !!query ? query : undefined,\n fields: fields || []\n });\n\n return items.map((entry: CmsEntry) => {\n return createCmsEntryRecord(model, entry);\n });\n });\n\n try {\n const entries = await Promise.all(getters).then(results =>\n results.reduce((result, item) => result.concat(item), [])\n );\n\n return new Response(\n entries\n .sort((a, b) => b.savedOn.getTime() - a.savedOn.getTime())\n .slice(0, limit)\n );\n } catch (ex) {\n return new ErrorResponse(ex);\n }\n },\n async getContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntry(_, args: any, context) {\n return getContentEntry({\n args,\n context,\n type: \"published\"\n });\n },\n async getContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"exact\"\n });\n },\n async getLatestContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"latest\"\n });\n },\n async getPublishedContentEntries(_, args: any, context) {\n return getContentEntries({\n args,\n context,\n type: \"published\"\n });\n }\n }\n }\n });\n\n plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-entries`;\n\n return plugin;\n};\n"],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import { CmsContext } from "../../types";
2
- import { GraphQLSchemaPlugin } from "@webiny/handler-graphql/plugins/GraphQLSchemaPlugin";
3
- export declare const createGroupsSchema: (context: CmsContext) => GraphQLSchemaPlugin<CmsContext>;
2
+ import { CmsGraphQLSchemaPlugin } from "../../plugins";
3
+ interface Params {
4
+ context: CmsContext;
5
+ }
6
+ export declare const createGroupsSchema: ({ context }: Params) => CmsGraphQLSchemaPlugin;
7
+ export {};
@@ -4,20 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createGroupsSchema = void 0;
7
-
8
7
  var _handlerGraphql = require("@webiny/handler-graphql");
9
-
10
- var _GraphQLSchemaPlugin = require("@webiny/handler-graphql/plugins/GraphQLSchemaPlugin");
11
-
12
8
  var _CmsGroupPlugin = require("../../plugins/CmsGroupPlugin");
13
-
14
- const createGroupsSchema = context => {
9
+ var _plugins = require("../../plugins");
10
+ const createGroupsSchema = ({
11
+ context
12
+ }) => {
15
13
  let manageSchema = "";
16
-
17
14
  if (context.cms.MANAGE) {
18
- manageSchema =
19
- /* GraphQL */
20
- `
15
+ manageSchema = /* GraphQL */`
21
16
  input CmsContentModelGroupInput {
22
17
  name: String!
23
18
  slug: String
@@ -55,33 +50,29 @@ const createGroupsSchema = context => {
55
50
  }
56
51
  `;
57
52
  }
58
-
59
53
  let resolvers = {};
60
-
61
54
  if (context.cms.MANAGE) {
62
55
  resolvers = {
63
56
  CmsContentModelGroup: {
64
57
  contentModels: async (group, _, context) => {
65
- context.security.disableAuthorization();
66
- const models = await context.cms.listModels();
67
- context.security.enableAuthorization();
58
+ const models = await context.security.withoutAuthorization(async () => {
59
+ return context.cms.listModels();
60
+ });
68
61
  return models.filter(model => {
69
62
  if (model.isPrivate === true) {
70
63
  return false;
71
64
  }
72
-
73
65
  return model.group.id === group.id;
74
66
  });
75
67
  },
76
68
  totalContentModels: async (group, _, context) => {
77
- context.security.disableAuthorization();
78
- const models = await context.cms.listModels();
79
- context.security.enableAuthorization();
69
+ const models = await context.security.withoutAuthorization(async () => {
70
+ return context.cms.listModels();
71
+ });
80
72
  return models.filter(model => {
81
73
  if (model.isPrivate === true) {
82
74
  return false;
83
75
  }
84
-
85
76
  return model.group === group.id;
86
77
  }).length;
87
78
  },
@@ -96,11 +87,9 @@ const createGroupsSchema = context => {
96
87
  id
97
88
  } = args;
98
89
  const group = await context.cms.getGroup(id);
99
-
100
90
  if (group !== null && group !== void 0 && group.isPrivate) {
101
91
  throw new _handlerGraphql.NotFoundError(`Cms Group "${id}" was not found!`);
102
92
  }
103
-
104
93
  return new _handlerGraphql.Response(group);
105
94
  } catch (e) {
106
95
  return new _handlerGraphql.ErrorResponse(e);
@@ -143,11 +132,8 @@ const createGroupsSchema = context => {
143
132
  }
144
133
  };
145
134
  }
146
-
147
- return new _GraphQLSchemaPlugin.GraphQLSchemaPlugin({
148
- typeDefs:
149
- /* GraphQL */
150
- `
135
+ const plugin = new _plugins.CmsGraphQLSchemaPlugin({
136
+ typeDefs: /* GraphQL */`
151
137
  type CmsContentModelGroup {
152
138
  id: ID!
153
139
  createdOn: DateTime
@@ -158,7 +144,7 @@ const createGroupsSchema = context => {
158
144
  slug: String!
159
145
  description: String
160
146
  icon: String
161
- createdBy: CmsCreatedBy
147
+ createdBy: CmsIdentity
162
148
 
163
149
  # Returns true if the content model group is registered via a plugin.
164
150
  plugin: Boolean!
@@ -167,6 +153,7 @@ const createGroupsSchema = context => {
167
153
  `,
168
154
  resolvers
169
155
  });
156
+ plugin.name = `headless-cms.graphql.schema.${context.cms.type}.content-model-groups`;
157
+ return plugin;
170
158
  };
171
-
172
159
  exports.createGroupsSchema = createGroupsSchema;