@webiny/api-headless-cms 0.0.0-mt-2 → 0.0.0-unstable.13771d80a8

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 (644) hide show
  1. package/context.d.ts +6 -0
  2. package/context.js +94 -0
  3. package/context.js.map +1 -0
  4. package/crud/contentEntry/afterDelete.d.ts +8 -0
  5. package/{content/plugins/crud → crud}/contentEntry/afterDelete.js +2 -7
  6. package/crud/contentEntry/afterDelete.js.map +1 -0
  7. package/crud/contentEntry/beforeCreate.d.ts +8 -0
  8. package/{content/plugins/crud → crud}/contentEntry/beforeCreate.js +2 -5
  9. package/crud/contentEntry/beforeCreate.js.map +1 -0
  10. package/crud/contentEntry/beforeUpdate.d.ts +8 -0
  11. package/{content/plugins/crud → crud}/contentEntry/beforeUpdate.js +2 -5
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -0
  13. package/crud/contentEntry/entryDataValidation.d.ts +10 -0
  14. package/{content/plugins/crud → crud}/contentEntry/entryDataValidation.js +22 -49
  15. package/crud/contentEntry/entryDataValidation.js.map +1 -0
  16. package/{content/plugins/crud → crud}/contentEntry/markLockedFields.d.ts +3 -2
  17. package/{content/plugins/crud → crud}/contentEntry/markLockedFields.js +29 -43
  18. package/crud/contentEntry/markLockedFields.js.map +1 -0
  19. package/crud/contentEntry/referenceFieldsMapping.d.ts +13 -0
  20. package/crud/contentEntry/referenceFieldsMapping.js +236 -0
  21. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
  22. package/crud/contentEntry/searchableFields.d.ts +9 -0
  23. package/crud/contentEntry/searchableFields.js +72 -0
  24. package/crud/contentEntry/searchableFields.js.map +1 -0
  25. package/{content/plugins/crud → crud}/contentEntry.crud.d.ts +6 -9
  26. package/crud/contentEntry.crud.js +1202 -0
  27. package/crud/contentEntry.crud.js.map +1 -0
  28. package/crud/contentModel/afterCreate.d.ts +8 -0
  29. package/crud/contentModel/afterCreate.js +16 -0
  30. package/crud/contentModel/afterCreate.js.map +1 -0
  31. package/crud/contentModel/afterCreateFrom.d.ts +8 -0
  32. package/crud/contentModel/afterCreateFrom.js +16 -0
  33. package/crud/contentModel/afterCreateFrom.js.map +1 -0
  34. package/crud/contentModel/afterDelete.d.ts +8 -0
  35. package/crud/contentModel/afterDelete.js +16 -0
  36. package/crud/contentModel/afterDelete.js.map +1 -0
  37. package/crud/contentModel/afterUpdate.d.ts +8 -0
  38. package/crud/contentModel/afterUpdate.js +16 -0
  39. package/crud/contentModel/afterUpdate.js.map +1 -0
  40. package/crud/contentModel/beforeCreate.d.ts +14 -0
  41. package/{content/plugins/crud → crud}/contentModel/beforeCreate.js +62 -39
  42. package/crud/contentModel/beforeCreate.js.map +1 -0
  43. package/crud/contentModel/beforeDelete.d.ts +10 -0
  44. package/{content/plugins/crud → crud}/contentModel/beforeDelete.js +13 -19
  45. package/crud/contentModel/beforeDelete.js.map +1 -0
  46. package/crud/contentModel/beforeUpdate.d.ts +8 -0
  47. package/crud/contentModel/beforeUpdate.js +36 -0
  48. package/crud/contentModel/beforeUpdate.js.map +1 -0
  49. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  50. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  51. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  52. package/crud/contentModel/contentModelManagerFactory.d.ts +2 -0
  53. package/{content/plugins/crud → crud}/contentModel/contentModelManagerFactory.js +0 -7
  54. package/crud/contentModel/contentModelManagerFactory.js.map +1 -0
  55. package/crud/contentModel/createFieldModels.d.ts +2 -0
  56. package/{content/plugins/crud → crud}/contentModel/createFieldModels.js +6 -2
  57. package/crud/contentModel/createFieldModels.js.map +1 -0
  58. package/crud/contentModel/createFieldStorageId.d.ts +2 -0
  59. package/crud/contentModel/createFieldStorageId.js +17 -0
  60. package/crud/contentModel/createFieldStorageId.js.map +1 -0
  61. package/crud/contentModel/defaultFields.d.ts +5 -0
  62. package/crud/contentModel/defaultFields.js +58 -0
  63. package/crud/contentModel/defaultFields.js.map +1 -0
  64. package/crud/contentModel/fieldIdValidation.d.ts +1 -0
  65. package/crud/contentModel/fieldIdValidation.js +25 -0
  66. package/crud/contentModel/fieldIdValidation.js.map +1 -0
  67. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  68. package/crud/contentModel/fields/descriptionField.js +42 -0
  69. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  70. package/crud/contentModel/fields/imageField.d.ts +2 -0
  71. package/crud/contentModel/fields/imageField.js +46 -0
  72. package/crud/contentModel/fields/imageField.js.map +1 -0
  73. package/crud/contentModel/fields/titleField.d.ts +2 -0
  74. package/crud/contentModel/fields/titleField.js +58 -0
  75. package/crud/contentModel/fields/titleField.js.map +1 -0
  76. package/crud/contentModel/idValidation.d.ts +1 -0
  77. package/{content/plugins/crud → crud}/contentModel/idValidation.js +3 -3
  78. package/crud/contentModel/idValidation.js.map +1 -0
  79. package/{content/plugins/crud → crud}/contentModel/models.d.ts +2 -1
  80. package/{content/plugins/crud → crud}/contentModel/models.js +76 -25
  81. package/crud/contentModel/models.js.map +1 -0
  82. package/crud/contentModel/systemFields.d.ts +1 -0
  83. package/crud/contentModel/systemFields.js +8 -0
  84. package/crud/contentModel/systemFields.js.map +1 -0
  85. package/crud/contentModel/validateLayout.d.ts +2 -0
  86. package/{content/plugins/crud → crud}/contentModel/validateLayout.js +1 -11
  87. package/crud/contentModel/validateLayout.js.map +1 -0
  88. package/crud/contentModel/validateModel.d.ts +9 -0
  89. package/crud/contentModel/validateModel.js +27 -0
  90. package/crud/contentModel/validateModel.js.map +1 -0
  91. package/crud/contentModel/validateModelFields.d.ts +9 -0
  92. package/crud/contentModel/validateModelFields.js +343 -0
  93. package/crud/contentModel/validateModelFields.js.map +1 -0
  94. package/crud/contentModel/validation.d.ts +519 -0
  95. package/crud/contentModel/validation.js +145 -0
  96. package/crud/contentModel/validation.js.map +1 -0
  97. package/{content/plugins/crud → crud}/contentModel.crud.d.ts +3 -3
  98. package/crud/contentModel.crud.js +578 -0
  99. package/crud/contentModel.crud.js.map +1 -0
  100. package/crud/contentModelGroup/beforeCreate.d.ts +10 -0
  101. package/{content/plugins/crud → crud}/contentModelGroup/beforeCreate.js +8 -20
  102. package/crud/contentModelGroup/beforeCreate.js.map +1 -0
  103. package/crud/contentModelGroup/beforeDelete.d.ts +10 -0
  104. package/{content/plugins/crud → crud}/contentModelGroup/beforeDelete.js +4 -12
  105. package/crud/contentModelGroup/beforeDelete.js.map +1 -0
  106. package/crud/contentModelGroup/beforeUpdate.d.ts +9 -0
  107. package/{content/plugins/crud → crud}/contentModelGroup/beforeUpdate.js +3 -8
  108. package/crud/contentModelGroup/beforeUpdate.js.map +1 -0
  109. package/crud/contentModelGroup/validation.d.ts +30 -0
  110. package/crud/contentModelGroup/validation.js +34 -0
  111. package/crud/contentModelGroup/validation.js.map +1 -0
  112. package/{content/plugins/crud → crud}/contentModelGroup.crud.d.ts +3 -3
  113. package/crud/contentModelGroup.crud.js +324 -0
  114. package/crud/contentModelGroup.crud.js.map +1 -0
  115. package/{plugins/crud → crud}/settings.crud.d.ts +3 -3
  116. package/crud/settings.crud.js +71 -0
  117. package/crud/settings.crud.js.map +1 -0
  118. package/{plugins/crud → crud}/system.crud.d.ts +6 -3
  119. package/crud/system.crud.js +126 -0
  120. package/crud/system.crud.js.map +1 -0
  121. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +7 -0
  122. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +53 -0
  123. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -0
  124. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  125. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  126. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  127. package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +11 -0
  128. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +251 -0
  129. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -0
  130. package/fieldConverters/index.d.ts +4 -0
  131. package/fieldConverters/index.js +13 -0
  132. package/fieldConverters/index.js.map +1 -0
  133. package/graphql/buildSchemaPlugins.d.ts +11 -0
  134. package/graphql/buildSchemaPlugins.js +19 -0
  135. package/graphql/buildSchemaPlugins.js.map +1 -0
  136. package/graphql/createExecutableSchema.d.ts +7 -0
  137. package/graphql/createExecutableSchema.js +29 -0
  138. package/graphql/createExecutableSchema.js.map +1 -0
  139. package/graphql/generateSchema.d.ts +8 -0
  140. package/graphql/generateSchema.js +31 -0
  141. package/graphql/generateSchema.js.map +1 -0
  142. package/graphql/graphQLHandlerFactory.d.ts +5 -0
  143. package/graphql/graphQLHandlerFactory.js +179 -0
  144. package/graphql/graphQLHandlerFactory.js.map +1 -0
  145. package/graphql/index.d.ts +3 -0
  146. package/graphql/index.js +13 -0
  147. package/graphql/index.js.map +1 -0
  148. package/graphql/schema/baseContentSchema.d.ts +7 -0
  149. package/graphql/schema/baseContentSchema.js +66 -0
  150. package/graphql/schema/baseContentSchema.js.map +1 -0
  151. package/graphql/schema/baseSchema.d.ts +3 -0
  152. package/graphql/schema/baseSchema.js +53 -0
  153. package/graphql/schema/baseSchema.js.map +1 -0
  154. package/graphql/schema/contentEntries.d.ts +7 -0
  155. package/graphql/schema/contentEntries.js +362 -0
  156. package/graphql/schema/contentEntries.js.map +1 -0
  157. package/graphql/schema/contentModelGroups.d.ts +7 -0
  158. package/{content/plugins → graphql}/schema/contentModelGroups.js +39 -33
  159. package/graphql/schema/contentModelGroups.js.map +1 -0
  160. package/graphql/schema/contentModels.d.ts +7 -0
  161. package/{content/plugins → graphql}/schema/contentModels.js +121 -29
  162. package/graphql/schema/contentModels.js.map +1 -0
  163. package/graphql/schema/createFieldResolvers.d.ts +20 -0
  164. package/graphql/schema/createFieldResolvers.js +110 -0
  165. package/graphql/schema/createFieldResolvers.js.map +1 -0
  166. package/graphql/schema/createManageResolvers.d.ts +12 -0
  167. package/graphql/schema/createManageResolvers.js +127 -0
  168. package/graphql/schema/createManageResolvers.js.map +1 -0
  169. package/graphql/schema/createManageSDL.d.ts +13 -0
  170. package/graphql/schema/createManageSDL.js +157 -0
  171. package/graphql/schema/createManageSDL.js.map +1 -0
  172. package/graphql/schema/createPreviewResolvers.d.ts +12 -0
  173. package/graphql/schema/createPreviewResolvers.js +44 -0
  174. package/graphql/schema/createPreviewResolvers.js.map +1 -0
  175. package/graphql/schema/createReadResolvers.d.ts +12 -0
  176. package/graphql/schema/createReadResolvers.js +49 -0
  177. package/graphql/schema/createReadResolvers.js.map +1 -0
  178. package/graphql/schema/createReadSDL.d.ts +13 -0
  179. package/graphql/schema/createReadSDL.js +100 -0
  180. package/graphql/schema/createReadSDL.js.map +1 -0
  181. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +7 -0
  182. package/{content/plugins → graphql}/schema/resolvers/commonFieldResolvers.js +2 -3
  183. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -0
  184. package/graphql/schema/resolvers/manage/resolveCreate.d.ts +7 -0
  185. package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreate.js +2 -7
  186. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -0
  187. package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +8 -0
  188. package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreateFrom.js +2 -7
  189. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
  190. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +7 -0
  191. package/{content/plugins → graphql}/schema/resolvers/manage/resolveDelete.js +8 -12
  192. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -0
  193. package/graphql/schema/resolvers/manage/resolveGet.d.ts +7 -0
  194. package/graphql/schema/resolvers/manage/resolveGet.js +63 -0
  195. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -0
  196. package/graphql/schema/resolvers/manage/resolveGetByIds.d.ts +7 -0
  197. package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetByIds.js +2 -7
  198. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
  199. package/graphql/schema/resolvers/manage/resolveGetRevisions.d.ts +7 -0
  200. package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetRevisions.js +2 -7
  201. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
  202. package/graphql/schema/resolvers/manage/resolveList.d.ts +4 -0
  203. package/{content/plugins/schema/resolvers/preview → graphql/schema/resolvers/manage}/resolveList.js +2 -7
  204. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -0
  205. package/graphql/schema/resolvers/manage/resolvePublish.d.ts +7 -0
  206. package/{content/plugins → graphql}/schema/resolvers/manage/resolvePublish.js +0 -3
  207. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -0
  208. package/graphql/schema/resolvers/manage/resolveRepublish.d.ts +7 -0
  209. package/{content/plugins/schema/resolvers/manage/resolveGet.js → graphql/schema/resolvers/manage/resolveRepublish.js} +4 -7
  210. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -0
  211. package/graphql/schema/resolvers/manage/resolveUnpublish.d.ts +7 -0
  212. package/{content/plugins → graphql}/schema/resolvers/manage/resolveUnpublish.js +0 -3
  213. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
  214. package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +8 -0
  215. package/{content/plugins → graphql}/schema/resolvers/manage/resolveUpdate.js +2 -7
  216. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -0
  217. package/graphql/schema/resolvers/preview/resolveGet.d.ts +4 -0
  218. package/graphql/schema/resolvers/preview/resolveGet.js +26 -0
  219. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -0
  220. package/graphql/schema/resolvers/preview/resolveList.d.ts +4 -0
  221. package/{content/plugins/schema/resolvers/manage → graphql/schema/resolvers/preview}/resolveList.js +2 -7
  222. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -0
  223. package/graphql/schema/resolvers/read/resolveGet.d.ts +4 -0
  224. package/graphql/schema/resolvers/read/resolveGet.js +26 -0
  225. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -0
  226. package/graphql/schema/resolvers/read/resolveList.d.ts +4 -0
  227. package/{content/plugins → graphql}/schema/resolvers/read/resolveList.js +2 -7
  228. package/graphql/schema/resolvers/read/resolveList.js.map +1 -0
  229. package/graphql/schema/schemaPlugins.d.ts +8 -0
  230. package/graphql/schema/schemaPlugins.js +109 -0
  231. package/graphql/schema/schemaPlugins.js.map +1 -0
  232. package/graphql/system.d.ts +6 -0
  233. package/{plugins/graphql → graphql}/system.js +39 -24
  234. package/graphql/system.js.map +1 -0
  235. package/graphqlFields/boolean.d.ts +2 -0
  236. package/graphqlFields/boolean.js +57 -0
  237. package/graphqlFields/boolean.js.map +1 -0
  238. package/graphqlFields/datetime.d.ts +2 -0
  239. package/graphqlFields/datetime.js +78 -0
  240. package/graphqlFields/datetime.js.map +1 -0
  241. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  242. package/graphqlFields/dynamicZone/dynamicZoneField.js +216 -0
  243. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  244. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  245. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  246. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  247. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  248. package/graphqlFields/dynamicZone/index.js +19 -0
  249. package/graphqlFields/dynamicZone/index.js.map +1 -0
  250. package/graphqlFields/file.d.ts +2 -0
  251. package/graphqlFields/file.js +42 -0
  252. package/graphqlFields/file.js.map +1 -0
  253. package/graphqlFields/helpers.d.ts +6 -0
  254. package/graphqlFields/helpers.js +39 -0
  255. package/graphqlFields/helpers.js.map +1 -0
  256. package/graphqlFields/index.d.ts +2 -0
  257. package/graphqlFields/index.js +18 -0
  258. package/graphqlFields/index.js.map +1 -0
  259. package/graphqlFields/longText.d.ts +2 -0
  260. package/graphqlFields/longText.js +53 -0
  261. package/graphqlFields/longText.js.map +1 -0
  262. package/graphqlFields/number.d.ts +2 -0
  263. package/graphqlFields/number.js +67 -0
  264. package/graphqlFields/number.js.map +1 -0
  265. package/graphqlFields/object.d.ts +2 -0
  266. package/graphqlFields/object.js +245 -0
  267. package/graphqlFields/object.js.map +1 -0
  268. package/graphqlFields/ref.d.ts +2 -0
  269. package/graphqlFields/ref.js +255 -0
  270. package/graphqlFields/ref.js.map +1 -0
  271. package/graphqlFields/richText.d.ts +2 -0
  272. package/graphqlFields/richText.js +47 -0
  273. package/graphqlFields/richText.js.map +1 -0
  274. package/graphqlFields/text.d.ts +2 -0
  275. package/graphqlFields/text.js +62 -0
  276. package/graphqlFields/text.js.map +1 -0
  277. package/index.d.ts +10 -12
  278. package/index.js +74 -55
  279. package/index.js.map +1 -0
  280. package/modelManager/DefaultCmsModelManager.d.ts +14 -0
  281. package/{content/plugins/modelManager → modelManager}/DefaultCmsModelManager.js +10 -24
  282. package/modelManager/DefaultCmsModelManager.js.map +1 -0
  283. package/modelManager/index.d.ts +2 -0
  284. package/{content/plugins/modelManager → modelManager}/index.js +3 -7
  285. package/modelManager/index.js.map +1 -0
  286. package/package.json +37 -38
  287. package/parameters/context.d.ts +2 -0
  288. package/parameters/context.js +18 -0
  289. package/parameters/context.js.map +1 -0
  290. package/parameters/header.d.ts +2 -0
  291. package/parameters/header.js +44 -0
  292. package/parameters/header.js.map +1 -0
  293. package/parameters/index.d.ts +4 -0
  294. package/parameters/index.js +49 -0
  295. package/parameters/index.js.map +1 -0
  296. package/parameters/manual.d.ts +6 -0
  297. package/parameters/manual.js +37 -0
  298. package/parameters/manual.js.map +1 -0
  299. package/parameters/path.d.ts +2 -0
  300. package/parameters/path.js +40 -0
  301. package/parameters/path.js.map +1 -0
  302. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  303. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  304. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  305. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  306. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  307. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  308. package/plugins/CmsGroupPlugin.d.ts +13 -0
  309. package/{content/plugins → plugins}/CmsGroupPlugin.js +7 -9
  310. package/plugins/CmsGroupPlugin.js.map +1 -0
  311. package/plugins/CmsModelFieldConverterPlugin.d.ts +14 -0
  312. package/plugins/CmsModelFieldConverterPlugin.js +12 -0
  313. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -0
  314. package/plugins/CmsModelPlugin.d.ts +55 -0
  315. package/plugins/CmsModelPlugin.js +169 -0
  316. package/plugins/CmsModelPlugin.js.map +1 -0
  317. package/plugins/CmsParametersPlugin.d.ts +20 -0
  318. package/plugins/CmsParametersPlugin.js +21 -0
  319. package/plugins/CmsParametersPlugin.js.map +1 -0
  320. package/plugins/StorageTransformPlugin.d.ts +31 -0
  321. package/{content/plugins/storage → plugins}/StorageTransformPlugin.js +2 -10
  322. package/plugins/StorageTransformPlugin.js.map +1 -0
  323. package/plugins/index.d.ts +7 -0
  324. package/plugins/index.js +82 -0
  325. package/plugins/index.js.map +1 -0
  326. package/storage/default.d.ts +2 -0
  327. package/storage/default.js +24 -0
  328. package/storage/default.js.map +1 -0
  329. package/storage/object.d.ts +2 -0
  330. package/storage/object.js +108 -0
  331. package/storage/object.js.map +1 -0
  332. package/types.d.ts +951 -405
  333. package/types.js +105 -62
  334. package/types.js.map +1 -0
  335. package/upgrades/5.33.0/index.d.ts +3 -0
  336. package/upgrades/5.33.0/index.js +182 -0
  337. package/upgrades/5.33.0/index.js.map +1 -0
  338. package/upgrades/index.d.ts +1 -0
  339. package/upgrades/index.js +12 -0
  340. package/upgrades/index.js.map +1 -0
  341. package/utils/access.d.ts +8 -0
  342. package/utils/access.js +76 -0
  343. package/utils/access.js.map +1 -0
  344. package/utils/converters/Converter.d.ts +27 -0
  345. package/utils/converters/Converter.js +58 -0
  346. package/utils/converters/Converter.js.map +1 -0
  347. package/utils/converters/ConverterCollection.d.ts +31 -0
  348. package/utils/converters/ConverterCollection.js +119 -0
  349. package/utils/converters/ConverterCollection.js.map +1 -0
  350. package/utils/converters/valueKeyStorageConverter.d.ts +18 -0
  351. package/utils/converters/valueKeyStorageConverter.js +123 -0
  352. package/utils/converters/valueKeyStorageConverter.js.map +1 -0
  353. package/utils/createTypeFromFields.d.ts +16 -0
  354. package/utils/createTypeFromFields.js +67 -0
  355. package/utils/createTypeFromFields.js.map +1 -0
  356. package/{content/plugins/utils → utils}/createTypeName.d.ts +3 -3
  357. package/{content/plugins/utils → utils}/createTypeName.js +3 -10
  358. package/utils/createTypeName.js.map +1 -0
  359. package/{content/plugins/utils → utils}/entryStorage.d.ts +3 -3
  360. package/{content/plugins/utils → utils}/entryStorage.js +26 -47
  361. package/utils/entryStorage.js.map +1 -0
  362. package/utils/filterAsync.d.ts +1 -0
  363. package/utils/filterAsync.js +18 -0
  364. package/utils/filterAsync.js.map +1 -0
  365. package/utils/getBaseFieldType.d.ts +4 -0
  366. package/utils/getBaseFieldType.js +10 -0
  367. package/utils/getBaseFieldType.js.map +1 -0
  368. package/utils/getEntryDescription.d.ts +2 -0
  369. package/utils/getEntryDescription.js +17 -0
  370. package/utils/getEntryDescription.js.map +1 -0
  371. package/utils/getEntryImage.d.ts +2 -0
  372. package/utils/getEntryImage.js +17 -0
  373. package/utils/getEntryImage.js.map +1 -0
  374. package/utils/getEntryTitle.d.ts +2 -0
  375. package/{content/plugins/utils → utils}/getEntryTitle.js +7 -15
  376. package/utils/getEntryTitle.js.map +1 -0
  377. package/utils/getSchemaFromFieldPlugins.d.ts +9 -0
  378. package/utils/getSchemaFromFieldPlugins.js +39 -0
  379. package/utils/getSchemaFromFieldPlugins.js.map +1 -0
  380. package/utils/ownership.d.ts +8 -0
  381. package/utils/ownership.js +33 -0
  382. package/utils/ownership.js.map +1 -0
  383. package/utils/permissions.d.ts +7 -0
  384. package/utils/permissions.js +91 -0
  385. package/utils/permissions.js.map +1 -0
  386. package/utils/pluralizedTypeName.d.ts +1 -0
  387. package/{content/plugins/utils → utils}/pluralizedTypeName.js +1 -1
  388. package/utils/pluralizedTypeName.js.map +1 -0
  389. package/utils/removeNullValues.d.ts +1 -0
  390. package/utils/removeNullValues.js +17 -0
  391. package/utils/removeNullValues.js.map +1 -0
  392. package/utils/removeUndefinedValues.d.ts +1 -0
  393. package/utils/removeUndefinedValues.js +17 -0
  394. package/utils/removeUndefinedValues.js.map +1 -0
  395. package/utils/renderFields.d.ts +16 -0
  396. package/{content/plugins/utils → utils}/renderFields.js +14 -12
  397. package/utils/renderFields.js.map +1 -0
  398. package/utils/renderGetFilterFields.d.ts +10 -0
  399. package/utils/renderGetFilterFields.js +48 -0
  400. package/utils/renderGetFilterFields.js.map +1 -0
  401. package/utils/renderInputFields.d.ts +15 -0
  402. package/{content/plugins/utils → utils}/renderInputFields.js +7 -10
  403. package/utils/renderInputFields.js.map +1 -0
  404. package/utils/renderListFilterFields.d.ts +11 -0
  405. package/{content/plugins/utils → utils}/renderListFilterFields.js +36 -22
  406. package/utils/renderListFilterFields.js.map +1 -0
  407. package/utils/renderSortEnum.d.ts +12 -0
  408. package/utils/renderSortEnum.js +42 -0
  409. package/utils/renderSortEnum.js.map +1 -0
  410. package/utils/toSlug.d.ts +1 -0
  411. package/utils/toSlug.js +16 -0
  412. package/utils/toSlug.js.map +1 -0
  413. package/validators/dateGte.d.ts +2 -0
  414. package/{content/plugins/validators → validators}/dateGte.js +4 -11
  415. package/validators/dateGte.js.map +1 -0
  416. package/validators/dateLte.d.ts +2 -0
  417. package/{content/plugins/validators → validators}/dateLte.js +4 -11
  418. package/validators/dateLte.js.map +1 -0
  419. package/validators/dynamicZone.d.ts +2 -0
  420. package/validators/dynamicZone.js +20 -0
  421. package/validators/dynamicZone.js.map +1 -0
  422. package/validators/gte.d.ts +2 -0
  423. package/validators/gte.js +28 -0
  424. package/validators/gte.js.map +1 -0
  425. package/validators/in.d.ts +2 -0
  426. package/validators/in.js +28 -0
  427. package/validators/in.js.map +1 -0
  428. package/validators/index.d.ts +1 -0
  429. package/validators/index.js +22 -0
  430. package/validators/index.js.map +1 -0
  431. package/validators/lte.d.ts +2 -0
  432. package/validators/lte.js +28 -0
  433. package/validators/lte.js.map +1 -0
  434. package/validators/maxLength.d.ts +2 -0
  435. package/validators/maxLength.js +28 -0
  436. package/validators/maxLength.js.map +1 -0
  437. package/validators/minLength.d.ts +2 -0
  438. package/validators/minLength.js +28 -0
  439. package/validators/minLength.js.map +1 -0
  440. package/validators/pattern.d.ts +2 -0
  441. package/validators/pattern.js +41 -0
  442. package/validators/pattern.js.map +1 -0
  443. package/validators/patternPlugins/email.d.ts +2 -0
  444. package/validators/patternPlugins/email.js +18 -0
  445. package/validators/patternPlugins/email.js.map +1 -0
  446. package/validators/patternPlugins/index.d.ts +2 -0
  447. package/validators/patternPlugins/index.js +16 -0
  448. package/validators/patternPlugins/index.js.map +1 -0
  449. package/validators/patternPlugins/lowerCase.d.ts +2 -0
  450. package/validators/patternPlugins/lowerCase.js +18 -0
  451. package/validators/patternPlugins/lowerCase.js.map +1 -0
  452. package/validators/patternPlugins/lowerCaseSpace.d.ts +2 -0
  453. package/validators/patternPlugins/lowerCaseSpace.js +18 -0
  454. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  455. package/validators/patternPlugins/upperCase.d.ts +2 -0
  456. package/validators/patternPlugins/upperCase.js +18 -0
  457. package/validators/patternPlugins/upperCase.js.map +1 -0
  458. package/validators/patternPlugins/upperCaseSpace.d.ts +2 -0
  459. package/validators/patternPlugins/upperCaseSpace.js +18 -0
  460. package/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  461. package/validators/patternPlugins/url.d.ts +2 -0
  462. package/validators/patternPlugins/url.js +18 -0
  463. package/validators/patternPlugins/url.js.map +1 -0
  464. package/validators/required.d.ts +2 -0
  465. package/validators/required.js +22 -0
  466. package/validators/required.js.map +1 -0
  467. package/validators/timeGte.d.ts +2 -0
  468. package/{content/plugins/validators → validators}/timeGte.js +5 -11
  469. package/validators/timeGte.js.map +1 -0
  470. package/validators/timeLte.d.ts +2 -0
  471. package/{content/plugins/validators → validators}/timeLte.js +5 -11
  472. package/validators/timeLte.js.map +1 -0
  473. package/validators/unique.d.ts +6 -0
  474. package/validators/unique.js +56 -0
  475. package/validators/unique.js.map +1 -0
  476. package/content/contextSetup.d.ts +0 -4
  477. package/content/contextSetup.js +0 -65
  478. package/content/graphQLHandlerFactory.d.ts +0 -5
  479. package/content/graphQLHandlerFactory.js +0 -173
  480. package/content/plugins/CmsGroupPlugin.d.ts +0 -11
  481. package/content/plugins/CmsModelPlugin.d.ts +0 -11
  482. package/content/plugins/CmsModelPlugin.js +0 -24
  483. package/content/plugins/buildSchemaPlugins.d.ts +0 -7
  484. package/content/plugins/buildSchemaPlugins.js +0 -29
  485. package/content/plugins/crud/contentEntry/afterDelete.d.ts +0 -7
  486. package/content/plugins/crud/contentEntry/beforeCreate.d.ts +0 -7
  487. package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +0 -7
  488. package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +0 -4
  489. package/content/plugins/crud/contentEntry.crud.js +0 -931
  490. package/content/plugins/crud/contentModel/afterCreate.d.ts +0 -7
  491. package/content/plugins/crud/contentModel/afterCreate.js +0 -18
  492. package/content/plugins/crud/contentModel/afterDelete.d.ts +0 -7
  493. package/content/plugins/crud/contentModel/afterDelete.js +0 -18
  494. package/content/plugins/crud/contentModel/afterUpdate.d.ts +0 -7
  495. package/content/plugins/crud/contentModel/afterUpdate.js +0 -18
  496. package/content/plugins/crud/contentModel/beforeCreate.d.ts +0 -9
  497. package/content/plugins/crud/contentModel/beforeDelete.d.ts +0 -9
  498. package/content/plugins/crud/contentModel/beforeUpdate.d.ts +0 -9
  499. package/content/plugins/crud/contentModel/beforeUpdate.js +0 -128
  500. package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +0 -2
  501. package/content/plugins/crud/contentModel/createFieldModels.d.ts +0 -2
  502. package/content/plugins/crud/contentModel/idValidation.d.ts +0 -2
  503. package/content/plugins/crud/contentModel/validateLayout.d.ts +0 -2
  504. package/content/plugins/crud/contentModel.crud.js +0 -425
  505. package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +0 -9
  506. package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +0 -9
  507. package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +0 -8
  508. package/content/plugins/crud/contentModelGroup.crud.js +0 -351
  509. package/content/plugins/crud/index.d.ts +0 -6
  510. package/content/plugins/crud/index.js +0 -100
  511. package/content/plugins/graphqlFields/boolean.d.ts +0 -3
  512. package/content/plugins/graphqlFields/boolean.js +0 -69
  513. package/content/plugins/graphqlFields/datetime.d.ts +0 -3
  514. package/content/plugins/graphqlFields/datetime.js +0 -83
  515. package/content/plugins/graphqlFields/file.d.ts +0 -3
  516. package/content/plugins/graphqlFields/file.js +0 -49
  517. package/content/plugins/graphqlFields/index.d.ts +0 -2
  518. package/content/plugins/graphqlFields/index.js +0 -30
  519. package/content/plugins/graphqlFields/longText.d.ts +0 -3
  520. package/content/plugins/graphqlFields/longText.js +0 -62
  521. package/content/plugins/graphqlFields/number.d.ts +0 -3
  522. package/content/plugins/graphqlFields/number.js +0 -75
  523. package/content/plugins/graphqlFields/object.d.ts +0 -3
  524. package/content/plugins/graphqlFields/object.js +0 -180
  525. package/content/plugins/graphqlFields/ref.d.ts +0 -3
  526. package/content/plugins/graphqlFields/ref.js +0 -205
  527. package/content/plugins/graphqlFields/richText.d.ts +0 -3
  528. package/content/plugins/graphqlFields/richText.js +0 -55
  529. package/content/plugins/graphqlFields/text.d.ts +0 -3
  530. package/content/plugins/graphqlFields/text.js +0 -72
  531. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +0 -8
  532. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +0 -54
  533. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +0 -7
  534. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +0 -35
  535. package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +0 -15
  536. package/content/plugins/modelManager/index.d.ts +0 -3
  537. package/content/plugins/schema/baseSchema.d.ts +0 -4
  538. package/content/plugins/schema/baseSchema.js +0 -98
  539. package/content/plugins/schema/contentEntries.d.ts +0 -4
  540. package/content/plugins/schema/contentEntries.js +0 -166
  541. package/content/plugins/schema/contentModelGroups.d.ts +0 -4
  542. package/content/plugins/schema/contentModels.d.ts +0 -4
  543. package/content/plugins/schema/createFieldResolvers.d.ts +0 -19
  544. package/content/plugins/schema/createFieldResolvers.js +0 -92
  545. package/content/plugins/schema/createManageResolvers.d.ts +0 -11
  546. package/content/plugins/schema/createManageResolvers.js +0 -135
  547. package/content/plugins/schema/createManageSDL.d.ts +0 -9
  548. package/content/plugins/schema/createManageSDL.js +0 -153
  549. package/content/plugins/schema/createPreviewResolvers.d.ts +0 -10
  550. package/content/plugins/schema/createPreviewResolvers.js +0 -55
  551. package/content/plugins/schema/createReadResolvers.d.ts +0 -10
  552. package/content/plugins/schema/createReadResolvers.js +0 -55
  553. package/content/plugins/schema/createReadSDL.d.ts +0 -9
  554. package/content/plugins/schema/createReadSDL.js +0 -96
  555. package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +0 -6
  556. package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +0 -6
  557. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +0 -7
  558. package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +0 -2
  559. package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +0 -2
  560. package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +0 -2
  561. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +0 -2
  562. package/content/plugins/schema/resolvers/manage/resolveList.d.ts +0 -2
  563. package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +0 -2
  564. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -6
  565. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +0 -23
  566. package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +0 -6
  567. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +0 -23
  568. package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +0 -2
  569. package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +0 -7
  570. package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +0 -2
  571. package/content/plugins/schema/resolvers/preview/resolveGet.js +0 -38
  572. package/content/plugins/schema/resolvers/preview/resolveList.d.ts +0 -2
  573. package/content/plugins/schema/resolvers/read/resolveGet.d.ts +0 -2
  574. package/content/plugins/schema/resolvers/read/resolveGet.js +0 -38
  575. package/content/plugins/schema/resolvers/read/resolveList.d.ts +0 -2
  576. package/content/plugins/schema/schemaPlugins.d.ts +0 -3
  577. package/content/plugins/schema/schemaPlugins.js +0 -92
  578. package/content/plugins/storage/StorageTransformPlugin.d.ts +0 -30
  579. package/content/plugins/storage/default.d.ts +0 -3
  580. package/content/plugins/storage/default.js +0 -28
  581. package/content/plugins/storage/object.d.ts +0 -3
  582. package/content/plugins/storage/object.js +0 -119
  583. package/content/plugins/utils/getEntryTitle.d.ts +0 -2
  584. package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +0 -11
  585. package/content/plugins/utils/getSchemaFromFieldPlugins.js +0 -30
  586. package/content/plugins/utils/pluralizedTypeName.d.ts +0 -1
  587. package/content/plugins/utils/renderFields.d.ts +0 -16
  588. package/content/plugins/utils/renderGetFilterFields.d.ts +0 -9
  589. package/content/plugins/utils/renderGetFilterFields.js +0 -41
  590. package/content/plugins/utils/renderInputFields.d.ts +0 -14
  591. package/content/plugins/utils/renderListFilterFields.d.ts +0 -10
  592. package/content/plugins/utils/renderSortEnum.d.ts +0 -9
  593. package/content/plugins/utils/renderSortEnum.js +0 -32
  594. package/content/plugins/validators/dateGte.d.ts +0 -3
  595. package/content/plugins/validators/dateLte.d.ts +0 -3
  596. package/content/plugins/validators/gte.d.ts +0 -3
  597. package/content/plugins/validators/gte.js +0 -32
  598. package/content/plugins/validators/in.d.ts +0 -3
  599. package/content/plugins/validators/in.js +0 -32
  600. package/content/plugins/validators/index.d.ts +0 -2
  601. package/content/plugins/validators/index.js +0 -36
  602. package/content/plugins/validators/lte.d.ts +0 -3
  603. package/content/plugins/validators/lte.js +0 -32
  604. package/content/plugins/validators/maxLength.d.ts +0 -3
  605. package/content/plugins/validators/maxLength.js +0 -32
  606. package/content/plugins/validators/minLength.d.ts +0 -3
  607. package/content/plugins/validators/minLength.js +0 -32
  608. package/content/plugins/validators/pattern.d.ts +0 -3
  609. package/content/plugins/validators/pattern.js +0 -47
  610. package/content/plugins/validators/patternPlugins/email.d.ts +0 -3
  611. package/content/plugins/validators/patternPlugins/email.js +0 -17
  612. package/content/plugins/validators/patternPlugins/index.d.ts +0 -2
  613. package/content/plugins/validators/patternPlugins/index.js +0 -19
  614. package/content/plugins/validators/patternPlugins/lowerCase.d.ts +0 -3
  615. package/content/plugins/validators/patternPlugins/lowerCase.js +0 -17
  616. package/content/plugins/validators/patternPlugins/upperCase.d.ts +0 -3
  617. package/content/plugins/validators/patternPlugins/upperCase.js +0 -17
  618. package/content/plugins/validators/patternPlugins/url.d.ts +0 -3
  619. package/content/plugins/validators/patternPlugins/url.js +0 -17
  620. package/content/plugins/validators/required.d.ts +0 -3
  621. package/content/plugins/validators/required.js +0 -25
  622. package/content/plugins/validators/timeGte.d.ts +0 -3
  623. package/content/plugins/validators/timeLte.d.ts +0 -3
  624. package/migrateCMSPermissions.d.ts +0 -17
  625. package/migrateCMSPermissions.js +0 -193
  626. package/plugins/context.d.ts +0 -4
  627. package/plugins/context.js +0 -34
  628. package/plugins/crud/index.d.ts +0 -6
  629. package/plugins/crud/index.js +0 -100
  630. package/plugins/crud/settings.crud.js +0 -93
  631. package/plugins/crud/system.crud.js +0 -182
  632. package/plugins/graphql/system.d.ts +0 -17
  633. package/plugins/graphql.d.ts +0 -2
  634. package/plugins/graphql.js +0 -79
  635. package/plugins/upgrades/index.d.ts +0 -2
  636. package/plugins/upgrades/index.js +0 -14
  637. package/plugins/upgrades/v5.5.0/helpers.d.ts +0 -6
  638. package/plugins/upgrades/v5.5.0/helpers.js +0 -10
  639. package/plugins/upgrades/v5.5.0/index.d.ts +0 -4
  640. package/plugins/upgrades/v5.5.0/index.js +0 -129
  641. package/transformers.d.ts +0 -2
  642. package/transformers.js +0 -25
  643. package/utils.d.ts +0 -25
  644. package/utils.js +0 -251
@@ -0,0 +1,578 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createModelsCrud = void 0;
8
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _dataloader = _interopRequireDefault(require("dataloader"));
11
+ var _error = _interopRequireDefault(require("@webiny/error"));
12
+ var _handlerGraphql = require("@webiny/handler-graphql");
13
+ var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
14
+ var _pubsub = require("@webiny/pubsub");
15
+ var _beforeCreate = require("./contentModel/beforeCreate");
16
+ var _beforeUpdate = require("./contentModel/beforeUpdate");
17
+ var _beforeDelete = require("./contentModel/beforeDelete");
18
+ var _afterCreate = require("./contentModel/afterCreate");
19
+ var _afterUpdate = require("./contentModel/afterUpdate");
20
+ var _afterDelete = require("./contentModel/afterDelete");
21
+ var _afterCreateFrom = require("./contentModel/afterCreateFrom");
22
+ var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
23
+ var _permissions = require("../utils/permissions");
24
+ var _filterAsync = require("../utils/filterAsync");
25
+ var _ownership = require("../utils/ownership");
26
+ var _access = require("../utils/access");
27
+ var _validation = require("./contentModel/validation");
28
+ var _utils = require("@webiny/utils");
29
+ var _defaultFields = require("./contentModel/defaultFields");
30
+ var _removeUndefinedValues = require("../utils/removeUndefinedValues");
31
+ var _modelApiName = require("./contentModel/compatibility/modelApiName");
32
+ const _excluded = ["defaultFields"];
33
+ /**
34
+ * Given a model, return an array of tags ensuring the `type` tag is set.
35
+ */
36
+ const ensureTypeTag = model => {
37
+ // Let's make sure we have a `type` tag assigned.
38
+ // If `type` tag is not set, set it to a default one (`model`).
39
+ const tags = model.tags || [];
40
+ if (!tags.some(tag => tag.startsWith("type:"))) {
41
+ tags.push("type:model");
42
+ }
43
+ return tags;
44
+ };
45
+ const createModelsCrud = params => {
46
+ const {
47
+ getTenant,
48
+ getIdentity,
49
+ getLocale,
50
+ storageOperations,
51
+ context
52
+ } = params;
53
+ const loaders = {
54
+ listModels: new _dataloader.default(async () => {
55
+ const models = await storageOperations.models.list({
56
+ where: {
57
+ tenant: getTenant().id,
58
+ locale: getLocale().code
59
+ }
60
+ });
61
+ return [models.map(model => {
62
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
63
+ tags: ensureTypeTag(model),
64
+ tenant: model.tenant || getTenant().id,
65
+ locale: model.locale || getLocale().code,
66
+ /**
67
+ * TODO: remove in v5.36.0
68
+ * This is for backward compatibility while migrations are not yet executed.
69
+ */
70
+ singularApiName: (0, _modelApiName.ensureSingularApiName)(model),
71
+ pluralApiName: (0, _modelApiName.ensurePluralApiName)(model)
72
+ });
73
+ })];
74
+ })
75
+ };
76
+ const clearModelsCache = () => {
77
+ for (const loader of Object.values(loaders)) {
78
+ loader.clearAll();
79
+ }
80
+ };
81
+ const managers = new Map();
82
+ const updateManager = async (context, model) => {
83
+ const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
84
+ managers.set(model.modelId, manager);
85
+ return manager;
86
+ };
87
+ const checkModelPermissions = check => {
88
+ return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
89
+ rwd: check
90
+ });
91
+ };
92
+ const getModelsAsPlugins = () => {
93
+ const tenant = getTenant().id;
94
+ const locale = getLocale().code;
95
+ return context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
96
+ /**
97
+ * We need to filter out models that are not for this tenant or locale.
98
+ * If it does not have tenant or locale define, it is for every locale and tenant
99
+ */.filter(plugin => {
100
+ const {
101
+ tenant: modelTenant,
102
+ locale: modelLocale
103
+ } = plugin.contentModel;
104
+ if (modelTenant && modelTenant !== tenant) {
105
+ return false;
106
+ } else if (modelLocale && modelLocale !== locale) {
107
+ return false;
108
+ }
109
+ return true;
110
+ }).map(plugin => {
111
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
112
+ tags: ensureTypeTag(plugin.contentModel),
113
+ tenant,
114
+ locale,
115
+ webinyVersion: context.WEBINY_VERSION
116
+ });
117
+ });
118
+ };
119
+ const modelsGet = async modelId => {
120
+ const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
121
+ if (pluginModel) {
122
+ return pluginModel;
123
+ }
124
+ const model = await storageOperations.models.get({
125
+ tenant: getTenant().id,
126
+ locale: getLocale().code,
127
+ modelId
128
+ });
129
+ if (!model) {
130
+ throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
131
+ }
132
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
133
+ tags: ensureTypeTag(model),
134
+ tenant: model.tenant || getTenant().id,
135
+ locale: model.locale || getLocale().code
136
+ });
137
+ };
138
+ const modelsList = async () => {
139
+ const databaseModels = await loaders.listModels.load("listModels");
140
+ const pluginsModels = getModelsAsPlugins();
141
+ return databaseModels.concat(pluginsModels);
142
+ };
143
+ const listModels = async () => {
144
+ const permission = await checkModelPermissions("r");
145
+ const models = await modelsList();
146
+ return (0, _filterAsync.filterAsync)(models, async model => {
147
+ if (!(0, _ownership.validateOwnership)(context, permission, model)) {
148
+ return false;
149
+ }
150
+ return (0, _access.validateModelAccess)(context, model);
151
+ });
152
+ };
153
+ const getModel = async modelId => {
154
+ const permission = await checkModelPermissions("r");
155
+ const model = await modelsGet(modelId);
156
+ (0, _ownership.checkOwnership)(context, permission, model);
157
+ await (0, _access.checkModelAccess)(context, model);
158
+ return model;
159
+ };
160
+ const getModelManager = async target => {
161
+ const modelId = typeof target === "string" ? target : target.modelId;
162
+ if (managers.has(modelId)) {
163
+ return managers.get(modelId);
164
+ }
165
+ const models = await modelsList();
166
+ const model = models.find(m => m.modelId === modelId);
167
+ if (!model) {
168
+ throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
169
+ }
170
+ return await updateManager(context, model);
171
+ };
172
+
173
+ /**
174
+ * Create
175
+ */
176
+ const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
177
+ const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
178
+ const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
179
+ /**
180
+ * Create from / clone
181
+ */
182
+ const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
183
+ const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
184
+ const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
185
+ /**
186
+ * Update
187
+ */
188
+ const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
189
+ const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
190
+ const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
191
+ /**
192
+ * Delete
193
+ */
194
+ const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
195
+ const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
196
+ const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
197
+ /**
198
+ * Initialize
199
+ */
200
+ const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
201
+ /**
202
+ * We need to assign some default behaviors.
203
+ */
204
+ (0, _beforeCreate.assignModelBeforeCreate)({
205
+ onModelBeforeCreate,
206
+ onModelBeforeCreateFrom,
207
+ context,
208
+ storageOperations
209
+ });
210
+ (0, _afterCreate.assignModelAfterCreate)({
211
+ context,
212
+ onModelAfterCreate
213
+ });
214
+ (0, _beforeUpdate.assignModelBeforeUpdate)({
215
+ onModelBeforeUpdate,
216
+ context
217
+ });
218
+ (0, _afterUpdate.assignModelAfterUpdate)({
219
+ context,
220
+ onModelAfterUpdate
221
+ });
222
+ (0, _afterCreateFrom.assignModelAfterCreateFrom)({
223
+ context,
224
+ onModelAfterCreateFrom
225
+ });
226
+ (0, _beforeDelete.assignModelBeforeDelete)({
227
+ onModelBeforeDelete,
228
+ plugins: context.plugins,
229
+ storageOperations
230
+ });
231
+ (0, _afterDelete.assignModelAfterDelete)({
232
+ context,
233
+ onModelAfterDelete
234
+ });
235
+ return {
236
+ /**
237
+ * Deprecated - will be removed in 5.36.0
238
+ */
239
+ onBeforeModelCreate: onModelBeforeCreate,
240
+ onAfterModelCreate: onModelAfterCreate,
241
+ onBeforeModelCreateFrom: onModelBeforeCreateFrom,
242
+ onAfterModelCreateFrom: onModelAfterCreateFrom,
243
+ onBeforeModelUpdate: onModelBeforeUpdate,
244
+ onAfterModelUpdate: onModelAfterUpdate,
245
+ onBeforeModelDelete: onModelBeforeDelete,
246
+ onAfterModelDelete: onModelAfterDelete,
247
+ /**
248
+ * Released in 5.34.0
249
+ */
250
+ onModelBeforeCreate,
251
+ onModelAfterCreate,
252
+ onModelCreateError,
253
+ onModelBeforeCreateFrom,
254
+ onModelAfterCreateFrom,
255
+ onModelCreateFromError,
256
+ onModelBeforeUpdate,
257
+ onModelAfterUpdate,
258
+ onModelUpdateError,
259
+ onModelBeforeDelete,
260
+ onModelAfterDelete,
261
+ onModelDeleteError,
262
+ onModelInitialize,
263
+ clearModelsCache,
264
+ getModel,
265
+ listModels,
266
+ async createModel(input) {
267
+ await checkModelPermissions("w");
268
+ const result = await (0, _validation.createModelCreateValidation)().safeParseAsync(input);
269
+ if (!result.success) {
270
+ throw (0, _utils.createZodError)(result.error);
271
+ }
272
+ /**
273
+ * We need to extract the defaultFields because it is not for the CmsModel object.
274
+ */
275
+ const _removeUndefinedValue = (0, _removeUndefinedValues.removeUndefinedValues)(result.data),
276
+ {
277
+ defaultFields
278
+ } = _removeUndefinedValue,
279
+ data = (0, _objectWithoutProperties2.default)(_removeUndefinedValue, _excluded);
280
+ if (defaultFields) {
281
+ (0, _defaultFields.assignModelDefaultFields)(data);
282
+ }
283
+ context.security.disableAuthorization();
284
+ const group = await context.cms.getGroup(data.group);
285
+ context.security.enableAuthorization();
286
+ if (!group) {
287
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
288
+ }
289
+ const identity = getIdentity();
290
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
291
+ modelId: data.modelId || "",
292
+ singularApiName: data.singularApiName,
293
+ pluralApiName: data.pluralApiName,
294
+ titleFieldId: "id",
295
+ descriptionFieldId: null,
296
+ imageFieldId: null,
297
+ description: data.description || "",
298
+ locale: getLocale().code,
299
+ tenant: getTenant().id,
300
+ group: {
301
+ id: group.id,
302
+ name: group.name
303
+ },
304
+ createdBy: {
305
+ id: identity.id,
306
+ displayName: identity.displayName,
307
+ type: identity.type
308
+ },
309
+ createdOn: new Date().toISOString(),
310
+ savedOn: new Date().toISOString(),
311
+ lockedFields: [],
312
+ webinyVersion: context.WEBINY_VERSION
313
+ });
314
+ model.tags = ensureTypeTag(model);
315
+ try {
316
+ await onModelBeforeCreate.publish({
317
+ input: data,
318
+ model
319
+ });
320
+ const createdModel = await storageOperations.models.create({
321
+ model
322
+ });
323
+ loaders.listModels.clearAll();
324
+ await updateManager(context, model);
325
+ await onModelAfterCreate.publish({
326
+ input: data,
327
+ model: createdModel
328
+ });
329
+ return createdModel;
330
+ } catch (ex) {
331
+ await onModelCreateError.publish({
332
+ input: data,
333
+ model,
334
+ error: ex
335
+ });
336
+ throw ex;
337
+ }
338
+ },
339
+ /**
340
+ * Method does not check for permissions or ownership.
341
+ * @internal
342
+ */
343
+ async updateModelDirect(params) {
344
+ const {
345
+ model: initialModel,
346
+ original
347
+ } = params;
348
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
349
+ tenant: initialModel.tenant || getTenant().id,
350
+ locale: initialModel.locale || getLocale().code,
351
+ webinyVersion: context.WEBINY_VERSION
352
+ });
353
+ try {
354
+ await onModelBeforeUpdate.publish({
355
+ input: {},
356
+ original,
357
+ model
358
+ });
359
+ const resultModel = await storageOperations.models.update({
360
+ model
361
+ });
362
+ await updateManager(context, resultModel);
363
+ loaders.listModels.clearAll();
364
+ await onModelAfterUpdate.publish({
365
+ input: {},
366
+ original,
367
+ model: resultModel
368
+ });
369
+ return resultModel;
370
+ } catch (ex) {
371
+ await onModelUpdateError.publish({
372
+ input: {},
373
+ original,
374
+ model,
375
+ error: ex
376
+ });
377
+ throw ex;
378
+ }
379
+ },
380
+ async createModelFrom(modelId, userInput) {
381
+ await checkModelPermissions("w");
382
+ /**
383
+ * Get a model record; this will also perform ownership validation.
384
+ */
385
+ const original = await getModel(modelId);
386
+ const result = await (0, _validation.createModelCreateFromValidation)().safeParseAsync((0, _objectSpread2.default)((0, _objectSpread2.default)({}, userInput), {}, {
387
+ description: userInput.description || original.description
388
+ }));
389
+ if (!result.success) {
390
+ throw (0, _utils.createZodError)(result.error);
391
+ }
392
+ const data = (0, _removeUndefinedValues.removeUndefinedValues)(result.data);
393
+ const locale = await context.i18n.getLocale(data.locale || original.locale);
394
+ if (!locale) {
395
+ throw new _handlerGraphql.NotFoundError(`There is no locale "${data.locale}".`);
396
+ }
397
+ /**
398
+ * Use storage operations directly because we cannot get group from different locale via context methods.
399
+ */
400
+ const group = await context.cms.storageOperations.groups.get({
401
+ id: data.group,
402
+ tenant: original.tenant,
403
+ locale: locale.code
404
+ });
405
+ if (!group) {
406
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
407
+ }
408
+ const identity = getIdentity();
409
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
410
+ singularApiName: data.singularApiName,
411
+ pluralApiName: data.pluralApiName,
412
+ locale: locale.code,
413
+ group: {
414
+ id: group.id,
415
+ name: group.name
416
+ },
417
+ icon: data.icon,
418
+ name: data.name,
419
+ modelId: data.modelId || "",
420
+ description: data.description || "",
421
+ createdBy: {
422
+ id: identity.id,
423
+ displayName: identity.displayName,
424
+ type: identity.type
425
+ },
426
+ createdOn: new Date().toISOString(),
427
+ savedOn: new Date().toISOString(),
428
+ lockedFields: [],
429
+ webinyVersion: context.WEBINY_VERSION
430
+ });
431
+ try {
432
+ await onModelBeforeCreateFrom.publish({
433
+ input: data,
434
+ model,
435
+ original
436
+ });
437
+ const createdModel = await storageOperations.models.create({
438
+ model
439
+ });
440
+ loaders.listModels.clearAll();
441
+ await updateManager(context, model);
442
+ await onModelAfterCreateFrom.publish({
443
+ input: data,
444
+ original,
445
+ model: createdModel
446
+ });
447
+ return createdModel;
448
+ } catch (ex) {
449
+ await onModelCreateFromError.publish({
450
+ input: data,
451
+ original,
452
+ model,
453
+ error: ex
454
+ });
455
+ throw ex;
456
+ }
457
+ },
458
+ async updateModel(modelId, input) {
459
+ await checkModelPermissions("w");
460
+
461
+ // Get a model record; this will also perform ownership validation.
462
+ const original = await getModel(modelId);
463
+ const result = await (0, _validation.createModelUpdateValidation)().safeParseAsync(input);
464
+ if (!result.success) {
465
+ throw (0, _utils.createZodError)(result.error);
466
+ }
467
+ const data = (0, _removeUndefinedValues.removeUndefinedValues)(result.data);
468
+ if (Object.keys(data).length === 0) {
469
+ /**
470
+ * We need to return the original if nothing is to be updated.
471
+ */
472
+ return original;
473
+ }
474
+ let group = {
475
+ id: original.group.id,
476
+ name: original.group.name
477
+ };
478
+ if (data.group) {
479
+ context.security.disableAuthorization();
480
+ const groupData = await context.cms.getGroup(data.group);
481
+ context.security.enableAuthorization();
482
+ if (!groupData) {
483
+ throw new _handlerGraphql.NotFoundError(`There is no group "${data.group}".`);
484
+ }
485
+ group = {
486
+ id: groupData.id,
487
+ name: groupData.name
488
+ };
489
+ }
490
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
491
+ titleFieldId: data.titleFieldId === undefined ? original.titleFieldId : data.titleFieldId,
492
+ descriptionFieldId: data.descriptionFieldId === undefined ? original.descriptionFieldId : data.descriptionFieldId,
493
+ imageFieldId: data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,
494
+ group,
495
+ description: data.description || original.description,
496
+ tenant: original.tenant || getTenant().id,
497
+ locale: original.locale || getLocale().code,
498
+ webinyVersion: context.WEBINY_VERSION,
499
+ savedOn: new Date().toISOString()
500
+ });
501
+ model.tags = ensureTypeTag(model);
502
+ try {
503
+ await onModelBeforeUpdate.publish({
504
+ input: data,
505
+ original,
506
+ model
507
+ });
508
+ const resultModel = await storageOperations.models.update({
509
+ model
510
+ });
511
+ await updateManager(context, resultModel);
512
+ await onModelAfterUpdate.publish({
513
+ input: data,
514
+ original,
515
+ model: resultModel
516
+ });
517
+ return resultModel;
518
+ } catch (ex) {
519
+ await onModelUpdateError.publish({
520
+ input: data,
521
+ model,
522
+ original,
523
+ error: ex
524
+ });
525
+ throw ex;
526
+ }
527
+ },
528
+ async deleteModel(modelId) {
529
+ await checkModelPermissions("d");
530
+ const model = await getModel(modelId);
531
+ try {
532
+ await onModelBeforeDelete.publish({
533
+ model
534
+ });
535
+ try {
536
+ await storageOperations.models.delete({
537
+ model
538
+ });
539
+ } catch (ex) {
540
+ throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
541
+ error: ex,
542
+ modelId: model.modelId
543
+ });
544
+ }
545
+ await onModelAfterDelete.publish({
546
+ model
547
+ });
548
+ managers.delete(model.modelId);
549
+ } catch (ex) {
550
+ await onModelDeleteError.publish({
551
+ model,
552
+ error: ex
553
+ });
554
+ throw ex;
555
+ }
556
+ },
557
+ async initializeModel(modelId, data) {
558
+ /**
559
+ * We require that users have write permissions to initialize models.
560
+ * Maybe introduce another permission for it?
561
+ */
562
+ await checkModelPermissions("w");
563
+ const model = await getModel(modelId);
564
+ await onModelInitialize.publish({
565
+ model,
566
+ data
567
+ });
568
+ return true;
569
+ },
570
+ getModelManager,
571
+ getEntryManager: async model => {
572
+ return getModelManager(model);
573
+ },
574
+ getManagers: () => managers,
575
+ getEntryManagers: () => managers
576
+ };
577
+ };
578
+ exports.createModelsCrud = createModelsCrud;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ensureTypeTag","model","tags","some","tag","startsWith","push","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","map","singularApiName","ensureSingularApiName","pluralApiName","ensurePluralApiName","clearModelsCache","loader","Object","values","clearAll","managers","Map","updateManager","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","check","checkPermissions","rwd","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","modelTenant","modelLocale","contentModel","webinyVersion","WEBINY_VERSION","modelsGet","pluginModel","find","get","NotFoundError","modelsList","databaseModels","load","pluginsModels","concat","permission","filterAsync","validateOwnership","validateModelAccess","getModel","checkOwnership","checkModelAccess","getModelManager","target","has","m","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelAfterCreate","assignModelBeforeUpdate","assignModelAfterUpdate","assignModelAfterCreateFrom","assignModelBeforeDelete","assignModelAfterDelete","onBeforeModelCreate","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","removeUndefinedValues","data","defaultFields","assignModelDefaultFields","security","disableAuthorization","group","cms","getGroup","enableAuthorization","identity","titleFieldId","descriptionFieldId","imageFieldId","description","name","createdBy","displayName","createdOn","Date","toISOString","savedOn","lockedFields","publish","createdModel","create","ex","updateModelDirect","initialModel","original","resultModel","update","createModelFrom","userInput","createModelCreateFromValidation","i18n","groups","icon","updateModel","createModelUpdateValidation","keys","length","groupData","undefined","deleteModel","delete","WebinyError","message","initializeModel","getEntryManager","getManagers","getEntryManagers"],"sources":["contentModel.crud.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelManager,\n HeadlessCmsStorageOperations,\n OnModelBeforeCreateTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelInitializeParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelAfterCreateFromTopicParams,\n CmsModelUpdateInput,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelUpdateErrorTopicParams,\n OnModelDeleteErrorTopicParams,\n CmsModelGroup\n} from \"~/types\";\n\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\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 { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { assignModelAfterCreate } from \"./contentModel/afterCreate\";\nimport { assignModelAfterUpdate } from \"./contentModel/afterUpdate\";\nimport { assignModelAfterDelete } from \"./contentModel/afterDelete\";\nimport { assignModelAfterCreateFrom } from \"./contentModel/afterCreateFrom\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { checkPermissions } from \"~/utils/permissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { checkModelAccess, validateModelAccess } from \"~/utils/access\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { removeUndefinedValues } from \"~/utils/removeUndefinedValues\";\nimport {\n ensurePluralApiName,\n ensureSingularApiName\n} from \"./contentModel/compatibility/modelApiName\";\n\n/**\n * Given a model, return an array of tags ensuring the `type` tag is set.\n */\nconst ensureTypeTag = (model: Pick<CmsModel, \"tags\">) => {\n // Let's make sure we have a `type` tag assigned.\n // If `type` tag is not set, set it to a default one (`model`).\n const tags = model.tags || [];\n if (!tags.some(tag => tag.startsWith(\"type:\"))) {\n tags.push(\"type:model\");\n }\n\n return tags;\n};\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const loaders = {\n listModels: new DataLoader(async () => {\n const models = await storageOperations.models.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n return [\n models.map(model => {\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code,\n /**\n * TODO: remove in v5.36.0\n * This is for backward compatibility while migrations are not yet executed.\n */\n singularApiName: ensureSingularApiName(model),\n pluralApiName: ensurePluralApiName(model)\n };\n })\n ];\n })\n };\n\n const clearModelsCache = (): void => {\n for (const loader of Object.values(loaders)) {\n loader.clearAll();\n }\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async (\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager> => {\n const manager = await contentModelManagerFactory(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const checkModelPermissions = (check: string) => {\n return checkPermissions(context, \"cms.contentModel\", { rwd: check });\n };\n\n const getModelsAsPlugins = (): CmsModel[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n /**\n * We need to filter out models 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: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(plugin.contentModel),\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const modelsGet = async (modelId: string) => {\n const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);\n\n if (pluginModel) {\n return pluginModel;\n }\n\n const model = await storageOperations.models.get({\n tenant: getTenant().id,\n locale: getLocale().code,\n modelId\n });\n\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n const modelsList = async (): Promise<CmsModel[]> => {\n const databaseModels: CmsModel[] = await loaders.listModels.load(\"listModels\");\n\n const pluginsModels = getModelsAsPlugins();\n\n return databaseModels.concat(pluginsModels);\n };\n\n const listModels = async () => {\n const permission = await checkModelPermissions(\"r\");\n const models = await modelsList();\n return filterAsync(models, async model => {\n if (!validateOwnership(context, permission, model)) {\n return false;\n }\n return validateModelAccess(context, model);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n const permission = await checkModelPermissions(\"r\");\n\n const model = await modelsGet(modelId);\n\n checkOwnership(context, permission, model);\n await checkModelAccess(context, model);\n\n return model;\n };\n\n const getModelManager: CmsModelContext[\"getModelManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const models = await modelsList();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`There is no content model \"${modelId}\".`);\n }\n return await updateManager(context, model);\n };\n\n /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelAfterCreate({\n context,\n onModelAfterCreate\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelAfterUpdate({\n context,\n onModelAfterUpdate\n });\n assignModelAfterCreateFrom({\n context,\n onModelAfterCreateFrom\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n assignModelAfterDelete({\n context,\n onModelAfterDelete\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeModelCreate: onModelBeforeCreate,\n onAfterModelCreate: onModelAfterCreate,\n onBeforeModelCreateFrom: onModelBeforeCreateFrom,\n onAfterModelCreateFrom: onModelAfterCreateFrom,\n onBeforeModelUpdate: onModelBeforeUpdate,\n onAfterModelUpdate: onModelAfterUpdate,\n onBeforeModelDelete: onModelBeforeDelete,\n onAfterModelDelete: onModelAfterDelete,\n /**\n * Released in 5.34.0\n */\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n listModels,\n async createModel(input) {\n await checkModelPermissions(\"w\");\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n /**\n * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n context.security.disableAuthorization();\n const group = await context.cms.getGroup(data.group);\n context.security.enableAuthorization();\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n loaders.listModels.clearAll();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n },\n async createModelFrom(modelId, userInput) {\n await checkModelPermissions(\"w\");\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const result = await createModelCreateFromValidation().safeParseAsync({\n ...userInput,\n description: userInput.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\n name: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n },\n async updateModel(modelId, input) {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(result.data);\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n if (data.group) {\n context.security.disableAuthorization();\n const groupData = await context.cms.getGroup(data.group);\n context.security.enableAuthorization();\n if (!groupData) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n },\n async deleteModel(modelId) {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n try {\n await onModelBeforeDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n await onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n },\n async initializeModel(modelId, data) {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n },\n getModelManager,\n getEntryManager: async model => {\n return getModelManager(model);\n },\n getManagers: () => managers,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":";;;;;;;;;AAAA;AACA;AAwBA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;AACA;AACA;AACA;AAGmD;AAEnD;AACA;AACA;AACA,MAAMA,aAAa,GAAIC,KAA6B,IAAK;EACrD;EACA;EACA,MAAMC,IAAI,GAAGD,KAAK,CAACC,IAAI,IAAI,EAAE;EAC7B,IAAI,CAACA,IAAI,CAACC,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE;IAC5CH,IAAI,CAACI,IAAI,CAAC,YAAY,CAAC;EAC3B;EAEA,OAAOJ,IAAI;AACf,CAAC;AAUM,MAAMK,gBAAgB,GAAIC,MAA8B,IAAsB;EACjF,MAAM;IAAEC,SAAS;IAAEC,WAAW;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAQ,CAAC,GAAGL,MAAM;EAEhF,MAAMM,OAAO,GAAG;IACZC,UAAU,EAAE,IAAIC,mBAAU,CAAC,YAAY;MACnC,MAAMC,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEX,SAAS,EAAE,CAACY,EAAE;UACtBC,MAAM,EAAEX,SAAS,EAAE,CAACY;QACxB;MACJ,CAAC,CAAC;MACF,OAAO,CACHN,MAAM,CAACO,GAAG,CAACvB,KAAK,IAAI;QAChB,mEACOA,KAAK;UACRC,IAAI,EAAEF,aAAa,CAACC,KAAK,CAAC;UAC1BmB,MAAM,EAAEnB,KAAK,CAACmB,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;UACtCC,MAAM,EAAErB,KAAK,CAACqB,MAAM,IAAIX,SAAS,EAAE,CAACY,IAAI;UACxC;AACxB;AACA;AACA;UACwBE,eAAe,EAAE,IAAAC,mCAAqB,EAACzB,KAAK,CAAC;UAC7C0B,aAAa,EAAE,IAAAC,iCAAmB,EAAC3B,KAAK;QAAC;MAEjD,CAAC,CAAC,CACL;IACL,CAAC;EACL,CAAC;EAED,MAAM4B,gBAAgB,GAAG,MAAY;IACjC,KAAK,MAAMC,MAAM,IAAIC,MAAM,CAACC,MAAM,CAAClB,OAAO,CAAC,EAAE;MACzCgB,MAAM,CAACG,QAAQ,EAAE;IACrB;EACJ,CAAC;EAED,MAAMC,QAAQ,GAAG,IAAIC,GAAG,EAA2B;EACnD,MAAMC,aAAa,GAAG,OAClBvB,OAAmB,EACnBZ,KAAe,KACY;IAC3B,MAAMoC,OAAO,GAAG,MAAM,IAAAC,sDAA0B,EAACzB,OAAO,EAAEZ,KAAK,CAAC;IAChEiC,QAAQ,CAACK,GAAG,CAACtC,KAAK,CAACuC,OAAO,EAAEH,OAAO,CAAC;IACpC,OAAOA,OAAO;EAClB,CAAC;EAED,MAAMI,qBAAqB,GAAIC,KAAa,IAAK;IAC7C,OAAO,IAAAC,6BAAgB,EAAC9B,OAAO,EAAE,kBAAkB,EAAE;MAAE+B,GAAG,EAAEF;IAAM,CAAC,CAAC;EACxE,CAAC;EAED,MAAMG,kBAAkB,GAAG,MAAkB;IACzC,MAAMzB,MAAM,GAAGX,SAAS,EAAE,CAACY,EAAE;IAC7B,MAAMC,MAAM,GAAGX,SAAS,EAAE,CAACY,IAAI;IAE/B,OACIV,OAAO,CAACiC,OAAO,CACVC,MAAM,CAAiBC,8BAAc,CAACC,IAAI;IAC3C;AAChB;AACA;AACA,OAHgB,CAICC,MAAM,CAACC,MAAM,IAAI;MACd,MAAM;QAAE/B,MAAM,EAAEgC,WAAW;QAAE9B,MAAM,EAAE+B;MAAY,CAAC,GAAGF,MAAM,CAACG,YAAY;MACxE,IAAIF,WAAW,IAAIA,WAAW,KAAKhC,MAAM,EAAE;QACvC,OAAO,KAAK;MAChB,CAAC,MAAM,IAAIiC,WAAW,IAAIA,WAAW,KAAK/B,MAAM,EAAE;QAC9C,OAAO,KAAK;MAChB;MACA,OAAO,IAAI;IACf,CAAC,CAAC,CACDE,GAAG,CAAC2B,MAAM,IAAI;MACX,mEACOA,MAAM,CAACG,YAAY;QACtBpD,IAAI,EAAEF,aAAa,CAACmD,MAAM,CAACG,YAAY,CAAC;QACxClC,MAAM;QACNE,MAAM;QACNiC,aAAa,EAAE1C,OAAO,CAAC2C;MAAc;IAE7C,CAAC,CAAC;EAEd,CAAC;EAED,MAAMC,SAAS,GAAG,MAAOjB,OAAe,IAAK;IACzC,MAAMkB,WAAW,GAAGb,kBAAkB,EAAE,CAACc,IAAI,CAAC1D,KAAK,IAAIA,KAAK,CAACuC,OAAO,KAAKA,OAAO,CAAC;IAEjF,IAAIkB,WAAW,EAAE;MACb,OAAOA,WAAW;IACtB;IAEA,MAAMzD,KAAK,GAAG,MAAMW,iBAAiB,CAACK,MAAM,CAAC2C,GAAG,CAAC;MAC7CxC,MAAM,EAAEX,SAAS,EAAE,CAACY,EAAE;MACtBC,MAAM,EAAEX,SAAS,EAAE,CAACY,IAAI;MACxBiB;IACJ,CAAC,CAAC;IAEF,IAAI,CAACvC,KAAK,EAAE;MACR,MAAM,IAAI4D,6BAAa,CAAE,kBAAiBrB,OAAQ,kBAAiB,CAAC;IACxE;IAEA,mEACOvC,KAAK;MACRC,IAAI,EAAEF,aAAa,CAACC,KAAK,CAAC;MAC1BmB,MAAM,EAAEnB,KAAK,CAACmB,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;MACtCC,MAAM,EAAErB,KAAK,CAACqB,MAAM,IAAIX,SAAS,EAAE,CAACY;IAAI;EAEhD,CAAC;EAED,MAAMuC,UAAU,GAAG,YAAiC;IAChD,MAAMC,cAA0B,GAAG,MAAMjD,OAAO,CAACC,UAAU,CAACiD,IAAI,CAAC,YAAY,CAAC;IAE9E,MAAMC,aAAa,GAAGpB,kBAAkB,EAAE;IAE1C,OAAOkB,cAAc,CAACG,MAAM,CAACD,aAAa,CAAC;EAC/C,CAAC;EAED,MAAMlD,UAAU,GAAG,YAAY;IAC3B,MAAMoD,UAAU,GAAG,MAAM1B,qBAAqB,CAAC,GAAG,CAAC;IACnD,MAAMxB,MAAM,GAAG,MAAM6C,UAAU,EAAE;IACjC,OAAO,IAAAM,wBAAW,EAACnD,MAAM,EAAE,MAAMhB,KAAK,IAAI;MACtC,IAAI,CAAC,IAAAoE,4BAAiB,EAACxD,OAAO,EAAEsD,UAAU,EAAElE,KAAK,CAAC,EAAE;QAChD,OAAO,KAAK;MAChB;MACA,OAAO,IAAAqE,2BAAmB,EAACzD,OAAO,EAAEZ,KAAK,CAAC;IAC9C,CAAC,CAAC;EACN,CAAC;EAED,MAAMsE,QAAQ,GAAG,MAAO/B,OAAe,IAAwB;IAC3D,MAAM2B,UAAU,GAAG,MAAM1B,qBAAqB,CAAC,GAAG,CAAC;IAEnD,MAAMxC,KAAK,GAAG,MAAMwD,SAAS,CAACjB,OAAO,CAAC;IAEtC,IAAAgC,yBAAc,EAAC3D,OAAO,EAAEsD,UAAU,EAAElE,KAAK,CAAC;IAC1C,MAAM,IAAAwE,wBAAgB,EAAC5D,OAAO,EAAEZ,KAAK,CAAC;IAEtC,OAAOA,KAAK;EAChB,CAAC;EAED,MAAMyE,eAAmD,GAAG,MACxDC,MAAM,IACqB;IAC3B,MAAMnC,OAAO,GAAG,OAAOmC,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGA,MAAM,CAACnC,OAAO;IACpE,IAAIN,QAAQ,CAAC0C,GAAG,CAACpC,OAAO,CAAC,EAAE;MACvB,OAAON,QAAQ,CAAC0B,GAAG,CAACpB,OAAO,CAAC;IAChC;IACA,MAAMvB,MAAM,GAAG,MAAM6C,UAAU,EAAE;IACjC,MAAM7D,KAAK,GAAGgB,MAAM,CAAC0C,IAAI,CAACkB,CAAC,IAAIA,CAAC,CAACrC,OAAO,KAAKA,OAAO,CAAC;IACrD,IAAI,CAACvC,KAAK,EAAE;MACR,MAAM,IAAI4D,6BAAa,CAAE,8BAA6BrB,OAAQ,IAAG,CAAC;IACtE;IACA,OAAO,MAAMJ,aAAa,CAACvB,OAAO,EAAEZ,KAAK,CAAC;EAC9C,CAAC;;EAED;AACJ;AACA;EACI,MAAM6E,mBAAmB,GACrB,IAAAC,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E,MAAMC,kBAAkB,GAAG,IAAAD,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F,MAAME,kBAAkB,GAAG,IAAAF,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F;AACJ;AACA;EACI,MAAMG,uBAAuB,GAAG,IAAAH,mBAAW,EACvC,6BAA6B,CAChC;EACD,MAAMI,sBAAsB,GAAG,IAAAJ,mBAAW,EACtC,4BAA4B,CAC/B;EACD,MAAMK,sBAAsB,GAAG,IAAAL,mBAAW,EACtC,4BAA4B,CAC/B;EACD;AACJ;AACA;EACI,MAAMM,mBAAmB,GACrB,IAAAN,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E,MAAMO,kBAAkB,GAAG,IAAAP,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F,MAAMQ,kBAAkB,GAAG,IAAAR,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F;AACJ;AACA;EACI,MAAMS,mBAAmB,GACrB,IAAAT,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E,MAAMU,kBAAkB,GAAG,IAAAV,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F,MAAMW,kBAAkB,GAAG,IAAAX,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F;AACJ;AACA;EACI,MAAMY,iBAAiB,GAAG,IAAAZ,mBAAW,EAA0B,uBAAuB,CAAC;EACvF;AACJ;AACA;EACI,IAAAa,qCAAuB,EAAC;IACpBd,mBAAmB;IACnBI,uBAAuB;IACvBrE,OAAO;IACPD;EACJ,CAAC,CAAC;EACF,IAAAiF,mCAAsB,EAAC;IACnBhF,OAAO;IACPmE;EACJ,CAAC,CAAC;EACF,IAAAc,qCAAuB,EAAC;IACpBT,mBAAmB;IACnBxE;EACJ,CAAC,CAAC;EACF,IAAAkF,mCAAsB,EAAC;IACnBlF,OAAO;IACPyE;EACJ,CAAC,CAAC;EACF,IAAAU,2CAA0B,EAAC;IACvBnF,OAAO;IACPsE;EACJ,CAAC,CAAC;EACF,IAAAc,qCAAuB,EAAC;IACpBT,mBAAmB;IACnB1C,OAAO,EAAEjC,OAAO,CAACiC,OAAO;IACxBlC;EACJ,CAAC,CAAC;EACF,IAAAsF,mCAAsB,EAAC;IACnBrF,OAAO;IACP4E;EACJ,CAAC,CAAC;EAEF,OAAO;IACH;AACR;AACA;IACQU,mBAAmB,EAAErB,mBAAmB;IACxCsB,kBAAkB,EAAEpB,kBAAkB;IACtCqB,uBAAuB,EAAEnB,uBAAuB;IAChDoB,sBAAsB,EAAEnB,sBAAsB;IAC9CoB,mBAAmB,EAAElB,mBAAmB;IACxCmB,kBAAkB,EAAElB,kBAAkB;IACtCmB,mBAAmB,EAAEjB,mBAAmB;IACxCkB,kBAAkB,EAAEjB,kBAAkB;IACtC;AACR;AACA;IACQX,mBAAmB;IACnBE,kBAAkB;IAClBC,kBAAkB;IAClBC,uBAAuB;IACvBC,sBAAsB;IACtBC,sBAAsB;IACtBC,mBAAmB;IACnBC,kBAAkB;IAClBC,kBAAkB;IAClBC,mBAAmB;IACnBC,kBAAkB;IAClBC,kBAAkB;IAClBC,iBAAiB;IACjB9D,gBAAgB;IAChB0C,QAAQ;IACRxD,UAAU;IACV,MAAM4F,WAAW,CAACC,KAAK,EAAE;MACrB,MAAMnE,qBAAqB,CAAC,GAAG,CAAC;MAEhC,MAAMoE,MAAM,GAAG,MAAM,IAAAC,uCAA2B,GAAE,CAACC,cAAc,CAACH,KAAK,CAAC;MACxE,IAAI,CAACC,MAAM,CAACG,OAAO,EAAE;QACjB,MAAM,IAAAC,qBAAc,EAACJ,MAAM,CAACK,KAAK,CAAC;MACtC;MACA;AACZ;AACA;MACY,8BAAmC,IAAAC,4CAAqB,EAACN,MAAM,CAACO,IAAI,CAAC;QAA/D;UAAEC;QAAuB,CAAC;QAAND,IAAI;MAC9B,IAAIC,aAAa,EAAE;QACf,IAAAC,uCAAwB,EAACF,IAAI,CAAC;MAClC;MAEAvG,OAAO,CAAC0G,QAAQ,CAACC,oBAAoB,EAAE;MACvC,MAAMC,KAAK,GAAG,MAAM5G,OAAO,CAAC6G,GAAG,CAACC,QAAQ,CAACP,IAAI,CAACK,KAAK,CAAC;MACpD5G,OAAO,CAAC0G,QAAQ,CAACK,mBAAmB,EAAE;MACtC,IAAI,CAACH,KAAK,EAAE;QACR,MAAM,IAAI5D,6BAAa,CAAE,sBAAqBuD,IAAI,CAACK,KAAM,IAAG,CAAC;MACjE;MAEA,MAAMI,QAAQ,GAAGnH,WAAW,EAAE;MAC9B,MAAMT,KAAe,+DACdmH,IAAI;QACP5E,OAAO,EAAE4E,IAAI,CAAC5E,OAAO,IAAI,EAAE;QAC3Bf,eAAe,EAAE2F,IAAI,CAAC3F,eAAe;QACrCE,aAAa,EAAEyF,IAAI,CAACzF,aAAa;QACjCmG,YAAY,EAAE,IAAI;QAClBC,kBAAkB,EAAE,IAAI;QACxBC,YAAY,EAAE,IAAI;QAClBC,WAAW,EAAEb,IAAI,CAACa,WAAW,IAAI,EAAE;QACnC3G,MAAM,EAAEX,SAAS,EAAE,CAACY,IAAI;QACxBH,MAAM,EAAEX,SAAS,EAAE,CAACY,EAAE;QACtBoG,KAAK,EAAE;UACHpG,EAAE,EAAEoG,KAAK,CAACpG,EAAE;UACZ6G,IAAI,EAAET,KAAK,CAACS;QAChB,CAAC;QACDC,SAAS,EAAE;UACP9G,EAAE,EAAEwG,QAAQ,CAACxG,EAAE;UACf+G,WAAW,EAAEP,QAAQ,CAACO,WAAW;UACjCnF,IAAI,EAAE4E,QAAQ,CAAC5E;QACnB,CAAC;QACDoF,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;QACnCC,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW,EAAE;QACjCE,YAAY,EAAE,EAAE;QAChBlF,aAAa,EAAE1C,OAAO,CAAC2C;MAAc,EACxC;MAEDvD,KAAK,CAACC,IAAI,GAAGF,aAAa,CAACC,KAAK,CAAC;MAEjC,IAAI;QACA,MAAM6E,mBAAmB,CAAC4D,OAAO,CAAC;UAC9B9B,KAAK,EAAEQ,IAAI;UACXnH;QACJ,CAAC,CAAC;QAEF,MAAM0I,YAAY,GAAG,MAAM/H,iBAAiB,CAACK,MAAM,CAAC2H,MAAM,CAAC;UACvD3I;QACJ,CAAC,CAAC;QAEFa,OAAO,CAACC,UAAU,CAACkB,QAAQ,EAAE;QAE7B,MAAMG,aAAa,CAACvB,OAAO,EAAEZ,KAAK,CAAC;QAEnC,MAAM+E,kBAAkB,CAAC0D,OAAO,CAAC;UAC7B9B,KAAK,EAAEQ,IAAI;UACXnH,KAAK,EAAE0I;QACX,CAAC,CAAC;QAEF,OAAOA,YAAY;MACvB,CAAC,CAAC,OAAOE,EAAE,EAAE;QACT,MAAM5D,kBAAkB,CAACyD,OAAO,CAAC;UAC7B9B,KAAK,EAAEQ,IAAI;UACXnH,KAAK;UACLiH,KAAK,EAAE2B;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC;IACD;AACR;AACA;AACA;IACQ,MAAMC,iBAAiB,CAACtI,MAAM,EAAE;MAC5B,MAAM;QAAEP,KAAK,EAAE8I,YAAY;QAAEC;MAAS,CAAC,GAAGxI,MAAM;MAEhD,MAAMP,KAAe,+DACd8I,YAAY;QACf3H,MAAM,EAAE2H,YAAY,CAAC3H,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;QAC7CC,MAAM,EAAEyH,YAAY,CAACzH,MAAM,IAAIX,SAAS,EAAE,CAACY,IAAI;QAC/CgC,aAAa,EAAE1C,OAAO,CAAC2C;MAAc,EACxC;MAED,IAAI;QACA,MAAM6B,mBAAmB,CAACqD,OAAO,CAAC;UAC9B9B,KAAK,EAAE,CAAC,CAAwB;UAChCoC,QAAQ;UACR/I;QACJ,CAAC,CAAC;QAEF,MAAMgJ,WAAW,GAAG,MAAMrI,iBAAiB,CAACK,MAAM,CAACiI,MAAM,CAAC;UACtDjJ;QACJ,CAAC,CAAC;QAEF,MAAMmC,aAAa,CAACvB,OAAO,EAAEoI,WAAW,CAAC;QAEzCnI,OAAO,CAACC,UAAU,CAACkB,QAAQ,EAAE;QAE7B,MAAMqD,kBAAkB,CAACoD,OAAO,CAAC;UAC7B9B,KAAK,EAAE,CAAC,CAAwB;UAChCoC,QAAQ;UACR/I,KAAK,EAAEgJ;QACX,CAAC,CAAC;QAEF,OAAOA,WAAW;MACtB,CAAC,CAAC,OAAOJ,EAAE,EAAE;QACT,MAAMtD,kBAAkB,CAACmD,OAAO,CAAC;UAC7B9B,KAAK,EAAE,CAAC,CAAwB;UAChCoC,QAAQ;UACR/I,KAAK;UACLiH,KAAK,EAAE2B;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC;IACD,MAAMM,eAAe,CAAC3G,OAAO,EAAE4G,SAAS,EAAE;MACtC,MAAM3G,qBAAqB,CAAC,GAAG,CAAC;MAChC;AACZ;AACA;MACY,MAAMuG,QAAQ,GAAG,MAAMzE,QAAQ,CAAC/B,OAAO,CAAC;MAExC,MAAMqE,MAAM,GAAG,MAAM,IAAAwC,2CAA+B,GAAE,CAACtC,cAAc,6DAC9DqC,SAAS;QACZnB,WAAW,EAAEmB,SAAS,CAACnB,WAAW,IAAIe,QAAQ,CAACf;MAAW,GAC5D;MACF,IAAI,CAACpB,MAAM,CAACG,OAAO,EAAE;QACjB,MAAM,IAAAC,qBAAc,EAACJ,MAAM,CAACK,KAAK,CAAC;MACtC;MAEA,MAAME,IAAI,GAAG,IAAAD,4CAAqB,EAACN,MAAM,CAACO,IAAI,CAAC;MAE/C,MAAM9F,MAAM,GAAG,MAAMT,OAAO,CAACyI,IAAI,CAAC3I,SAAS,CAACyG,IAAI,CAAC9F,MAAM,IAAI0H,QAAQ,CAAC1H,MAAM,CAAC;MAC3E,IAAI,CAACA,MAAM,EAAE;QACT,MAAM,IAAIuC,6BAAa,CAAE,uBAAsBuD,IAAI,CAAC9F,MAAO,IAAG,CAAC;MACnE;MACA;AACZ;AACA;MACY,MAAMmG,KAAK,GAAG,MAAM5G,OAAO,CAAC6G,GAAG,CAAC9G,iBAAiB,CAAC2I,MAAM,CAAC3F,GAAG,CAAC;QACzDvC,EAAE,EAAE+F,IAAI,CAACK,KAAK;QACdrG,MAAM,EAAE4H,QAAQ,CAAC5H,MAAM;QACvBE,MAAM,EAAEA,MAAM,CAACC;MACnB,CAAC,CAAC;MACF,IAAI,CAACkG,KAAK,EAAE;QACR,MAAM,IAAI5D,6BAAa,CAAE,sBAAqBuD,IAAI,CAACK,KAAM,IAAG,CAAC;MACjE;MAEA,MAAMI,QAAQ,GAAGnH,WAAW,EAAE;MAC9B,MAAMT,KAAe,+DACd+I,QAAQ;QACXvH,eAAe,EAAE2F,IAAI,CAAC3F,eAAe;QACrCE,aAAa,EAAEyF,IAAI,CAACzF,aAAa;QACjCL,MAAM,EAAEA,MAAM,CAACC,IAAI;QACnBkG,KAAK,EAAE;UACHpG,EAAE,EAAEoG,KAAK,CAACpG,EAAE;UACZ6G,IAAI,EAAET,KAAK,CAACS;QAChB,CAAC;QACDsB,IAAI,EAAEpC,IAAI,CAACoC,IAAI;QACftB,IAAI,EAAEd,IAAI,CAACc,IAAI;QACf1F,OAAO,EAAE4E,IAAI,CAAC5E,OAAO,IAAI,EAAE;QAC3ByF,WAAW,EAAEb,IAAI,CAACa,WAAW,IAAI,EAAE;QACnCE,SAAS,EAAE;UACP9G,EAAE,EAAEwG,QAAQ,CAACxG,EAAE;UACf+G,WAAW,EAAEP,QAAQ,CAACO,WAAW;UACjCnF,IAAI,EAAE4E,QAAQ,CAAC5E;QACnB,CAAC;QACDoF,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;QACnCC,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW,EAAE;QACjCE,YAAY,EAAE,EAAE;QAChBlF,aAAa,EAAE1C,OAAO,CAAC2C;MAAc,EACxC;MAED,IAAI;QACA,MAAM0B,uBAAuB,CAACwD,OAAO,CAAC;UAClC9B,KAAK,EAAEQ,IAAI;UACXnH,KAAK;UACL+I;QACJ,CAAC,CAAC;QAEF,MAAML,YAAY,GAAG,MAAM/H,iBAAiB,CAACK,MAAM,CAAC2H,MAAM,CAAC;UACvD3I;QACJ,CAAC,CAAC;QAEFa,OAAO,CAACC,UAAU,CAACkB,QAAQ,EAAE;QAE7B,MAAMG,aAAa,CAACvB,OAAO,EAAEZ,KAAK,CAAC;QAEnC,MAAMkF,sBAAsB,CAACuD,OAAO,CAAC;UACjC9B,KAAK,EAAEQ,IAAI;UACX4B,QAAQ;UACR/I,KAAK,EAAE0I;QACX,CAAC,CAAC;QAEF,OAAOA,YAAY;MACvB,CAAC,CAAC,OAAOE,EAAE,EAAE;QACT,MAAMzD,sBAAsB,CAACsD,OAAO,CAAC;UACjC9B,KAAK,EAAEQ,IAAI;UACX4B,QAAQ;UACR/I,KAAK;UACLiH,KAAK,EAAE2B;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC;IACD,MAAMY,WAAW,CAACjH,OAAO,EAAEoE,KAAK,EAAE;MAC9B,MAAMnE,qBAAqB,CAAC,GAAG,CAAC;;MAEhC;MACA,MAAMuG,QAAQ,GAAG,MAAMzE,QAAQ,CAAC/B,OAAO,CAAC;MAExC,MAAMqE,MAAM,GAAG,MAAM,IAAA6C,uCAA2B,GAAE,CAAC3C,cAAc,CAACH,KAAK,CAAC;MACxE,IAAI,CAACC,MAAM,CAACG,OAAO,EAAE;QACjB,MAAM,IAAAC,qBAAc,EAACJ,MAAM,CAACK,KAAK,CAAC;MACtC;MAEA,MAAME,IAAI,GAAG,IAAAD,4CAAqB,EAACN,MAAM,CAACO,IAAI,CAAC;MAE/C,IAAIrF,MAAM,CAAC4H,IAAI,CAACvC,IAAI,CAAC,CAACwC,MAAM,KAAK,CAAC,EAAE;QAChC;AAChB;AACA;QACgB,OAAOZ,QAAQ;MACnB;MACA,IAAIvB,KAAoB,GAAG;QACvBpG,EAAE,EAAE2H,QAAQ,CAACvB,KAAK,CAACpG,EAAE;QACrB6G,IAAI,EAAEc,QAAQ,CAACvB,KAAK,CAACS;MACzB,CAAC;MACD,IAAId,IAAI,CAACK,KAAK,EAAE;QACZ5G,OAAO,CAAC0G,QAAQ,CAACC,oBAAoB,EAAE;QACvC,MAAMqC,SAAS,GAAG,MAAMhJ,OAAO,CAAC6G,GAAG,CAACC,QAAQ,CAACP,IAAI,CAACK,KAAK,CAAC;QACxD5G,OAAO,CAAC0G,QAAQ,CAACK,mBAAmB,EAAE;QACtC,IAAI,CAACiC,SAAS,EAAE;UACZ,MAAM,IAAIhG,6BAAa,CAAE,sBAAqBuD,IAAI,CAACK,KAAM,IAAG,CAAC;QACjE;QACAA,KAAK,GAAG;UACJpG,EAAE,EAAEwI,SAAS,CAACxI,EAAE;UAChB6G,IAAI,EAAE2B,SAAS,CAAC3B;QACpB,CAAC;MACL;MACA,MAAMjI,KAAe,2FACd+I,QAAQ,GACR5B,IAAI;QACPU,YAAY,EACRV,IAAI,CAACU,YAAY,KAAKgC,SAAS,GACzBd,QAAQ,CAAClB,YAAY,GACpBV,IAAI,CAACU,YAAuB;QACvCC,kBAAkB,EACdX,IAAI,CAACW,kBAAkB,KAAK+B,SAAS,GAC/Bd,QAAQ,CAACjB,kBAAkB,GAC3BX,IAAI,CAACW,kBAAkB;QACjCC,YAAY,EACRZ,IAAI,CAACY,YAAY,KAAK8B,SAAS,GAAGd,QAAQ,CAAChB,YAAY,GAAGZ,IAAI,CAACY,YAAY;QAC/EP,KAAK;QACLQ,WAAW,EAAEb,IAAI,CAACa,WAAW,IAAIe,QAAQ,CAACf,WAAW;QACrD7G,MAAM,EAAE4H,QAAQ,CAAC5H,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;QACzCC,MAAM,EAAE0H,QAAQ,CAAC1H,MAAM,IAAIX,SAAS,EAAE,CAACY,IAAI;QAC3CgC,aAAa,EAAE1C,OAAO,CAAC2C,cAAc;QACrCgF,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW;MAAE,EACpC;MAEDtI,KAAK,CAACC,IAAI,GAAGF,aAAa,CAACC,KAAK,CAAC;MAEjC,IAAI;QACA,MAAMoF,mBAAmB,CAACqD,OAAO,CAAC;UAC9B9B,KAAK,EAAEQ,IAAI;UACX4B,QAAQ;UACR/I;QACJ,CAAC,CAAC;QAEF,MAAMgJ,WAAW,GAAG,MAAMrI,iBAAiB,CAACK,MAAM,CAACiI,MAAM,CAAC;UACtDjJ;QACJ,CAAC,CAAC;QAEF,MAAMmC,aAAa,CAACvB,OAAO,EAAEoI,WAAW,CAAC;QAEzC,MAAM3D,kBAAkB,CAACoD,OAAO,CAAC;UAC7B9B,KAAK,EAAEQ,IAAI;UACX4B,QAAQ;UACR/I,KAAK,EAAEgJ;QACX,CAAC,CAAC;QAEF,OAAOA,WAAW;MACtB,CAAC,CAAC,OAAOJ,EAAE,EAAE;QACT,MAAMtD,kBAAkB,CAACmD,OAAO,CAAC;UAC7B9B,KAAK,EAAEQ,IAAI;UACXnH,KAAK;UACL+I,QAAQ;UACR9B,KAAK,EAAE2B;QACX,CAAC,CAAC;QAEF,MAAMA,EAAE;MACZ;IACJ,CAAC;IACD,MAAMkB,WAAW,CAACvH,OAAO,EAAE;MACvB,MAAMC,qBAAqB,CAAC,GAAG,CAAC;MAEhC,MAAMxC,KAAK,GAAG,MAAMsE,QAAQ,CAAC/B,OAAO,CAAC;MAErC,IAAI;QACA,MAAMgD,mBAAmB,CAACkD,OAAO,CAAC;UAC9BzI;QACJ,CAAC,CAAC;QAEF,IAAI;UACA,MAAMW,iBAAiB,CAACK,MAAM,CAAC+I,MAAM,CAAC;YAClC/J;UACJ,CAAC,CAAC;QACN,CAAC,CAAC,OAAO4I,EAAE,EAAE;UACT,MAAM,IAAIoB,cAAW,CACjBpB,EAAE,CAACqB,OAAO,IAAI,oCAAoC,EAClDrB,EAAE,CAACtH,IAAI,IAAI,4BAA4B,EACvC;YACI2F,KAAK,EAAE2B,EAAE;YACTrG,OAAO,EAAEvC,KAAK,CAACuC;UACnB,CAAC,CACJ;QACL;QAEA,MAAMiD,kBAAkB,CAACiD,OAAO,CAAC;UAC7BzI;QACJ,CAAC,CAAC;QAEFiC,QAAQ,CAAC8H,MAAM,CAAC/J,KAAK,CAACuC,OAAO,CAAC;MAClC,CAAC,CAAC,OAAOqG,EAAE,EAAE;QACT,MAAMnD,kBAAkB,CAACgD,OAAO,CAAC;UAC7BzI,KAAK;UACLiH,KAAK,EAAE2B;QACX,CAAC,CAAC;QACF,MAAMA,EAAE;MACZ;IACJ,CAAC;IACD,MAAMsB,eAAe,CAAC3H,OAAO,EAAE4E,IAAI,EAAE;MACjC;AACZ;AACA;AACA;MACY,MAAM3E,qBAAqB,CAAC,GAAG,CAAC;MAEhC,MAAMxC,KAAK,GAAG,MAAMsE,QAAQ,CAAC/B,OAAO,CAAC;MAErC,MAAMmD,iBAAiB,CAAC+C,OAAO,CAAC;QAAEzI,KAAK;QAAEmH;MAAK,CAAC,CAAC;MAEhD,OAAO,IAAI;IACf,CAAC;IACD1C,eAAe;IACf0F,eAAe,EAAE,MAAMnK,KAAK,IAAI;MAC5B,OAAOyE,eAAe,CAACzE,KAAK,CAAC;IACjC,CAAC;IACDoK,WAAW,EAAE,MAAMnI,QAAQ;IAC3BoI,gBAAgB,EAAE,MAAMpI;EAC5B,CAAC;AACL,CAAC;AAAC"}