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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (579) hide show
  1. package/constants.d.ts +32 -0
  2. package/constants.js +57 -0
  3. package/constants.js.map +1 -0
  4. package/context.d.ts +5 -2
  5. package/context.js +100 -25
  6. package/context.js.map +1 -1
  7. package/crud/contentEntry/afterDelete.js +2 -5
  8. package/crud/contentEntry/afterDelete.js.map +1 -1
  9. package/crud/contentEntry/beforeCreate.js +2 -3
  10. package/crud/contentEntry/beforeCreate.js.map +1 -1
  11. package/crud/contentEntry/beforeUpdate.js +2 -3
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
  14. package/crud/contentEntry/entryDataFactories/createEntryData.js +228 -0
  15. package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
  16. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +21 -0
  17. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +114 -0
  18. package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
  19. package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
  20. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +61 -0
  21. package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
  22. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
  23. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +57 -0
  24. package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
  25. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
  26. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +38 -0
  27. package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
  28. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
  29. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +122 -0
  30. package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
  31. package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
  32. package/crud/contentEntry/entryDataFactories/index.js +95 -0
  33. package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
  34. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
  35. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
  36. package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
  37. package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
  38. package/crud/contentEntry/entryDataFactories/statuses.js +15 -0
  39. package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
  40. package/crud/contentEntry/entryDataValidation.d.ts +4 -2
  41. package/crud/contentEntry/entryDataValidation.js +222 -83
  42. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  43. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  44. package/crud/contentEntry/markLockedFields.js +34 -37
  45. package/crud/contentEntry/markLockedFields.js.map +1 -1
  46. package/crud/contentEntry/referenceFieldsMapping.d.ts +6 -0
  47. package/crud/contentEntry/referenceFieldsMapping.js +145 -145
  48. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  49. package/crud/contentEntry/searchableFields.d.ts +9 -0
  50. package/crud/contentEntry/searchableFields.js +73 -0
  51. package/crud/contentEntry/searchableFields.js.map +1 -0
  52. package/crud/contentEntry.crud.d.ts +9 -5
  53. package/crud/contentEntry.crud.js +1121 -1070
  54. package/crud/contentEntry.crud.js.map +1 -1
  55. package/crud/contentModel/beforeCreate.d.ts +2 -3
  56. package/crud/contentModel/beforeCreate.js +53 -117
  57. package/crud/contentModel/beforeCreate.js.map +1 -1
  58. package/crud/contentModel/beforeDelete.d.ts +1 -1
  59. package/crud/contentModel/beforeDelete.js +3 -15
  60. package/crud/contentModel/beforeDelete.js.map +1 -1
  61. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  62. package/crud/contentModel/beforeUpdate.js +32 -12
  63. package/crud/contentModel/beforeUpdate.js.map +1 -1
  64. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  65. package/crud/contentModel/compatibility/modelApiName.js +26 -0
  66. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  67. package/crud/contentModel/contentModelManagerFactory.js +2 -7
  68. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  69. package/crud/contentModel/createFieldStorageId.js +6 -3
  70. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  71. package/crud/contentModel/defaultFields.d.ts +5 -0
  72. package/crud/contentModel/defaultFields.js +60 -0
  73. package/crud/contentModel/defaultFields.js.map +1 -0
  74. package/crud/contentModel/ensureTypeTag.d.ts +5 -0
  75. package/crud/contentModel/ensureTypeTag.js +21 -0
  76. package/crud/contentModel/ensureTypeTag.js.map +1 -0
  77. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  78. package/crud/contentModel/fields/descriptionField.js +44 -0
  79. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  80. package/crud/contentModel/fields/imageField.d.ts +2 -0
  81. package/crud/contentModel/fields/imageField.js +44 -0
  82. package/crud/contentModel/fields/imageField.js.map +1 -0
  83. package/crud/contentModel/fields/titleField.d.ts +2 -0
  84. package/crud/contentModel/fields/titleField.js +60 -0
  85. package/crud/contentModel/fields/titleField.js.map +1 -0
  86. package/crud/contentModel/listModelsFromDatabase.d.ts +10 -0
  87. package/crud/contentModel/listModelsFromDatabase.js +38 -0
  88. package/crud/contentModel/listModelsFromDatabase.js.map +1 -0
  89. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  90. package/crud/contentModel/validate/endingAllowed.js +28 -0
  91. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  92. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  93. package/crud/contentModel/validate/isModelEndingAllowed.js +26 -0
  94. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  95. package/crud/contentModel/validate/modelId.d.ts +11 -0
  96. package/crud/contentModel/validate/modelId.js +38 -0
  97. package/crud/contentModel/validate/modelId.js.map +1 -0
  98. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  99. package/crud/contentModel/validate/pluralApiName.js +26 -0
  100. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  101. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  102. package/crud/contentModel/validate/singularApiName.js +26 -0
  103. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  104. package/crud/contentModel/validateModel.d.ts +4 -4
  105. package/crud/contentModel/validateModel.js +8 -11
  106. package/crud/contentModel/validateModel.js.map +1 -1
  107. package/crud/contentModel/validateModelFields.d.ts +4 -4
  108. package/crud/contentModel/validateModelFields.js +136 -152
  109. package/crud/contentModel/validateModelFields.js.map +1 -1
  110. package/crud/contentModel/validation.d.ts +872 -0
  111. package/crud/contentModel/validation.js +205 -0
  112. package/crud/contentModel/validation.js.map +1 -0
  113. package/crud/contentModel.crud.d.ts +2 -0
  114. package/crud/contentModel.crud.js +436 -445
  115. package/crud/contentModel.crud.js.map +1 -1
  116. package/crud/contentModelGroup/beforeCreate.d.ts +1 -1
  117. package/crud/contentModelGroup/beforeCreate.js +14 -12
  118. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  119. package/crud/contentModelGroup/beforeDelete.js +2 -8
  120. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  121. package/crud/contentModelGroup/beforeUpdate.js +2 -5
  122. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  123. package/crud/contentModelGroup/listGroupsFromDatabase.d.ts +8 -0
  124. package/crud/contentModelGroup/listGroupsFromDatabase.js +22 -0
  125. package/crud/contentModelGroup/listGroupsFromDatabase.js.map +1 -0
  126. package/crud/contentModelGroup/validation.d.ts +33 -0
  127. package/crud/contentModelGroup/validation.js +37 -0
  128. package/crud/contentModelGroup/validation.js.map +1 -0
  129. package/crud/contentModelGroup.crud.d.ts +3 -1
  130. package/crud/contentModelGroup.crud.js +291 -289
  131. package/crud/contentModelGroup.crud.js.map +1 -1
  132. package/crud/system.crud.js +8 -106
  133. package/crud/system.crud.js.map +1 -1
  134. package/export/crud/exporting.d.ts +3 -0
  135. package/export/crud/exporting.js +49 -0
  136. package/export/crud/exporting.js.map +1 -0
  137. package/export/crud/importing.d.ts +3 -0
  138. package/export/crud/importing.js +79 -0
  139. package/export/crud/importing.js.map +1 -0
  140. package/export/crud/imports/importData.d.ts +14 -0
  141. package/export/crud/imports/importData.js +52 -0
  142. package/export/crud/imports/importData.js.map +1 -0
  143. package/export/crud/imports/importGroups.d.ts +8 -0
  144. package/export/crud/imports/importGroups.js +104 -0
  145. package/export/crud/imports/importGroups.js.map +1 -0
  146. package/export/crud/imports/importModels.d.ts +8 -0
  147. package/export/crud/imports/importModels.js +136 -0
  148. package/export/crud/imports/importModels.js.map +1 -0
  149. package/export/crud/imports/validateGroups.d.ts +8 -0
  150. package/export/crud/imports/validateGroups.js +112 -0
  151. package/export/crud/imports/validateGroups.js.map +1 -0
  152. package/export/crud/imports/validateInput.d.ts +19 -0
  153. package/export/crud/imports/validateInput.js +55 -0
  154. package/export/crud/imports/validateInput.js.map +1 -0
  155. package/export/crud/imports/validateModels.d.ts +12 -0
  156. package/export/crud/imports/validateModels.js +203 -0
  157. package/export/crud/imports/validateModels.js.map +1 -0
  158. package/export/crud/index.d.ts +4 -0
  159. package/export/crud/index.js +15 -0
  160. package/export/crud/index.js.map +1 -0
  161. package/export/crud/sanitize.d.ts +4 -0
  162. package/export/crud/sanitize.js +35 -0
  163. package/export/crud/sanitize.js.map +1 -0
  164. package/export/graphql/index.d.ts +3 -0
  165. package/export/graphql/index.js +188 -0
  166. package/export/graphql/index.js.map +1 -0
  167. package/export/index.d.ts +2 -0
  168. package/export/index.js +29 -0
  169. package/export/index.js.map +1 -0
  170. package/export/types.d.ts +113 -0
  171. package/export/types.js +22 -0
  172. package/export/types.js.map +1 -0
  173. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +3 -19
  174. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  175. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  176. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +200 -0
  177. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  178. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +46 -90
  179. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  180. package/fieldConverters/index.d.ts +2 -1
  181. package/fieldConverters/index.js +4 -5
  182. package/fieldConverters/index.js.map +1 -1
  183. package/graphql/buildSchemaPlugins.d.ts +8 -3
  184. package/graphql/buildSchemaPlugins.js +9 -11
  185. package/graphql/buildSchemaPlugins.js.map +1 -1
  186. package/graphql/checkEndpointAccess.d.ts +2 -0
  187. package/graphql/checkEndpointAccess.js +20 -0
  188. package/graphql/checkEndpointAccess.js.map +1 -0
  189. package/graphql/createExecutableSchema.d.ts +6 -0
  190. package/graphql/createExecutableSchema.js +31 -0
  191. package/graphql/createExecutableSchema.js.map +1 -0
  192. package/graphql/createRequestBody.d.ts +2 -0
  193. package/graphql/createRequestBody.js +16 -0
  194. package/graphql/createRequestBody.js.map +1 -0
  195. package/graphql/formatErrorPayload.d.ts +1 -0
  196. package/graphql/formatErrorPayload.js +27 -0
  197. package/graphql/formatErrorPayload.js.map +1 -0
  198. package/graphql/generateSchema.d.ts +8 -0
  199. package/graphql/generateSchema.js +33 -0
  200. package/graphql/generateSchema.js.map +1 -0
  201. package/graphql/getSchema.d.ts +16 -0
  202. package/graphql/getSchema.js +118 -0
  203. package/graphql/getSchema.js.map +1 -0
  204. package/graphql/graphQLHandlerFactory.js +8 -129
  205. package/graphql/graphQLHandlerFactory.js.map +1 -1
  206. package/graphql/handleRequest.d.ts +11 -0
  207. package/graphql/handleRequest.js +79 -0
  208. package/graphql/handleRequest.js.map +1 -0
  209. package/graphql/index.d.ts +1 -3
  210. package/graphql/index.js +4 -46
  211. package/graphql/index.js.map +1 -1
  212. package/graphql/schema/baseContentSchema.d.ts +6 -2
  213. package/graphql/schema/baseContentSchema.js +20 -29
  214. package/graphql/schema/baseContentSchema.js.map +1 -1
  215. package/graphql/schema/baseSchema.d.ts +2 -0
  216. package/graphql/schema/baseSchema.js +146 -0
  217. package/graphql/schema/baseSchema.js.map +1 -0
  218. package/graphql/schema/contentEntries.d.ts +6 -2
  219. package/graphql/schema/contentEntries.js +160 -111
  220. package/graphql/schema/contentEntries.js.map +1 -1
  221. package/graphql/schema/contentModelGroups.d.ts +6 -2
  222. package/graphql/schema/contentModelGroups.js +20 -30
  223. package/graphql/schema/contentModelGroups.js.map +1 -1
  224. package/graphql/schema/contentModels.d.ts +6 -2
  225. package/graphql/schema/contentModels.js +81 -26
  226. package/graphql/schema/contentModels.js.map +1 -1
  227. package/graphql/schema/createFieldResolvers.d.ts +2 -2
  228. package/graphql/schema/createFieldResolvers.js +29 -40
  229. package/graphql/schema/createFieldResolvers.js.map +1 -1
  230. package/graphql/schema/createFieldTypePluginRecords.d.ts +3 -0
  231. package/graphql/schema/createFieldTypePluginRecords.js +15 -0
  232. package/graphql/schema/createFieldTypePluginRecords.js.map +1 -0
  233. package/graphql/schema/createManageResolvers.d.ts +1 -1
  234. package/graphql/schema/createManageResolvers.js +59 -52
  235. package/graphql/schema/createManageResolvers.js.map +1 -1
  236. package/graphql/schema/createManageSDL.d.ts +3 -0
  237. package/graphql/schema/createManageSDL.js +119 -81
  238. package/graphql/schema/createManageSDL.js.map +1 -1
  239. package/graphql/schema/createPreviewResolvers.js +9 -22
  240. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  241. package/graphql/schema/createReadResolvers.js +14 -22
  242. package/graphql/schema/createReadResolvers.js.map +1 -1
  243. package/graphql/schema/createReadSDL.d.ts +3 -0
  244. package/graphql/schema/createReadSDL.js +57 -48
  245. package/graphql/schema/createReadSDL.js.map +1 -1
  246. package/graphql/schema/resolvers/manage/resolveCreate.d.ts +2 -1
  247. package/graphql/schema/resolvers/manage/resolveCreate.js +3 -4
  248. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  249. package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +2 -1
  250. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +3 -4
  251. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  252. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +2 -1
  253. package/graphql/schema/resolvers/manage/resolveDelete.js +15 -9
  254. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  255. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +7 -0
  256. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +22 -0
  257. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -0
  258. package/graphql/schema/resolvers/manage/resolveGet.js +11 -20
  259. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  260. package/graphql/schema/resolvers/manage/resolveGetByIds.js +2 -3
  261. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  262. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +2 -3
  263. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  264. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
  265. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +20 -0
  266. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
  267. package/graphql/schema/resolvers/manage/resolveList.js +2 -3
  268. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  269. package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
  270. package/graphql/schema/resolvers/manage/resolveMove.js +27 -0
  271. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
  272. package/graphql/schema/resolvers/manage/resolvePublish.js +2 -3
  273. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  274. package/graphql/schema/resolvers/manage/resolveRepublish.js +2 -3
  275. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  276. package/graphql/schema/resolvers/manage/resolveUnpublish.js +2 -3
  277. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  278. package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +2 -1
  279. package/graphql/schema/resolvers/manage/resolveUpdate.js +3 -4
  280. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  281. package/graphql/schema/resolvers/manage/resolveValidate.d.ts +8 -0
  282. package/graphql/schema/resolvers/manage/{resolveRequestChanges.js → resolveValidate.js} +5 -6
  283. package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -0
  284. package/graphql/schema/resolvers/preview/resolveGet.js +5 -12
  285. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  286. package/graphql/schema/resolvers/preview/resolveList.js +2 -3
  287. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  288. package/graphql/schema/resolvers/read/resolveGet.js +5 -12
  289. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  290. package/graphql/schema/resolvers/read/resolveList.js +2 -3
  291. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  292. package/graphql/schema/schemaPlugins.d.ts +8 -3
  293. package/graphql/schema/schemaPlugins.js +60 -69
  294. package/graphql/schema/schemaPlugins.js.map +1 -1
  295. package/graphql/system.d.ts +2 -5
  296. package/graphql/system.js +58 -98
  297. package/graphql/system.js.map +1 -1
  298. package/graphqlFields/boolean.js +2 -12
  299. package/graphqlFields/boolean.js.map +1 -1
  300. package/graphqlFields/datetime.js +4 -21
  301. package/graphqlFields/datetime.js.map +1 -1
  302. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  303. package/graphqlFields/dynamicZone/dynamicZoneField.js +266 -0
  304. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  305. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  306. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +111 -0
  307. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  308. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  309. package/graphqlFields/dynamicZone/index.js +21 -0
  310. package/graphqlFields/dynamicZone/index.js.map +1 -0
  311. package/graphqlFields/file.js +2 -8
  312. package/graphqlFields/file.js.map +1 -1
  313. package/graphqlFields/helpers.d.ts +0 -1
  314. package/graphqlFields/helpers.js +5 -27
  315. package/graphqlFields/helpers.js.map +1 -1
  316. package/graphqlFields/index.d.ts +1 -1
  317. package/graphqlFields/index.js +5 -12
  318. package/graphqlFields/index.js.map +1 -1
  319. package/graphqlFields/json.d.ts +2 -0
  320. package/graphqlFields/json.js +49 -0
  321. package/graphqlFields/json.js.map +1 -0
  322. package/graphqlFields/longText.js +13 -12
  323. package/graphqlFields/longText.js.map +1 -1
  324. package/graphqlFields/number.js +7 -12
  325. package/graphqlFields/number.js.map +1 -1
  326. package/graphqlFields/object.js +114 -101
  327. package/graphqlFields/object.js.map +1 -1
  328. package/graphqlFields/ref.js +111 -119
  329. package/graphqlFields/ref.js.map +1 -1
  330. package/graphqlFields/richText.js +2 -9
  331. package/graphqlFields/richText.js.map +1 -1
  332. package/graphqlFields/text.js +4 -11
  333. package/graphqlFields/text.js.map +1 -1
  334. package/index.d.ts +6 -3
  335. package/index.js +43 -29
  336. package/index.js.map +1 -1
  337. package/modelManager/DefaultCmsModelManager.js +2 -20
  338. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  339. package/modelManager/index.js +2 -4
  340. package/modelManager/index.js.map +1 -1
  341. package/package.json +36 -43
  342. package/parameters/context.js +3 -5
  343. package/parameters/context.js.map +1 -1
  344. package/parameters/header.js +6 -16
  345. package/parameters/header.js.map +1 -1
  346. package/parameters/index.js +3 -9
  347. package/parameters/index.js.map +1 -1
  348. package/parameters/manual.js +9 -11
  349. package/parameters/manual.js.map +1 -1
  350. package/parameters/path.js +3 -13
  351. package/parameters/path.js.map +1 -1
  352. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  353. package/plugins/CmsGraphQLSchemaPlugin.js +13 -0
  354. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  355. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  356. package/plugins/CmsGraphQLSchemaSorterPlugin.js +27 -0
  357. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  358. package/plugins/CmsGroupPlugin.d.ts +6 -3
  359. package/plugins/CmsGroupPlugin.js +7 -13
  360. package/plugins/CmsGroupPlugin.js.map +1 -1
  361. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  362. package/plugins/CmsModelFieldConverterPlugin.js +5 -9
  363. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  364. package/plugins/CmsModelPlugin.d.ts +25 -5
  365. package/plugins/CmsModelPlugin.js +72 -57
  366. package/plugins/CmsModelPlugin.js.map +1 -1
  367. package/plugins/CmsParametersPlugin.js +6 -10
  368. package/plugins/CmsParametersPlugin.js.map +1 -1
  369. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  370. package/plugins/StorageOperationsCmsModelPlugin.js +41 -0
  371. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  372. package/plugins/StorageTransformPlugin.d.ts +13 -13
  373. package/plugins/StorageTransformPlugin.js +3 -13
  374. package/plugins/StorageTransformPlugin.js.map +1 -1
  375. package/plugins/index.d.ts +3 -0
  376. package/plugins/index.js +36 -11
  377. package/plugins/index.js.map +1 -1
  378. package/storage/default.js +2 -3
  379. package/storage/default.js.map +1 -1
  380. package/storage/index.d.ts +1 -0
  381. package/storage/index.js +15 -0
  382. package/storage/index.js.map +1 -0
  383. package/storage/json.d.ts +2 -0
  384. package/storage/json.js +27 -0
  385. package/storage/json.js.map +1 -0
  386. package/storage/object.js +11 -27
  387. package/storage/object.js.map +1 -1
  388. package/types.d.ts +755 -384
  389. package/types.js +83 -90
  390. package/types.js.map +1 -1
  391. package/utils/access.d.ts +9 -8
  392. package/utils/access.js +11 -75
  393. package/utils/access.js.map +1 -1
  394. package/utils/caching/Cache.d.ts +2 -0
  395. package/utils/caching/Cache.js +51 -0
  396. package/utils/caching/Cache.js.map +1 -0
  397. package/utils/caching/CacheKey.d.ts +2 -0
  398. package/utils/caching/CacheKey.js +40 -0
  399. package/utils/caching/CacheKey.js.map +1 -0
  400. package/utils/caching/index.d.ts +2 -0
  401. package/utils/caching/index.js +29 -0
  402. package/utils/caching/index.js.map +1 -0
  403. package/utils/caching/types.d.ts +11 -0
  404. package/utils/caching/types.js +7 -0
  405. package/utils/caching/types.js.map +1 -0
  406. package/utils/converters/Converter.js +3 -17
  407. package/utils/converters/Converter.js.map +1 -1
  408. package/utils/converters/ConverterCollection.d.ts +7 -0
  409. package/utils/converters/ConverterCollection.js +43 -31
  410. package/utils/converters/ConverterCollection.js.map +1 -1
  411. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  412. package/utils/converters/valueKeyStorageConverter.js +32 -45
  413. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  414. package/utils/createTypeFromFields.d.ts +16 -0
  415. package/utils/createTypeFromFields.js +71 -0
  416. package/utils/createTypeFromFields.js.map +1 -0
  417. package/utils/createTypeName.d.ts +0 -2
  418. package/utils/createTypeName.js +4 -17
  419. package/utils/createTypeName.js.map +1 -1
  420. package/utils/date.d.ts +10 -0
  421. package/utils/date.js +36 -0
  422. package/utils/date.js.map +1 -0
  423. package/utils/entryStorage.d.ts +4 -4
  424. package/utils/entryStorage.js +27 -38
  425. package/utils/entryStorage.js.map +1 -1
  426. package/utils/filterAsync.js +8 -12
  427. package/utils/filterAsync.js.map +1 -1
  428. package/utils/getBaseFieldType.d.ts +2 -0
  429. package/utils/getBaseFieldType.js +12 -0
  430. package/utils/getBaseFieldType.js.map +1 -0
  431. package/utils/getEntryDescription.d.ts +2 -0
  432. package/utils/getEntryDescription.js +19 -0
  433. package/utils/getEntryDescription.js.map +1 -0
  434. package/utils/getEntryImage.d.ts +2 -0
  435. package/utils/getEntryImage.js +19 -0
  436. package/utils/getEntryImage.js.map +1 -0
  437. package/utils/getEntryTitle.d.ts +1 -1
  438. package/utils/getEntryTitle.js +3 -10
  439. package/utils/getEntryTitle.js.map +1 -1
  440. package/utils/getSchemaFromFieldPlugins.d.ts +14 -6
  441. package/utils/getSchemaFromFieldPlugins.js +39 -17
  442. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  443. package/utils/identity.d.ts +2 -0
  444. package/utils/identity.js +20 -0
  445. package/utils/identity.js.map +1 -0
  446. package/utils/incrementEntryIdVersion.d.ts +5 -0
  447. package/utils/incrementEntryIdVersion.js +31 -0
  448. package/utils/incrementEntryIdVersion.js.map +1 -0
  449. package/utils/index.d.ts +1 -0
  450. package/utils/index.js +18 -0
  451. package/utils/index.js.map +1 -0
  452. package/utils/permissions/EntriesPermissions.d.ts +4 -0
  453. package/utils/permissions/EntriesPermissions.js +11 -0
  454. package/utils/permissions/EntriesPermissions.js.map +1 -0
  455. package/utils/permissions/ModelGroupsPermissions.d.ts +9 -0
  456. package/utils/permissions/ModelGroupsPermissions.js +50 -0
  457. package/utils/permissions/ModelGroupsPermissions.js.map +1 -0
  458. package/utils/permissions/ModelsPermissions.d.ts +22 -0
  459. package/utils/permissions/ModelsPermissions.js +90 -0
  460. package/utils/permissions/ModelsPermissions.js.map +1 -0
  461. package/utils/renderFields.d.ts +4 -2
  462. package/utils/renderFields.js +14 -11
  463. package/utils/renderFields.js.map +1 -1
  464. package/utils/renderGetFilterFields.d.ts +2 -2
  465. package/utils/renderGetFilterFields.js +10 -30
  466. package/utils/renderGetFilterFields.js.map +1 -1
  467. package/utils/renderInputFields.d.ts +4 -2
  468. package/utils/renderInputFields.js +21 -14
  469. package/utils/renderInputFields.js.map +1 -1
  470. package/utils/renderListFilterFields.d.ts +3 -1
  471. package/utils/renderListFilterFields.js +27 -30
  472. package/utils/renderListFilterFields.js.map +1 -1
  473. package/utils/renderSortEnum.d.ts +9 -5
  474. package/utils/renderSortEnum.js +29 -12
  475. package/utils/renderSortEnum.js.map +1 -1
  476. package/utils/toSlug.js +2 -4
  477. package/utils/toSlug.js.map +1 -1
  478. package/validators/dateGte.js +2 -7
  479. package/validators/dateGte.js.map +1 -1
  480. package/validators/dateLte.js +2 -7
  481. package/validators/dateLte.js.map +1 -1
  482. package/validators/gte.js +3 -10
  483. package/validators/gte.js.map +1 -1
  484. package/validators/in.js +3 -10
  485. package/validators/in.js.map +1 -1
  486. package/validators/index.js +2 -15
  487. package/validators/index.js.map +1 -1
  488. package/validators/lte.js +3 -10
  489. package/validators/lte.js.map +1 -1
  490. package/validators/maxLength.js +3 -10
  491. package/validators/maxLength.js.map +1 -1
  492. package/validators/minLength.js +3 -10
  493. package/validators/minLength.js.map +1 -1
  494. package/validators/pattern.js +4 -11
  495. package/validators/pattern.js.map +1 -1
  496. package/validators/patternPlugins/email.js +2 -2
  497. package/validators/patternPlugins/email.js.map +1 -1
  498. package/validators/patternPlugins/index.js +2 -8
  499. package/validators/patternPlugins/index.js.map +1 -1
  500. package/validators/patternPlugins/lowerCase.js +2 -2
  501. package/validators/patternPlugins/lowerCase.js.map +1 -1
  502. package/validators/patternPlugins/lowerCaseSpace.js +2 -2
  503. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  504. package/validators/patternPlugins/upperCase.js +2 -2
  505. package/validators/patternPlugins/upperCase.js.map +1 -1
  506. package/validators/patternPlugins/upperCaseSpace.js +2 -2
  507. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  508. package/validators/patternPlugins/url.js +2 -2
  509. package/validators/patternPlugins/url.js.map +1 -1
  510. package/validators/required.js +2 -5
  511. package/validators/required.js.map +1 -1
  512. package/validators/timeGte.js +3 -10
  513. package/validators/timeGte.js.map +1 -1
  514. package/validators/timeLte.js +3 -10
  515. package/validators/timeLte.js.map +1 -1
  516. package/validators/unique.js +3 -8
  517. package/validators/unique.js.map +1 -1
  518. package/crud/contentModel/afterCreate.d.ts +0 -8
  519. package/crud/contentModel/afterCreate.js +0 -18
  520. package/crud/contentModel/afterCreate.js.map +0 -1
  521. package/crud/contentModel/afterCreateFrom.d.ts +0 -8
  522. package/crud/contentModel/afterCreateFrom.js +0 -18
  523. package/crud/contentModel/afterCreateFrom.js.map +0 -1
  524. package/crud/contentModel/afterDelete.d.ts +0 -8
  525. package/crud/contentModel/afterDelete.js +0 -18
  526. package/crud/contentModel/afterDelete.js.map +0 -1
  527. package/crud/contentModel/afterUpdate.d.ts +0 -8
  528. package/crud/contentModel/afterUpdate.js +0 -18
  529. package/crud/contentModel/afterUpdate.js.map +0 -1
  530. package/crud/contentModel/createFieldModels.d.ts +0 -2
  531. package/crud/contentModel/createFieldModels.js +0 -26
  532. package/crud/contentModel/createFieldModels.js.map +0 -1
  533. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  534. package/crud/contentModel/fieldIdValidation.js +0 -25
  535. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  536. package/crud/contentModel/idValidation.d.ts +0 -1
  537. package/crud/contentModel/idValidation.js +0 -22
  538. package/crud/contentModel/idValidation.js.map +0 -1
  539. package/crud/contentModel/models.d.ts +0 -4
  540. package/crud/contentModel/models.js +0 -180
  541. package/crud/contentModel/models.js.map +0 -1
  542. package/crud/contentModel/systemFields.d.ts +0 -1
  543. package/crud/contentModel/systemFields.js +0 -8
  544. package/crud/contentModel/systemFields.js.map +0 -1
  545. package/crud/contentModel/validateLayout.d.ts +0 -2
  546. package/crud/contentModel/validateLayout.js +0 -36
  547. package/crud/contentModel/validateLayout.js.map +0 -1
  548. package/crud/index.d.ts +0 -6
  549. package/crud/index.js +0 -85
  550. package/crud/index.js.map +0 -1
  551. package/crud/settings.crud.d.ts +0 -10
  552. package/crud/settings.crud.js +0 -83
  553. package/crud/settings.crud.js.map +0 -1
  554. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +0 -6
  555. package/graphql/schema/resolvers/commonFieldResolvers.js +0 -14
  556. package/graphql/schema/resolvers/commonFieldResolvers.js.map +0 -1
  557. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  558. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  559. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  560. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  561. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  562. package/upgrades/5.33.0/index.d.ts +0 -3
  563. package/upgrades/5.33.0/index.js +0 -182
  564. package/upgrades/5.33.0/index.js.map +0 -1
  565. package/upgrades/index.d.ts +0 -1
  566. package/upgrades/index.js +0 -12
  567. package/upgrades/index.js.map +0 -1
  568. package/utils/filterModelFields.d.ts +0 -16
  569. package/utils/filterModelFields.js +0 -77
  570. package/utils/filterModelFields.js.map +0 -1
  571. package/utils/ownership.d.ts +0 -8
  572. package/utils/ownership.js +0 -41
  573. package/utils/ownership.js.map +0 -1
  574. package/utils/permissions.d.ts +0 -7
  575. package/utils/permissions.js +0 -106
  576. package/utils/permissions.js.map +0 -1
  577. package/utils/pluralizedTypeName.d.ts +0 -1
  578. package/utils/pluralizedTypeName.js +0 -26
  579. package/utils/pluralizedTypeName.js.map +0 -1
@@ -1,150 +1,87 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.assignModelBeforeCreate = void 0;
9
-
10
8
  var _error = _interopRequireDefault(require("@webiny/error"));
11
-
12
9
  var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
13
-
14
- var _pluralize = _interopRequireDefault(require("pluralize"));
15
-
16
10
  var _CmsModelPlugin = require("../../plugins/CmsModelPlugin");
17
-
18
11
  var _validateModel = require("./validateModel");
19
-
20
- var _validateLayout = require("./validateLayout");
21
-
22
- const disallowedModelIdList = ["contentModel", "contentModels", "contentModelGroup", "contentModelGroups"];
23
- /**
24
- * This list is to disallow creating models that might interfere with GraphQL schema creation.
25
- * Add more if required.
26
- */
27
-
28
- const disallowedModelIdEndingList = ["Response", "List", "Meta", "Input", "Sorter", "RefType"];
29
- /**
30
- * Checks for the uniqueness of provided modelId, against the provided list of models.
31
- * It also takes plural / singular forms of the provided modelId into account.
32
- */
33
-
34
- const checkModelIdUniqueness = (modelIdList, modelId) => {
35
- if (modelIdList.includes(modelId) === true) {
36
- throw new _error.default(`Content model with modelId "${modelId}" already exists.`, "MODEL_ID_EXISTS", {
37
- modelId
38
- });
39
- }
40
- /**
41
- * Additionally, check if the plural form of the received modelId exists too. This prevents users
42
- * from creating, for example, "event" and "events" models, which would break the GraphQL schema.
43
- * 1. First check if user wants to create the "event" model, but the "events" model already exists.
44
- */
45
-
46
-
47
- const pluralizedModelIdCamelCase = (0, _pluralize.default)(modelId);
48
-
49
- if (modelIdList.includes(pluralizedModelIdCamelCase) === true) {
50
- throw new _error.default(`Content model with modelId "${modelId}" does not exist, but a model with modelId "${pluralizedModelIdCamelCase}" does.`, "MODEL_ID_PLURAL_ERROR", {
51
- modelId,
52
- plural: pluralizedModelIdCamelCase
53
- });
54
- }
55
- /**
56
- * 2. Then check if user wants to create the "events" model, but the "event" model already exists.
57
- */
58
-
59
-
60
- const singularizedModelIdCamelCase = _pluralize.default.singular(modelId);
61
-
62
- if (modelIdList.includes(singularizedModelIdCamelCase) === true) {
63
- throw new _error.default(`Content model with modelId "${modelId}" does not exist, but a model with modelId "${singularizedModelIdCamelCase}" does.`, "MODEL_ID_SINGULAR_ERROR", {
64
- modelId,
65
- singular: singularizedModelIdCamelCase
66
- });
67
- }
68
- };
69
-
70
- const checkModelIdAllowed = modelId => {
71
- if (disallowedModelIdList.includes(modelId) === false) {
72
- return;
73
- }
74
-
75
- throw new _error.default(`Provided model ID "${modelId}" is not allowed.`);
76
- };
77
-
78
- const checkModelIdEndingAllowed = modelId => {
79
- for (const ending of disallowedModelIdEndingList) {
80
- const re = new RegExp(`${ending}$`, "i");
81
- const matched = modelId.match(re);
82
-
83
- if (matched === null) {
84
- continue;
85
- }
86
-
87
- throw new _error.default(`ModelId that ends with "${ending}" is not allowed.`, "MODEL_ID_NOT_ALLOWED", {
88
- modelId
89
- });
90
- }
91
- };
92
-
12
+ var _modelId = require("./validate/modelId");
13
+ var _singularApiName = require("./validate/singularApiName");
14
+ var _pluralApiName = require("./validate/pluralApiName");
15
+ var _endingAllowed = require("./validate/endingAllowed");
93
16
  const getModelId = model => {
94
17
  const {
95
18
  modelId,
96
19
  name
97
20
  } = model;
98
-
99
- if (!!modelId) {
100
- return (0, _camelCase.default)(modelId.trim());
21
+ const value = modelId ? modelId.trim() : null;
22
+ if (value) {
23
+ const isModelIdValid = (0, _camelCase.default)(value).toLowerCase() === value.toLowerCase();
24
+ if (isModelIdValid) {
25
+ return value;
26
+ }
27
+ return (0, _camelCase.default)(value);
101
28
  } else if (name) {
102
29
  return (0, _camelCase.default)(name.trim());
103
30
  }
104
-
105
31
  throw new _error.default(`There is no "modelId" or "name" passed into the create model method.`, "MISSING_MODEL_DATA", {
106
32
  model
107
33
  });
108
34
  };
109
-
110
35
  const createOnModelBeforeCb = ({
111
36
  plugins,
112
37
  storageOperations
113
38
  }) => {
114
39
  return async params => {
115
40
  const {
116
- model
41
+ model: newModel
117
42
  } = params;
118
- const modelId = getModelId(model);
43
+ const modelId = getModelId(newModel);
44
+ newModel.modelId = modelId;
119
45
  const modelPlugin = plugins.byType(_CmsModelPlugin.CmsModelPlugin.type).find(item => item.contentModel.modelId === modelId);
120
-
121
46
  if (modelPlugin) {
122
- throw new _error.default(`Cannot create "${model.modelId}" content model because one is already registered via a plugin.`, "CONTENT_MODEL_CREATE_ERROR", {
123
- modelId: model.modelId
47
+ throw new _error.default(`Cannot create "${newModel.modelId}" content model because one is already registered via a plugin.`, "CONTENT_MODEL_CREATE_ERROR", {
48
+ modelId: newModel.modelId
124
49
  });
125
50
  }
126
-
127
51
  const models = await storageOperations.models.list({
128
52
  where: {
129
- tenant: model.tenant,
130
- locale: model.locale
53
+ tenant: newModel.tenant,
54
+ locale: newModel.locale
131
55
  }
132
56
  });
133
- const modelIdList = models.map(m => m.modelId);
57
+ (0, _modelId.validateModelIdAllowed)({
58
+ model: newModel
59
+ });
60
+ (0, _endingAllowed.validateEndingAllowed)({
61
+ model: newModel
62
+ });
134
63
  /**
135
- * We need to check for:
136
- * - is that exact modelId allowed
137
- * - is modelId unique
138
- * - is model ending allowed
64
+ * We need to check for the existence of:
65
+ * - modelId
66
+ * - singularApiName
67
+ * - pluralApiName
139
68
  */
140
-
141
- checkModelIdAllowed(modelId);
142
- checkModelIdEndingAllowed(modelId);
143
- checkModelIdUniqueness(modelIdList, modelId);
144
- model.modelId = modelId;
69
+ for (const model of models) {
70
+ (0, _modelId.validateExistingModelId)({
71
+ existingModel: model,
72
+ model: newModel
73
+ });
74
+ (0, _singularApiName.validateSingularApiName)({
75
+ existingModel: model,
76
+ model: newModel
77
+ });
78
+ (0, _pluralApiName.validatePluralApiName)({
79
+ existingModel: model,
80
+ model: newModel
81
+ });
82
+ }
145
83
  };
146
84
  };
147
-
148
85
  /**
149
86
  * We attach both on before create and createFrom events here.
150
87
  * Callables are identical.
@@ -154,41 +91,40 @@ const assignModelBeforeCreate = params => {
154
91
  onModelBeforeCreate,
155
92
  onModelBeforeCreateFrom,
156
93
  storageOperations,
157
- plugins
94
+ context
158
95
  } = params;
159
96
  onModelBeforeCreate.subscribe(async ({
160
97
  model,
161
98
  input
162
99
  }) => {
163
100
  /**
164
- * First the layout...
165
- */
166
- (0, _validateLayout.validateLayout)(model.layout, model.fields);
167
- /**
168
- * then we run the shared create/createFrom methods.
101
+ * Run the shared create/createFrom methods.
169
102
  */
170
-
171
103
  const cb = createOnModelBeforeCb({
172
104
  storageOperations,
173
- plugins
105
+ plugins: context.plugins
174
106
  });
175
107
  await cb({
176
108
  model,
177
109
  input
178
110
  });
111
+ const models = await context.security.withoutAuthorization(async () => {
112
+ return context.cms.listModels();
113
+ });
179
114
  /**
180
115
  * and then we move onto model and fields...
181
116
  */
182
-
183
117
  await (0, _validateModel.validateModel)({
118
+ models,
184
119
  model,
185
- plugins
120
+ context
186
121
  });
187
122
  });
188
123
  onModelBeforeCreateFrom.subscribe(createOnModelBeforeCb({
189
124
  storageOperations,
190
- plugins
125
+ plugins: context.plugins
191
126
  }));
192
127
  };
128
+ exports.assignModelBeforeCreate = assignModelBeforeCreate;
193
129
 
194
- exports.assignModelBeforeCreate = assignModelBeforeCreate;
130
+ //# sourceMappingURL=beforeCreate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["disallowedModelIdList","disallowedModelIdEndingList","checkModelIdUniqueness","modelIdList","modelId","includes","WebinyError","pluralizedModelIdCamelCase","pluralize","plural","singularizedModelIdCamelCase","singular","checkModelIdAllowed","checkModelIdEndingAllowed","ending","re","RegExp","matched","match","getModelId","model","name","camelCase","trim","createOnModelBeforeCb","plugins","storageOperations","params","modelPlugin","byType","CmsModelPlugin","type","find","item","contentModel","models","list","where","tenant","locale","map","m","assignModelBeforeCreate","onModelBeforeCreate","onModelBeforeCreateFrom","subscribe","input","validateLayout","layout","fields","cb","validateModel"],"sources":["beforeCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport camelCase from \"lodash/camelCase\";\nimport pluralize from \"pluralize\";\nimport {\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n CmsModel,\n HeadlessCmsStorageOperations\n} from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { validateModel } from \"./validateModel\";\nimport { validateLayout } from \"./validateLayout\";\n\nconst disallowedModelIdList: string[] = [\n \"contentModel\",\n \"contentModels\",\n \"contentModelGroup\",\n \"contentModelGroups\"\n];\n/**\n * This list is to disallow creating models that might interfere with GraphQL schema creation.\n * Add more if required.\n */\nconst disallowedModelIdEndingList: string[] = [\n \"Response\",\n \"List\",\n \"Meta\",\n \"Input\",\n \"Sorter\",\n \"RefType\"\n];\n\n/**\n * Checks for the uniqueness of provided modelId, against the provided list of models.\n * It also takes plural / singular forms of the provided modelId into account.\n */\nconst checkModelIdUniqueness = (modelIdList: string[], modelId: string) => {\n if (modelIdList.includes(modelId) === true) {\n throw new WebinyError(\n `Content model with modelId \"${modelId}\" already exists.`,\n \"MODEL_ID_EXISTS\",\n {\n modelId\n }\n );\n }\n /**\n * Additionally, check if the plural form of the received modelId exists too. This prevents users\n * from creating, for example, \"event\" and \"events\" models, which would break the GraphQL schema.\n * 1. First check if user wants to create the \"event\" model, but the \"events\" model already exists.\n */\n const pluralizedModelIdCamelCase = pluralize(modelId);\n if (modelIdList.includes(pluralizedModelIdCamelCase) === true) {\n throw new WebinyError(\n `Content model with modelId \"${modelId}\" does not exist, but a model with modelId \"${pluralizedModelIdCamelCase}\" does.`,\n \"MODEL_ID_PLURAL_ERROR\",\n {\n modelId,\n plural: pluralizedModelIdCamelCase\n }\n );\n }\n\n /**\n * 2. Then check if user wants to create the \"events\" model, but the \"event\" model already exists.\n */\n const singularizedModelIdCamelCase = pluralize.singular(modelId);\n if (modelIdList.includes(singularizedModelIdCamelCase) === true) {\n throw new WebinyError(\n `Content model with modelId \"${modelId}\" does not exist, but a model with modelId \"${singularizedModelIdCamelCase}\" does.`,\n \"MODEL_ID_SINGULAR_ERROR\",\n {\n modelId,\n singular: singularizedModelIdCamelCase\n }\n );\n }\n};\n\nconst checkModelIdAllowed = (modelId: string): void => {\n if (disallowedModelIdList.includes(modelId) === false) {\n return;\n }\n throw new WebinyError(`Provided model ID \"${modelId}\" is not allowed.`);\n};\n\nconst checkModelIdEndingAllowed = (modelId: string): void => {\n for (const ending of disallowedModelIdEndingList) {\n const re = new RegExp(`${ending}$`, \"i\");\n const matched = modelId.match(re);\n if (matched === null) {\n continue;\n }\n throw new WebinyError(\n `ModelId that ends with \"${ending}\" is not allowed.`,\n \"MODEL_ID_NOT_ALLOWED\",\n {\n modelId\n }\n );\n }\n};\n\nconst getModelId = (model: CmsModel): string => {\n const { modelId, name } = model;\n if (!!modelId) {\n return camelCase(modelId.trim());\n } else if (name) {\n return camelCase(name.trim());\n }\n throw new WebinyError(\n `There is no \"modelId\" or \"name\" passed into the create model method.`,\n \"MISSING_MODEL_DATA\",\n {\n model\n }\n );\n};\n\ninterface CreateOnModelBeforeCreateCbParams {\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nconst createOnModelBeforeCb = ({\n plugins,\n storageOperations\n}: CreateOnModelBeforeCreateCbParams) => {\n return async (params: OnModelBeforeCreateTopicParams | OnModelBeforeCreateFromTopicParams) => {\n const { model } = params;\n\n const modelId = getModelId(model);\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find((item: CmsModelPlugin) => item.contentModel.modelId === modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n `Cannot create \"${model.modelId}\" content model because one is already registered via a plugin.`,\n \"CONTENT_MODEL_CREATE_ERROR\",\n {\n modelId: model.modelId\n }\n );\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: model.tenant,\n locale: model.locale\n }\n });\n const modelIdList = models.map(m => m.modelId);\n\n /**\n * We need to check for:\n * - is that exact modelId allowed\n * - is modelId unique\n * - is model ending allowed\n */\n checkModelIdAllowed(modelId);\n checkModelIdEndingAllowed(modelId);\n checkModelIdUniqueness(modelIdList, modelId);\n model.modelId = modelId;\n };\n};\n\ninterface AssignBeforeModelCreateParams {\n onModelBeforeCreate: Topic<OnModelBeforeCreateTopicParams>;\n onModelBeforeCreateFrom: Topic<OnModelBeforeCreateFromTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\n\n/**\n * We attach both on before create and createFrom events here.\n * Callables are identical.\n */\nexport const assignModelBeforeCreate = (params: AssignBeforeModelCreateParams) => {\n const { onModelBeforeCreate, onModelBeforeCreateFrom, storageOperations, plugins } = params;\n\n onModelBeforeCreate.subscribe(async ({ model, input }) => {\n /**\n * First the layout...\n */\n validateLayout(model.layout, model.fields);\n /**\n * then we run the shared create/createFrom methods.\n */\n const cb = createOnModelBeforeCb({\n storageOperations,\n plugins\n });\n await cb({\n model,\n input\n });\n\n /**\n * and then we move onto model and fields...\n */\n await validateModel({\n model,\n plugins\n });\n });\n\n onModelBeforeCreateFrom.subscribe(\n createOnModelBeforeCb({\n storageOperations,\n plugins\n })\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_camelCase","_CmsModelPlugin","_validateModel","_modelId","_singularApiName","_pluralApiName","_endingAllowed","getModelId","model","modelId","name","value","trim","isModelIdValid","camelCase","toLowerCase","WebinyError","createOnModelBeforeCb","plugins","storageOperations","params","newModel","modelPlugin","byType","CmsModelPlugin","type","find","item","contentModel","models","list","where","tenant","locale","validateModelIdAllowed","validateEndingAllowed","validateExistingModelId","existingModel","validateSingularApiName","validatePluralApiName","assignModelBeforeCreate","onModelBeforeCreate","onModelBeforeCreateFrom","context","subscribe","input","cb","security","withoutAuthorization","cms","listModels","validateModel","exports"],"sources":["beforeCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport camelCase from \"lodash/camelCase\";\nimport {\n CmsContext,\n CmsModel,\n HeadlessCmsStorageOperations,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams\n} from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { validateModel } from \"./validateModel\";\nimport { validateExistingModelId, validateModelIdAllowed } from \"./validate/modelId\";\nimport { validateSingularApiName } from \"./validate/singularApiName\";\nimport { validatePluralApiName } from \"./validate/pluralApiName\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed\";\n\nconst getModelId = (model: CmsModel): string => {\n const { modelId, name } = model;\n const value = modelId ? modelId.trim() : null;\n if (value) {\n const isModelIdValid = camelCase(value).toLowerCase() === value.toLowerCase();\n if (isModelIdValid) {\n return value;\n }\n return camelCase(value);\n } else if (name) {\n return camelCase(name.trim());\n }\n throw new WebinyError(\n `There is no \"modelId\" or \"name\" passed into the create model method.`,\n \"MISSING_MODEL_DATA\",\n {\n model\n }\n );\n};\n\ninterface CreateOnModelBeforeCreateCbParams {\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nconst createOnModelBeforeCb = ({\n plugins,\n storageOperations\n}: CreateOnModelBeforeCreateCbParams) => {\n return async (params: OnModelBeforeCreateTopicParams | OnModelBeforeCreateFromTopicParams) => {\n const { model: newModel } = params;\n\n const modelId = getModelId(newModel);\n\n newModel.modelId = modelId;\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find((item: CmsModelPlugin) => item.contentModel.modelId === modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n `Cannot create \"${newModel.modelId}\" content model because one is already registered via a plugin.`,\n \"CONTENT_MODEL_CREATE_ERROR\",\n {\n modelId: newModel.modelId\n }\n );\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: newModel.tenant,\n locale: newModel.locale\n }\n });\n\n validateModelIdAllowed({\n model: newModel\n });\n validateEndingAllowed({\n model: newModel\n });\n /**\n * We need to check for the existence of:\n * - modelId\n * - singularApiName\n * - pluralApiName\n */\n for (const model of models) {\n validateExistingModelId({\n existingModel: model,\n model: newModel\n });\n validateSingularApiName({\n existingModel: model,\n model: newModel\n });\n validatePluralApiName({\n existingModel: model,\n model: newModel\n });\n }\n };\n};\n\ninterface AssignBeforeModelCreateParams {\n onModelBeforeCreate: Topic<OnModelBeforeCreateTopicParams>;\n onModelBeforeCreateFrom: Topic<OnModelBeforeCreateFromTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n}\n\n/**\n * We attach both on before create and createFrom events here.\n * Callables are identical.\n */\nexport const assignModelBeforeCreate = (params: AssignBeforeModelCreateParams) => {\n const { onModelBeforeCreate, onModelBeforeCreateFrom, storageOperations, context } = params;\n\n onModelBeforeCreate.subscribe(async ({ model, input }) => {\n /**\n * Run the shared create/createFrom methods.\n */\n const cb = createOnModelBeforeCb({\n storageOperations,\n plugins: context.plugins\n });\n await cb({\n model,\n input\n });\n const models = await context.security.withoutAuthorization(async () => {\n return context.cms.listModels();\n });\n /**\n * and then we move onto model and fields...\n */\n await validateModel({\n models,\n model,\n context\n });\n });\n\n onModelBeforeCreateFrom.subscribe(\n createOnModelBeforeCb({\n storageOperations,\n plugins: context.plugins\n })\n );\n};\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Topic } from "@webiny/pubsub/types";
2
- import { OnModelBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from "../../types";
2
+ import { HeadlessCmsStorageOperations, OnModelBeforeDeleteTopicParams } from "../../types";
3
3
  import { PluginsContainer } from "@webiny/plugins";
4
4
  interface AssignBeforeModelDeleteParams {
5
5
  onModelBeforeDelete: Topic<OnModelBeforeDeleteTopicParams>;
@@ -1,18 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.assignModelBeforeDelete = void 0;
9
-
10
8
  var _error = _interopRequireDefault(require("@webiny/error"));
11
-
12
9
  var _CmsModelPlugin = require("../../plugins/CmsModelPlugin");
13
-
14
- var _valueKeyStorageConverter = require("../../utils/converters/valueKeyStorageConverter");
15
-
16
10
  const assignModelBeforeDelete = params => {
17
11
  const {
18
12
  onModelBeforeDelete,
@@ -24,20 +18,14 @@ const assignModelBeforeDelete = params => {
24
18
  model
25
19
  } = params;
26
20
  const modelPlugin = plugins.byType(_CmsModelPlugin.CmsModelPlugin.type).find(item => item.contentModel.modelId === model.modelId);
27
-
28
21
  if (modelPlugin) {
29
22
  throw new _error.default("Content models defined via plugins cannot be deleted.", "CONTENT_MODEL_DELETE_ERROR", {
30
23
  modelId: model.modelId
31
24
  });
32
25
  }
33
-
34
26
  let entries = [];
35
-
36
27
  try {
37
- const result = await storageOperations.entries.list((0, _valueKeyStorageConverter.attachCmsModelFieldConverters)({
38
- model,
39
- plugins
40
- }), {
28
+ const result = await storageOperations.entries.list(model, {
41
29
  where: {
42
30
  latest: true
43
31
  },
@@ -50,11 +38,11 @@ const assignModelBeforeDelete = params => {
50
38
  model
51
39
  });
52
40
  }
53
-
54
41
  if (entries.length > 0) {
55
42
  throw new _error.default(`Cannot delete content model "${model.modelId}" because there are existing entries.`, "CONTENT_MODEL_BEFORE_DELETE_HOOK_FAILED");
56
43
  }
57
44
  });
58
45
  };
46
+ exports.assignModelBeforeDelete = assignModelBeforeDelete;
59
47
 
60
- exports.assignModelBeforeDelete = assignModelBeforeDelete;
48
+ //# sourceMappingURL=beforeDelete.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["assignModelBeforeDelete","params","onModelBeforeDelete","storageOperations","plugins","subscribe","model","modelPlugin","byType","CmsModelPlugin","type","find","item","contentModel","modelId","WebinyError","entries","result","list","attachCmsModelFieldConverters","where","latest","limit","items","ex","error","length"],"sources":["beforeDelete.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { OnModelBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { attachCmsModelFieldConverters } from \"~/utils/converters/valueKeyStorageConverter\";\n\ninterface AssignBeforeModelDeleteParams {\n onModelBeforeDelete: Topic<OnModelBeforeDeleteTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\nexport const assignModelBeforeDelete = (params: AssignBeforeModelDeleteParams) => {\n const { onModelBeforeDelete, storageOperations, plugins } = params;\n\n onModelBeforeDelete.subscribe(async params => {\n const { model } = params;\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find(item => item.contentModel.modelId === model.modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n \"Content models defined via plugins cannot be deleted.\",\n \"CONTENT_MODEL_DELETE_ERROR\",\n {\n modelId: model.modelId\n }\n );\n }\n\n let entries = [];\n try {\n const result = await storageOperations.entries.list(\n attachCmsModelFieldConverters({\n model,\n plugins\n }),\n {\n where: {\n latest: true\n },\n limit: 1\n }\n );\n entries = result.items;\n } catch (ex) {\n throw new WebinyError(\n \"Could not retrieve a list of content entries from the model.\",\n \"ENTRIES_ERROR\",\n {\n error: ex,\n model\n }\n );\n }\n if (entries.length > 0) {\n throw new WebinyError(\n `Cannot delete content model \"${model.modelId}\" because there are existing entries.`,\n \"CONTENT_MODEL_BEFORE_DELETE_HOOK_FAILED\"\n );\n }\n });\n};\n"],"mappings":";;;;;;;;;AAGA;;AACA;;AACA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,mBAAF;IAAuBC,iBAAvB;IAA0CC;EAA1C,IAAsDH,MAA5D;EAEAC,mBAAmB,CAACG,SAApB,CAA8B,MAAMJ,MAAN,IAAgB;IAC1C,MAAM;MAAEK;IAAF,IAAYL,MAAlB;IAEA,MAAMM,WAAW,GAAGH,OAAO,CACtBI,MADe,CACQC,8BAAA,CAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,YAAL,CAAkBC,OAAlB,KAA8BR,KAAK,CAACQ,OAFlC,CAApB;;IAIA,IAAIP,WAAJ,EAAiB;MACb,MAAM,IAAIQ,cAAJ,CACF,uDADE,EAEF,4BAFE,EAGF;QACID,OAAO,EAAER,KAAK,CAACQ;MADnB,CAHE,CAAN;IAOH;;IAED,IAAIE,OAAO,GAAG,EAAd;;IACA,IAAI;MACA,MAAMC,MAAM,GAAG,MAAMd,iBAAiB,CAACa,OAAlB,CAA0BE,IAA1B,CACjB,IAAAC,uDAAA,EAA8B;QAC1Bb,KAD0B;QAE1BF;MAF0B,CAA9B,CADiB,EAKjB;QACIgB,KAAK,EAAE;UACHC,MAAM,EAAE;QADL,CADX;QAIIC,KAAK,EAAE;MAJX,CALiB,CAArB;MAYAN,OAAO,GAAGC,MAAM,CAACM,KAAjB;IACH,CAdD,CAcE,OAAOC,EAAP,EAAW;MACT,MAAM,IAAIT,cAAJ,CACF,8DADE,EAEF,eAFE,EAGF;QACIU,KAAK,EAAED,EADX;QAEIlB;MAFJ,CAHE,CAAN;IAQH;;IACD,IAAIU,OAAO,CAACU,MAAR,GAAiB,CAArB,EAAwB;MACpB,MAAM,IAAIX,cAAJ,CACD,gCAA+BT,KAAK,CAACQ,OAAQ,uCAD5C,EAEF,yCAFE,CAAN;IAIH;EACJ,CAhDD;AAiDH,CApDM"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_CmsModelPlugin","assignModelBeforeDelete","params","onModelBeforeDelete","storageOperations","plugins","subscribe","model","modelPlugin","byType","CmsModelPlugin","type","find","item","contentModel","modelId","WebinyError","entries","result","list","where","latest","limit","items","ex","error","length","exports"],"sources":["beforeDelete.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { HeadlessCmsStorageOperations, OnModelBeforeDeleteTopicParams } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\ninterface AssignBeforeModelDeleteParams {\n onModelBeforeDelete: Topic<OnModelBeforeDeleteTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\nexport const assignModelBeforeDelete = (params: AssignBeforeModelDeleteParams) => {\n const { onModelBeforeDelete, storageOperations, plugins } = params;\n\n onModelBeforeDelete.subscribe(async params => {\n const { model } = params;\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find(item => item.contentModel.modelId === model.modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n \"Content models defined via plugins cannot be deleted.\",\n \"CONTENT_MODEL_DELETE_ERROR\",\n {\n modelId: model.modelId\n }\n );\n }\n\n let entries = [];\n try {\n const result = await storageOperations.entries.list(model, {\n where: {\n latest: true\n },\n limit: 1\n });\n entries = result.items;\n } catch (ex) {\n throw new WebinyError(\n \"Could not retrieve a list of content entries from the model.\",\n \"ENTRIES_ERROR\",\n {\n error: ex,\n model\n }\n );\n }\n if (entries.length > 0) {\n throw new WebinyError(\n `Cannot delete content model \"${model.modelId}\" because there are existing entries.`,\n \"CONTENT_MODEL_BEFORE_DELETE_HOOK_FAILED\"\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAOO,MAAME,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,iBAAiB;IAAEC;EAAQ,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,MAAMM,WAAW,GAAGH,OAAO,CACtBI,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,YAAY,CAACC,OAAO,KAAKR,KAAK,CAACQ,OAAO,CAAC;IAE9D,IAAIP,WAAW,EAAE;MACb,MAAM,IAAIQ,cAAW,CACjB,uDAAuD,EACvD,4BAA4B,EAC5B;QACID,OAAO,EAAER,KAAK,CAACQ;MACnB,CACJ,CAAC;IACL;IAEA,IAAIE,OAAO,GAAG,EAAE;IAChB,IAAI;MACA,MAAMC,MAAM,GAAG,MAAMd,iBAAiB,CAACa,OAAO,CAACE,IAAI,CAACZ,KAAK,EAAE;QACvDa,KAAK,EAAE;UACHC,MAAM,EAAE;QACZ,CAAC;QACDC,KAAK,EAAE;MACX,CAAC,CAAC;MACFL,OAAO,GAAGC,MAAM,CAACK,KAAK;IAC1B,CAAC,CAAC,OAAOC,EAAE,EAAE;MACT,MAAM,IAAIR,cAAW,CACjB,8DAA8D,EAC9D,eAAe,EACf;QACIS,KAAK,EAAED,EAAE;QACTjB;MACJ,CACJ,CAAC;IACL;IACA,IAAIU,OAAO,CAACS,MAAM,GAAG,CAAC,EAAE;MACpB,MAAM,IAAIV,cAAW,CAChB,gCAA+BT,KAAK,CAACQ,OAAQ,uCAAsC,EACpF,yCACJ,CAAC;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAACY,OAAA,CAAA1B,uBAAA,GAAAA,uBAAA"}
@@ -1,10 +1,8 @@
1
1
  import { Topic } from "@webiny/pubsub/types";
2
- import { OnModelBeforeUpdateTopicParams, HeadlessCmsStorageOperations } from "../../types";
3
- import { PluginsContainer } from "@webiny/plugins";
2
+ import { CmsContext, OnModelBeforeUpdateTopicParams } from "../../types";
4
3
  interface AssignBeforeModelUpdateParams {
5
4
  onModelBeforeUpdate: Topic<OnModelBeforeUpdateTopicParams>;
6
- storageOperations: HeadlessCmsStorageOperations;
7
- plugins: PluginsContainer;
5
+ context: CmsContext;
8
6
  }
9
7
  export declare const assignModelBeforeUpdate: (params: AssignBeforeModelUpdateParams) => void;
10
8
  export {};
@@ -4,34 +4,54 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.assignModelBeforeUpdate = void 0;
7
-
8
7
  var _validateModel = require("./validateModel");
9
-
10
- var _validateLayout = require("./validateLayout");
11
-
8
+ var _singularApiName = require("./validate/singularApiName");
9
+ var _pluralApiName = require("./validate/pluralApiName");
10
+ var _endingAllowed = require("./validate/endingAllowed");
12
11
  const assignModelBeforeUpdate = params => {
13
12
  const {
14
13
  onModelBeforeUpdate,
15
- plugins
14
+ context
16
15
  } = params;
17
16
  onModelBeforeUpdate.subscribe(async ({
18
- model,
17
+ model: newModel,
19
18
  original
20
19
  }) => {
20
+ const models = await context.security.withoutAuthorization(async () => {
21
+ return (await context.cms.listModels()).filter(model => {
22
+ return model.modelId !== newModel.modelId;
23
+ });
24
+ });
25
+ (0, _endingAllowed.validateEndingAllowed)({
26
+ model: newModel
27
+ });
21
28
  /**
22
- * First we go through the layout...
29
+ * We need to check for the existence of:
30
+ * - modelId
31
+ * - singularApiName
32
+ * - pluralApiName
23
33
  */
24
- (0, _validateLayout.validateLayout)(model.layout, model.fields);
34
+ for (const model of models) {
35
+ (0, _singularApiName.validateSingularApiName)({
36
+ existingModel: model,
37
+ model: newModel
38
+ });
39
+ (0, _pluralApiName.validatePluralApiName)({
40
+ existingModel: model,
41
+ model: newModel
42
+ });
43
+ }
25
44
  /**
26
45
  * then the model and fields...
27
46
  */
28
-
29
47
  await (0, _validateModel.validateModel)({
30
- model,
48
+ models,
49
+ model: newModel,
31
50
  original,
32
- plugins
51
+ context
33
52
  });
34
53
  });
35
54
  };
55
+ exports.assignModelBeforeUpdate = assignModelBeforeUpdate;
36
56
 
37
- exports.assignModelBeforeUpdate = assignModelBeforeUpdate;
57
+ //# sourceMappingURL=beforeUpdate.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["assignModelBeforeUpdate","params","onModelBeforeUpdate","plugins","subscribe","model","original","validateLayout","layout","fields","validateModel"],"sources":["beforeUpdate.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { OnModelBeforeUpdateTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { validateModel } from \"./validateModel\";\nimport { validateLayout } from \"./validateLayout\";\n\ninterface AssignBeforeModelUpdateParams {\n onModelBeforeUpdate: Topic<OnModelBeforeUpdateTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\n\nexport const assignModelBeforeUpdate = (params: AssignBeforeModelUpdateParams) => {\n const { onModelBeforeUpdate, plugins } = params;\n\n onModelBeforeUpdate.subscribe(async ({ model, original }) => {\n /**\n * First we go through the layout...\n */\n validateLayout(model.layout, model.fields);\n /**\n * then the model and fields...\n */\n await validateModel({\n model,\n original,\n plugins\n });\n });\n};\n"],"mappings":";;;;;;;AAGA;;AACA;;AAQO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,mBAAF;IAAuBC;EAAvB,IAAmCF,MAAzC;EAEAC,mBAAmB,CAACE,SAApB,CAA8B,OAAO;IAAEC,KAAF;IAASC;EAAT,CAAP,KAA+B;IACzD;AACR;AACA;IACQ,IAAAC,8BAAA,EAAeF,KAAK,CAACG,MAArB,EAA6BH,KAAK,CAACI,MAAnC;IACA;AACR;AACA;;IACQ,MAAM,IAAAC,4BAAA,EAAc;MAChBL,KADgB;MAEhBC,QAFgB;MAGhBH;IAHgB,CAAd,CAAN;EAKH,CAbD;AAcH,CAjBM"}
1
+ {"version":3,"names":["_validateModel","require","_singularApiName","_pluralApiName","_endingAllowed","assignModelBeforeUpdate","params","onModelBeforeUpdate","context","subscribe","model","newModel","original","models","security","withoutAuthorization","cms","listModels","filter","modelId","validateEndingAllowed","validateSingularApiName","existingModel","validatePluralApiName","validateModel","exports"],"sources":["beforeUpdate.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { CmsContext, OnModelBeforeUpdateTopicParams } from \"~/types\";\nimport { validateModel } from \"./validateModel\";\nimport { validateSingularApiName } from \"./validate/singularApiName\";\nimport { validatePluralApiName } from \"./validate/pluralApiName\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed\";\n\ninterface AssignBeforeModelUpdateParams {\n onModelBeforeUpdate: Topic<OnModelBeforeUpdateTopicParams>;\n context: CmsContext;\n}\n\nexport const assignModelBeforeUpdate = (params: AssignBeforeModelUpdateParams) => {\n const { onModelBeforeUpdate, context } = params;\n\n onModelBeforeUpdate.subscribe(async ({ model: newModel, original }) => {\n const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter(model => {\n return model.modelId !== newModel.modelId;\n });\n });\n\n validateEndingAllowed({\n model: newModel\n });\n /**\n * We need to check for the existence of:\n * - modelId\n * - singularApiName\n * - pluralApiName\n */\n for (const model of models) {\n validateSingularApiName({\n existingModel: model,\n model: newModel\n });\n validatePluralApiName({\n existingModel: model,\n model: newModel\n });\n }\n /**\n * then the model and fields...\n */\n await validateModel({\n models,\n model: newModel,\n original,\n context\n });\n });\n};\n"],"mappings":";;;;;;AAEA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAOO,MAAMI,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAE/CC,mBAAmB,CAACE,SAAS,CAAC,OAAO;IAAEC,KAAK,EAAEC,QAAQ;IAAEC;EAAS,CAAC,KAAK;IACnE,MAAMC,MAAM,GAAG,MAAML,OAAO,CAACM,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACnE,OAAO,CAAC,MAAMP,OAAO,CAACQ,GAAG,CAACC,UAAU,CAAC,CAAC,EAAEC,MAAM,CAACR,KAAK,IAAI;QACpD,OAAOA,KAAK,CAACS,OAAO,KAAKR,QAAQ,CAACQ,OAAO;MAC7C,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,IAAAC,oCAAqB,EAAC;MAClBV,KAAK,EAAEC;IACX,CAAC,CAAC;IACF;AACR;AACA;AACA;AACA;AACA;IACQ,KAAK,MAAMD,KAAK,IAAIG,MAAM,EAAE;MACxB,IAAAQ,wCAAuB,EAAC;QACpBC,aAAa,EAAEZ,KAAK;QACpBA,KAAK,EAAEC;MACX,CAAC,CAAC;MACF,IAAAY,oCAAqB,EAAC;QAClBD,aAAa,EAAEZ,KAAK;QACpBA,KAAK,EAAEC;MACX,CAAC,CAAC;IACN;IACA;AACR;AACA;IACQ,MAAM,IAAAa,4BAAa,EAAC;MAChBX,MAAM;MACNH,KAAK,EAAEC,QAAQ;MACfC,QAAQ;MACRJ;IACJ,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACiB,OAAA,CAAApB,uBAAA,GAAAA,uBAAA"}
@@ -0,0 +1,3 @@
1
+ import { CmsModel } from "../../../types";
2
+ export declare const ensureSingularApiName: (model: CmsModel) => string;
3
+ export declare const ensurePluralApiName: (model: CmsModel) => string;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ensureSingularApiName = exports.ensurePluralApiName = void 0;
8
+ var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
9
+ var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
10
+ var _pluralize = _interopRequireDefault(require("pluralize"));
11
+ const ensureSingularApiName = model => {
12
+ if (!model.singularApiName) {
13
+ return (0, _upperFirst.default)((0, _camelCase.default)(model.modelId));
14
+ }
15
+ return model.singularApiName;
16
+ };
17
+ exports.ensureSingularApiName = ensureSingularApiName;
18
+ const ensurePluralApiName = model => {
19
+ if (!model.pluralApiName) {
20
+ return (0, _pluralize.default)(ensureSingularApiName(model));
21
+ }
22
+ return model.pluralApiName;
23
+ };
24
+ exports.ensurePluralApiName = ensurePluralApiName;
25
+
26
+ //# sourceMappingURL=modelApiName.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_camelCase","_interopRequireDefault","require","_upperFirst","_pluralize","ensureSingularApiName","model","singularApiName","upperFirst","camelCase","modelId","exports","ensurePluralApiName","pluralApiName","pluralize"],"sources":["modelApiName.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport upperFirst from \"lodash/upperFirst\";\nimport pluralize from \"pluralize\";\nimport { CmsModel } from \"~/types\";\n\nexport const ensureSingularApiName = (model: CmsModel): string => {\n if (!model.singularApiName) {\n return upperFirst(camelCase(model.modelId));\n }\n return model.singularApiName;\n};\n\nexport const ensurePluralApiName = (model: CmsModel): string => {\n if (!model.pluralApiName) {\n return pluralize(ensureSingularApiName(model));\n }\n return model.pluralApiName;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,UAAA,GAAAH,sBAAA,CAAAC,OAAA;AAGO,MAAMG,qBAAqB,GAAIC,KAAe,IAAa;EAC9D,IAAI,CAACA,KAAK,CAACC,eAAe,EAAE;IACxB,OAAO,IAAAC,mBAAU,EAAC,IAAAC,kBAAS,EAACH,KAAK,CAACI,OAAO,CAAC,CAAC;EAC/C;EACA,OAAOJ,KAAK,CAACC,eAAe;AAChC,CAAC;AAACI,OAAA,CAAAN,qBAAA,GAAAA,qBAAA;AAEK,MAAMO,mBAAmB,GAAIN,KAAe,IAAa;EAC5D,IAAI,CAACA,KAAK,CAACO,aAAa,EAAE;IACtB,OAAO,IAAAC,kBAAS,EAACT,qBAAqB,CAACC,KAAK,CAAC,CAAC;EAClD;EACA,OAAOA,KAAK,CAACO,aAAa;AAC9B,CAAC;AAACF,OAAA,CAAAC,mBAAA,GAAAA,mBAAA"}
@@ -5,25 +5,20 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.contentModelManagerFactory = void 0;
7
7
  const defaultName = "content-model-manager-default";
8
-
9
8
  const contentModelManagerFactory = async (context, model) => {
10
9
  const pluginsByType = context.plugins.byType("cms-content-model-manager").reverse();
11
-
12
10
  for (const plugin of pluginsByType) {
13
11
  const target = Array.isArray(plugin.modelId) ? plugin.modelId : [plugin.modelId];
14
-
15
12
  if (target.includes(model.modelId) === true && plugin.name !== defaultName) {
16
13
  return await plugin.create(context, model);
17
14
  }
18
15
  }
19
-
20
16
  const plugin = pluginsByType.find(plugin => plugin.name === defaultName);
21
-
22
17
  if (!plugin) {
23
18
  throw new Error("There is no default plugin to create CmsModelManager");
24
19
  }
25
-
26
20
  return await plugin.create(context, model);
27
21
  };
22
+ exports.contentModelManagerFactory = contentModelManagerFactory;
28
23
 
29
- exports.contentModelManagerFactory = contentModelManagerFactory;
24
+ //# sourceMappingURL=contentModelManagerFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["defaultName","contentModelManagerFactory","context","model","pluginsByType","plugins","byType","reverse","plugin","target","Array","isArray","modelId","includes","name","create","find","Error"],"sources":["contentModelManagerFactory.ts"],"sourcesContent":["import { CmsModel, CmsContext, ModelManagerPlugin, CmsModelManager } from \"~/types\";\n\nconst defaultName = \"content-model-manager-default\";\n\nexport const contentModelManagerFactory = async (\n context: CmsContext,\n model: CmsModel\n): Promise<CmsModelManager> => {\n const pluginsByType = context.plugins\n .byType<ModelManagerPlugin>(\"cms-content-model-manager\")\n .reverse();\n for (const plugin of pluginsByType) {\n const target = Array.isArray(plugin.modelId) ? plugin.modelId : [plugin.modelId];\n if (target.includes(model.modelId) === true && plugin.name !== defaultName) {\n return await plugin.create(context, model);\n }\n }\n const plugin = pluginsByType.find(plugin => plugin.name === defaultName);\n if (!plugin) {\n throw new Error(\"There is no default plugin to create CmsModelManager\");\n }\n return await plugin.create(context, model);\n};\n"],"mappings":";;;;;;AAEA,MAAMA,WAAW,GAAG,+BAApB;;AAEO,MAAMC,0BAA0B,GAAG,OACtCC,OADsC,EAEtCC,KAFsC,KAGX;EAC3B,MAAMC,aAAa,GAAGF,OAAO,CAACG,OAAR,CACjBC,MADiB,CACU,2BADV,EAEjBC,OAFiB,EAAtB;;EAGA,KAAK,MAAMC,MAAX,IAAqBJ,aAArB,EAAoC;IAChC,MAAMK,MAAM,GAAGC,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACI,OAArB,IAAgCJ,MAAM,CAACI,OAAvC,GAAiD,CAACJ,MAAM,CAACI,OAAR,CAAhE;;IACA,IAAIH,MAAM,CAACI,QAAP,CAAgBV,KAAK,CAACS,OAAtB,MAAmC,IAAnC,IAA2CJ,MAAM,CAACM,IAAP,KAAgBd,WAA/D,EAA4E;MACxE,OAAO,MAAMQ,MAAM,CAACO,MAAP,CAAcb,OAAd,EAAuBC,KAAvB,CAAb;IACH;EACJ;;EACD,MAAMK,MAAM,GAAGJ,aAAa,CAACY,IAAd,CAAmBR,MAAM,IAAIA,MAAM,CAACM,IAAP,KAAgBd,WAA7C,CAAf;;EACA,IAAI,CAACQ,MAAL,EAAa;IACT,MAAM,IAAIS,KAAJ,CAAU,sDAAV,CAAN;EACH;;EACD,OAAO,MAAMT,MAAM,CAACO,MAAP,CAAcb,OAAd,EAAuBC,KAAvB,CAAb;AACH,CAlBM"}
1
+ {"version":3,"names":["defaultName","contentModelManagerFactory","context","model","pluginsByType","plugins","byType","reverse","plugin","target","Array","isArray","modelId","includes","name","create","find","Error","exports"],"sources":["contentModelManagerFactory.ts"],"sourcesContent":["import { CmsModel, CmsContext, ModelManagerPlugin, CmsModelManager } from \"~/types\";\n\nconst defaultName = \"content-model-manager-default\";\n\nexport const contentModelManagerFactory = async (\n context: CmsContext,\n model: CmsModel\n): Promise<CmsModelManager> => {\n const pluginsByType = context.plugins\n .byType<ModelManagerPlugin>(\"cms-content-model-manager\")\n .reverse();\n for (const plugin of pluginsByType) {\n const target = Array.isArray(plugin.modelId) ? plugin.modelId : [plugin.modelId];\n if (target.includes(model.modelId) === true && plugin.name !== defaultName) {\n return await plugin.create(context, model);\n }\n }\n const plugin = pluginsByType.find(plugin => plugin.name === defaultName);\n if (!plugin) {\n throw new Error(\"There is no default plugin to create CmsModelManager\");\n }\n return await plugin.create(context, model);\n};\n"],"mappings":";;;;;;AAEA,MAAMA,WAAW,GAAG,+BAA+B;AAE5C,MAAMC,0BAA0B,GAAG,MAAAA,CACtCC,OAAmB,EACnBC,KAAe,KACY;EAC3B,MAAMC,aAAa,GAAGF,OAAO,CAACG,OAAO,CAChCC,MAAM,CAAqB,2BAA2B,CAAC,CACvDC,OAAO,CAAC,CAAC;EACd,KAAK,MAAMC,MAAM,IAAIJ,aAAa,EAAE;IAChC,MAAMK,MAAM,GAAGC,KAAK,CAACC,OAAO,CAACH,MAAM,CAACI,OAAO,CAAC,GAAGJ,MAAM,CAACI,OAAO,GAAG,CAACJ,MAAM,CAACI,OAAO,CAAC;IAChF,IAAIH,MAAM,CAACI,QAAQ,CAACV,KAAK,CAACS,OAAO,CAAC,KAAK,IAAI,IAAIJ,MAAM,CAACM,IAAI,KAAKd,WAAW,EAAE;MACxE,OAAO,MAAMQ,MAAM,CAACO,MAAM,CAACb,OAAO,EAAEC,KAAK,CAAC;IAC9C;EACJ;EACA,MAAMK,MAAM,GAAGJ,aAAa,CAACY,IAAI,CAACR,MAAM,IAAIA,MAAM,CAACM,IAAI,KAAKd,WAAW,CAAC;EACxE,IAAI,CAACQ,MAAM,EAAE;IACT,MAAM,IAAIS,KAAK,CAAC,sDAAsD,CAAC;EAC3E;EACA,OAAO,MAAMT,MAAM,CAACO,MAAM,CAACb,OAAO,EAAEC,KAAK,CAAC;AAC9C,CAAC;AAACe,OAAA,CAAAjB,0BAAA,GAAAA,0BAAA"}
@@ -4,13 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFieldStorageId = void 0;
7
-
7
+ var _getBaseFieldType = require("../../utils/getBaseFieldType");
8
8
  const createFieldStorageId = params => {
9
9
  const {
10
10
  type,
11
11
  id
12
12
  } = params;
13
- return `${type}@${id}`;
13
+ return `${(0, _getBaseFieldType.getBaseFieldType)({
14
+ type
15
+ })}@${id}`;
14
16
  };
17
+ exports.createFieldStorageId = createFieldStorageId;
15
18
 
16
- exports.createFieldStorageId = createFieldStorageId;
19
+ //# sourceMappingURL=createFieldStorageId.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["createFieldStorageId","params","type","id"],"sources":["createFieldStorageId.ts"],"sourcesContent":["import { CmsModelField } from \"~/types\";\n\nexport const createFieldStorageId = (params: Pick<CmsModelField, \"id\" | \"type\">): string => {\n const { type, id } = params;\n return `${type}@${id}`;\n};\n"],"mappings":";;;;;;;AAEO,MAAMA,oBAAoB,GAAIC,MAAD,IAAwD;EACxF,MAAM;IAAEC,IAAF;IAAQC;EAAR,IAAeF,MAArB;EACA,OAAQ,GAAEC,IAAK,IAAGC,EAAG,EAArB;AACH,CAHM"}
1
+ {"version":3,"names":["_getBaseFieldType","require","createFieldStorageId","params","type","id","getBaseFieldType","exports"],"sources":["createFieldStorageId.ts"],"sourcesContent":["import { CmsModelField } from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\nexport const createFieldStorageId = (params: Pick<CmsModelField, \"id\" | \"type\">): string => {\n const { type, id } = params;\n return `${getBaseFieldType({ type })}@${id}`;\n};\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAEO,MAAMC,oBAAoB,GAAIC,MAA0C,IAAa;EACxF,MAAM;IAAEC,IAAI;IAAEC;EAAG,CAAC,GAAGF,MAAM;EAC3B,OAAQ,GAAE,IAAAG,kCAAgB,EAAC;IAAEF;EAAK,CAAC,CAAE,IAAGC,EAAG,EAAC;AAChD,CAAC;AAACE,OAAA,CAAAL,oBAAA,GAAAA,oBAAA"}
@@ -0,0 +1,5 @@
1
+ import { CmsModelCreateInput } from "../../types";
2
+ /**
3
+ * We only assign default fields if there are no fields in the model already.
4
+ */
5
+ export declare const assignModelDefaultFields: (model: CmsModelCreateInput) => void;