@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 +1 @@
1
- {"version":3,"names":["validateValue","args","fieldValidators","value","validatorList","context","field","model","entry","fieldValidator","name","validations","length","validate","result","validator","message","ex","validatePredefinedValue","enabled","values","predefinedValues","Array","isArray","predefinedValue","runFieldMultipleValuesValidations","data","fieldId","valuesError","listValidation","valueError","validation","predefinedValueError","runFieldValueValidations","error","execValidation","multipleValues","validateModelEntryData","params","plugins","byType","reduce","acc","plugin","push","invalidFields","fields","storageId","WebinyError"],"sources":["entryDataValidation.ts"],"sourcesContent":["import {\n CmsModel,\n CmsModelField,\n CmsModelFieldValidation,\n CmsContext,\n CmsModelFieldValidatorPlugin,\n CmsModelFieldValidatorValidateParams,\n CmsEntry\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\n\ntype PluginValidationCallable = (params: CmsModelFieldValidatorValidateParams) => Promise<boolean>;\ntype PluginValidationList = Record<string, PluginValidationCallable[]>;\ntype InputData = Record<string, any>;\n\ninterface ValidateArgs {\n validatorList: PluginValidationList;\n field: CmsModelField;\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n entry?: CmsEntry;\n}\n\ntype PossibleValue = boolean | number | string | null | undefined;\n\nconst validateValue = async (\n args: ValidateArgs,\n fieldValidators: CmsModelFieldValidation[],\n value: PossibleValue | PossibleValue[]\n): Promise<string | null> => {\n if (!fieldValidators) {\n return null;\n }\n\n const { validatorList, context, field, model, entry } = args;\n try {\n for (const fieldValidator of fieldValidators) {\n const name = fieldValidator.name;\n const validations = validatorList[name];\n if (!validations || validations.length === 0) {\n return `There are no \"${name}\" validators defined.`;\n }\n for (const validate of validations) {\n const result = await validate({\n value,\n context,\n validator: fieldValidator,\n field,\n model,\n entry\n });\n if (!result) {\n return fieldValidator.message;\n }\n }\n }\n } catch (ex) {\n return ex.message;\n }\n\n return null;\n};\n\nconst validatePredefinedValue = (field: CmsModelField, value: any | any[]): string | null => {\n const { enabled = false, values: predefinedValues = [] } = field.predefinedValues || {};\n if (!enabled) {\n return null;\n } else if (Array.isArray(predefinedValues) === false || predefinedValues.length === 0) {\n return \"Missing predefined values to validate against.\";\n }\n for (const predefinedValue of predefinedValues) {\n if (predefinedValue.value == value) {\n return null;\n }\n }\n return \"Value sent does not match any of the available predefined values.\";\n};\n/**\n * When multiple values is selected we must run validations on the array containing the values\n * And then on each value in the array\n */\nconst runFieldMultipleValuesValidations = async (args: ValidateArgs): Promise<string | null> => {\n const { field, data } = args;\n const values = data[field.fieldId] || [];\n if (Array.isArray(values) === false) {\n return `Value of the field \"${field.fieldId}\" is not an array.`;\n }\n const valuesError = await validateValue(args, field.listValidation || [], values);\n if (valuesError) {\n return valuesError;\n }\n for (const value of values) {\n const valueError = await validateValue(args, field.validation || [], value);\n if (valueError) {\n return valueError;\n }\n const predefinedValueError = validatePredefinedValue(field, value);\n if (predefinedValueError) {\n return predefinedValueError;\n }\n }\n return null;\n};\n/**\n * Runs validation on given value.\n */\nconst runFieldValueValidations = async (args: ValidateArgs): Promise<string | null> => {\n const { data, field } = args;\n const value = data[field.fieldId];\n const error = await validateValue(args, field.validation || [], value);\n if (error) {\n return error;\n }\n return validatePredefinedValue(field, value);\n};\n\nconst execValidation = async (args: ValidateArgs): Promise<string | null> => {\n if (args.field.multipleValues) {\n return await runFieldMultipleValuesValidations(args);\n }\n return await runFieldValueValidations(args);\n};\n\nexport interface ValidateModelEntryDataParams {\n context: CmsContext;\n model: CmsModel;\n data: InputData;\n entry?: CmsEntry;\n}\nexport const validateModelEntryData = async (params: ValidateModelEntryDataParams) => {\n const { context, model, entry, data } = params;\n /**\n * To later simplify searching for the validations we map them to a name.\n * @see CmsModelFieldValidatorPlugin.validator.validate\n */\n const validatorList: PluginValidationList = context.plugins\n .byType<CmsModelFieldValidatorPlugin>(\"cms-model-field-validator\")\n .reduce((acc, plugin) => {\n const name = plugin.validator.name;\n if (!acc[name]) {\n acc[name] = [];\n }\n acc[name].push(plugin.validator.validate);\n\n return acc;\n }, {} as PluginValidationList);\n\n /**\n * Loop through model fields and validate the corresponding data.\n * Run validation only if the field has validation configured.\n */\n const invalidFields = [];\n for (const field of model.fields) {\n const error = await execValidation({\n model,\n validatorList,\n field,\n data: {\n ...(entry?.values || {}),\n ...data\n },\n context,\n entry\n });\n if (!error) {\n continue;\n }\n invalidFields.push({\n fieldId: field.fieldId,\n storageId: field.storageId,\n error\n });\n }\n\n if (invalidFields.length > 0) {\n throw new WebinyError(\"Validation failed.\", \"VALIDATION_FAILED\", invalidFields);\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_camelCase","validateValue","params","fieldValidators","value","validatorList","context","field","model","entry","fieldValidator","name","validations","length","validate","result","validator","message","ex","validatePredefinedValue","enabled","values","predefinedValues","Array","isArray","undefined","predefinedValue","getFieldValidation","listValidation","filter","item","runFieldMultipleValuesValidations","data","fieldId","valuesError","valueError","validation","predefinedValueError","runFieldValueValidations","error","execValidation","multipleValues","validateModelEntryData","skipValidators","isValidatorSkipped","plugin","includes","camelCase","skippedValidators","Set","validators","plugins","byType","isSkipped","add","push","keys","Object","size","parents","fields","exports","validateModelEntryDataOrThrow","invalidFields","WebinyError","executeFieldValidation","type","settings","id","storageId","objectValue","index","childField","errors","concat","templates","template","fieldData","templateValue","gqlTypeName","results"],"sources":["entryDataValidation.ts"],"sourcesContent":["import {\n CmsContext,\n CmsDynamicZoneTemplate,\n CmsEntry,\n CmsModel,\n CmsModelField,\n CmsModelFieldValidation,\n CmsModelFieldValidatorPlugin,\n CmsModelFieldValidatorValidateParams\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport camelCase from \"lodash/camelCase\";\n\ntype PluginValidationCallable = (params: CmsModelFieldValidatorValidateParams) => Promise<boolean>;\ntype PluginValidationList = Record<string, PluginValidationCallable[]>;\ntype InputData = Record<string, any>;\n\ninterface ExecuteValidationParams {\n validatorList: PluginValidationList;\n field: CmsModelField;\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n entry?: CmsEntry;\n}\n\ntype PossibleValue = boolean | number | string | null | undefined;\n\nconst validateValue = async (\n params: ExecuteValidationParams,\n fieldValidators: CmsModelFieldValidation[],\n value: PossibleValue | PossibleValue[]\n): Promise<string | null> => {\n if (!fieldValidators) {\n return null;\n }\n const { validatorList, context, field, model, entry } = params;\n try {\n for (const fieldValidator of fieldValidators) {\n const name = fieldValidator.name;\n const validations = validatorList[name];\n if (!validations || validations.length === 0) {\n return `There are no \"${name}\" validators defined.`;\n }\n for (const validate of validations) {\n const result = await validate({\n value,\n context,\n validator: fieldValidator,\n field,\n model,\n entry\n });\n if (!result) {\n return fieldValidator.message;\n }\n }\n }\n } catch (ex) {\n return ex.message;\n }\n\n return null;\n};\n\nconst validatePredefinedValue = (field: CmsModelField, value: any | any[]): string | null => {\n const { enabled = false, values: predefinedValues = [] } = field.predefinedValues || {};\n if (!enabled) {\n return null;\n } else if (Array.isArray(predefinedValues) === false || predefinedValues.length === 0) {\n return \"Missing predefined values to validate against.\";\n } else if (value == \"\" || value == null || value == undefined) {\n return null;\n }\n for (const predefinedValue of predefinedValues) {\n /**\n * No strict compare because the value sent can be 12345 (number) and predefinedValue can be \"12345\" (string),\n * and we want it to match.\n */\n if (predefinedValue.value == value) {\n return null;\n }\n }\n return \"Value sent does not match any of the available predefined values.\";\n};\n\nconst getFieldValidation = (\n listValidation?: CmsModelFieldValidation[]\n): CmsModelFieldValidation[] => {\n if (!listValidation?.length) {\n return [];\n }\n return listValidation.filter(item => item.name !== \"dynamicZone\");\n};\n/**\n * When multiple values is selected we must run validations on the array containing the values\n * And then on each value in the array\n */\nconst runFieldMultipleValuesValidations = async (\n params: ExecuteValidationParams\n): Promise<string | null> => {\n const { field, data } = params;\n const values = data?.[field.fieldId];\n const valuesError = await validateValue(\n params,\n getFieldValidation(field.listValidation),\n values\n );\n if (valuesError) {\n return valuesError;\n }\n if (values === null || values === undefined) {\n return null;\n }\n for (const value of values) {\n const valueError = await validateValue(params, getFieldValidation(field.validation), value);\n if (valueError) {\n return valueError;\n }\n const predefinedValueError = validatePredefinedValue(field, value);\n if (predefinedValueError) {\n return predefinedValueError;\n }\n }\n return null;\n};\n/**\n * Runs validation on given value.\n */\nconst runFieldValueValidations = async (\n params: ExecuteValidationParams\n): Promise<string | null> => {\n const { data, field } = params;\n const value = data[field.fieldId];\n const error = await validateValue(params, field.validation || [], value);\n if (error) {\n return error;\n }\n return validatePredefinedValue(field, value);\n};\n\nconst execValidation = async (params: ExecuteValidationParams): Promise<string | null> => {\n const { field } = params;\n if (field.multipleValues) {\n return await runFieldMultipleValuesValidations(params);\n }\n return await runFieldValueValidations(params);\n};\n\nexport interface ValidateModelEntryDataParams {\n context: CmsContext;\n model: CmsModel;\n data: InputData;\n entry?: CmsEntry;\n skipValidators?: string[];\n}\n\nexport const validateModelEntryData = async (params: ValidateModelEntryDataParams) => {\n const { context, model, entry, data, skipValidators } = params;\n\n const isValidatorSkipped = (plugin: CmsModelFieldValidatorPlugin) => {\n if (!skipValidators) {\n return false;\n }\n return skipValidators.includes(camelCase(plugin.validator.name));\n };\n\n const skippedValidators = new Set<string>();\n\n /**\n * To later simplify searching for the validations we map them to a name.\n * @see CmsModelFieldValidatorPlugin.validator.validate\n */\n const validatorList: PluginValidationList = {};\n const validators = context.plugins.byType<CmsModelFieldValidatorPlugin>(\n \"cms-model-field-validator\"\n );\n for (const plugin of validators) {\n const name = plugin.validator.name;\n if (!validatorList[name]) {\n validatorList[name] = [];\n }\n const isSkipped = isValidatorSkipped(plugin);\n if (isSkipped) {\n skippedValidators.add(name);\n }\n validatorList[name].push(isSkipped ? async () => true : plugin.validator.validate);\n }\n /**\n * No point in continuing if all validators are skipped.\n */\n const keys = Object.keys(validatorList);\n if (keys.length === skippedValidators.size) {\n return [];\n }\n\n return await validate({\n validatorList,\n context,\n model,\n entry,\n parents: [],\n fields: model.fields,\n data: {\n ...entry?.values,\n ...data\n }\n });\n};\n\nexport const validateModelEntryDataOrThrow = async (params: ValidateModelEntryDataParams) => {\n const invalidFields = await validateModelEntryData(params);\n if (invalidFields.length === 0) {\n return;\n }\n throw new WebinyError(\"Validation failed.\", \"VALIDATION_FAILED\", invalidFields);\n};\n\n/**\n *\n */\ninterface FieldError {\n id: string;\n fieldId: string;\n storageId: string;\n error: any;\n parents: string[];\n}\n\ninterface ValidateParams {\n validatorList: PluginValidationList;\n parents: string[];\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n fields: CmsModelField[];\n entry?: CmsEntry;\n}\n\nconst executeFieldValidation = async (\n params: Omit<ValidateParams, \"fields\"> & {\n field: CmsModelField;\n }\n): Promise<FieldError[]> => {\n // TODO put per-field validation into plugins.\n const { field } = params;\n /**\n * Object field.\n */\n if (field.type === \"object\") {\n const fields = field.settings?.fields;\n if (!Array.isArray(fields)) {\n return [];\n }\n const validations: FieldError[] = [];\n /**\n * We need to validate the object field as well.\n */\n const error = await execValidation({\n ...params,\n field\n });\n if (error) {\n validations.push({\n id: field.id,\n fieldId: field.fieldId,\n storageId: field.storageId,\n error,\n parents: params.parents\n });\n }\n const objectValue = params.data?.[field.fieldId];\n if (!objectValue) {\n return validations;\n }\n const values = Array.isArray(objectValue) ? objectValue : [objectValue];\n for (const index in values) {\n const parents = field.multipleValues ? [field.fieldId, index] : [field.fieldId];\n const value = values[index];\n for (const childField of fields) {\n const errors = await executeFieldValidation({\n ...params,\n parents: params.parents.concat(parents),\n field: childField,\n data: value\n });\n if (errors.length === 0) {\n continue;\n }\n validations.push(...errors);\n }\n }\n return validations;\n }\n /**\n * Dynamic Zone Field\n */\n //\n else if (field.type === \"dynamicZone\") {\n const validations: FieldError[] = [];\n\n const error = await execValidation({\n ...params,\n field\n });\n if (error) {\n validations.push({\n id: field.id,\n fieldId: field.fieldId,\n storageId: field.storageId,\n error,\n parents: params.parents\n });\n }\n\n const templates = (field.settings?.templates || []) as CmsDynamicZoneTemplate[];\n for (const template of templates) {\n const fields = template.fields;\n const fieldData = params.data?.[field.fieldId];\n if (!fieldData) {\n continue;\n }\n const values = Array.isArray(fieldData) ? fieldData : [fieldData];\n for (const index in values) {\n const templateValue = values[index]?.[template.gqlTypeName];\n if (!templateValue) {\n continue;\n }\n /**\n * Order of the parents must be\n * - fieldId\n * - index (if multiple values)\n * - gqlTypeName\n */\n const parents = [field.fieldId];\n if (field.multipleValues) {\n parents.push(index);\n }\n parents.push(template.gqlTypeName);\n for (const childField of fields) {\n const errors = await executeFieldValidation({\n ...params,\n parents: params.parents.concat(parents),\n field: childField,\n data: templateValue\n });\n if (errors.length === 0) {\n continue;\n }\n validations.push(...errors);\n }\n }\n }\n\n return validations;\n }\n const error = await execValidation({\n ...params\n });\n if (!error) {\n return [];\n }\n return [\n {\n id: field.id,\n fieldId: field.fieldId,\n storageId: field.storageId,\n error,\n parents: params.parents\n }\n ];\n};\n\nconst validate = async (params: ValidateParams): Promise<any[]> => {\n const { fields } = params;\n const errors: FieldError[] = [];\n for (const field of fields) {\n const results = await executeFieldValidation({\n ...params,\n field\n });\n if (results.length === 0) {\n continue;\n }\n errors.push(...results);\n }\n return errors;\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CmsEntry, CmsModel, CmsContext } from "../../types";
1
+ import { CmsEntry, CmsContext, CmsModel } from "../../types";
2
2
  interface MarkLockedFieldsParams {
3
3
  model: CmsModel;
4
4
  entry: CmsEntry;
@@ -1,18 +1,13 @@
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.markUnlockedFields = exports.markLockedFields = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
8
  var _error = _interopRequireDefault(require("@webiny/error"));
13
-
14
9
  var _CmsModelPlugin = require("../../plugins/CmsModelPlugin");
15
-
10
+ var _getBaseFieldType = require("../../utils/getBaseFieldType");
16
11
  const markLockedFields = async params => {
17
12
  const {
18
13
  model,
@@ -21,67 +16,66 @@ const markLockedFields = async params => {
21
16
  /**
22
17
  * If the model is registered via a plugin, we don't need do process anything.
23
18
  */
24
-
25
19
  const plugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
26
-
27
20
  if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {
28
21
  return;
29
22
  }
30
-
31
23
  const cmsLockedFieldPlugins = context.plugins.byType("cms-model-locked-field");
32
24
  const existingLockedFields = model.lockedFields || [];
33
25
  const lockedFields = [];
34
-
35
26
  for (const field of model.fields) {
27
+ const baseType = (0, _getBaseFieldType.getBaseFieldType)(field);
36
28
  const alreadyLocked = existingLockedFields.some(lockedField => lockedField.fieldId === field.storageId);
37
-
38
29
  if (alreadyLocked) {
39
30
  continue;
40
31
  }
41
-
42
32
  let lockedFieldData = {};
43
- const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === field.type);
44
-
33
+ const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === baseType);
45
34
  for (const plugin of lockedFieldPlugins) {
46
35
  if (typeof plugin.getLockedFieldData !== "function") {
47
36
  continue;
48
37
  }
49
-
50
38
  const data = plugin.getLockedFieldData({
51
39
  field
52
40
  });
53
- lockedFieldData = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, lockedFieldData), data);
41
+ lockedFieldData = {
42
+ ...lockedFieldData,
43
+ ...data
44
+ };
54
45
  }
55
-
56
- lockedFields.push((0, _objectSpread2.default)({
46
+ lockedFields.push({
57
47
  fieldId: field.storageId,
58
48
  multipleValues: !!field.multipleValues,
59
- type: field.type
60
- }, lockedFieldData));
61
- } // no need to update anything if no locked fields were added
62
-
63
-
49
+ type: baseType,
50
+ ...lockedFieldData
51
+ });
52
+ }
53
+ // no need to update anything if no locked fields were added
64
54
  if (lockedFields.length === 0) {
65
55
  return;
66
56
  }
67
-
68
57
  const newLockedFields = existingLockedFields.concat(lockedFields);
69
-
70
58
  try {
71
59
  await context.cms.updateModelDirect({
60
+ /**
61
+ * At this point we know this is a CmsModel, so it is safe to cast.
62
+ */
72
63
  original: model,
73
- model: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
64
+ model: {
65
+ ...model,
74
66
  lockedFields: newLockedFields
75
- })
67
+ }
76
68
  });
77
69
  model.lockedFields = newLockedFields;
78
70
  } catch (ex) {
79
- throw new _error.default(`Could not update model "${model.modelId}" with new locked fields.`, "MODEL_LOCKED_FIELDS_UPDATE_FAILED", ex);
71
+ throw new _error.default(`Could not update model "${model.modelId}" with new locked fields.`, "MODEL_LOCKED_FIELDS_UPDATE_FAILED", {
72
+ message: ex.message,
73
+ code: ex.code,
74
+ data: ex.data
75
+ });
80
76
  }
81
77
  };
82
-
83
78
  exports.markLockedFields = markLockedFields;
84
-
85
79
  const markUnlockedFields = async params => {
86
80
  const {
87
81
  context,
@@ -90,24 +84,27 @@ const markUnlockedFields = async params => {
90
84
  /**
91
85
  * If the model is registered via a plugin, we don't need do process anything.
92
86
  */
93
-
94
87
  const plugins = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type);
95
-
96
88
  if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {
97
89
  return;
98
90
  }
99
-
100
91
  try {
101
92
  await context.cms.updateModelDirect({
102
93
  original: model,
103
- model: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
94
+ model: {
95
+ ...model,
104
96
  lockedFields: []
105
- })
97
+ }
106
98
  });
107
99
  model.lockedFields = [];
108
100
  } catch (ex) {
109
- throw new _error.default(`Could not update model "${model.modelId}" with unlocked fields.`, "MODEL_UNLOCKED_FIELDS_UPDATE_FAILED", ex);
101
+ throw new _error.default(`Could not update model "${model.modelId}" with unlocked fields.`, "MODEL_UNLOCKED_FIELDS_UPDATE_FAILED", {
102
+ message: ex.message,
103
+ code: ex.code,
104
+ data: ex.data
105
+ });
110
106
  }
111
107
  };
108
+ exports.markUnlockedFields = markUnlockedFields;
112
109
 
113
- exports.markUnlockedFields = markUnlockedFields;
110
+ //# sourceMappingURL=markLockedFields.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","alreadyLocked","some","lockedField","fieldId","storageId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, CmsContext, CmsModelLockedFieldPlugin, LockedField } from \"~/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.storageId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === field.type);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.storageId,\n multipleValues: !!field.multipleValues,\n type: field.type,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: newLockedFields\n }\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: []\n }\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_CmsModelPlugin","_getBaseFieldType","markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","baseType","getBaseFieldType","alreadyLocked","some","lockedField","fieldId","storageId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","message","code","exports","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsContext, CmsModelLockedFieldPlugin, LockedField, CmsModel } from \"~/types\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\n\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const baseType = getBaseFieldType(field);\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.storageId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === baseType);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.storageId,\n multipleValues: !!field.multipleValues,\n type: baseType,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n /**\n * At this point we know this is a CmsModel, so it is safe to cast.\n */\n original: model as CmsModel,\n model: {\n ...model,\n lockedFields: newLockedFields\n } as CmsModel\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\n\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model as CmsModel,\n model: {\n ...model,\n lockedFields: []\n } as CmsModel\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n }\n};\n"],"mappings":"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"}
@@ -9,5 +9,11 @@ interface Params {
9
9
  input: Record<string, ReferenceObject | ReferenceObject[]>;
10
10
  validateEntries?: boolean;
11
11
  }
12
+ /**
13
+ * This function traverses the content entry input value, extracts all occurrences of the `ref` field,
14
+ * optionally verifies that those referenced entries exist (by loading them), and normalizes the `ref` value to
15
+ * always contain `{ id, modelId, entryId }`. `entryId` is important when data is being loaded via
16
+ * the `read` and `preview` endpoint.
17
+ */
12
18
  export declare const referenceFieldsMapping: (params: Params) => Promise<Record<string, any>>;
13
19
  export {};