@webiny/api-headless-cms 0.0.0-unstable.1e66d121db → 0.0.0-unstable.2696f9d9e8

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 (579) hide show
  1. package/constants.d.ts +32 -0
  2. package/constants.js +57 -0
  3. package/constants.js.map +1 -0
  4. package/context.d.ts +5 -2
  5. package/context.js +100 -25
  6. package/context.js.map +1 -1
  7. package/crud/contentEntry/afterDelete.js +2 -5
  8. package/crud/contentEntry/afterDelete.js.map +1 -1
  9. package/crud/contentEntry/beforeCreate.js +2 -3
  10. package/crud/contentEntry/beforeCreate.js.map +1 -1
  11. package/crud/contentEntry/beforeUpdate.js +2 -3
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
  14. package/crud/contentEntry/entryDataFactories/createEntryData.js +228 -0
  15. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
  16. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +21 -0
  17. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +114 -0
  18. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
  19. package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
  20. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +61 -0
  21. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
  22. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
  23. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +57 -0
  24. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
  25. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
  26. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +38 -0
  27. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
  28. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
  29. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +122 -0
  30. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
  31. package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
  32. package/crud/contentEntry/entryDataFactories/index.js +95 -0
  33. package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
  34. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
  35. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
  36. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
  37. package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
  38. package/crud/contentEntry/entryDataFactories/statuses.js +15 -0
  39. package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
  40. package/crud/contentEntry/entryDataValidation.d.ts +4 -2
  41. package/crud/contentEntry/entryDataValidation.js +222 -83
  42. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  43. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  44. package/crud/contentEntry/markLockedFields.js +34 -37
  45. package/crud/contentEntry/markLockedFields.js.map +1 -1
  46. package/crud/contentEntry/referenceFieldsMapping.d.ts +6 -0
  47. package/crud/contentEntry/referenceFieldsMapping.js +145 -145
  48. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  49. package/crud/contentEntry/searchableFields.d.ts +9 -0
  50. package/crud/contentEntry/searchableFields.js +73 -0
  51. package/crud/contentEntry/searchableFields.js.map +1 -0
  52. package/crud/contentEntry.crud.d.ts +9 -5
  53. package/crud/contentEntry.crud.js +1121 -1070
  54. package/crud/contentEntry.crud.js.map +1 -1
  55. package/crud/contentModel/beforeCreate.d.ts +2 -3
  56. package/crud/contentModel/beforeCreate.js +53 -117
  57. package/crud/contentModel/beforeCreate.js.map +1 -1
  58. package/crud/contentModel/beforeDelete.d.ts +1 -1
  59. package/crud/contentModel/beforeDelete.js +3 -15
  60. package/crud/contentModel/beforeDelete.js.map +1 -1
  61. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  62. package/crud/contentModel/beforeUpdate.js +32 -12
  63. package/crud/contentModel/beforeUpdate.js.map +1 -1
  64. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  65. package/crud/contentModel/compatibility/modelApiName.js +26 -0
  66. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  67. package/crud/contentModel/contentModelManagerFactory.js +2 -7
  68. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  69. package/crud/contentModel/createFieldStorageId.js +6 -3
  70. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  71. package/crud/contentModel/defaultFields.d.ts +5 -0
  72. package/crud/contentModel/defaultFields.js +60 -0
  73. package/crud/contentModel/defaultFields.js.map +1 -0
  74. package/crud/contentModel/ensureTypeTag.d.ts +5 -0
  75. package/crud/contentModel/ensureTypeTag.js +21 -0
  76. package/crud/contentModel/ensureTypeTag.js.map +1 -0
  77. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  78. package/crud/contentModel/fields/descriptionField.js +44 -0
  79. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  80. package/crud/contentModel/fields/imageField.d.ts +2 -0
  81. package/crud/contentModel/fields/imageField.js +44 -0
  82. package/crud/contentModel/fields/imageField.js.map +1 -0
  83. package/crud/contentModel/fields/titleField.d.ts +2 -0
  84. package/crud/contentModel/fields/titleField.js +60 -0
  85. package/crud/contentModel/fields/titleField.js.map +1 -0
  86. package/crud/contentModel/listModelsFromDatabase.d.ts +10 -0
  87. package/crud/contentModel/listModelsFromDatabase.js +38 -0
  88. package/crud/contentModel/listModelsFromDatabase.js.map +1 -0
  89. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  90. package/crud/contentModel/validate/endingAllowed.js +28 -0
  91. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  92. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  93. package/crud/contentModel/validate/isModelEndingAllowed.js +26 -0
  94. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  95. package/crud/contentModel/validate/modelId.d.ts +11 -0
  96. package/crud/contentModel/validate/modelId.js +38 -0
  97. package/crud/contentModel/validate/modelId.js.map +1 -0
  98. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  99. package/crud/contentModel/validate/pluralApiName.js +26 -0
  100. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  101. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  102. package/crud/contentModel/validate/singularApiName.js +26 -0
  103. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  104. package/crud/contentModel/validateModel.d.ts +4 -4
  105. package/crud/contentModel/validateModel.js +8 -11
  106. package/crud/contentModel/validateModel.js.map +1 -1
  107. package/crud/contentModel/validateModelFields.d.ts +4 -4
  108. package/crud/contentModel/validateModelFields.js +136 -152
  109. package/crud/contentModel/validateModelFields.js.map +1 -1
  110. package/crud/contentModel/validation.d.ts +872 -0
  111. package/crud/contentModel/validation.js +205 -0
  112. package/crud/contentModel/validation.js.map +1 -0
  113. package/crud/contentModel.crud.d.ts +2 -0
  114. package/crud/contentModel.crud.js +436 -445
  115. package/crud/contentModel.crud.js.map +1 -1
  116. package/crud/contentModelGroup/beforeCreate.d.ts +1 -1
  117. package/crud/contentModelGroup/beforeCreate.js +14 -12
  118. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  119. package/crud/contentModelGroup/beforeDelete.js +2 -8
  120. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  121. package/crud/contentModelGroup/beforeUpdate.js +2 -5
  122. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  123. package/crud/contentModelGroup/listGroupsFromDatabase.d.ts +8 -0
  124. package/crud/contentModelGroup/listGroupsFromDatabase.js +22 -0
  125. package/crud/contentModelGroup/listGroupsFromDatabase.js.map +1 -0
  126. package/crud/contentModelGroup/validation.d.ts +33 -0
  127. package/crud/contentModelGroup/validation.js +37 -0
  128. package/crud/contentModelGroup/validation.js.map +1 -0
  129. package/crud/contentModelGroup.crud.d.ts +3 -1
  130. package/crud/contentModelGroup.crud.js +291 -289
  131. package/crud/contentModelGroup.crud.js.map +1 -1
  132. package/crud/system.crud.js +8 -106
  133. package/crud/system.crud.js.map +1 -1
  134. package/export/crud/exporting.d.ts +3 -0
  135. package/export/crud/exporting.js +49 -0
  136. package/export/crud/exporting.js.map +1 -0
  137. package/export/crud/importing.d.ts +3 -0
  138. package/export/crud/importing.js +79 -0
  139. package/export/crud/importing.js.map +1 -0
  140. package/export/crud/imports/importData.d.ts +14 -0
  141. package/export/crud/imports/importData.js +52 -0
  142. package/export/crud/imports/importData.js.map +1 -0
  143. package/export/crud/imports/importGroups.d.ts +8 -0
  144. package/export/crud/imports/importGroups.js +104 -0
  145. package/export/crud/imports/importGroups.js.map +1 -0
  146. package/export/crud/imports/importModels.d.ts +8 -0
  147. package/export/crud/imports/importModels.js +136 -0
  148. package/export/crud/imports/importModels.js.map +1 -0
  149. package/export/crud/imports/validateGroups.d.ts +8 -0
  150. package/export/crud/imports/validateGroups.js +112 -0
  151. package/export/crud/imports/validateGroups.js.map +1 -0
  152. package/export/crud/imports/validateInput.d.ts +19 -0
  153. package/export/crud/imports/validateInput.js +55 -0
  154. package/export/crud/imports/validateInput.js.map +1 -0
  155. package/export/crud/imports/validateModels.d.ts +12 -0
  156. package/export/crud/imports/validateModels.js +203 -0
  157. package/export/crud/imports/validateModels.js.map +1 -0
  158. package/export/crud/index.d.ts +4 -0
  159. package/export/crud/index.js +15 -0
  160. package/export/crud/index.js.map +1 -0
  161. package/export/crud/sanitize.d.ts +4 -0
  162. package/export/crud/sanitize.js +35 -0
  163. package/export/crud/sanitize.js.map +1 -0
  164. package/export/graphql/index.d.ts +3 -0
  165. package/export/graphql/index.js +188 -0
  166. package/export/graphql/index.js.map +1 -0
  167. package/export/index.d.ts +2 -0
  168. package/export/index.js +29 -0
  169. package/export/index.js.map +1 -0
  170. package/export/types.d.ts +113 -0
  171. package/export/types.js +22 -0
  172. package/export/types.js.map +1 -0
  173. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +3 -19
  174. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  175. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  176. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +200 -0
  177. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  178. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +46 -90
  179. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  180. package/fieldConverters/index.d.ts +2 -1
  181. package/fieldConverters/index.js +4 -5
  182. package/fieldConverters/index.js.map +1 -1
  183. package/graphql/buildSchemaPlugins.d.ts +8 -3
  184. package/graphql/buildSchemaPlugins.js +9 -11
  185. package/graphql/buildSchemaPlugins.js.map +1 -1
  186. package/graphql/checkEndpointAccess.d.ts +2 -0
  187. package/graphql/checkEndpointAccess.js +20 -0
  188. package/graphql/checkEndpointAccess.js.map +1 -0
  189. package/graphql/createExecutableSchema.d.ts +6 -0
  190. package/graphql/createExecutableSchema.js +31 -0
  191. package/graphql/createExecutableSchema.js.map +1 -0
  192. package/graphql/createRequestBody.d.ts +2 -0
  193. package/graphql/createRequestBody.js +16 -0
  194. package/graphql/createRequestBody.js.map +1 -0
  195. package/graphql/formatErrorPayload.d.ts +1 -0
  196. package/graphql/formatErrorPayload.js +27 -0
  197. package/graphql/formatErrorPayload.js.map +1 -0
  198. package/graphql/generateSchema.d.ts +8 -0
  199. package/graphql/generateSchema.js +33 -0
  200. package/graphql/generateSchema.js.map +1 -0
  201. package/graphql/getSchema.d.ts +16 -0
  202. package/graphql/getSchema.js +118 -0
  203. package/graphql/getSchema.js.map +1 -0
  204. package/graphql/graphQLHandlerFactory.js +8 -129
  205. package/graphql/graphQLHandlerFactory.js.map +1 -1
  206. package/graphql/handleRequest.d.ts +11 -0
  207. package/graphql/handleRequest.js +79 -0
  208. package/graphql/handleRequest.js.map +1 -0
  209. package/graphql/index.d.ts +1 -3
  210. package/graphql/index.js +4 -46
  211. package/graphql/index.js.map +1 -1
  212. package/graphql/schema/baseContentSchema.d.ts +6 -2
  213. package/graphql/schema/baseContentSchema.js +20 -29
  214. package/graphql/schema/baseContentSchema.js.map +1 -1
  215. package/graphql/schema/baseSchema.d.ts +2 -0
  216. package/graphql/schema/baseSchema.js +146 -0
  217. package/graphql/schema/baseSchema.js.map +1 -0
  218. package/graphql/schema/contentEntries.d.ts +6 -2
  219. package/graphql/schema/contentEntries.js +160 -111
  220. package/graphql/schema/contentEntries.js.map +1 -1
  221. package/graphql/schema/contentModelGroups.d.ts +6 -2
  222. package/graphql/schema/contentModelGroups.js +20 -30
  223. package/graphql/schema/contentModelGroups.js.map +1 -1
  224. package/graphql/schema/contentModels.d.ts +6 -2
  225. package/graphql/schema/contentModels.js +81 -26
  226. package/graphql/schema/contentModels.js.map +1 -1
  227. package/graphql/schema/createFieldResolvers.d.ts +2 -2
  228. package/graphql/schema/createFieldResolvers.js +29 -40
  229. package/graphql/schema/createFieldResolvers.js.map +1 -1
  230. package/graphql/schema/createFieldTypePluginRecords.d.ts +3 -0
  231. package/graphql/schema/createFieldTypePluginRecords.js +15 -0
  232. package/graphql/schema/createFieldTypePluginRecords.js.map +1 -0
  233. package/graphql/schema/createManageResolvers.d.ts +1 -1
  234. package/graphql/schema/createManageResolvers.js +59 -52
  235. package/graphql/schema/createManageResolvers.js.map +1 -1
  236. package/graphql/schema/createManageSDL.d.ts +3 -0
  237. package/graphql/schema/createManageSDL.js +119 -81
  238. package/graphql/schema/createManageSDL.js.map +1 -1
  239. package/graphql/schema/createPreviewResolvers.js +9 -22
  240. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  241. package/graphql/schema/createReadResolvers.js +14 -22
  242. package/graphql/schema/createReadResolvers.js.map +1 -1
  243. package/graphql/schema/createReadSDL.d.ts +3 -0
  244. package/graphql/schema/createReadSDL.js +57 -48
  245. package/graphql/schema/createReadSDL.js.map +1 -1
  246. package/graphql/schema/resolvers/manage/resolveCreate.d.ts +2 -1
  247. package/graphql/schema/resolvers/manage/resolveCreate.js +3 -4
  248. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  249. package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +2 -1
  250. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +3 -4
  251. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  252. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +2 -1
  253. package/graphql/schema/resolvers/manage/resolveDelete.js +15 -9
  254. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  255. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +7 -0
  256. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +22 -0
  257. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -0
  258. package/graphql/schema/resolvers/manage/resolveGet.js +11 -20
  259. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  260. package/graphql/schema/resolvers/manage/resolveGetByIds.js +2 -3
  261. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  262. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +2 -3
  263. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  264. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
  265. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +20 -0
  266. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
  267. package/graphql/schema/resolvers/manage/resolveList.js +2 -3
  268. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  269. package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
  270. package/graphql/schema/resolvers/manage/resolveMove.js +27 -0
  271. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
  272. package/graphql/schema/resolvers/manage/resolvePublish.js +2 -3
  273. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  274. package/graphql/schema/resolvers/manage/resolveRepublish.js +2 -3
  275. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  276. package/graphql/schema/resolvers/manage/resolveUnpublish.js +2 -3
  277. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  278. package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +2 -1
  279. package/graphql/schema/resolvers/manage/resolveUpdate.js +3 -4
  280. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  281. package/graphql/schema/resolvers/manage/resolveValidate.d.ts +8 -0
  282. package/graphql/schema/resolvers/manage/{resolveRequestChanges.js → resolveValidate.js} +5 -6
  283. package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -0
  284. package/graphql/schema/resolvers/preview/resolveGet.js +5 -12
  285. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  286. package/graphql/schema/resolvers/preview/resolveList.js +2 -3
  287. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  288. package/graphql/schema/resolvers/read/resolveGet.js +5 -12
  289. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  290. package/graphql/schema/resolvers/read/resolveList.js +2 -3
  291. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  292. package/graphql/schema/schemaPlugins.d.ts +8 -3
  293. package/graphql/schema/schemaPlugins.js +60 -69
  294. package/graphql/schema/schemaPlugins.js.map +1 -1
  295. package/graphql/system.d.ts +2 -5
  296. package/graphql/system.js +58 -98
  297. package/graphql/system.js.map +1 -1
  298. package/graphqlFields/boolean.js +2 -12
  299. package/graphqlFields/boolean.js.map +1 -1
  300. package/graphqlFields/datetime.js +4 -21
  301. package/graphqlFields/datetime.js.map +1 -1
  302. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  303. package/graphqlFields/dynamicZone/dynamicZoneField.js +266 -0
  304. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  305. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  306. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +111 -0
  307. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  308. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  309. package/graphqlFields/dynamicZone/index.js +21 -0
  310. package/graphqlFields/dynamicZone/index.js.map +1 -0
  311. package/graphqlFields/file.js +2 -8
  312. package/graphqlFields/file.js.map +1 -1
  313. package/graphqlFields/helpers.d.ts +0 -1
  314. package/graphqlFields/helpers.js +5 -27
  315. package/graphqlFields/helpers.js.map +1 -1
  316. package/graphqlFields/index.d.ts +1 -1
  317. package/graphqlFields/index.js +5 -12
  318. package/graphqlFields/index.js.map +1 -1
  319. package/graphqlFields/json.d.ts +2 -0
  320. package/graphqlFields/json.js +49 -0
  321. package/graphqlFields/json.js.map +1 -0
  322. package/graphqlFields/longText.js +13 -12
  323. package/graphqlFields/longText.js.map +1 -1
  324. package/graphqlFields/number.js +7 -12
  325. package/graphqlFields/number.js.map +1 -1
  326. package/graphqlFields/object.js +114 -101
  327. package/graphqlFields/object.js.map +1 -1
  328. package/graphqlFields/ref.js +111 -119
  329. package/graphqlFields/ref.js.map +1 -1
  330. package/graphqlFields/richText.js +2 -9
  331. package/graphqlFields/richText.js.map +1 -1
  332. package/graphqlFields/text.js +4 -11
  333. package/graphqlFields/text.js.map +1 -1
  334. package/index.d.ts +6 -3
  335. package/index.js +43 -29
  336. package/index.js.map +1 -1
  337. package/modelManager/DefaultCmsModelManager.js +2 -20
  338. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  339. package/modelManager/index.js +2 -4
  340. package/modelManager/index.js.map +1 -1
  341. package/package.json +36 -43
  342. package/parameters/context.js +3 -5
  343. package/parameters/context.js.map +1 -1
  344. package/parameters/header.js +6 -16
  345. package/parameters/header.js.map +1 -1
  346. package/parameters/index.js +3 -9
  347. package/parameters/index.js.map +1 -1
  348. package/parameters/manual.js +9 -11
  349. package/parameters/manual.js.map +1 -1
  350. package/parameters/path.js +3 -13
  351. package/parameters/path.js.map +1 -1
  352. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  353. package/plugins/CmsGraphQLSchemaPlugin.js +13 -0
  354. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  355. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  356. package/plugins/CmsGraphQLSchemaSorterPlugin.js +27 -0
  357. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  358. package/plugins/CmsGroupPlugin.d.ts +6 -3
  359. package/plugins/CmsGroupPlugin.js +7 -13
  360. package/plugins/CmsGroupPlugin.js.map +1 -1
  361. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  362. package/plugins/CmsModelFieldConverterPlugin.js +5 -9
  363. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  364. package/plugins/CmsModelPlugin.d.ts +25 -5
  365. package/plugins/CmsModelPlugin.js +72 -57
  366. package/plugins/CmsModelPlugin.js.map +1 -1
  367. package/plugins/CmsParametersPlugin.js +6 -10
  368. package/plugins/CmsParametersPlugin.js.map +1 -1
  369. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  370. package/plugins/StorageOperationsCmsModelPlugin.js +41 -0
  371. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  372. package/plugins/StorageTransformPlugin.d.ts +13 -13
  373. package/plugins/StorageTransformPlugin.js +3 -13
  374. package/plugins/StorageTransformPlugin.js.map +1 -1
  375. package/plugins/index.d.ts +3 -0
  376. package/plugins/index.js +36 -11
  377. package/plugins/index.js.map +1 -1
  378. package/storage/default.js +2 -3
  379. package/storage/default.js.map +1 -1
  380. package/storage/index.d.ts +1 -0
  381. package/storage/index.js +15 -0
  382. package/storage/index.js.map +1 -0
  383. package/storage/json.d.ts +2 -0
  384. package/storage/json.js +27 -0
  385. package/storage/json.js.map +1 -0
  386. package/storage/object.js +11 -27
  387. package/storage/object.js.map +1 -1
  388. package/types.d.ts +755 -384
  389. package/types.js +83 -90
  390. package/types.js.map +1 -1
  391. package/utils/access.d.ts +9 -8
  392. package/utils/access.js +11 -75
  393. package/utils/access.js.map +1 -1
  394. package/utils/caching/Cache.d.ts +2 -0
  395. package/utils/caching/Cache.js +51 -0
  396. package/utils/caching/Cache.js.map +1 -0
  397. package/utils/caching/CacheKey.d.ts +2 -0
  398. package/utils/caching/CacheKey.js +40 -0
  399. package/utils/caching/CacheKey.js.map +1 -0
  400. package/utils/caching/index.d.ts +2 -0
  401. package/utils/caching/index.js +29 -0
  402. package/utils/caching/index.js.map +1 -0
  403. package/utils/caching/types.d.ts +11 -0
  404. package/utils/caching/types.js +7 -0
  405. package/utils/caching/types.js.map +1 -0
  406. package/utils/converters/Converter.js +3 -17
  407. package/utils/converters/Converter.js.map +1 -1
  408. package/utils/converters/ConverterCollection.d.ts +7 -0
  409. package/utils/converters/ConverterCollection.js +43 -31
  410. package/utils/converters/ConverterCollection.js.map +1 -1
  411. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  412. package/utils/converters/valueKeyStorageConverter.js +32 -45
  413. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  414. package/utils/createTypeFromFields.d.ts +16 -0
  415. package/utils/createTypeFromFields.js +71 -0
  416. package/utils/createTypeFromFields.js.map +1 -0
  417. package/utils/createTypeName.d.ts +0 -2
  418. package/utils/createTypeName.js +4 -17
  419. package/utils/createTypeName.js.map +1 -1
  420. package/utils/date.d.ts +10 -0
  421. package/utils/date.js +36 -0
  422. package/utils/date.js.map +1 -0
  423. package/utils/entryStorage.d.ts +4 -4
  424. package/utils/entryStorage.js +27 -38
  425. package/utils/entryStorage.js.map +1 -1
  426. package/utils/filterAsync.js +8 -12
  427. package/utils/filterAsync.js.map +1 -1
  428. package/utils/getBaseFieldType.d.ts +2 -0
  429. package/utils/getBaseFieldType.js +12 -0
  430. package/utils/getBaseFieldType.js.map +1 -0
  431. package/utils/getEntryDescription.d.ts +2 -0
  432. package/utils/getEntryDescription.js +19 -0
  433. package/utils/getEntryDescription.js.map +1 -0
  434. package/utils/getEntryImage.d.ts +2 -0
  435. package/utils/getEntryImage.js +19 -0
  436. package/utils/getEntryImage.js.map +1 -0
  437. package/utils/getEntryTitle.d.ts +1 -1
  438. package/utils/getEntryTitle.js +3 -10
  439. package/utils/getEntryTitle.js.map +1 -1
  440. package/utils/getSchemaFromFieldPlugins.d.ts +14 -6
  441. package/utils/getSchemaFromFieldPlugins.js +39 -17
  442. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  443. package/utils/identity.d.ts +2 -0
  444. package/utils/identity.js +20 -0
  445. package/utils/identity.js.map +1 -0
  446. package/utils/incrementEntryIdVersion.d.ts +5 -0
  447. package/utils/incrementEntryIdVersion.js +31 -0
  448. package/utils/incrementEntryIdVersion.js.map +1 -0
  449. package/utils/index.d.ts +1 -0
  450. package/utils/index.js +18 -0
  451. package/utils/index.js.map +1 -0
  452. package/utils/permissions/EntriesPermissions.d.ts +4 -0
  453. package/utils/permissions/EntriesPermissions.js +11 -0
  454. package/utils/permissions/EntriesPermissions.js.map +1 -0
  455. package/utils/permissions/ModelGroupsPermissions.d.ts +9 -0
  456. package/utils/permissions/ModelGroupsPermissions.js +50 -0
  457. package/utils/permissions/ModelGroupsPermissions.js.map +1 -0
  458. package/utils/permissions/ModelsPermissions.d.ts +22 -0
  459. package/utils/permissions/ModelsPermissions.js +90 -0
  460. package/utils/permissions/ModelsPermissions.js.map +1 -0
  461. package/utils/renderFields.d.ts +4 -2
  462. package/utils/renderFields.js +14 -11
  463. package/utils/renderFields.js.map +1 -1
  464. package/utils/renderGetFilterFields.d.ts +2 -2
  465. package/utils/renderGetFilterFields.js +10 -30
  466. package/utils/renderGetFilterFields.js.map +1 -1
  467. package/utils/renderInputFields.d.ts +4 -2
  468. package/utils/renderInputFields.js +21 -14
  469. package/utils/renderInputFields.js.map +1 -1
  470. package/utils/renderListFilterFields.d.ts +3 -1
  471. package/utils/renderListFilterFields.js +27 -30
  472. package/utils/renderListFilterFields.js.map +1 -1
  473. package/utils/renderSortEnum.d.ts +9 -5
  474. package/utils/renderSortEnum.js +29 -12
  475. package/utils/renderSortEnum.js.map +1 -1
  476. package/utils/toSlug.js +2 -4
  477. package/utils/toSlug.js.map +1 -1
  478. package/validators/dateGte.js +2 -7
  479. package/validators/dateGte.js.map +1 -1
  480. package/validators/dateLte.js +2 -7
  481. package/validators/dateLte.js.map +1 -1
  482. package/validators/gte.js +3 -10
  483. package/validators/gte.js.map +1 -1
  484. package/validators/in.js +3 -10
  485. package/validators/in.js.map +1 -1
  486. package/validators/index.js +2 -15
  487. package/validators/index.js.map +1 -1
  488. package/validators/lte.js +3 -10
  489. package/validators/lte.js.map +1 -1
  490. package/validators/maxLength.js +3 -10
  491. package/validators/maxLength.js.map +1 -1
  492. package/validators/minLength.js +3 -10
  493. package/validators/minLength.js.map +1 -1
  494. package/validators/pattern.js +4 -11
  495. package/validators/pattern.js.map +1 -1
  496. package/validators/patternPlugins/email.js +2 -2
  497. package/validators/patternPlugins/email.js.map +1 -1
  498. package/validators/patternPlugins/index.js +2 -8
  499. package/validators/patternPlugins/index.js.map +1 -1
  500. package/validators/patternPlugins/lowerCase.js +2 -2
  501. package/validators/patternPlugins/lowerCase.js.map +1 -1
  502. package/validators/patternPlugins/lowerCaseSpace.js +2 -2
  503. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  504. package/validators/patternPlugins/upperCase.js +2 -2
  505. package/validators/patternPlugins/upperCase.js.map +1 -1
  506. package/validators/patternPlugins/upperCaseSpace.js +2 -2
  507. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  508. package/validators/patternPlugins/url.js +2 -2
  509. package/validators/patternPlugins/url.js.map +1 -1
  510. package/validators/required.js +2 -5
  511. package/validators/required.js.map +1 -1
  512. package/validators/timeGte.js +3 -10
  513. package/validators/timeGte.js.map +1 -1
  514. package/validators/timeLte.js +3 -10
  515. package/validators/timeLte.js.map +1 -1
  516. package/validators/unique.js +3 -8
  517. package/validators/unique.js.map +1 -1
  518. package/crud/contentModel/afterCreate.d.ts +0 -8
  519. package/crud/contentModel/afterCreate.js +0 -18
  520. package/crud/contentModel/afterCreate.js.map +0 -1
  521. package/crud/contentModel/afterCreateFrom.d.ts +0 -8
  522. package/crud/contentModel/afterCreateFrom.js +0 -18
  523. package/crud/contentModel/afterCreateFrom.js.map +0 -1
  524. package/crud/contentModel/afterDelete.d.ts +0 -8
  525. package/crud/contentModel/afterDelete.js +0 -18
  526. package/crud/contentModel/afterDelete.js.map +0 -1
  527. package/crud/contentModel/afterUpdate.d.ts +0 -8
  528. package/crud/contentModel/afterUpdate.js +0 -18
  529. package/crud/contentModel/afterUpdate.js.map +0 -1
  530. package/crud/contentModel/createFieldModels.d.ts +0 -2
  531. package/crud/contentModel/createFieldModels.js +0 -26
  532. package/crud/contentModel/createFieldModels.js.map +0 -1
  533. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  534. package/crud/contentModel/fieldIdValidation.js +0 -25
  535. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  536. package/crud/contentModel/idValidation.d.ts +0 -1
  537. package/crud/contentModel/idValidation.js +0 -22
  538. package/crud/contentModel/idValidation.js.map +0 -1
  539. package/crud/contentModel/models.d.ts +0 -4
  540. package/crud/contentModel/models.js +0 -180
  541. package/crud/contentModel/models.js.map +0 -1
  542. package/crud/contentModel/systemFields.d.ts +0 -1
  543. package/crud/contentModel/systemFields.js +0 -8
  544. package/crud/contentModel/systemFields.js.map +0 -1
  545. package/crud/contentModel/validateLayout.d.ts +0 -2
  546. package/crud/contentModel/validateLayout.js +0 -36
  547. package/crud/contentModel/validateLayout.js.map +0 -1
  548. package/crud/index.d.ts +0 -6
  549. package/crud/index.js +0 -85
  550. package/crud/index.js.map +0 -1
  551. package/crud/settings.crud.d.ts +0 -10
  552. package/crud/settings.crud.js +0 -83
  553. package/crud/settings.crud.js.map +0 -1
  554. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +0 -6
  555. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -14
  556. package/graphql/schema/resolvers/commonFieldResolvers.js.map +0 -1
  557. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  558. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  559. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  560. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  561. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  562. package/upgrades/5.33.0/index.d.ts +0 -3
  563. package/upgrades/5.33.0/index.js +0 -182
  564. package/upgrades/5.33.0/index.js.map +0 -1
  565. package/upgrades/index.d.ts +0 -1
  566. package/upgrades/index.js +0 -12
  567. package/upgrades/index.js.map +0 -1
  568. package/utils/filterModelFields.d.ts +0 -16
  569. package/utils/filterModelFields.js +0 -77
  570. package/utils/filterModelFields.js.map +0 -1
  571. package/utils/ownership.d.ts +0 -8
  572. package/utils/ownership.js +0 -41
  573. package/utils/ownership.js.map +0 -1
  574. package/utils/permissions.d.ts +0 -7
  575. package/utils/permissions.js +0 -106
  576. package/utils/permissions.js.map +0 -1
  577. package/utils/pluralizedTypeName.d.ts +0 -1
  578. package/utils/pluralizedTypeName.js +0 -26
  579. package/utils/pluralizedTypeName.js.map +0 -1
@@ -1,404 +1,377 @@
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.createModelsCrud = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _dataloader = _interopRequireDefault(require("dataloader"));
13
-
8
+ var _error = _interopRequireDefault(require("@webiny/error"));
14
9
  var _handlerGraphql = require("@webiny/handler-graphql");
15
-
16
10
  var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
17
-
18
- var _models = require("./contentModel/models");
19
-
20
- var _createFieldModels = require("./contentModel/createFieldModels");
21
-
22
- var _error = _interopRequireDefault(require("@webiny/error"));
23
-
24
11
  var _pubsub = require("@webiny/pubsub");
25
-
26
12
  var _beforeCreate = require("./contentModel/beforeCreate");
27
-
28
13
  var _beforeUpdate = require("./contentModel/beforeUpdate");
29
-
30
14
  var _beforeDelete = require("./contentModel/beforeDelete");
31
-
32
- var _afterCreate = require("./contentModel/afterCreate");
33
-
34
- var _afterUpdate = require("./contentModel/afterUpdate");
35
-
36
- var _afterDelete = require("./contentModel/afterDelete");
37
-
38
- var _afterCreateFrom = require("./contentModel/afterCreateFrom");
39
-
40
15
  var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
41
-
42
- var _permissions = require("../utils/permissions");
43
-
16
+ var _validation = require("./contentModel/validation");
17
+ var _utils = require("@webiny/utils");
18
+ var _defaultFields = require("./contentModel/defaultFields");
19
+ var _utils2 = require("../utils");
20
+ var _ensureTypeTag = require("./contentModel/ensureTypeTag");
21
+ var _listModelsFromDatabase = require("./contentModel/listModelsFromDatabase");
44
22
  var _filterAsync = require("../utils/filterAsync");
45
-
46
- var _ownership = require("../utils/ownership");
47
-
48
- var _access = require("../utils/access");
49
-
50
- var _validateModelFields = require("./contentModel/validateModelFields");
51
-
52
- var _semver = _interopRequireDefault(require("semver"));
53
-
54
- /**
55
- * TODO: remove for 5.34.0
56
- * Required because of the 5.33.0 upgrade.
57
- * Until the upgrade is done, API will break because there is no storageId assigned.
58
- */
59
- const featureVersion = _semver.default.coerce("5.33.0");
60
-
61
- const attachStorageIdToFields = fields => {
62
- return fields.map(field => {
63
- var _field$settings;
64
-
65
- if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
66
- field.settings.fields = attachStorageIdToFields(field.settings.fields);
67
- }
68
-
69
- if (!field.storageId) {
70
- field.storageId = field.fieldId;
71
- }
72
-
73
- return field;
74
- });
75
- };
76
-
77
- const attachStorageIdToModelFields = model => {
78
- if (!model.webinyVersion) {
79
- return model.fields;
80
- }
81
-
82
- const version = _semver.default.coerce(model.webinyVersion);
83
-
84
- if (!version) {
85
- return model.fields;
86
- }
87
- /**
88
- * Unfortunately we need to check for beta and next.
89
- * TODO remove after 5.33.0
90
- */
91
-
92
-
93
- if (model.webinyVersion.match(/beta|next/)) {
94
- return attachStorageIdToFields(model.fields);
95
- }
96
-
97
- if (_semver.default.compare(version, featureVersion) >= 0) {
98
- return model.fields;
99
- }
100
-
101
- return attachStorageIdToFields(model.fields);
102
- };
103
-
104
23
  const createModelsCrud = params => {
105
24
  const {
106
25
  getTenant,
107
26
  getIdentity,
108
27
  getLocale,
109
28
  storageOperations,
29
+ modelsPermissions,
110
30
  context
111
31
  } = params;
112
- const loaders = {
113
- listModels: new _dataloader.default(async () => {
114
- const models = await storageOperations.models.list({
115
- where: {
116
- tenant: getTenant().id,
117
- locale: getLocale().code
118
- }
119
- });
120
- return [models.map(model => {
121
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
122
- fields: attachStorageIdToModelFields(model),
123
- tenant: model.tenant || getTenant().id,
124
- locale: model.locale || getLocale().code
125
- });
126
- })];
127
- })
128
- };
129
-
32
+ const listPluginModelsCache = (0, _utils2.createMemoryCache)();
33
+ const listFilteredModelsCache = (0, _utils2.createMemoryCache)();
34
+ const listDatabaseModelsCache = (0, _utils2.createMemoryCache)();
130
35
  const clearModelsCache = () => {
131
- for (const loader of Object.values(loaders)) {
132
- loader.clearAll();
133
- }
36
+ listDatabaseModelsCache.clear();
37
+ listFilteredModelsCache.clear();
134
38
  };
135
-
136
39
  const managers = new Map();
137
-
138
40
  const updateManager = async (context, model) => {
139
41
  const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
140
42
  managers.set(model.modelId, manager);
141
43
  return manager;
142
44
  };
143
-
144
- const checkModelPermissions = check => {
145
- return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
146
- rwd: check
45
+ const checkModelPermissions = async rwd => {
46
+ return modelsPermissions.ensure({
47
+ rwd
147
48
  });
148
49
  };
149
-
150
- const getModelsAsPlugins = () => {
151
- const tenant = getTenant().id;
152
- const locale = getLocale().code;
153
- const models = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
154
- /**
155
- * We need to filter out models that are not for this tenant or locale.
156
- * If it does not have tenant or locale define, it is for every locale and tenant
157
- */
158
- .filter(plugin => {
159
- const {
160
- tenant: t,
161
- locale: l
162
- } = plugin.contentModel;
163
-
164
- if (t && t !== tenant) {
165
- return false;
166
- } else if (l && l !== locale) {
167
- return false;
168
- }
169
-
170
- return true;
171
- }).map(plugin => {
172
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
173
- tenant,
174
- locale,
175
- webinyVersion: context.WEBINY_VERSION
176
- });
50
+ const filterModel = async model => {
51
+ const ownsModel = await modelsPermissions.ensure({
52
+ owns: model.createdBy
53
+ }, {
54
+ throw: false
177
55
  });
178
- /**
179
- * Only point where we can truly validate the user model is in the runtime.
180
- */
181
-
182
- for (const model of models) {
183
- (0, _validateModelFields.validateModelFields)({
184
- model,
185
- plugins: context.plugins
186
- });
56
+ if (!ownsModel) {
57
+ return false;
187
58
  }
188
-
189
- return models;
59
+ return modelsPermissions.canAccessModel({
60
+ model
61
+ });
190
62
  };
191
-
192
- const modelsGet = async modelId => {
193
- const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
194
-
195
- if (pluginModel) {
196
- return pluginModel;
197
- }
198
-
199
- const model = await storageOperations.models.get({
200
- tenant: getTenant().id,
201
- locale: getLocale().code,
202
- modelId
63
+ const listPluginModels = async (tenant, locale) => {
64
+ const modelPlugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
65
+ const cacheKey = (0, _utils2.createCacheKey)({
66
+ tenant,
67
+ locale,
68
+ models: modelPlugins.map(({
69
+ contentModel: model
70
+ }) => {
71
+ return `${model.modelId}#${model.pluralApiName}#${model.singularApiName}#${model.savedOn || "unknown"}`;
72
+ }).join("/"),
73
+ identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
203
74
  });
204
-
75
+ return listPluginModelsCache.getOrSet(cacheKey, async () => {
76
+ const models = modelPlugins
77
+ /**
78
+ * We need to filter out models that are not for this tenant or locale.
79
+ * If it does not have tenant or locale define, it is for every locale and tenant
80
+ */.filter(plugin => {
81
+ const {
82
+ tenant: modelTenant,
83
+ locale: modelLocale
84
+ } = plugin.contentModel;
85
+ if (modelTenant && modelTenant !== tenant) {
86
+ return false;
87
+ } else if (modelLocale && modelLocale !== locale) {
88
+ return false;
89
+ }
90
+ return true;
91
+ }).map(plugin => {
92
+ return {
93
+ ...plugin.contentModel,
94
+ tags: (0, _ensureTypeTag.ensureTypeTag)(plugin.contentModel),
95
+ tenant,
96
+ locale,
97
+ webinyVersion: context.WEBINY_VERSION
98
+ };
99
+ });
100
+ return (0, _filterAsync.filterAsync)(models, filterModel);
101
+ });
102
+ };
103
+ const getModelFromCache = async modelId => {
104
+ const models = await listModels();
105
+ const model = models.find(m => m.modelId === modelId);
205
106
  if (!model) {
206
107
  throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
207
108
  }
208
-
209
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
109
+ return {
110
+ ...model,
111
+ tags: (0, _ensureTypeTag.ensureTypeTag)(model),
210
112
  tenant: model.tenant || getTenant().id,
211
113
  locale: model.locale || getLocale().code
212
- });
213
- };
214
-
215
- const modelsList = async () => {
216
- const databaseModels = await loaders.listModels.load("listModels");
217
- const pluginsModels = getModelsAsPlugins();
218
- return databaseModels.concat(pluginsModels);
114
+ };
219
115
  };
220
116
 
117
+ /**
118
+ * The list models cache is a key -> Promise pair so it the listModels() can be called multiple times but executed only once.
119
+ *
120
+ * We always fetch the plugins and database models separately.
121
+ * Then we combine them and run access filtering on them
122
+ */
221
123
  const listModels = async () => {
222
- const permission = await checkModelPermissions("r");
223
- const models = await modelsList();
224
- return (0, _filterAsync.filterAsync)(models, async model => {
225
- if (!(0, _ownership.validateOwnership)(context, permission, model)) {
226
- return false;
227
- }
228
-
229
- return (0, _access.validateModelAccess)(context, model);
124
+ return context.benchmark.measure("headlessCms.crud.models.listModels", async () => {
125
+ /**
126
+ * Maybe we can cache based on permissions, not the identity id?
127
+ *
128
+ * TODO: @adrian please check if possible.
129
+ */
130
+ const tenant = getTenant().id;
131
+ const locale = getLocale().code;
132
+ const pluginModels = await listPluginModels(tenant, locale);
133
+ const dbCacheKey = (0, _utils2.createCacheKey)({
134
+ tenant,
135
+ locale
136
+ });
137
+ const databaseModels = await listDatabaseModelsCache.getOrSet(dbCacheKey, async () => {
138
+ return await (0, _listModelsFromDatabase.listModelsFromDatabase)(params);
139
+ });
140
+ const filteredCacheKey = (0, _utils2.createCacheKey)({
141
+ dbCacheKey: dbCacheKey.get(),
142
+ identity: context.security.isAuthorizationEnabled() ? getIdentity()?.id : undefined
143
+ });
144
+ const filteredModels = await listFilteredModelsCache.getOrSet(filteredCacheKey, async () => {
145
+ return (0, _filterAsync.filterAsync)(databaseModels, filterModel);
146
+ });
147
+ return filteredModels.concat(pluginModels);
230
148
  });
231
149
  };
232
-
233
150
  const getModel = async modelId => {
234
- const permission = await checkModelPermissions("r");
235
- const model = await modelsGet(modelId);
236
- (0, _ownership.checkOwnership)(context, permission, model);
237
- await (0, _access.checkModelAccess)(context, model);
238
- return model;
151
+ return context.benchmark.measure("headlessCms.crud.models.getModel", async () => {
152
+ await checkModelPermissions("r");
153
+ const model = await context.security.withoutAuthorization(async () => {
154
+ return await getModelFromCache(modelId);
155
+ });
156
+ if (!model) {
157
+ throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
158
+ }
159
+ await modelsPermissions.ensure({
160
+ owns: model.createdBy
161
+ });
162
+ await modelsPermissions.ensureCanAccessModel({
163
+ model
164
+ });
165
+ return model;
166
+ });
239
167
  };
240
-
241
- const getModelManager = async target => {
168
+ const getEntryManager = async target => {
242
169
  const modelId = typeof target === "string" ? target : target.modelId;
243
-
244
170
  if (managers.has(modelId)) {
245
171
  return managers.get(modelId);
246
172
  }
247
-
248
- const models = await modelsList();
249
- const model = models.find(m => m.modelId === modelId);
250
-
251
- if (!model) {
252
- throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
253
- }
254
-
173
+ const model = await getModelFromCache(modelId);
255
174
  return await updateManager(context, model);
256
- }; // create
257
-
175
+ };
258
176
 
177
+ /**
178
+ * Create
179
+ */
259
180
  const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
260
- const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate"); // create from
261
-
181
+ const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
182
+ const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
183
+ /**
184
+ * Create from / clone
185
+ */
262
186
  const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
263
- const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom"); // update
264
-
187
+ const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
188
+ const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
189
+ /**
190
+ * Update
191
+ */
265
192
  const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
266
- const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate"); // delete
267
-
193
+ const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
194
+ const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
195
+ /**
196
+ * Delete
197
+ */
268
198
  const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
269
199
  const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
200
+ const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
201
+ /**
202
+ * Initialize
203
+ */
204
+ const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
270
205
  /**
271
206
  * We need to assign some default behaviors.
272
207
  */
273
-
274
208
  (0, _beforeCreate.assignModelBeforeCreate)({
275
209
  onModelBeforeCreate,
276
210
  onModelBeforeCreateFrom,
277
- plugins: context.plugins,
278
- storageOperations
279
- });
280
- (0, _afterCreate.assignModelAfterCreate)({
281
211
  context,
282
- onModelAfterCreate
212
+ storageOperations
283
213
  });
284
214
  (0, _beforeUpdate.assignModelBeforeUpdate)({
285
215
  onModelBeforeUpdate,
286
- plugins: context.plugins,
287
- storageOperations
288
- });
289
- (0, _afterUpdate.assignModelAfterUpdate)({
290
- context,
291
- onModelAfterUpdate
292
- });
293
- (0, _afterCreateFrom.assignModelAfterCreateFrom)({
294
- context,
295
- onModelAfterCreateFrom
216
+ context
296
217
  });
297
218
  (0, _beforeDelete.assignModelBeforeDelete)({
298
219
  onModelBeforeDelete,
299
220
  plugins: context.plugins,
300
221
  storageOperations
301
222
  });
302
- (0, _afterDelete.assignModelAfterDelete)({
303
- context,
304
- onModelAfterDelete
305
- });
306
- return {
307
- /**
308
- * Deprecated - will be removed in 5.36.0
309
- */
310
- onBeforeModelCreate: onModelBeforeCreate,
311
- onAfterModelCreate: onModelAfterCreate,
312
- onBeforeModelCreateFrom: onModelBeforeCreateFrom,
313
- onAfterModelCreateFrom: onModelAfterCreateFrom,
314
- onBeforeModelUpdate: onModelBeforeUpdate,
315
- onAfterModelUpdate: onModelAfterUpdate,
316
- onBeforeModelDelete: onModelBeforeDelete,
317
- onAfterModelDelete: onModelAfterDelete,
318
223
 
224
+ /**
225
+ * CRUD methods
226
+ */
227
+ const createModel = async input => {
228
+ await checkModelPermissions("w");
229
+ const result = await (0, _validation.createModelCreateValidation)().safeParseAsync(input);
230
+ if (!result.success) {
231
+ throw (0, _utils.createZodError)(result.error);
232
+ }
319
233
  /**
320
- * Released in 5.34.0
234
+ * We need to extract the defaultFields because it is not for the CmsModel object.
321
235
  */
322
- onModelBeforeCreate,
323
- onModelAfterCreate,
324
- onModelBeforeCreateFrom,
325
- onModelAfterCreateFrom,
326
- onModelBeforeUpdate,
327
- onModelAfterUpdate,
328
- onModelBeforeDelete,
329
- onModelAfterDelete,
330
- clearModelsCache,
331
- getModel,
332
- listModels,
333
-
334
- async createModel(inputData) {
335
- await checkModelPermissions("w");
336
- const createdData = new _models.CreateContentModelModel().populate(inputData);
337
- await createdData.validate();
338
- const input = await createdData.toJSON();
339
- context.security.disableAuthorization();
340
- const group = await context.cms.getGroup(input.group);
341
- context.security.enableAuthorization();
342
-
343
- if (!group) {
344
- throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
345
- }
346
-
347
- const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
348
- const identity = getIdentity();
349
- const model = {
350
- name: input.name,
351
- description: input.description || "",
352
- modelId: input.modelId || "",
353
- titleFieldId: "id",
354
- locale: getLocale().code,
355
- tenant: getTenant().id,
356
- group: {
357
- id: group.id,
358
- name: group.name
359
- },
360
- createdBy: {
361
- id: identity.id,
362
- displayName: identity.displayName,
363
- type: identity.type
364
- },
365
- createdOn: new Date().toISOString(),
366
- savedOn: new Date().toISOString(),
367
- fields,
368
- lockedFields: [],
369
- layout: input.layout || [],
370
- webinyVersion: context.WEBINY_VERSION
371
- };
236
+ const {
237
+ defaultFields,
238
+ ...data
239
+ } = (0, _utils.removeUndefinedValues)(result.data);
240
+ if (defaultFields) {
241
+ (0, _defaultFields.assignModelDefaultFields)(data);
242
+ }
243
+ const group = await context.cms.getGroup(data.group);
244
+ const identity = getIdentity();
245
+ const model = {
246
+ ...data,
247
+ modelId: data.modelId || "",
248
+ singularApiName: data.singularApiName,
249
+ pluralApiName: data.pluralApiName,
250
+ titleFieldId: "id",
251
+ descriptionFieldId: null,
252
+ imageFieldId: null,
253
+ description: data.description || "",
254
+ locale: getLocale().code,
255
+ tenant: getTenant().id,
256
+ group: {
257
+ id: group.id,
258
+ name: group.name
259
+ },
260
+ createdBy: {
261
+ id: identity.id,
262
+ displayName: identity.displayName,
263
+ type: identity.type
264
+ },
265
+ createdOn: new Date().toISOString(),
266
+ savedOn: new Date().toISOString(),
267
+ lockedFields: [],
268
+ webinyVersion: context.WEBINY_VERSION
269
+ };
270
+ model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
271
+ try {
372
272
  await onModelBeforeCreate.publish({
373
- input,
273
+ input: data,
374
274
  model
375
275
  });
376
276
  const createdModel = await storageOperations.models.create({
377
277
  model
378
278
  });
379
- loaders.listModels.clearAll();
279
+ clearModelsCache();
380
280
  await updateManager(context, model);
381
281
  await onModelAfterCreate.publish({
382
- input,
282
+ input: data,
383
283
  model: createdModel
384
284
  });
385
285
  return createdModel;
386
- },
387
-
388
- /**
389
- * Method does not check for permissions or ownership.
390
- * @internal
391
- */
392
- async updateModelDirect(params) {
393
- const {
394
- model: initialModel,
395
- original
396
- } = params;
397
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
398
- tenant: initialModel.tenant || getTenant().id,
399
- locale: initialModel.locale || getLocale().code,
400
- webinyVersion: context.WEBINY_VERSION
286
+ } catch (ex) {
287
+ await onModelCreateError.publish({
288
+ input: data,
289
+ model,
290
+ error: ex
291
+ });
292
+ throw ex;
293
+ }
294
+ };
295
+ const updateModel = async (modelId, input) => {
296
+ await checkModelPermissions("w");
297
+
298
+ // Get a model record; this will also perform ownership validation.
299
+ const original = await getModel(modelId);
300
+ const result = await (0, _validation.createModelUpdateValidation)().safeParseAsync(input);
301
+ if (!result.success) {
302
+ throw (0, _utils.createZodError)(result.error);
303
+ }
304
+ const data = (0, _utils.removeUndefinedValues)(result.data);
305
+ if (Object.keys(data).length === 0) {
306
+ /**
307
+ * We need to return the original if nothing is to be updated.
308
+ */
309
+ return original;
310
+ }
311
+ let group = {
312
+ id: original.group.id,
313
+ name: original.group.name
314
+ };
315
+ const groupId = data.group;
316
+ if (groupId) {
317
+ const groupData = await context.cms.getGroup(groupId);
318
+ group = {
319
+ id: groupData.id,
320
+ name: groupData.name
321
+ };
322
+ }
323
+ const model = {
324
+ ...original,
325
+ ...data,
326
+ titleFieldId: data.titleFieldId === undefined ? original.titleFieldId : data.titleFieldId,
327
+ descriptionFieldId: data.descriptionFieldId === undefined ? original.descriptionFieldId : data.descriptionFieldId,
328
+ imageFieldId: data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,
329
+ group,
330
+ description: data.description || original.description,
331
+ tenant: original.tenant || getTenant().id,
332
+ locale: original.locale || getLocale().code,
333
+ webinyVersion: context.WEBINY_VERSION,
334
+ savedOn: new Date().toISOString()
335
+ };
336
+ model.tags = (0, _ensureTypeTag.ensureTypeTag)(model);
337
+ try {
338
+ await onModelBeforeUpdate.publish({
339
+ input: data,
340
+ original,
341
+ model
342
+ });
343
+ const resultModel = await storageOperations.models.update({
344
+ model
345
+ });
346
+ await updateManager(context, resultModel);
347
+ await onModelAfterUpdate.publish({
348
+ input: data,
349
+ original,
350
+ model: resultModel
351
+ });
352
+ return resultModel;
353
+ } catch (ex) {
354
+ await onModelUpdateError.publish({
355
+ input: data,
356
+ model,
357
+ original,
358
+ error: ex
401
359
  });
360
+ throw ex;
361
+ }
362
+ };
363
+ const updateModelDirect = async params => {
364
+ const {
365
+ model: initialModel,
366
+ original
367
+ } = params;
368
+ const model = {
369
+ ...initialModel,
370
+ tenant: initialModel.tenant || getTenant().id,
371
+ locale: initialModel.locale || getLocale().code,
372
+ webinyVersion: context.WEBINY_VERSION
373
+ };
374
+ try {
402
375
  await onModelBeforeUpdate.publish({
403
376
  input: {},
404
377
  original,
@@ -408,159 +381,110 @@ const createModelsCrud = params => {
408
381
  model
409
382
  });
410
383
  await updateManager(context, resultModel);
411
- loaders.listModels.clearAll();
384
+ clearModelsCache();
412
385
  await onModelAfterUpdate.publish({
413
386
  input: {},
414
387
  original,
415
388
  model: resultModel
416
389
  });
417
390
  return resultModel;
418
- },
419
-
420
- async createModelFrom(modelId, data) {
421
- await checkModelPermissions("w");
422
- /**
423
- * Get a model record; this will also perform ownership validation.
424
- */
425
-
426
- const original = await getModel(modelId);
427
- const createdData = new _models.CreateContentModelModelFrom().populate({
428
- name: data.name,
429
- modelId: data.modelId,
430
- description: data.description || original.description,
431
- group: data.group,
432
- locale: data.locale
433
- });
434
- await createdData.validate();
435
- const input = await createdData.toJSON();
436
- const locale = await context.i18n.getLocale(input.locale || original.locale);
437
-
438
- if (!locale) {
439
- throw new _handlerGraphql.NotFoundError(`There is no locale "${input.locale}".`);
440
- }
441
- /**
442
- * Use storage operations directly because we cannot get group from different locale via context methods.
443
- */
444
-
445
-
446
- const group = await context.cms.storageOperations.groups.get({
447
- id: input.group,
448
- tenant: original.tenant,
449
- locale: locale.code
450
- });
451
-
452
- if (!group) {
453
- throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
454
- }
455
-
456
- const identity = getIdentity();
457
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
458
- locale: locale.code,
459
- group: {
460
- id: group.id,
461
- name: group.name
462
- },
463
- name: input.name,
464
- modelId: input.modelId || "",
465
- description: input.description || "",
466
- createdBy: {
467
- id: identity.id,
468
- displayName: identity.displayName,
469
- type: identity.type
470
- },
471
- createdOn: new Date().toISOString(),
472
- savedOn: new Date().toISOString(),
473
- lockedFields: [],
474
- webinyVersion: context.WEBINY_VERSION
391
+ } catch (ex) {
392
+ await onModelUpdateError.publish({
393
+ input: {},
394
+ original,
395
+ model,
396
+ error: ex
475
397
  });
398
+ throw ex;
399
+ }
400
+ };
401
+ const createModelFrom = async (modelId, input) => {
402
+ await checkModelPermissions("w");
403
+ /**
404
+ * Get a model record; this will also perform ownership validation.
405
+ */
406
+ const original = await getModel(modelId);
407
+ const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync({
408
+ ...input,
409
+ description: input.description || original.description
410
+ });
411
+ if (!result.success) {
412
+ throw (0, _utils.createZodError)(result.error);
413
+ }
414
+ const data = (0, _utils.removeUndefinedValues)(result.data);
415
+ const locale = await context.i18n.getLocale(data.locale || original.locale);
416
+ if (!locale) {
417
+ throw new _handlerGraphql.NotFoundError(`There is no locale "${data.locale}".`);
418
+ }
419
+ /**
420
+ * Use storage operations directly because we cannot get group from different locale via context methods.
421
+ */
422
+ const group = await context.cms.storageOperations.groups.get({
423
+ id: data.group,
424
+ tenant: original.tenant,
425
+ locale: locale.code
426
+ });
427
+ if (!group) {
428
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
429
+ }
430
+ const identity = getIdentity();
431
+ const model = {
432
+ ...original,
433
+ singularApiName: data.singularApiName,
434
+ pluralApiName: data.pluralApiName,
435
+ locale: locale.code,
436
+ group: {
437
+ id: group.id,
438
+ name: group.name
439
+ },
440
+ icon: data.icon,
441
+ name: data.name,
442
+ modelId: data.modelId || "",
443
+ description: data.description || "",
444
+ createdBy: {
445
+ id: identity.id,
446
+ displayName: identity.displayName,
447
+ type: identity.type
448
+ },
449
+ createdOn: new Date().toISOString(),
450
+ savedOn: new Date().toISOString(),
451
+ lockedFields: [],
452
+ webinyVersion: context.WEBINY_VERSION
453
+ };
454
+ try {
476
455
  await onModelBeforeCreateFrom.publish({
477
- input,
456
+ input: data,
478
457
  model,
479
458
  original
480
459
  });
481
460
  const createdModel = await storageOperations.models.create({
482
461
  model
483
462
  });
484
- loaders.listModels.clearAll();
463
+ clearModelsCache();
485
464
  await updateManager(context, model);
486
465
  await onModelAfterCreateFrom.publish({
487
- input,
466
+ input: data,
488
467
  original,
489
468
  model: createdModel
490
469
  });
491
470
  return createdModel;
492
- },
493
-
494
- async updateModel(modelId, inputData) {
495
- await checkModelPermissions("w"); // Get a model record; this will also perform ownership validation.
496
-
497
- const original = await getModel(modelId);
498
- const updatedData = new _models.UpdateContentModelModel().populate(inputData);
499
- await updatedData.validate();
500
- const input = await updatedData.toJSON({
501
- onlyDirty: true
502
- });
503
-
504
- if (Object.keys(input).length === 0) {
505
- /**
506
- * We need to return the original if nothing is to be updated.
507
- */
508
- return original;
509
- }
510
-
511
- let group = {
512
- id: original.group.id,
513
- name: original.group.name
514
- };
515
-
516
- if (input.group) {
517
- context.security.disableAuthorization();
518
- const groupData = await context.cms.getGroup(input.group);
519
- context.security.enableAuthorization();
520
-
521
- if (!groupData) {
522
- throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
523
- }
524
-
525
- group = {
526
- id: groupData.id,
527
- name: groupData.name
528
- };
529
- }
530
-
531
- const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
532
- const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
533
- group,
534
- tenant: original.tenant || getTenant().id,
535
- locale: original.locale || getLocale().code,
536
- webinyVersion: context.WEBINY_VERSION,
537
- fields,
538
- savedOn: new Date().toISOString()
539
- });
540
- await onModelBeforeUpdate.publish({
541
- input,
542
- original,
543
- model
544
- });
545
- const resultModel = await storageOperations.models.update({
546
- model
547
- });
548
- await updateManager(context, resultModel);
549
- await onModelAfterUpdate.publish({
550
- input,
471
+ } catch (ex) {
472
+ await onModelCreateFromError.publish({
473
+ input: data,
551
474
  original,
552
- model: resultModel
475
+ model,
476
+ error: ex
553
477
  });
554
- return resultModel;
555
- },
556
-
557
- async deleteModel(modelId) {
558
- await checkModelPermissions("d");
559
- const model = await getModel(modelId);
478
+ throw ex;
479
+ }
480
+ };
481
+ const deleteModel = async modelId => {
482
+ await checkModelPermissions("d");
483
+ const model = await getModel(modelId);
484
+ try {
560
485
  await onModelBeforeDelete.publish({
561
486
  model
562
487
  });
563
-
564
488
  try {
565
489
  await storageOperations.models.delete({
566
490
  model
@@ -571,20 +495,87 @@ const createModelsCrud = params => {
571
495
  modelId: model.modelId
572
496
  });
573
497
  }
574
-
498
+ clearModelsCache();
575
499
  await onModelAfterDelete.publish({
576
500
  model
577
501
  });
578
502
  managers.delete(model.modelId);
503
+ } catch (ex) {
504
+ await onModelDeleteError.publish({
505
+ model,
506
+ error: ex
507
+ });
508
+ throw ex;
509
+ }
510
+ };
511
+ const initializeModel = async (modelId, data) => {
512
+ /**
513
+ * We require that users have write permissions to initialize models.
514
+ * Maybe introduce another permission for it?
515
+ */
516
+ await checkModelPermissions("w");
517
+ const model = await getModel(modelId);
518
+ await onModelInitialize.publish({
519
+ model,
520
+ data
521
+ });
522
+ return true;
523
+ };
524
+ return {
525
+ onModelBeforeCreate,
526
+ onModelAfterCreate,
527
+ onModelCreateError,
528
+ onModelBeforeCreateFrom,
529
+ onModelAfterCreateFrom,
530
+ onModelCreateFromError,
531
+ onModelBeforeUpdate,
532
+ onModelAfterUpdate,
533
+ onModelUpdateError,
534
+ onModelBeforeDelete,
535
+ onModelAfterDelete,
536
+ onModelDeleteError,
537
+ onModelInitialize,
538
+ clearModelsCache,
539
+ getModel,
540
+ listModels,
541
+ async createModel(input) {
542
+ return context.benchmark.measure("headlessCms.crud.models.createModel", async () => {
543
+ return createModel(input);
544
+ });
579
545
  },
580
-
581
- getModelManager,
582
- getEntryManager: async model => {
583
- return getModelManager(model);
546
+ /**
547
+ * Method does not check for permissions or ownership.
548
+ * @internal
549
+ */
550
+ async updateModelDirect(params) {
551
+ return context.benchmark.measure("headlessCms.crud.models.updateModelDirect", async () => {
552
+ return updateModelDirect(params);
553
+ });
554
+ },
555
+ async createModelFrom(modelId, userInput) {
556
+ return context.benchmark.measure("headlessCms.crud.models.createModelFrom", async () => {
557
+ return createModelFrom(modelId, userInput);
558
+ });
559
+ },
560
+ async updateModel(modelId, input) {
561
+ return context.benchmark.measure("headlessCms.crud.models.updateModel", async () => {
562
+ return updateModel(modelId, input);
563
+ });
564
+ },
565
+ async deleteModel(modelId) {
566
+ return context.benchmark.measure("headlessCms.crud.models.deleteModel", async () => {
567
+ return deleteModel(modelId);
568
+ });
569
+ },
570
+ async initializeModel(modelId, data) {
571
+ return context.benchmark.measure("headlessCms.crud.models.initializeModel", async () => {
572
+ return initializeModel(modelId, data);
573
+ });
584
574
  },
585
- getManagers: () => managers,
575
+ getEntryManager,
586
576
  getEntryManagers: () => managers
587
577
  };
588
578
  };
579
+ exports.createModelsCrud = createModelsCrud;
589
580
 
590
- exports.createModelsCrud = createModelsCrud;
581
+ //# sourceMappingURL=contentModel.crud.js.map