@webiny/api-headless-cms 0.0.0-ee-vpcs.549378cf03

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 (435) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/context.d.ts +3 -0
  4. package/context.js +60 -0
  5. package/context.js.map +1 -0
  6. package/crud/contentEntry/afterDelete.d.ts +8 -0
  7. package/crud/contentEntry/afterDelete.js +41 -0
  8. package/crud/contentEntry/afterDelete.js.map +1 -0
  9. package/crud/contentEntry/beforeCreate.d.ts +8 -0
  10. package/crud/contentEntry/beforeCreate.js +28 -0
  11. package/crud/contentEntry/beforeCreate.js.map +1 -0
  12. package/crud/contentEntry/beforeUpdate.d.ts +8 -0
  13. package/crud/contentEntry/beforeUpdate.js +28 -0
  14. package/crud/contentEntry/beforeUpdate.js.map +1 -0
  15. package/crud/contentEntry/entryDataValidation.d.ts +10 -0
  16. package/crud/contentEntry/entryDataValidation.js +200 -0
  17. package/crud/contentEntry/entryDataValidation.js.map +1 -0
  18. package/crud/contentEntry/markLockedFields.d.ts +13 -0
  19. package/crud/contentEntry/markLockedFields.js +116 -0
  20. package/crud/contentEntry/markLockedFields.js.map +1 -0
  21. package/crud/contentEntry/referenceFieldsMapping.d.ts +13 -0
  22. package/crud/contentEntry/referenceFieldsMapping.js +292 -0
  23. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
  24. package/crud/contentEntry/searchableFields.d.ts +9 -0
  25. package/crud/contentEntry/searchableFields.js +83 -0
  26. package/crud/contentEntry/searchableFields.js.map +1 -0
  27. package/crud/contentEntry.crud.d.ts +13 -0
  28. package/crud/contentEntry.crud.js +1277 -0
  29. package/crud/contentEntry.crud.js.map +1 -0
  30. package/crud/contentModel/afterCreate.d.ts +8 -0
  31. package/crud/contentModel/afterCreate.js +18 -0
  32. package/crud/contentModel/afterCreate.js.map +1 -0
  33. package/crud/contentModel/afterCreateFrom.d.ts +8 -0
  34. package/crud/contentModel/afterCreateFrom.js +18 -0
  35. package/crud/contentModel/afterCreateFrom.js.map +1 -0
  36. package/crud/contentModel/afterDelete.d.ts +8 -0
  37. package/crud/contentModel/afterDelete.js +18 -0
  38. package/crud/contentModel/afterDelete.js.map +1 -0
  39. package/crud/contentModel/afterUpdate.d.ts +8 -0
  40. package/crud/contentModel/afterUpdate.js +18 -0
  41. package/crud/contentModel/afterUpdate.js.map +1 -0
  42. package/crud/contentModel/beforeCreate.d.ts +15 -0
  43. package/crud/contentModel/beforeCreate.js +194 -0
  44. package/crud/contentModel/beforeCreate.js.map +1 -0
  45. package/crud/contentModel/beforeDelete.d.ts +10 -0
  46. package/crud/contentModel/beforeDelete.js +60 -0
  47. package/crud/contentModel/beforeDelete.js.map +1 -0
  48. package/crud/contentModel/beforeUpdate.d.ts +10 -0
  49. package/crud/contentModel/beforeUpdate.js +37 -0
  50. package/crud/contentModel/beforeUpdate.js.map +1 -0
  51. package/crud/contentModel/contentModelManagerFactory.d.ts +2 -0
  52. package/crud/contentModel/contentModelManagerFactory.js +29 -0
  53. package/crud/contentModel/contentModelManagerFactory.js.map +1 -0
  54. package/crud/contentModel/createFieldModels.d.ts +2 -0
  55. package/crud/contentModel/createFieldModels.js +26 -0
  56. package/crud/contentModel/createFieldModels.js.map +1 -0
  57. package/crud/contentModel/createFieldStorageId.d.ts +2 -0
  58. package/crud/contentModel/createFieldStorageId.js +20 -0
  59. package/crud/contentModel/createFieldStorageId.js.map +1 -0
  60. package/crud/contentModel/fieldIdValidation.d.ts +1 -0
  61. package/crud/contentModel/fieldIdValidation.js +25 -0
  62. package/crud/contentModel/fieldIdValidation.js.map +1 -0
  63. package/crud/contentModel/idValidation.d.ts +1 -0
  64. package/crud/contentModel/idValidation.js +22 -0
  65. package/crud/contentModel/idValidation.js.map +1 -0
  66. package/crud/contentModel/models.d.ts +4 -0
  67. package/crud/contentModel/models.js +192 -0
  68. package/crud/contentModel/models.js.map +1 -0
  69. package/crud/contentModel/systemFields.d.ts +1 -0
  70. package/crud/contentModel/systemFields.js +8 -0
  71. package/crud/contentModel/systemFields.js.map +1 -0
  72. package/crud/contentModel/validateLayout.d.ts +2 -0
  73. package/crud/contentModel/validateLayout.js +36 -0
  74. package/crud/contentModel/validateLayout.js.map +1 -0
  75. package/crud/contentModel/validateModel.d.ts +9 -0
  76. package/crud/contentModel/validateModel.js +32 -0
  77. package/crud/contentModel/validateModel.js.map +1 -0
  78. package/crud/contentModel/validateModelFields.d.ts +9 -0
  79. package/crud/contentModel/validateModelFields.js +371 -0
  80. package/crud/contentModel/validateModelFields.js.map +1 -0
  81. package/crud/contentModel.crud.d.ts +12 -0
  82. package/crud/contentModel.crud.js +650 -0
  83. package/crud/contentModel.crud.js.map +1 -0
  84. package/crud/contentModelGroup/beforeCreate.d.ts +10 -0
  85. package/crud/contentModelGroup/beforeCreate.js +66 -0
  86. package/crud/contentModelGroup/beforeCreate.js.map +1 -0
  87. package/crud/contentModelGroup/beforeDelete.d.ts +10 -0
  88. package/crud/contentModelGroup/beforeDelete.js +48 -0
  89. package/crud/contentModelGroup/beforeDelete.js.map +1 -0
  90. package/crud/contentModelGroup/beforeUpdate.d.ts +9 -0
  91. package/crud/contentModelGroup/beforeUpdate.js +28 -0
  92. package/crud/contentModelGroup/beforeUpdate.js.map +1 -0
  93. package/crud/contentModelGroup.crud.d.ts +12 -0
  94. package/crud/contentModelGroup.crud.js +396 -0
  95. package/crud/contentModelGroup.crud.js.map +1 -0
  96. package/crud/index.d.ts +6 -0
  97. package/crud/index.js +85 -0
  98. package/crud/index.js.map +1 -0
  99. package/crud/settings.crud.d.ts +10 -0
  100. package/crud/settings.crud.js +83 -0
  101. package/crud/settings.crud.js.map +1 -0
  102. package/crud/system.crud.d.ts +13 -0
  103. package/crud/system.crud.js +221 -0
  104. package/crud/system.crud.js.map +1 -0
  105. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +7 -0
  106. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +66 -0
  107. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -0
  108. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  109. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
  110. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  111. package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +11 -0
  112. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +304 -0
  113. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -0
  114. package/fieldConverters/index.d.ts +4 -0
  115. package/fieldConverters/index.js +18 -0
  116. package/fieldConverters/index.js.map +1 -0
  117. package/graphql/buildSchemaPlugins.d.ts +6 -0
  118. package/graphql/buildSchemaPlugins.js +27 -0
  119. package/graphql/buildSchemaPlugins.js.map +1 -0
  120. package/graphql/graphQLHandlerFactory.d.ts +5 -0
  121. package/graphql/graphQLHandlerFactory.js +202 -0
  122. package/graphql/graphQLHandlerFactory.js.map +1 -0
  123. package/graphql/index.d.ts +5 -0
  124. package/graphql/index.js +57 -0
  125. package/graphql/index.js.map +1 -0
  126. package/graphql/schema/baseContentSchema.d.ts +3 -0
  127. package/graphql/schema/baseContentSchema.js +76 -0
  128. package/graphql/schema/baseContentSchema.js.map +1 -0
  129. package/graphql/schema/contentEntries.d.ts +3 -0
  130. package/graphql/schema/contentEntries.js +351 -0
  131. package/graphql/schema/contentEntries.js.map +1 -0
  132. package/graphql/schema/contentModelGroups.d.ts +3 -0
  133. package/graphql/schema/contentModelGroups.js +172 -0
  134. package/graphql/schema/contentModelGroups.js.map +1 -0
  135. package/graphql/schema/contentModels.d.ts +3 -0
  136. package/graphql/schema/contentModels.js +300 -0
  137. package/graphql/schema/contentModels.js.map +1 -0
  138. package/graphql/schema/createFieldResolvers.d.ts +20 -0
  139. package/graphql/schema/createFieldResolvers.js +121 -0
  140. package/graphql/schema/createFieldResolvers.js.map +1 -0
  141. package/graphql/schema/createManageResolvers.d.ts +12 -0
  142. package/graphql/schema/createManageResolvers.js +137 -0
  143. package/graphql/schema/createManageResolvers.js.map +1 -0
  144. package/graphql/schema/createManageSDL.d.ts +10 -0
  145. package/graphql/schema/createManageSDL.js +161 -0
  146. package/graphql/schema/createManageSDL.js.map +1 -0
  147. package/graphql/schema/createPreviewResolvers.d.ts +12 -0
  148. package/graphql/schema/createPreviewResolvers.js +58 -0
  149. package/graphql/schema/createPreviewResolvers.js.map +1 -0
  150. package/graphql/schema/createReadResolvers.d.ts +12 -0
  151. package/graphql/schema/createReadResolvers.js +58 -0
  152. package/graphql/schema/createReadResolvers.js.map +1 -0
  153. package/graphql/schema/createReadSDL.d.ts +10 -0
  154. package/graphql/schema/createReadSDL.js +104 -0
  155. package/graphql/schema/createReadSDL.js.map +1 -0
  156. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +6 -0
  157. package/graphql/schema/resolvers/commonFieldResolvers.js +14 -0
  158. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -0
  159. package/graphql/schema/resolvers/manage/resolveCreate.d.ts +7 -0
  160. package/graphql/schema/resolvers/manage/resolveCreate.js +21 -0
  161. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -0
  162. package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +8 -0
  163. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +21 -0
  164. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
  165. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +7 -0
  166. package/graphql/schema/resolvers/manage/resolveDelete.js +32 -0
  167. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -0
  168. package/graphql/schema/resolvers/manage/resolveGet.d.ts +7 -0
  169. package/graphql/schema/resolvers/manage/resolveGet.js +79 -0
  170. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -0
  171. package/graphql/schema/resolvers/manage/resolveGetByIds.d.ts +7 -0
  172. package/graphql/schema/resolvers/manage/resolveGetByIds.js +21 -0
  173. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
  174. package/graphql/schema/resolvers/manage/resolveGetRevisions.d.ts +7 -0
  175. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +21 -0
  176. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
  177. package/graphql/schema/resolvers/manage/resolveList.d.ts +4 -0
  178. package/graphql/schema/resolvers/manage/resolveList.js +21 -0
  179. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -0
  180. package/graphql/schema/resolvers/manage/resolvePublish.d.ts +7 -0
  181. package/graphql/schema/resolvers/manage/resolvePublish.js +21 -0
  182. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -0
  183. package/graphql/schema/resolvers/manage/resolveRepublish.d.ts +7 -0
  184. package/graphql/schema/resolvers/manage/resolveRepublish.js +21 -0
  185. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -0
  186. package/graphql/schema/resolvers/manage/resolveUnpublish.d.ts +7 -0
  187. package/graphql/schema/resolvers/manage/resolveUnpublish.js +21 -0
  188. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
  189. package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +8 -0
  190. package/graphql/schema/resolvers/manage/resolveUpdate.js +21 -0
  191. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -0
  192. package/graphql/schema/resolvers/preview/resolveGet.d.ts +4 -0
  193. package/graphql/schema/resolvers/preview/resolveGet.js +34 -0
  194. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -0
  195. package/graphql/schema/resolvers/preview/resolveList.d.ts +4 -0
  196. package/graphql/schema/resolvers/preview/resolveList.js +21 -0
  197. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -0
  198. package/graphql/schema/resolvers/read/resolveGet.d.ts +4 -0
  199. package/graphql/schema/resolvers/read/resolveGet.js +34 -0
  200. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -0
  201. package/graphql/schema/resolvers/read/resolveList.d.ts +4 -0
  202. package/graphql/schema/resolvers/read/resolveList.js +21 -0
  203. package/graphql/schema/resolvers/read/resolveList.js.map +1 -0
  204. package/graphql/schema/schemaPlugins.d.ts +3 -0
  205. package/graphql/schema/schemaPlugins.js +111 -0
  206. package/graphql/schema/schemaPlugins.js.map +1 -0
  207. package/graphql/system.d.ts +6 -0
  208. package/graphql/system.js +119 -0
  209. package/graphql/system.js.map +1 -0
  210. package/graphqlFields/boolean.d.ts +2 -0
  211. package/graphqlFields/boolean.js +69 -0
  212. package/graphqlFields/boolean.js.map +1 -0
  213. package/graphqlFields/datetime.d.ts +2 -0
  214. package/graphqlFields/datetime.js +95 -0
  215. package/graphqlFields/datetime.js.map +1 -0
  216. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  217. package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
  218. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  219. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  220. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
  221. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  222. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  223. package/graphqlFields/dynamicZone/index.js +21 -0
  224. package/graphqlFields/dynamicZone/index.js.map +1 -0
  225. package/graphqlFields/file.d.ts +2 -0
  226. package/graphqlFields/file.js +50 -0
  227. package/graphqlFields/file.js.map +1 -0
  228. package/graphqlFields/helpers.d.ts +6 -0
  229. package/graphqlFields/helpers.js +49 -0
  230. package/graphqlFields/helpers.js.map +1 -0
  231. package/graphqlFields/index.d.ts +2 -0
  232. package/graphqlFields/index.js +30 -0
  233. package/graphqlFields/index.js.map +1 -0
  234. package/graphqlFields/longText.d.ts +2 -0
  235. package/graphqlFields/longText.js +63 -0
  236. package/graphqlFields/longText.js.map +1 -0
  237. package/graphqlFields/number.d.ts +2 -0
  238. package/graphqlFields/number.js +79 -0
  239. package/graphqlFields/number.js.map +1 -0
  240. package/graphqlFields/object.d.ts +2 -0
  241. package/graphqlFields/object.js +275 -0
  242. package/graphqlFields/object.js.map +1 -0
  243. package/graphqlFields/ref.d.ts +2 -0
  244. package/graphqlFields/ref.js +257 -0
  245. package/graphqlFields/ref.js.map +1 -0
  246. package/graphqlFields/richText.d.ts +2 -0
  247. package/graphqlFields/richText.js +56 -0
  248. package/graphqlFields/richText.js.map +1 -0
  249. package/graphqlFields/text.d.ts +2 -0
  250. package/graphqlFields/text.js +73 -0
  251. package/graphqlFields/text.js.map +1 -0
  252. package/index.d.ts +10 -0
  253. package/index.js +111 -0
  254. package/index.js.map +1 -0
  255. package/modelManager/DefaultCmsModelManager.d.ts +14 -0
  256. package/modelManager/DefaultCmsModelManager.js +64 -0
  257. package/modelManager/DefaultCmsModelManager.js.map +1 -0
  258. package/modelManager/index.d.ts +2 -0
  259. package/modelManager/index.js +20 -0
  260. package/modelManager/index.js.map +1 -0
  261. package/package.json +81 -0
  262. package/parameters/context.d.ts +2 -0
  263. package/parameters/context.js +22 -0
  264. package/parameters/context.js.map +1 -0
  265. package/parameters/header.d.ts +2 -0
  266. package/parameters/header.js +55 -0
  267. package/parameters/header.js.map +1 -0
  268. package/parameters/index.d.ts +4 -0
  269. package/parameters/index.js +57 -0
  270. package/parameters/index.js.map +1 -0
  271. package/parameters/manual.d.ts +6 -0
  272. package/parameters/manual.js +44 -0
  273. package/parameters/manual.js.map +1 -0
  274. package/parameters/path.d.ts +2 -0
  275. package/parameters/path.js +51 -0
  276. package/parameters/path.js.map +1 -0
  277. package/plugins/CmsGroupPlugin.d.ts +13 -0
  278. package/plugins/CmsGroupPlugin.js +30 -0
  279. package/plugins/CmsGroupPlugin.js.map +1 -0
  280. package/plugins/CmsModelFieldConverterPlugin.d.ts +14 -0
  281. package/plugins/CmsModelFieldConverterPlugin.js +17 -0
  282. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -0
  283. package/plugins/CmsModelPlugin.d.ts +45 -0
  284. package/plugins/CmsModelPlugin.js +194 -0
  285. package/plugins/CmsModelPlugin.js.map +1 -0
  286. package/plugins/CmsParametersPlugin.d.ts +20 -0
  287. package/plugins/CmsParametersPlugin.js +28 -0
  288. package/plugins/CmsParametersPlugin.js.map +1 -0
  289. package/plugins/StorageTransformPlugin.d.ts +31 -0
  290. package/plugins/StorageTransformPlugin.js +37 -0
  291. package/plugins/StorageTransformPlugin.js.map +1 -0
  292. package/plugins/index.d.ts +5 -0
  293. package/plugins/index.js +70 -0
  294. package/plugins/index.js.map +1 -0
  295. package/storage/default.d.ts +2 -0
  296. package/storage/default.js +27 -0
  297. package/storage/default.js.map +1 -0
  298. package/storage/object.d.ts +2 -0
  299. package/storage/object.js +127 -0
  300. package/storage/object.js.map +1 -0
  301. package/types.d.ts +2600 -0
  302. package/types.js +459 -0
  303. package/types.js.map +1 -0
  304. package/upgrades/5.33.0/index.d.ts +3 -0
  305. package/upgrades/5.33.0/index.js +182 -0
  306. package/upgrades/5.33.0/index.js.map +1 -0
  307. package/upgrades/index.d.ts +1 -0
  308. package/upgrades/index.js +12 -0
  309. package/upgrades/index.js.map +1 -0
  310. package/utils/access.d.ts +8 -0
  311. package/utils/access.js +90 -0
  312. package/utils/access.js.map +1 -0
  313. package/utils/converters/Converter.d.ts +27 -0
  314. package/utils/converters/Converter.js +71 -0
  315. package/utils/converters/Converter.js.map +1 -0
  316. package/utils/converters/ConverterCollection.d.ts +31 -0
  317. package/utils/converters/ConverterCollection.js +143 -0
  318. package/utils/converters/ConverterCollection.js.map +1 -0
  319. package/utils/converters/valueKeyStorageConverter.d.ts +18 -0
  320. package/utils/converters/valueKeyStorageConverter.js +148 -0
  321. package/utils/converters/valueKeyStorageConverter.js.map +1 -0
  322. package/utils/createTypeFromFields.d.ts +15 -0
  323. package/utils/createTypeFromFields.js +75 -0
  324. package/utils/createTypeFromFields.js.map +1 -0
  325. package/utils/createTypeName.d.ts +3 -0
  326. package/utils/createTypeName.js +30 -0
  327. package/utils/createTypeName.js.map +1 -0
  328. package/utils/entryStorage.d.ts +17 -0
  329. package/utils/entryStorage.js +120 -0
  330. package/utils/entryStorage.js.map +1 -0
  331. package/utils/filterAsync.d.ts +1 -0
  332. package/utils/filterAsync.js +23 -0
  333. package/utils/filterAsync.js.map +1 -0
  334. package/utils/filterModelFields.d.ts +16 -0
  335. package/utils/filterModelFields.js +77 -0
  336. package/utils/filterModelFields.js.map +1 -0
  337. package/utils/getBaseFieldType.d.ts +4 -0
  338. package/utils/getBaseFieldType.js +12 -0
  339. package/utils/getBaseFieldType.js.map +1 -0
  340. package/utils/getEntryTitle.d.ts +2 -0
  341. package/utils/getEntryTitle.js +43 -0
  342. package/utils/getEntryTitle.js.map +1 -0
  343. package/utils/getSchemaFromFieldPlugins.d.ts +12 -0
  344. package/utils/getSchemaFromFieldPlugins.js +35 -0
  345. package/utils/getSchemaFromFieldPlugins.js.map +1 -0
  346. package/utils/ownership.d.ts +8 -0
  347. package/utils/ownership.js +41 -0
  348. package/utils/ownership.js.map +1 -0
  349. package/utils/permissions.d.ts +7 -0
  350. package/utils/permissions.js +106 -0
  351. package/utils/permissions.js.map +1 -0
  352. package/utils/pluralizedTypeName.d.ts +1 -0
  353. package/utils/pluralizedTypeName.js +26 -0
  354. package/utils/pluralizedTypeName.js.map +1 -0
  355. package/utils/renderFields.d.ts +15 -0
  356. package/utils/renderFields.js +55 -0
  357. package/utils/renderFields.js.map +1 -0
  358. package/utils/renderGetFilterFields.d.ts +10 -0
  359. package/utils/renderGetFilterFields.js +61 -0
  360. package/utils/renderGetFilterFields.js.map +1 -0
  361. package/utils/renderInputFields.d.ts +14 -0
  362. package/utils/renderInputFields.js +55 -0
  363. package/utils/renderInputFields.js.map +1 -0
  364. package/utils/renderListFilterFields.d.ts +11 -0
  365. package/utils/renderListFilterFields.js +62 -0
  366. package/utils/renderListFilterFields.js.map +1 -0
  367. package/utils/renderSortEnum.d.ts +9 -0
  368. package/utils/renderSortEnum.js +34 -0
  369. package/utils/renderSortEnum.js.map +1 -0
  370. package/utils/toSlug.d.ts +1 -0
  371. package/utils/toSlug.js +20 -0
  372. package/utils/toSlug.js.map +1 -0
  373. package/validators/dateGte.d.ts +2 -0
  374. package/validators/dateGte.js +37 -0
  375. package/validators/dateGte.js.map +1 -0
  376. package/validators/dateLte.d.ts +2 -0
  377. package/validators/dateLte.js +37 -0
  378. package/validators/dateLte.js.map +1 -0
  379. package/validators/dynamicZone.d.ts +2 -0
  380. package/validators/dynamicZone.js +24 -0
  381. package/validators/dynamicZone.js.map +1 -0
  382. package/validators/gte.d.ts +2 -0
  383. package/validators/gte.js +36 -0
  384. package/validators/gte.js.map +1 -0
  385. package/validators/in.d.ts +2 -0
  386. package/validators/in.js +36 -0
  387. package/validators/in.js.map +1 -0
  388. package/validators/index.d.ts +1 -0
  389. package/validators/index.js +38 -0
  390. package/validators/index.js.map +1 -0
  391. package/validators/lte.d.ts +2 -0
  392. package/validators/lte.js +36 -0
  393. package/validators/lte.js.map +1 -0
  394. package/validators/maxLength.d.ts +2 -0
  395. package/validators/maxLength.js +36 -0
  396. package/validators/maxLength.js.map +1 -0
  397. package/validators/minLength.d.ts +2 -0
  398. package/validators/minLength.js +36 -0
  399. package/validators/minLength.js.map +1 -0
  400. package/validators/pattern.d.ts +2 -0
  401. package/validators/pattern.js +50 -0
  402. package/validators/pattern.js.map +1 -0
  403. package/validators/patternPlugins/email.d.ts +2 -0
  404. package/validators/patternPlugins/email.js +20 -0
  405. package/validators/patternPlugins/email.js.map +1 -0
  406. package/validators/patternPlugins/index.d.ts +2 -0
  407. package/validators/patternPlugins/index.js +24 -0
  408. package/validators/patternPlugins/index.js.map +1 -0
  409. package/validators/patternPlugins/lowerCase.d.ts +2 -0
  410. package/validators/patternPlugins/lowerCase.js +20 -0
  411. package/validators/patternPlugins/lowerCase.js.map +1 -0
  412. package/validators/patternPlugins/lowerCaseSpace.d.ts +2 -0
  413. package/validators/patternPlugins/lowerCaseSpace.js +20 -0
  414. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  415. package/validators/patternPlugins/upperCase.d.ts +2 -0
  416. package/validators/patternPlugins/upperCase.js +20 -0
  417. package/validators/patternPlugins/upperCase.js.map +1 -0
  418. package/validators/patternPlugins/upperCaseSpace.d.ts +2 -0
  419. package/validators/patternPlugins/upperCaseSpace.js +20 -0
  420. package/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  421. package/validators/patternPlugins/url.d.ts +2 -0
  422. package/validators/patternPlugins/url.js +20 -0
  423. package/validators/patternPlugins/url.js.map +1 -0
  424. package/validators/required.d.ts +2 -0
  425. package/validators/required.js +27 -0
  426. package/validators/required.js.map +1 -0
  427. package/validators/timeGte.d.ts +2 -0
  428. package/validators/timeGte.js +34 -0
  429. package/validators/timeGte.js.map +1 -0
  430. package/validators/timeLte.d.ts +2 -0
  431. package/validators/timeLte.js +34 -0
  432. package/validators/timeLte.js.map +1 -0
  433. package/validators/unique.d.ts +6 -0
  434. package/validators/unique.js +63 -0
  435. package/validators/unique.js.map +1 -0
@@ -0,0 +1,396 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createModelGroupsCrud = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _fields = require("@commodo/fields");
13
+
14
+ var _validation = require("@webiny/validation");
15
+
16
+ var _mdbid = _interopRequireDefault(require("mdbid"));
17
+
18
+ var _handlerGraphql = require("@webiny/handler-graphql");
19
+
20
+ var _error = _interopRequireDefault(require("@webiny/error"));
21
+
22
+ var _CmsGroupPlugin = require("../plugins/CmsGroupPlugin");
23
+
24
+ var _pubsub = require("@webiny/pubsub");
25
+
26
+ var _beforeUpdate = require("./contentModelGroup/beforeUpdate");
27
+
28
+ var _beforeCreate = require("./contentModelGroup/beforeCreate");
29
+
30
+ var _beforeDelete = require("./contentModelGroup/beforeDelete");
31
+
32
+ var _dataloader = _interopRequireDefault(require("dataloader"));
33
+
34
+ var _permissions = require("../utils/permissions");
35
+
36
+ var _ownership = require("../utils/ownership");
37
+
38
+ 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
+
47
+ /**
48
+ * Package mdbid does not have types.
49
+ */
50
+ // @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
+
77
+ const createModelGroupsCrud = params => {
78
+ const {
79
+ getTenant,
80
+ getIdentity,
81
+ getLocale,
82
+ storageOperations,
83
+ context
84
+ } = params;
85
+ const dataLoaders = {
86
+ listGroups: new _dataloader.default(async () => {
87
+ const tenant = getTenant().id;
88
+ const locale = getLocale().code;
89
+ const pluginsGroups = getGroupsAsPlugins().map(group => {
90
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, group), {}, {
91
+ tenant: group.tenant || tenant,
92
+ locale: group.locale || locale
93
+ });
94
+ });
95
+ const groups = await storageOperations.groups.list({
96
+ where: {
97
+ tenant: getTenant().id,
98
+ locale: getLocale().code
99
+ }
100
+ });
101
+ return [groups.concat(pluginsGroups)];
102
+ })
103
+ };
104
+
105
+ const clearGroupsCache = () => {
106
+ for (const loader of Object.values(dataLoaders)) {
107
+ loader.clearAll();
108
+ }
109
+ };
110
+
111
+ const getGroupsAsPlugins = () => {
112
+ const tenant = getTenant().id;
113
+ const locale = getLocale().code;
114
+ return context.plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type)
115
+ /**
116
+ * We need to filter out groups that are not for this tenant or locale.
117
+ * If it does not have tenant or locale define, it is for every locale and tenant
118
+ */
119
+ .filter(plugin => {
120
+ const {
121
+ tenant: t,
122
+ locale: l
123
+ } = plugin.contentModelGroup;
124
+
125
+ if (t && t !== tenant) {
126
+ return false;
127
+ } else if (l && l !== locale) {
128
+ return false;
129
+ }
130
+
131
+ return true;
132
+ }).map(plugin => {
133
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModelGroup), {}, {
134
+ tenant,
135
+ locale,
136
+ webinyVersion: context.WEBINY_VERSION
137
+ });
138
+ });
139
+ };
140
+
141
+ const checkPermissions = check => {
142
+ return (0, _permissions.checkPermissions)(context, "cms.contentModelGroup", {
143
+ rwd: check
144
+ });
145
+ };
146
+
147
+ const groupsGet = async id => {
148
+ const groups = await dataLoaders.listGroups.load("listGroups");
149
+ const group = groups.find(g => g.id === id);
150
+
151
+ if (!group) {
152
+ throw new _handlerGraphql.NotFoundError(`Cms Group "${id}" was not found!`);
153
+ }
154
+
155
+ return group;
156
+ };
157
+
158
+ const groupsList = async params => {
159
+ const {
160
+ where
161
+ } = params || {};
162
+
163
+ try {
164
+ return await dataLoaders.listGroups.load("listGroups");
165
+ } catch (ex) {
166
+ throw new _error.default(ex.message, ex.code || "LIST_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
167
+ where
168
+ }));
169
+ }
170
+ };
171
+ /**
172
+ * Create
173
+ */
174
+
175
+
176
+ const onGroupBeforeCreate = (0, _pubsub.createTopic)("cms.onGroupBeforeCreate");
177
+ const onGroupAfterCreate = (0, _pubsub.createTopic)("cms.onGroupAfterCreate");
178
+ const onGroupCreateError = (0, _pubsub.createTopic)("cms.onGroupCreateError");
179
+ /**
180
+ * Update
181
+ */
182
+
183
+ const onGroupBeforeUpdate = (0, _pubsub.createTopic)("cms.onGroupBeforeUpdate");
184
+ const onGroupAfterUpdate = (0, _pubsub.createTopic)("cms.onGroupAfterUpdate");
185
+ const onGroupUpdateError = (0, _pubsub.createTopic)("cms.onGroupUpdateError");
186
+ /**
187
+ * Delete
188
+ */
189
+
190
+ const onGroupBeforeDelete = (0, _pubsub.createTopic)("cms.onGroupBeforeDelete");
191
+ const onGroupAfterDelete = (0, _pubsub.createTopic)("cms.onGroupAfterDelete");
192
+ const onGroupDeleteError = (0, _pubsub.createTopic)("cms.onGroupDeleteError");
193
+ /**
194
+ * We need to assign some default behaviors.
195
+ */
196
+
197
+ (0, _beforeCreate.assignBeforeGroupCreate)({
198
+ onGroupBeforeCreate,
199
+ plugins: context.plugins,
200
+ storageOperations
201
+ });
202
+ (0, _beforeUpdate.assignBeforeGroupUpdate)({
203
+ onGroupBeforeUpdate,
204
+ plugins: context.plugins
205
+ });
206
+ (0, _beforeDelete.assignBeforeGroupDelete)({
207
+ onGroupBeforeDelete,
208
+ plugins: context.plugins,
209
+ storageOperations
210
+ });
211
+ return {
212
+ /**
213
+ * Deprecated - will be removed in 5.36.0
214
+ */
215
+ onBeforeGroupCreate: onGroupBeforeCreate,
216
+ onAfterGroupCreate: onGroupAfterCreate,
217
+ onBeforeGroupUpdate: onGroupBeforeUpdate,
218
+ onAfterGroupUpdate: onGroupAfterUpdate,
219
+ onBeforeGroupDelete: onGroupBeforeDelete,
220
+ onAfterGroupDelete: onGroupAfterDelete,
221
+
222
+ /**
223
+ * Released in 5.34.0
224
+ */
225
+ onGroupBeforeCreate,
226
+ onGroupAfterCreate,
227
+ onGroupCreateError,
228
+ onGroupBeforeUpdate,
229
+ onGroupAfterUpdate,
230
+ onGroupUpdateError,
231
+ onGroupBeforeDelete,
232
+ onGroupAfterDelete,
233
+ onGroupDeleteError,
234
+ clearGroupsCache,
235
+ getGroup: async id => {
236
+ const permission = await checkPermissions("r");
237
+ const group = await groupsGet(id);
238
+ (0, _ownership.checkOwnership)(context, permission, group);
239
+ (0, _access.validateGroupAccess)(context, permission, group);
240
+ return group;
241
+ },
242
+ listGroups: async params => {
243
+ const {
244
+ where
245
+ } = params || {};
246
+ const {
247
+ tenant,
248
+ locale
249
+ } = where || {};
250
+ const permission = await checkPermissions("r");
251
+ const response = await groupsList((0, _objectSpread2.default)((0, _objectSpread2.default)({}, params || {}), {}, {
252
+ where: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, where || {}), {}, {
253
+ tenant: tenant || getTenant().id,
254
+ locale: locale || getLocale().code
255
+ })
256
+ }));
257
+ return response.filter(group => {
258
+ if (!(0, _ownership.validateOwnership)(context, permission, group)) {
259
+ return false;
260
+ }
261
+
262
+ return (0, _access.validateGroupAccess)(context, permission, group);
263
+ });
264
+ },
265
+ createGroup: async inputData => {
266
+ await checkPermissions("w");
267
+ const createdData = new CreateContentModelGroupModel().populate((0, _objectSpread2.default)((0, _objectSpread2.default)({}, inputData), {}, {
268
+ slug: inputData.slug ? (0, _toSlug.toSlug)(inputData.slug) : "",
269
+ description: inputData.description || ""
270
+ }));
271
+ await createdData.validate();
272
+ const input = await createdData.toJSON();
273
+ const identity = getIdentity();
274
+ const id = (0, _mdbid.default)();
275
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
276
+ id,
277
+ tenant: getTenant().id,
278
+ locale: getLocale().code,
279
+ createdOn: new Date().toISOString(),
280
+ savedOn: new Date().toISOString(),
281
+ createdBy: {
282
+ id: identity.id,
283
+ displayName: identity.displayName,
284
+ type: identity.type
285
+ },
286
+ webinyVersion: context.WEBINY_VERSION
287
+ });
288
+
289
+ try {
290
+ await onGroupBeforeCreate.publish({
291
+ group
292
+ });
293
+ const result = await storageOperations.groups.create({
294
+ group
295
+ });
296
+ clearGroupsCache();
297
+ await onGroupAfterCreate.publish({
298
+ group: result
299
+ });
300
+ return group;
301
+ } catch (ex) {
302
+ await onGroupCreateError.publish({
303
+ input,
304
+ group,
305
+ error: ex
306
+ });
307
+ 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 || {}), {}, {
308
+ group,
309
+ input
310
+ }));
311
+ }
312
+ },
313
+ updateGroup: async (id, inputData) => {
314
+ const permission = await checkPermissions("w");
315
+ const original = await groupsGet(id);
316
+ (0, _ownership.checkOwnership)(context, permission, original);
317
+ const input = new UpdateContentModelGroupModel().populate(inputData);
318
+ await input.validate();
319
+ const updatedDataJson = await input.toJSON({
320
+ onlyDirty: true
321
+ });
322
+ /**
323
+ * No need to continue if no values were changed
324
+ */
325
+
326
+ if (Object.keys(updatedDataJson).length === 0) {
327
+ return original;
328
+ }
329
+
330
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), updatedDataJson), {}, {
331
+ locale: getLocale().code,
332
+ tenant: getTenant().id,
333
+ savedOn: new Date().toISOString()
334
+ });
335
+
336
+ try {
337
+ await onGroupBeforeUpdate.publish({
338
+ original,
339
+ group
340
+ });
341
+ const updatedGroup = await storageOperations.groups.update({
342
+ group
343
+ });
344
+ clearGroupsCache();
345
+ await onGroupAfterUpdate.publish({
346
+ original,
347
+ group: updatedGroup
348
+ });
349
+ return updatedGroup;
350
+ } catch (ex) {
351
+ await onGroupUpdateError.publish({
352
+ input,
353
+ original,
354
+ group,
355
+ error: ex
356
+ });
357
+ throw new _error.default(ex.message, ex.code || "UPDATE_ERROR", {
358
+ error: ex,
359
+ original,
360
+ group,
361
+ input
362
+ });
363
+ }
364
+ },
365
+ deleteGroup: async id => {
366
+ const permission = await checkPermissions("d");
367
+ const group = await groupsGet(id);
368
+ (0, _ownership.checkOwnership)(context, permission, group);
369
+
370
+ try {
371
+ await onGroupBeforeDelete.publish({
372
+ group
373
+ });
374
+ await storageOperations.groups.delete({
375
+ group
376
+ });
377
+ clearGroupsCache();
378
+ await onGroupAfterDelete.publish({
379
+ group
380
+ });
381
+ } catch (ex) {
382
+ await onGroupDeleteError.publish({
383
+ group,
384
+ error: ex
385
+ });
386
+ throw new _error.default(ex.message, ex.code || "DELETE_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
387
+ id
388
+ }));
389
+ }
390
+
391
+ return true;
392
+ }
393
+ };
394
+ };
395
+
396
+ exports.createModelGroupsCrud = createModelGroupsCrud;
@@ -0,0 +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","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","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","error","updateGroup","original","updatedDataJson","onlyDirty","keys","length","updatedGroup","update","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 OnGroupCreateErrorTopicParams,\n OnGroupUpdateErrorTopicParams,\n OnGroupDeleteErrorTopicParams\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 /**\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 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 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 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 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 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 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 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};\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { CmsContext, HeadlessCmsStorageOperations } from "../types";
3
+ export interface CrudParams {
4
+ storageOperations: HeadlessCmsStorageOperations;
5
+ }
6
+ export declare const createCrud: (params: CrudParams) => ContextPlugin<CmsContext>;
package/crud/index.js ADDED
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createCrud = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _api = require("@webiny/api");
13
+
14
+ var _contentModelGroup = require("./contentModelGroup.crud");
15
+
16
+ var _contentModel = require("./contentModel.crud");
17
+
18
+ var _contentEntry = require("./contentEntry.crud");
19
+
20
+ var _system = require("./system.crud");
21
+
22
+ var _settings = require("./settings.crud");
23
+
24
+ const createCrud = params => {
25
+ const {
26
+ storageOperations
27
+ } = params;
28
+ return new _api.ContextPlugin(async context => {
29
+ const getLocale = () => {
30
+ return context.cms.getLocale();
31
+ };
32
+
33
+ const getIdentity = () => {
34
+ return context.security.getIdentity();
35
+ };
36
+
37
+ const getTenant = () => {
38
+ return context.tenancy.getCurrentTenant();
39
+ };
40
+
41
+ if (storageOperations.beforeInit) {
42
+ await storageOperations.beforeInit(context);
43
+ }
44
+
45
+ context.cms = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, context.cms), {}, {
46
+ storageOperations
47
+ }, (0, _system.createSystemCrud)({
48
+ context,
49
+ getTenant,
50
+ getLocale,
51
+ getIdentity,
52
+ storageOperations
53
+ })), (0, _settings.createSettingsCrud)({
54
+ context,
55
+ getTenant,
56
+ getLocale,
57
+ storageOperations
58
+ })), (0, _contentModelGroup.createModelGroupsCrud)({
59
+ context,
60
+ getTenant,
61
+ getLocale,
62
+ getIdentity,
63
+ storageOperations
64
+ })), (0, _contentModel.createModelsCrud)({
65
+ context,
66
+ getLocale,
67
+ getTenant,
68
+ getIdentity,
69
+ storageOperations
70
+ })), (0, _contentEntry.createContentEntryCrud)({
71
+ context,
72
+ getIdentity,
73
+ getTenant,
74
+ storageOperations
75
+ }));
76
+
77
+ if (!storageOperations.init) {
78
+ return;
79
+ }
80
+
81
+ await storageOperations.init(context);
82
+ });
83
+ };
84
+
85
+ exports.createCrud = createCrud;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createCrud","params","storageOperations","ContextPlugin","context","getLocale","cms","getIdentity","security","getTenant","tenancy","getCurrentTenant","beforeInit","createSystemCrud","createSettingsCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","init"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport { createModelGroupsCrud } from \"./contentModelGroup.crud\";\nimport { createModelsCrud } from \"./contentModel.crud\";\nimport { createContentEntryCrud } from \"./contentEntry.crud\";\nimport { createSystemCrud } from \"./system.crud\";\nimport { createSettingsCrud } from \"./settings.crud\";\n\nexport interface CrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createCrud = (params: CrudParams) => {\n const { storageOperations } = params;\n return new ContextPlugin<CmsContext>(async context => {\n const getLocale = () => {\n return context.cms.getLocale();\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n if (storageOperations.beforeInit) {\n await storageOperations.beforeInit(context);\n }\n\n context.cms = {\n ...context.cms,\n storageOperations,\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createSettingsCrud({\n context,\n getTenant,\n getLocale,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n storageOperations\n })\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAMO,MAAMA,UAAU,GAAIC,MAAD,IAAwB;EAC9C,MAAM;IAAEC;EAAF,IAAwBD,MAA9B;EACA,OAAO,IAAIE,kBAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAClD,MAAMC,SAAS,GAAG,MAAM;MACpB,OAAOD,OAAO,CAACE,GAAR,CAAYD,SAAZ,EAAP;IACH,CAFD;;IAIA,MAAME,WAAW,GAAG,MAAM;MACtB,OAAOH,OAAO,CAACI,QAAR,CAAiBD,WAAjB,EAAP;IACH,CAFD;;IAIA,MAAME,SAAS,GAAG,MAAM;MACpB,OAAOL,OAAO,CAACM,OAAR,CAAgBC,gBAAhB,EAAP;IACH,CAFD;;IAIA,IAAIT,iBAAiB,CAACU,UAAtB,EAAkC;MAC9B,MAAMV,iBAAiB,CAACU,UAAlB,CAA6BR,OAA7B,CAAN;IACH;;IAEDA,OAAO,CAACE,GAAR,+KACOF,OAAO,CAACE,GADf;MAEIJ;IAFJ,GAGO,IAAAW,wBAAA,EAAiB;MAChBT,OADgB;MAEhBK,SAFgB;MAGhBJ,SAHgB;MAIhBE,WAJgB;MAKhBL;IALgB,CAAjB,CAHP,GAUO,IAAAY,4BAAA,EAAmB;MAClBV,OADkB;MAElBK,SAFkB;MAGlBJ,SAHkB;MAIlBH;IAJkB,CAAnB,CAVP,GAgBO,IAAAa,wCAAA,EAAsB;MACrBX,OADqB;MAErBK,SAFqB;MAGrBJ,SAHqB;MAIrBE,WAJqB;MAKrBL;IALqB,CAAtB,CAhBP,GAuBO,IAAAc,8BAAA,EAAiB;MAChBZ,OADgB;MAEhBC,SAFgB;MAGhBI,SAHgB;MAIhBF,WAJgB;MAKhBL;IALgB,CAAjB,CAvBP,GA8BO,IAAAe,oCAAA,EAAuB;MACtBb,OADsB;MAEtBG,WAFsB;MAGtBE,SAHsB;MAItBP;IAJsB,CAAvB,CA9BP;;IAsCA,IAAI,CAACA,iBAAiB,CAACgB,IAAvB,EAA6B;MACzB;IACH;;IACD,MAAMhB,iBAAiB,CAACgB,IAAlB,CAAuBd,OAAvB,CAAN;EACH,CA3DM,CAAP;AA4DH,CA9DM"}
@@ -0,0 +1,10 @@
1
+ import { CmsContext, HeadlessCmsStorageOperations, CmsSettingsContext } from "../types";
2
+ import { Tenant } from "@webiny/api-tenancy/types";
3
+ import { I18NLocale } from "@webiny/api-i18n/types";
4
+ export interface CreateSettingsCrudParams {
5
+ getTenant: () => Tenant;
6
+ getLocale: () => I18NLocale;
7
+ storageOperations: HeadlessCmsStorageOperations;
8
+ context: CmsContext;
9
+ }
10
+ export declare const createSettingsCrud: (params: CreateSettingsCrudParams) => CmsSettingsContext;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.createSettingsCrud = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _permissions = require("../utils/permissions");
13
+
14
+ const createSettingsCrud = params => {
15
+ const {
16
+ storageOperations,
17
+ context,
18
+ getTenant,
19
+ getLocale
20
+ } = params;
21
+
22
+ const checkPermissions = () => {
23
+ return (0, _permissions.checkPermissions)(context, "cms.settings");
24
+ };
25
+
26
+ return {
27
+ getSettings: async () => {
28
+ await checkPermissions();
29
+ return await storageOperations.settings.get({
30
+ tenant: getTenant().id,
31
+ locale: getLocale().code
32
+ });
33
+ },
34
+ updateModelLastChange: async () => {
35
+ const original = await storageOperations.settings.get({
36
+ tenant: getTenant().id,
37
+ locale: getLocale().code
38
+ });
39
+ const settings = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original || {}), {}, {
40
+ contentModelLastChange: new Date(),
41
+ tenant: getTenant().id,
42
+ locale: getLocale().code
43
+ });
44
+
45
+ if (!original) {
46
+ await storageOperations.settings.create({
47
+ settings
48
+ });
49
+ return;
50
+ }
51
+
52
+ await storageOperations.settings.update({
53
+ settings
54
+ });
55
+ },
56
+ getModelLastChange: async () => {
57
+ try {
58
+ const settings = await storageOperations.settings.get({
59
+ tenant: getTenant().id,
60
+ locale: getLocale().code
61
+ });
62
+
63
+ if (!(settings !== null && settings !== void 0 && settings.contentModelLastChange)) {
64
+ return new Date();
65
+ }
66
+
67
+ return settings.contentModelLastChange;
68
+ } catch (ex) {
69
+ console.log({
70
+ error: {
71
+ message: ex.message,
72
+ code: ex.code || "COULD_NOT_FETCH_CONTENT_MODEL_LAST_CHANGE",
73
+ data: ex
74
+ }
75
+ });
76
+ }
77
+
78
+ return new Date();
79
+ }
80
+ };
81
+ };
82
+
83
+ exports.createSettingsCrud = createSettingsCrud;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSettingsCrud","params","storageOperations","context","getTenant","getLocale","checkPermissions","baseCheckPermissions","getSettings","settings","get","tenant","id","locale","code","updateModelLastChange","original","contentModelLastChange","Date","create","update","getModelLastChange","ex","console","log","error","message","data"],"sources":["settings.crud.ts"],"sourcesContent":["import {\n CmsContext,\n CmsSettingsPermission,\n CmsSettings,\n HeadlessCmsStorageOperations,\n CmsSettingsContext\n} from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\n\nexport interface CreateSettingsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n}\nexport const createSettingsCrud = (params: CreateSettingsCrudParams): CmsSettingsContext => {\n const { storageOperations, context, getTenant, getLocale } = params;\n\n const checkPermissions = (): Promise<CmsSettingsPermission> => {\n return baseCheckPermissions(context, \"cms.settings\");\n };\n\n return {\n getSettings: async (): Promise<CmsSettings | null> => {\n await checkPermissions();\n return await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n },\n updateModelLastChange: async (): Promise<void> => {\n const original = await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n\n const settings: CmsSettings = {\n ...(original || {}),\n contentModelLastChange: new Date(),\n tenant: getTenant().id,\n locale: getLocale().code\n };\n\n if (!original) {\n await storageOperations.settings.create({ settings });\n return;\n }\n\n await storageOperations.settings.update({\n settings\n });\n },\n getModelLastChange: async (): Promise<Date> => {\n try {\n const settings = await storageOperations.settings.get({\n tenant: getTenant().id,\n locale: getLocale().code\n });\n if (!settings?.contentModelLastChange) {\n return new Date();\n }\n return settings.contentModelLastChange;\n } catch (ex) {\n console.log({\n error: {\n message: ex.message,\n code: ex.code || \"COULD_NOT_FETCH_CONTENT_MODEL_LAST_CHANGE\",\n data: ex\n }\n });\n }\n return new Date();\n }\n };\n};\n"],"mappings":";;;;;;;;;;;AASA;;AAQO,MAAMA,kBAAkB,GAAIC,MAAD,IAA0D;EACxF,MAAM;IAAEC,iBAAF;IAAqBC,OAArB;IAA8BC,SAA9B;IAAyCC;EAAzC,IAAuDJ,MAA7D;;EAEA,MAAMK,gBAAgB,GAAG,MAAsC;IAC3D,OAAO,IAAAC,6BAAA,EAAqBJ,OAArB,EAA8B,cAA9B,CAAP;EACH,CAFD;;EAIA,OAAO;IACHK,WAAW,EAAE,YAAyC;MAClD,MAAMF,gBAAgB,EAAtB;MACA,OAAO,MAAMJ,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;QACxCC,MAAM,EAAEP,SAAS,GAAGQ,EADoB;QAExCC,MAAM,EAAER,SAAS,GAAGS;MAFoB,CAA/B,CAAb;IAIH,CAPE;IAQHC,qBAAqB,EAAE,YAA2B;MAC9C,MAAMC,QAAQ,GAAG,MAAMd,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;QAClDC,MAAM,EAAEP,SAAS,GAAGQ,EAD8B;QAElDC,MAAM,EAAER,SAAS,GAAGS;MAF8B,CAA/B,CAAvB;MAKA,MAAML,QAAqB,+DACnBO,QAAQ,IAAI,EADO;QAEvBC,sBAAsB,EAAE,IAAIC,IAAJ,EAFD;QAGvBP,MAAM,EAAEP,SAAS,GAAGQ,EAHG;QAIvBC,MAAM,EAAER,SAAS,GAAGS;MAJG,EAA3B;;MAOA,IAAI,CAACE,QAAL,EAAe;QACX,MAAMd,iBAAiB,CAACO,QAAlB,CAA2BU,MAA3B,CAAkC;UAAEV;QAAF,CAAlC,CAAN;QACA;MACH;;MAED,MAAMP,iBAAiB,CAACO,QAAlB,CAA2BW,MAA3B,CAAkC;QACpCX;MADoC,CAAlC,CAAN;IAGH,CA7BE;IA8BHY,kBAAkB,EAAE,YAA2B;MAC3C,IAAI;QACA,MAAMZ,QAAQ,GAAG,MAAMP,iBAAiB,CAACO,QAAlB,CAA2BC,GAA3B,CAA+B;UAClDC,MAAM,EAAEP,SAAS,GAAGQ,EAD8B;UAElDC,MAAM,EAAER,SAAS,GAAGS;QAF8B,CAA/B,CAAvB;;QAIA,IAAI,EAACL,QAAD,aAACA,QAAD,eAACA,QAAQ,CAAEQ,sBAAX,CAAJ,EAAuC;UACnC,OAAO,IAAIC,IAAJ,EAAP;QACH;;QACD,OAAOT,QAAQ,CAACQ,sBAAhB;MACH,CATD,CASE,OAAOK,EAAP,EAAW;QACTC,OAAO,CAACC,GAAR,CAAY;UACRC,KAAK,EAAE;YACHC,OAAO,EAAEJ,EAAE,CAACI,OADT;YAEHZ,IAAI,EAAEQ,EAAE,CAACR,IAAH,IAAW,2CAFd;YAGHa,IAAI,EAAEL;UAHH;QADC,CAAZ;MAOH;;MACD,OAAO,IAAIJ,IAAJ,EAAP;IACH;EAlDE,CAAP;AAoDH,CA3DM"}
@@ -0,0 +1,13 @@
1
+ import { CmsContext, CmsSystemContext, HeadlessCmsStorageOperations } from "../types";
2
+ import { Tenant } from "@webiny/api-tenancy/types";
3
+ import { SecurityIdentity } from "@webiny/api-security/types";
4
+ import { I18NLocale } from "@webiny/api-i18n/types";
5
+ interface CreateSystemCrudParams {
6
+ getTenant: () => Tenant;
7
+ getLocale: () => I18NLocale;
8
+ storageOperations: HeadlessCmsStorageOperations;
9
+ context: CmsContext;
10
+ getIdentity: () => SecurityIdentity;
11
+ }
12
+ export declare const createSystemCrud: (params: CreateSystemCrudParams) => CmsSystemContext;
13
+ export {};