@webiny/api-headless-cms 0.0.0-unstable.615a930a68 → 0.0.0-unstable.6509387258

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 (383) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +60 -23
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/afterDelete.js +0 -5
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.js +0 -3
  7. package/crud/contentEntry/beforeCreate.js.map +1 -1
  8. package/crud/contentEntry/beforeUpdate.js +0 -3
  9. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  10. package/crud/contentEntry/entryDataValidation.js +1 -40
  11. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  12. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  13. package/crud/contentEntry/markLockedFields.js +19 -29
  14. package/crud/contentEntry/markLockedFields.js.map +1 -1
  15. package/crud/contentEntry/referenceFieldsMapping.js +12 -64
  16. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  17. package/crud/contentEntry/searchableFields.js +1 -12
  18. package/crud/contentEntry/searchableFields.js.map +1 -1
  19. package/crud/contentEntry.crud.d.ts +4 -1
  20. package/crud/contentEntry.crud.js +964 -916
  21. package/crud/contentEntry.crud.js.map +1 -1
  22. package/crud/contentModel/afterCreate.js +0 -2
  23. package/crud/contentModel/afterCreate.js.map +1 -1
  24. package/crud/contentModel/afterCreateFrom.js +0 -2
  25. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  26. package/crud/contentModel/afterDelete.js +0 -2
  27. package/crud/contentModel/afterDelete.js.map +1 -1
  28. package/crud/contentModel/afterUpdate.js +0 -2
  29. package/crud/contentModel/afterUpdate.js.map +1 -1
  30. package/crud/contentModel/beforeCreate.d.ts +2 -3
  31. package/crud/contentModel/beforeCreate.js +43 -109
  32. package/crud/contentModel/beforeCreate.js.map +1 -1
  33. package/crud/contentModel/beforeDelete.js +0 -10
  34. package/crud/contentModel/beforeDelete.js.map +1 -1
  35. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  36. package/crud/contentModel/beforeUpdate.js +33 -10
  37. package/crud/contentModel/beforeUpdate.js.map +1 -1
  38. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  39. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  40. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  41. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  42. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  43. package/crud/contentModel/createFieldStorageId.js +4 -3
  44. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  45. package/crud/contentModel/defaultFields.d.ts +5 -0
  46. package/crud/contentModel/defaultFields.js +58 -0
  47. package/crud/contentModel/defaultFields.js.map +1 -0
  48. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  49. package/crud/contentModel/fields/descriptionField.js +42 -0
  50. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  51. package/crud/contentModel/fields/imageField.d.ts +2 -0
  52. package/crud/contentModel/fields/imageField.js +46 -0
  53. package/crud/contentModel/fields/imageField.js.map +1 -0
  54. package/crud/contentModel/fields/titleField.d.ts +2 -0
  55. package/crud/contentModel/fields/titleField.js +58 -0
  56. package/crud/contentModel/fields/titleField.js.map +1 -0
  57. package/crud/contentModel/models.js +12 -0
  58. package/crud/contentModel/models.js.map +1 -1
  59. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  60. package/crud/contentModel/validate/endingAllowed.js +26 -0
  61. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  62. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  63. package/crud/contentModel/validate/isModelEndingAllowed.js +24 -0
  64. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  65. package/crud/contentModel/validate/modelId.d.ts +11 -0
  66. package/crud/contentModel/validate/modelId.js +36 -0
  67. package/crud/contentModel/validate/modelId.js.map +1 -0
  68. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  69. package/crud/contentModel/validate/pluralApiName.js +24 -0
  70. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  71. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  72. package/crud/contentModel/validate/singularApiName.js +24 -0
  73. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  74. package/crud/contentModel/validateLayout.js +0 -8
  75. package/crud/contentModel/validateLayout.js.map +1 -1
  76. package/crud/contentModel/validateModel.d.ts +4 -4
  77. package/crud/contentModel/validateModel.js +6 -11
  78. package/crud/contentModel/validateModel.js.map +1 -1
  79. package/crud/contentModel/validateModelFields.d.ts +4 -4
  80. package/crud/contentModel/validateModelFields.js +130 -147
  81. package/crud/contentModel/validateModelFields.js.map +1 -1
  82. package/crud/contentModel/validation.d.ts +519 -0
  83. package/crud/contentModel/validation.js +145 -0
  84. package/crud/contentModel/validation.js.map +1 -0
  85. package/crud/contentModel.crud.js +373 -362
  86. package/crud/contentModel.crud.js.map +1 -1
  87. package/crud/contentModelGroup/beforeCreate.js +0 -12
  88. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  89. package/crud/contentModelGroup/beforeDelete.js +0 -8
  90. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  91. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  92. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  93. package/crud/contentModelGroup/validation.d.ts +30 -0
  94. package/crud/contentModelGroup/validation.js +34 -0
  95. package/crud/contentModelGroup/validation.js.map +1 -0
  96. package/crud/contentModelGroup.crud.js +194 -208
  97. package/crud/contentModelGroup.crud.js.map +1 -1
  98. package/crud/settings.crud.js +0 -12
  99. package/crud/settings.crud.js.map +1 -1
  100. package/crud/system.crud.js +1 -96
  101. package/crud/system.crud.js.map +1 -1
  102. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  103. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  104. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  105. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  106. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  107. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  108. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  109. package/fieldConverters/index.d.ts +2 -1
  110. package/fieldConverters/index.js +2 -5
  111. package/fieldConverters/index.js.map +1 -1
  112. package/graphql/buildSchemaPlugins.d.ts +8 -3
  113. package/graphql/buildSchemaPlugins.js +6 -14
  114. package/graphql/buildSchemaPlugins.js.map +1 -1
  115. package/graphql/createExecutableSchema.d.ts +6 -0
  116. package/graphql/createExecutableSchema.js +29 -0
  117. package/graphql/createExecutableSchema.js.map +1 -0
  118. package/graphql/generateSchema.d.ts +8 -0
  119. package/graphql/generateSchema.js +31 -0
  120. package/graphql/generateSchema.js.map +1 -0
  121. package/graphql/graphQLHandlerFactory.js +102 -71
  122. package/graphql/graphQLHandlerFactory.js.map +1 -1
  123. package/graphql/index.d.ts +1 -3
  124. package/graphql/index.js +2 -46
  125. package/graphql/index.js.map +1 -1
  126. package/graphql/schema/baseContentSchema.d.ts +6 -2
  127. package/graphql/schema/baseContentSchema.js +10 -20
  128. package/graphql/schema/baseContentSchema.js.map +1 -1
  129. package/graphql/schema/baseSchema.d.ts +3 -0
  130. package/graphql/schema/baseSchema.js +53 -0
  131. package/graphql/schema/baseSchema.js.map +1 -0
  132. package/graphql/schema/contentEntries.d.ts +6 -2
  133. package/graphql/schema/contentEntries.js +118 -107
  134. package/graphql/schema/contentEntries.js.map +1 -1
  135. package/graphql/schema/contentModelGroups.d.ts +6 -2
  136. package/graphql/schema/contentModelGroups.js +16 -29
  137. package/graphql/schema/contentModelGroups.js.map +1 -1
  138. package/graphql/schema/contentModels.d.ts +6 -2
  139. package/graphql/schema/contentModels.js +62 -26
  140. package/graphql/schema/contentModels.js.map +1 -1
  141. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  142. package/graphql/schema/createFieldResolvers.js +20 -27
  143. package/graphql/schema/createFieldResolvers.js.map +1 -1
  144. package/graphql/schema/createManageResolvers.d.ts +1 -1
  145. package/graphql/schema/createManageResolvers.js +33 -43
  146. package/graphql/schema/createManageResolvers.js.map +1 -1
  147. package/graphql/schema/createManageSDL.d.ts +3 -0
  148. package/graphql/schema/createManageSDL.js +63 -68
  149. package/graphql/schema/createManageSDL.js.map +1 -1
  150. package/graphql/schema/createPreviewResolvers.js +3 -17
  151. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  152. package/graphql/schema/createReadResolvers.js +8 -17
  153. package/graphql/schema/createReadResolvers.js.map +1 -1
  154. package/graphql/schema/createReadSDL.d.ts +3 -0
  155. package/graphql/schema/createReadSDL.js +32 -36
  156. package/graphql/schema/createReadSDL.js.map +1 -1
  157. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  158. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  159. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  160. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  161. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  162. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  163. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  164. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  165. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  166. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  167. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  168. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  169. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  170. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  171. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  172. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  173. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  174. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  175. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  176. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  177. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  178. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  179. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  180. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  181. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  182. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  183. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  184. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  185. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  186. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  187. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  188. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  189. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  190. package/graphql/schema/schemaPlugins.d.ts +8 -3
  191. package/graphql/schema/schemaPlugins.js +64 -66
  192. package/graphql/schema/schemaPlugins.js.map +1 -1
  193. package/graphql/system.js +55 -87
  194. package/graphql/system.js.map +1 -1
  195. package/graphqlFields/boolean.js +0 -12
  196. package/graphqlFields/boolean.js.map +1 -1
  197. package/graphqlFields/datetime.js +0 -17
  198. package/graphqlFields/datetime.js.map +1 -1
  199. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  200. package/graphqlFields/dynamicZone/dynamicZoneField.js +216 -0
  201. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  202. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  203. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  204. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  205. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  206. package/graphqlFields/dynamicZone/index.js +19 -0
  207. package/graphqlFields/dynamicZone/index.js.map +1 -0
  208. package/graphqlFields/file.js +0 -8
  209. package/graphqlFields/file.js.map +1 -1
  210. package/graphqlFields/helpers.js +0 -10
  211. package/graphqlFields/helpers.js.map +1 -1
  212. package/graphqlFields/index.d.ts +1 -1
  213. package/graphqlFields/index.js +2 -12
  214. package/graphqlFields/index.js.map +1 -1
  215. package/graphqlFields/longText.js +0 -10
  216. package/graphqlFields/longText.js.map +1 -1
  217. package/graphqlFields/number.js +0 -12
  218. package/graphqlFields/number.js.map +1 -1
  219. package/graphqlFields/object.js +62 -115
  220. package/graphqlFields/object.js.map +1 -1
  221. package/graphqlFields/ref.js +86 -106
  222. package/graphqlFields/ref.js.map +1 -1
  223. package/graphqlFields/richText.js +0 -9
  224. package/graphqlFields/richText.js.map +1 -1
  225. package/graphqlFields/text.js +0 -11
  226. package/graphqlFields/text.js.map +1 -1
  227. package/index.d.ts +5 -3
  228. package/index.js +24 -28
  229. package/index.js.map +1 -1
  230. package/modelManager/DefaultCmsModelManager.js +0 -16
  231. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  232. package/modelManager/index.js +0 -4
  233. package/modelManager/index.js.map +1 -1
  234. package/package.json +27 -28
  235. package/parameters/context.js +0 -4
  236. package/parameters/context.js.map +1 -1
  237. package/parameters/header.js +0 -11
  238. package/parameters/header.js.map +1 -1
  239. package/parameters/index.js +0 -8
  240. package/parameters/index.js.map +1 -1
  241. package/parameters/manual.js +1 -8
  242. package/parameters/manual.js.map +1 -1
  243. package/parameters/path.js +0 -11
  244. package/parameters/path.js.map +1 -1
  245. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  246. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  247. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  248. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  249. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  250. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  251. package/plugins/CmsGroupPlugin.js +0 -8
  252. package/plugins/CmsGroupPlugin.js.map +1 -1
  253. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  254. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  255. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  256. package/plugins/CmsModelPlugin.d.ts +19 -3
  257. package/plugins/CmsModelPlugin.js +30 -40
  258. package/plugins/CmsModelPlugin.js.map +1 -1
  259. package/plugins/CmsParametersPlugin.js +0 -7
  260. package/plugins/CmsParametersPlugin.js.map +1 -1
  261. package/plugins/StorageTransformPlugin.d.ts +11 -11
  262. package/plugins/StorageTransformPlugin.js +0 -9
  263. package/plugins/StorageTransformPlugin.js.map +1 -1
  264. package/plugins/index.d.ts +2 -0
  265. package/plugins/index.js +22 -10
  266. package/plugins/index.js.map +1 -1
  267. package/storage/default.js +0 -3
  268. package/storage/default.js.map +1 -1
  269. package/storage/object.js +4 -20
  270. package/storage/object.js.map +1 -1
  271. package/types.d.ts +309 -81
  272. package/types.js +63 -70
  273. package/types.js.map +1 -1
  274. package/utils/access.js +11 -25
  275. package/utils/access.js.map +1 -1
  276. package/utils/converters/Converter.js +0 -13
  277. package/utils/converters/Converter.js.map +1 -1
  278. package/utils/converters/ConverterCollection.js +14 -34
  279. package/utils/converters/ConverterCollection.js.map +1 -1
  280. package/utils/converters/valueKeyStorageConverter.d.ts +2 -2
  281. package/utils/converters/valueKeyStorageConverter.js +8 -27
  282. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  283. package/utils/createTypeFromFields.d.ts +16 -0
  284. package/utils/createTypeFromFields.js +67 -0
  285. package/utils/createTypeFromFields.js.map +1 -0
  286. package/utils/createTypeName.js +2 -9
  287. package/utils/createTypeName.js.map +1 -1
  288. package/utils/entryStorage.js +22 -35
  289. package/utils/entryStorage.js.map +1 -1
  290. package/utils/filterAsync.js +0 -5
  291. package/utils/filterAsync.js.map +1 -1
  292. package/utils/getBaseFieldType.d.ts +4 -0
  293. package/utils/getBaseFieldType.js +10 -0
  294. package/utils/getBaseFieldType.js.map +1 -0
  295. package/utils/getEntryDescription.d.ts +2 -0
  296. package/utils/getEntryDescription.js +17 -0
  297. package/utils/getEntryDescription.js.map +1 -0
  298. package/utils/getEntryImage.d.ts +2 -0
  299. package/utils/getEntryImage.js +17 -0
  300. package/utils/getEntryImage.js.map +1 -0
  301. package/utils/getEntryTitle.js +0 -9
  302. package/utils/getEntryTitle.js.map +1 -1
  303. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  304. package/utils/getSchemaFromFieldPlugins.js +23 -19
  305. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  306. package/utils/incrementEntryIdVersion.d.ts +5 -0
  307. package/utils/incrementEntryIdVersion.js +29 -0
  308. package/utils/incrementEntryIdVersion.js.map +1 -0
  309. package/utils/ownership.d.ts +3 -3
  310. package/utils/ownership.js +0 -8
  311. package/utils/ownership.js.map +1 -1
  312. package/utils/permissions.js +8 -23
  313. package/utils/permissions.js.map +1 -1
  314. package/utils/renderFields.d.ts +2 -1
  315. package/utils/renderFields.js +10 -10
  316. package/utils/renderFields.js.map +1 -1
  317. package/utils/renderGetFilterFields.js +6 -14
  318. package/utils/renderGetFilterFields.js.map +1 -1
  319. package/utils/renderInputFields.d.ts +2 -1
  320. package/utils/renderInputFields.js +6 -9
  321. package/utils/renderInputFields.js.map +1 -1
  322. package/utils/renderListFilterFields.js +2 -9
  323. package/utils/renderListFilterFields.js.map +1 -1
  324. package/utils/renderSortEnum.d.ts +7 -4
  325. package/utils/renderSortEnum.js +21 -11
  326. package/utils/renderSortEnum.js.map +1 -1
  327. package/utils/toSlug.js +0 -4
  328. package/utils/toSlug.js.map +1 -1
  329. package/validators/dateGte.js +0 -7
  330. package/validators/dateGte.js.map +1 -1
  331. package/validators/dateLte.js +0 -7
  332. package/validators/dateLte.js.map +1 -1
  333. package/validators/dynamicZone.d.ts +2 -0
  334. package/validators/dynamicZone.js +20 -0
  335. package/validators/dynamicZone.js.map +1 -0
  336. package/validators/gte.js +0 -8
  337. package/validators/gte.js.map +1 -1
  338. package/validators/in.js +0 -8
  339. package/validators/in.js.map +1 -1
  340. package/validators/index.js +2 -16
  341. package/validators/index.js.map +1 -1
  342. package/validators/lte.js +0 -8
  343. package/validators/lte.js.map +1 -1
  344. package/validators/maxLength.js +0 -8
  345. package/validators/maxLength.js.map +1 -1
  346. package/validators/minLength.js +0 -8
  347. package/validators/minLength.js.map +1 -1
  348. package/validators/pattern.js +0 -9
  349. package/validators/pattern.js.map +1 -1
  350. package/validators/patternPlugins/email.js +0 -2
  351. package/validators/patternPlugins/email.js.map +1 -1
  352. package/validators/patternPlugins/index.js +0 -8
  353. package/validators/patternPlugins/index.js.map +1 -1
  354. package/validators/patternPlugins/lowerCase.js +0 -2
  355. package/validators/patternPlugins/lowerCase.js.map +1 -1
  356. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  357. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  358. package/validators/patternPlugins/upperCase.js +0 -2
  359. package/validators/patternPlugins/upperCase.js.map +1 -1
  360. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  361. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  362. package/validators/patternPlugins/url.js +0 -2
  363. package/validators/patternPlugins/url.js.map +1 -1
  364. package/validators/required.js +0 -5
  365. package/validators/required.js.map +1 -1
  366. package/validators/timeGte.js +0 -8
  367. package/validators/timeGte.js.map +1 -1
  368. package/validators/timeLte.js +0 -8
  369. package/validators/timeLte.js.map +1 -1
  370. package/validators/unique.js +0 -7
  371. package/validators/unique.js.map +1 -1
  372. package/crud/index.d.ts +0 -6
  373. package/crud/index.js +0 -85
  374. package/crud/index.js.map +0 -1
  375. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  376. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  377. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  378. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  379. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  380. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  381. package/utils/filterModelFields.d.ts +0 -16
  382. package/utils/filterModelFields.js +0 -77
  383. package/utils/filterModelFields.js.map +0 -1
@@ -1,78 +1,29 @@
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.createModelGroupsCrud = void 0;
9
-
10
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _fields = require("@commodo/fields");
13
-
14
- var _validation = require("@webiny/validation");
15
-
9
+ var _dataloader = _interopRequireDefault(require("dataloader"));
16
10
  var _mdbid = _interopRequireDefault(require("mdbid"));
17
-
18
- var _handlerGraphql = require("@webiny/handler-graphql");
19
-
20
11
  var _error = _interopRequireDefault(require("@webiny/error"));
21
-
12
+ var _handlerGraphql = require("@webiny/handler-graphql");
22
13
  var _CmsGroupPlugin = require("../plugins/CmsGroupPlugin");
23
-
24
14
  var _pubsub = require("@webiny/pubsub");
25
-
26
15
  var _beforeUpdate = require("./contentModelGroup/beforeUpdate");
27
-
28
16
  var _beforeCreate = require("./contentModelGroup/beforeCreate");
29
-
30
17
  var _beforeDelete = require("./contentModelGroup/beforeDelete");
31
-
32
- var _dataloader = _interopRequireDefault(require("dataloader"));
33
-
34
18
  var _permissions = require("../utils/permissions");
35
-
36
19
  var _ownership = require("../utils/ownership");
37
-
38
20
  var _access = require("../utils/access");
39
-
40
- var _toSlug = require("../utils/toSlug");
41
-
42
- /**
43
- * Package @commodo/fields does not have types.
44
- */
45
- // @ts-ignore
46
-
21
+ var _validation = require("./contentModelGroup/validation");
22
+ var _utils = require("@webiny/utils");
47
23
  /**
48
24
  * Package mdbid does not have types.
49
25
  */
50
26
  // @ts-ignore
51
- const CreateContentModelGroupModel = (0, _fields.withFields)({
52
- name: (0, _fields.string)({
53
- validation: _validation.validation.create("required,maxLength:100")
54
- }),
55
- slug: (0, _fields.string)({
56
- validation: _validation.validation.create("maxLength:100")
57
- }),
58
- description: (0, _fields.string)({
59
- validation: _validation.validation.create("maxLength:255")
60
- }),
61
- icon: (0, _fields.string)({
62
- validation: _validation.validation.create("required,maxLength:255")
63
- })
64
- })();
65
- const UpdateContentModelGroupModel = (0, _fields.withFields)({
66
- name: (0, _fields.string)({
67
- validation: _validation.validation.create("maxLength:100")
68
- }),
69
- description: (0, _fields.string)({
70
- validation: _validation.validation.create("maxLength:255")
71
- }),
72
- icon: (0, _fields.string)({
73
- validation: _validation.validation.create("maxLength:255")
74
- })
75
- })();
76
27
 
77
28
  const createModelGroupsCrud = params => {
78
29
  const {
@@ -101,13 +52,11 @@ const createModelGroupsCrud = params => {
101
52
  return [groups.concat(pluginsGroups)];
102
53
  })
103
54
  };
104
-
105
55
  const clearGroupsCache = () => {
106
56
  for (const loader of Object.values(dataLoaders)) {
107
57
  loader.clearAll();
108
58
  }
109
59
  };
110
-
111
60
  const getGroupsAsPlugins = () => {
112
61
  const tenant = getTenant().id;
113
62
  const locale = getLocale().code;
@@ -115,19 +64,16 @@ const createModelGroupsCrud = params => {
115
64
  /**
116
65
  * We need to filter out groups that are not for this tenant or locale.
117
66
  * If it does not have tenant or locale define, it is for every locale and tenant
118
- */
119
- .filter(plugin => {
67
+ */.filter(plugin => {
120
68
  const {
121
69
  tenant: t,
122
70
  locale: l
123
71
  } = plugin.contentModelGroup;
124
-
125
72
  if (t && t !== tenant) {
126
73
  return false;
127
74
  } else if (l && l !== locale) {
128
75
  return false;
129
76
  }
130
-
131
77
  return true;
132
78
  }).map(plugin => {
133
79
  return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModelGroup), {}, {
@@ -137,29 +83,23 @@ const createModelGroupsCrud = params => {
137
83
  });
138
84
  });
139
85
  };
140
-
141
86
  const checkPermissions = check => {
142
87
  return (0, _permissions.checkPermissions)(context, "cms.contentModelGroup", {
143
88
  rwd: check
144
89
  });
145
90
  };
146
-
147
- const groupsGet = async id => {
91
+ const getGroupViaDataLoader = async id => {
148
92
  const groups = await dataLoaders.listGroups.load("listGroups");
149
93
  const group = groups.find(g => g.id === id);
150
-
151
94
  if (!group) {
152
95
  throw new _handlerGraphql.NotFoundError(`Cms Group "${id}" was not found!`);
153
96
  }
154
-
155
97
  return group;
156
98
  };
157
-
158
- const groupsList = async params => {
99
+ const listGroupsViaDataLoader = async params => {
159
100
  const {
160
101
  where
161
102
  } = params || {};
162
-
163
103
  try {
164
104
  return await dataLoaders.listGroups.load("listGroups");
165
105
  } catch (ex) {
@@ -167,21 +107,30 @@ const createModelGroupsCrud = params => {
167
107
  where
168
108
  }));
169
109
  }
170
- }; // create
171
-
110
+ };
172
111
 
112
+ /**
113
+ * Create
114
+ */
173
115
  const onGroupBeforeCreate = (0, _pubsub.createTopic)("cms.onGroupBeforeCreate");
174
- const onGroupAfterCreate = (0, _pubsub.createTopic)("cms.onGroupAfterCreate"); // update
175
-
116
+ const onGroupAfterCreate = (0, _pubsub.createTopic)("cms.onGroupAfterCreate");
117
+ const onGroupCreateError = (0, _pubsub.createTopic)("cms.onGroupCreateError");
118
+ /**
119
+ * Update
120
+ */
176
121
  const onGroupBeforeUpdate = (0, _pubsub.createTopic)("cms.onGroupBeforeUpdate");
177
- const onGroupAfterUpdate = (0, _pubsub.createTopic)("cms.onGroupAfterUpdate"); // delete
178
-
122
+ const onGroupAfterUpdate = (0, _pubsub.createTopic)("cms.onGroupAfterUpdate");
123
+ const onGroupUpdateError = (0, _pubsub.createTopic)("cms.onGroupUpdateError");
124
+ /**
125
+ * Delete
126
+ */
179
127
  const onGroupBeforeDelete = (0, _pubsub.createTopic)("cms.onGroupBeforeDelete");
180
128
  const onGroupAfterDelete = (0, _pubsub.createTopic)("cms.onGroupAfterDelete");
129
+ const onGroupDeleteError = (0, _pubsub.createTopic)("cms.onGroupDeleteError");
130
+
181
131
  /**
182
132
  * We need to assign some default behaviors.
183
133
  */
184
-
185
134
  (0, _beforeCreate.assignBeforeGroupCreate)({
186
135
  onGroupBeforeCreate,
187
136
  plugins: context.plugins,
@@ -196,6 +145,160 @@ const createModelGroupsCrud = params => {
196
145
  plugins: context.plugins,
197
146
  storageOperations
198
147
  });
148
+ /**
149
+ * CRUD Methods
150
+ */
151
+ const getGroup = async id => {
152
+ const permission = await checkPermissions("r");
153
+ const group = await getGroupViaDataLoader(id);
154
+ (0, _ownership.checkOwnership)(context, permission, group);
155
+ (0, _access.validateGroupAccess)(context, permission, group);
156
+ return group;
157
+ };
158
+ const listGroups = async params => {
159
+ const {
160
+ where
161
+ } = params || {};
162
+ const {
163
+ tenant,
164
+ locale
165
+ } = where || {};
166
+ const permission = await checkPermissions("r");
167
+ const response = await listGroupsViaDataLoader((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params || {}), {}, {
168
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where || {}), {}, {
169
+ tenant: tenant || getTenant().id,
170
+ locale: locale || getLocale().code
171
+ })
172
+ }));
173
+ return response.filter(group => {
174
+ if (!(0, _ownership.validateOwnership)(context, permission, group)) {
175
+ return false;
176
+ }
177
+ return (0, _access.validateGroupAccess)(context, permission, group);
178
+ });
179
+ };
180
+ const createGroup = async input => {
181
+ await checkPermissions("w");
182
+ const result = await (0, _validation.createGroupCreateValidation)().safeParseAsync(input);
183
+ if (!result.success) {
184
+ throw (0, _utils.createZodError)(result.error);
185
+ }
186
+ const data = result.data;
187
+ const identity = getIdentity();
188
+ const id = (0, _mdbid.default)();
189
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
190
+ id,
191
+ tenant: getTenant().id,
192
+ locale: getLocale().code,
193
+ createdOn: new Date().toISOString(),
194
+ savedOn: new Date().toISOString(),
195
+ createdBy: {
196
+ id: identity.id,
197
+ displayName: identity.displayName,
198
+ type: identity.type
199
+ },
200
+ webinyVersion: context.WEBINY_VERSION
201
+ });
202
+ try {
203
+ await onGroupBeforeCreate.publish({
204
+ group
205
+ });
206
+ const result = await storageOperations.groups.create({
207
+ group
208
+ });
209
+ clearGroupsCache();
210
+ await onGroupAfterCreate.publish({
211
+ group: result
212
+ });
213
+ return group;
214
+ } catch (ex) {
215
+ await onGroupCreateError.publish({
216
+ input,
217
+ group,
218
+ error: ex
219
+ });
220
+ throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
221
+ group,
222
+ input
223
+ }));
224
+ }
225
+ };
226
+ const updateGroup = async (id, input) => {
227
+ const permission = await checkPermissions("w");
228
+ const original = await getGroupViaDataLoader(id);
229
+ (0, _ownership.checkOwnership)(context, permission, original);
230
+ const result = await (0, _validation.createGroupUpdateValidation)().safeParseAsync(input);
231
+ if (!result.success) {
232
+ throw (0, _utils.createZodError)(result.error);
233
+ }
234
+ const data = result.data;
235
+
236
+ /**
237
+ * No need to continue if no values were changed
238
+ */
239
+ if (Object.keys(data).length === 0) {
240
+ return original;
241
+ }
242
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
243
+ locale: getLocale().code,
244
+ tenant: getTenant().id,
245
+ savedOn: new Date().toISOString()
246
+ });
247
+ try {
248
+ await onGroupBeforeUpdate.publish({
249
+ original,
250
+ group
251
+ });
252
+ const updatedGroup = await storageOperations.groups.update({
253
+ group
254
+ });
255
+ clearGroupsCache();
256
+ await onGroupAfterUpdate.publish({
257
+ original,
258
+ group: updatedGroup
259
+ });
260
+ return updatedGroup;
261
+ } catch (ex) {
262
+ await onGroupUpdateError.publish({
263
+ input,
264
+ original,
265
+ group,
266
+ error: ex
267
+ });
268
+ throw new _error.default(ex.message, ex.code || "UPDATE_ERROR", {
269
+ error: ex,
270
+ original,
271
+ group,
272
+ input
273
+ });
274
+ }
275
+ };
276
+ const deleteGroup = async id => {
277
+ const permission = await checkPermissions("d");
278
+ const group = await getGroupViaDataLoader(id);
279
+ (0, _ownership.checkOwnership)(context, permission, group);
280
+ try {
281
+ await onGroupBeforeDelete.publish({
282
+ group
283
+ });
284
+ await storageOperations.groups.delete({
285
+ group
286
+ });
287
+ clearGroupsCache();
288
+ await onGroupAfterDelete.publish({
289
+ group
290
+ });
291
+ } catch (ex) {
292
+ await onGroupDeleteError.publish({
293
+ group,
294
+ error: ex
295
+ });
296
+ throw new _error.default(ex.message, ex.code || "DELETE_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
297
+ id
298
+ }));
299
+ }
300
+ return true;
301
+ };
199
302
  return {
200
303
  /**
201
304
  * Deprecated - will be removed in 5.36.0
@@ -206,161 +309,44 @@ const createModelGroupsCrud = params => {
206
309
  onAfterGroupUpdate: onGroupAfterUpdate,
207
310
  onBeforeGroupDelete: onGroupBeforeDelete,
208
311
  onAfterGroupDelete: onGroupAfterDelete,
209
-
210
312
  /**
211
313
  * Released in 5.34.0
212
314
  */
213
315
  onGroupBeforeCreate,
214
316
  onGroupAfterCreate,
317
+ onGroupCreateError,
215
318
  onGroupBeforeUpdate,
216
319
  onGroupAfterUpdate,
320
+ onGroupUpdateError,
217
321
  onGroupBeforeDelete,
218
322
  onGroupAfterDelete,
323
+ onGroupDeleteError,
219
324
  clearGroupsCache,
220
325
  getGroup: async id => {
221
- const permission = await checkPermissions("r");
222
- const group = await groupsGet(id);
223
- (0, _ownership.checkOwnership)(context, permission, group);
224
- (0, _access.validateGroupAccess)(context, permission, group);
225
- return group;
326
+ return context.benchmark.measure("headlessCms.crud.groups.getGroup", async () => {
327
+ return getGroup(id);
328
+ });
226
329
  },
227
330
  listGroups: async params => {
228
- const {
229
- where
230
- } = params || {};
231
- const {
232
- tenant,
233
- locale
234
- } = where || {};
235
- const permission = await checkPermissions("r");
236
- const response = await groupsList((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params || {}), {}, {
237
- where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where || {}), {}, {
238
- tenant: tenant || getTenant().id,
239
- locale: locale || getLocale().code
240
- })
241
- }));
242
- return response.filter(group => {
243
- if (!(0, _ownership.validateOwnership)(context, permission, group)) {
244
- return false;
245
- }
246
-
247
- return (0, _access.validateGroupAccess)(context, permission, group);
331
+ return context.benchmark.measure("headlessCms.crud.groups.listGroups", async () => {
332
+ return listGroups(params);
248
333
  });
249
334
  },
250
- createGroup: async inputData => {
251
- await checkPermissions("w");
252
- const createdData = new CreateContentModelGroupModel().populate((0, _objectSpread2.default)((0, _objectSpread2.default)({}, inputData), {}, {
253
- slug: inputData.slug ? (0, _toSlug.toSlug)(inputData.slug) : "",
254
- description: inputData.description || ""
255
- }));
256
- await createdData.validate();
257
- const input = await createdData.toJSON();
258
- const identity = getIdentity();
259
- const id = (0, _mdbid.default)();
260
- const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
261
- id,
262
- tenant: getTenant().id,
263
- locale: getLocale().code,
264
- createdOn: new Date().toISOString(),
265
- savedOn: new Date().toISOString(),
266
- createdBy: {
267
- id: identity.id,
268
- displayName: identity.displayName,
269
- type: identity.type
270
- },
271
- webinyVersion: context.WEBINY_VERSION
335
+ createGroup: async input => {
336
+ return context.benchmark.measure("headlessCms.crud.groups.createGroup", async () => {
337
+ return createGroup(input);
272
338
  });
273
-
274
- try {
275
- await onGroupBeforeCreate.publish({
276
- group
277
- });
278
- const result = await storageOperations.groups.create({
279
- group
280
- });
281
- clearGroupsCache();
282
- await onGroupAfterCreate.publish({
283
- group: result
284
- });
285
- return group;
286
- } catch (ex) {
287
- throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
288
- group,
289
- input
290
- }));
291
- }
292
339
  },
293
- updateGroup: async (id, inputData) => {
294
- const permission = await checkPermissions("w");
295
- const original = await groupsGet(id);
296
- (0, _ownership.checkOwnership)(context, permission, original);
297
- const input = new UpdateContentModelGroupModel().populate(inputData);
298
- await input.validate();
299
- const updatedDataJson = await input.toJSON({
300
- onlyDirty: true
340
+ updateGroup: async (id, input) => {
341
+ return context.benchmark.measure("headlessCms.crud.groups.updateGroup", async () => {
342
+ return updateGroup(id, input);
301
343
  });
302
- /**
303
- * No need to continue if no values were changed
304
- */
305
-
306
- if (Object.keys(updatedDataJson).length === 0) {
307
- return original;
308
- }
309
-
310
- const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), updatedDataJson), {}, {
311
- locale: getLocale().code,
312
- tenant: getTenant().id,
313
- savedOn: new Date().toISOString()
314
- });
315
-
316
- try {
317
- await onGroupBeforeUpdate.publish({
318
- original,
319
- group
320
- });
321
- const updatedGroup = await storageOperations.groups.update({
322
- group
323
- });
324
- clearGroupsCache();
325
- await onGroupAfterUpdate.publish({
326
- original,
327
- group: updatedGroup
328
- });
329
- return updatedGroup;
330
- } catch (ex) {
331
- throw new _error.default(ex.message, ex.code || "UPDATE_ERROR", {
332
- error: ex,
333
- original,
334
- group,
335
- input
336
- });
337
- }
338
344
  },
339
345
  deleteGroup: async id => {
340
- const permission = await checkPermissions("d");
341
- const group = await groupsGet(id);
342
- (0, _ownership.checkOwnership)(context, permission, group);
343
-
344
- try {
345
- await onGroupBeforeDelete.publish({
346
- group
347
- });
348
- await storageOperations.groups.delete({
349
- group
350
- });
351
- clearGroupsCache();
352
- await onGroupAfterDelete.publish({
353
- group
354
- });
355
- } catch (ex) {
356
- throw new _error.default(ex.message, ex.code || "DELETE_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
357
- id
358
- }));
359
- }
360
-
361
- return true;
346
+ return context.benchmark.measure("headlessCms.crud.groups.deleteGroup", async () => {
347
+ return deleteGroup(id);
348
+ });
362
349
  }
363
350
  };
364
351
  };
365
-
366
352
  exports.createModelGroupsCrud = createModelGroupsCrud;
@@ -1 +1 @@
1
- {"version":3,"names":["CreateContentModelGroupModel","withFields","name","string","validation","create","slug","description","icon","UpdateContentModelGroupModel","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","baseCheckPermissions","rwd","groupsGet","load","find","g","NotFoundError","groupsList","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupBeforeDelete","onGroupAfterDelete","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","inputData","createdData","populate","toSlug","validate","input","toJSON","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","result","updateGroup","original","updatedDataJson","onlyDirty","keys","length","updatedGroup","update","error","deleteGroup","delete"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\n/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\n CmsGroupPermission,\n CmsGroup,\n CmsContext,\n HeadlessCmsStorageOperations,\n CmsGroupCreateInput,\n OnGroupBeforeCreateTopicParams,\n OnGroupAfterCreateTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupAfterDeleteTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport DataLoader from \"dataloader\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { validateGroupAccess } from \"~/utils/access\";\nimport { toSlug } from \"~/utils/toSlug\";\n\nconst CreateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"required,maxLength:100\") }),\n slug: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"required,maxLength:255\") })\n})();\n\nconst UpdateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"maxLength:255\") })\n})();\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\n\n const getGroupsAsPlugins = (): CmsGroup[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const checkPermissions = (check: string): Promise<CmsGroupPermission> => {\n return baseCheckPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n // create\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n // update\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n // delete\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeGroupCreate: onGroupBeforeCreate,\n onAfterGroupCreate: onGroupAfterCreate,\n onBeforeGroupUpdate: onGroupBeforeUpdate,\n onAfterGroupUpdate: onGroupAfterUpdate,\n onBeforeGroupDelete: onGroupBeforeDelete,\n onAfterGroupDelete: onGroupAfterDelete,\n /**\n * Released in 5.34.0\n */\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n clearGroupsCache,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n checkOwnership(context, permission, group);\n validateGroupAccess(context, permission, group);\n\n return group;\n },\n listGroups: async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n const permission = await checkPermissions(\"r\");\n\n const response = await groupsList({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return response.filter(group => {\n if (!validateOwnership(context, permission, group)) {\n return false;\n }\n return validateGroupAccess(context, permission, group);\n });\n },\n createGroup: async inputData => {\n await checkPermissions(\"w\");\n\n const createdData = new CreateContentModelGroupModel().populate({\n ...inputData,\n slug: inputData.slug ? toSlug(inputData.slug) : \"\",\n description: inputData.description || \"\"\n });\n await createdData.validate();\n const input: CmsGroupCreateInput & { slug: string; description: string } =\n await createdData.toJSON();\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...input,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n webinyVersion: context.WEBINY_VERSION\n };\n try {\n await onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n },\n updateGroup: async (id, inputData) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await groupsGet(id);\n\n checkOwnership(context, permission, original);\n\n const input = new UpdateContentModelGroupModel().populate(inputData);\n await input.validate();\n\n const updatedDataJson: Partial<CmsGroup> = await input.toJSON({\n onlyDirty: true\n });\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(updatedDataJson).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...updatedDataJson,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n },\n deleteGroup: async id => {\n const permission = await checkPermissions(\"d\");\n\n const group = await groupsGet(id);\n\n checkOwnership(context, permission, group);\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.publish({\n group\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","baseCheckPermissions","rwd","getGroupViaDataLoader","load","find","g","NotFoundError","listGroupsViaDataLoader","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","input","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","create","updateGroup","original","createGroupUpdateValidation","keys","length","updatedGroup","update","deleteGroup","delete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","benchmark","measure"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\n/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\n CmsGroupPermission,\n CmsGroup,\n CmsContext,\n HeadlessCmsStorageOperations,\n OnGroupBeforeCreateTopicParams,\n OnGroupAfterCreateTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupUpdateErrorTopicParams,\n OnGroupDeleteErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { validateGroupAccess } from \"~/utils/access\";\nimport {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError } from \"@webiny/utils\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\n\n const getGroupsAsPlugins = (): CmsGroup[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const checkPermissions = (check: string): Promise<CmsGroupPermission> => {\n return baseCheckPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const getGroupViaDataLoader = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const listGroupsViaDataLoader = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n /**\n * Create\n */\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n const onGroupCreateError = createTopic<OnGroupCreateErrorTopicParams>(\"cms.onGroupCreateError\");\n /**\n * Update\n */\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n const onGroupUpdateError = createTopic<OnGroupUpdateErrorTopicParams>(\"cms.onGroupUpdateError\");\n /**\n * Delete\n */\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n const onGroupDeleteError = createTopic<OnGroupDeleteErrorTopicParams>(\"cms.onGroupDeleteError\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n /**\n * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await getGroupViaDataLoader(id);\n checkOwnership(context, permission, group);\n validateGroupAccess(context, permission, group);\n\n return group;\n };\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n const permission = await checkPermissions(\"r\");\n\n const response = await listGroupsViaDataLoader({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return response.filter(group => {\n if (!validateOwnership(context, permission, group)) {\n return false;\n }\n return validateGroupAccess(context, permission, group);\n });\n };\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await checkPermissions(\"w\");\n\n const result = await createGroupCreateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...data,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n webinyVersion: context.WEBINY_VERSION\n };\n try {\n await onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n await onGroupCreateError.publish({\n input,\n group,\n error: ex\n });\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n };\n const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await getGroupViaDataLoader(id);\n\n checkOwnership(context, permission, original);\n\n const result = await createGroupUpdateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(data).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...data,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n await onGroupUpdateError.publish({\n input,\n original,\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n };\n const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n const permission = await checkPermissions(\"d\");\n\n const group = await getGroupViaDataLoader(id);\n\n checkOwnership(context, permission, group);\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.publish({\n group\n });\n } catch (ex) {\n await onGroupDeleteError.publish({\n group,\n error: ex\n });\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n };\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeGroupCreate: onGroupBeforeCreate,\n onAfterGroupCreate: onGroupAfterCreate,\n onBeforeGroupUpdate: onGroupBeforeUpdate,\n onAfterGroupUpdate: onGroupAfterUpdate,\n onBeforeGroupDelete: onGroupBeforeDelete,\n onAfterGroupDelete: onGroupAfterDelete,\n /**\n * Released in 5.34.0\n */\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupCreateError,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupUpdateError,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n onGroupDeleteError,\n clearGroupsCache,\n getGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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"}