@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.606fc9c866

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 (442) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +63 -29
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/afterDelete.d.ts +2 -2
  5. package/crud/contentEntry/afterDelete.js +2 -7
  6. package/crud/contentEntry/afterDelete.js.map +1 -1
  7. package/crud/contentEntry/beforeCreate.d.ts +2 -2
  8. package/crud/contentEntry/beforeCreate.js +2 -5
  9. package/crud/contentEntry/beforeCreate.js.map +1 -1
  10. package/crud/contentEntry/beforeUpdate.d.ts +2 -2
  11. package/crud/contentEntry/beforeUpdate.js +2 -5
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataValidation.js +4 -47
  14. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  15. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  16. package/crud/contentEntry/markLockedFields.js +25 -39
  17. package/crud/contentEntry/markLockedFields.js.map +1 -1
  18. package/crud/contentEntry/referenceFieldsMapping.js +48 -77
  19. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  20. package/crud/contentEntry/searchableFields.d.ts +9 -0
  21. package/crud/contentEntry/searchableFields.js +72 -0
  22. package/crud/contentEntry/searchableFields.js.map +1 -0
  23. package/crud/contentEntry.crud.d.ts +8 -7
  24. package/crud/contentEntry.crud.js +1002 -1022
  25. package/crud/contentEntry.crud.js.map +1 -1
  26. package/crud/contentModel/afterCreate.d.ts +3 -3
  27. package/crud/contentModel/afterCreate.js +5 -7
  28. package/crud/contentModel/afterCreate.js.map +1 -1
  29. package/crud/contentModel/afterCreateFrom.d.ts +3 -3
  30. package/crud/contentModel/afterCreateFrom.js +5 -7
  31. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  32. package/crud/contentModel/afterDelete.d.ts +3 -3
  33. package/crud/contentModel/afterDelete.js +5 -7
  34. package/crud/contentModel/afterDelete.js.map +1 -1
  35. package/crud/contentModel/afterUpdate.d.ts +3 -3
  36. package/crud/contentModel/afterUpdate.js +5 -7
  37. package/crud/contentModel/afterUpdate.js.map +1 -1
  38. package/crud/contentModel/beforeCreate.d.ts +5 -6
  39. package/crud/contentModel/beforeCreate.js +53 -119
  40. package/crud/contentModel/beforeCreate.js.map +1 -1
  41. package/crud/contentModel/beforeDelete.d.ts +3 -3
  42. package/crud/contentModel/beforeDelete.js +7 -21
  43. package/crud/contentModel/beforeDelete.js.map +1 -1
  44. package/crud/contentModel/beforeUpdate.d.ts +4 -6
  45. package/crud/contentModel/beforeUpdate.js +38 -15
  46. package/crud/contentModel/beforeUpdate.js.map +1 -1
  47. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  48. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  49. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  50. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  51. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  52. package/crud/contentModel/createFieldStorageId.js +4 -3
  53. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  54. package/crud/contentModel/defaultFields.d.ts +5 -0
  55. package/crud/contentModel/defaultFields.js +58 -0
  56. package/crud/contentModel/defaultFields.js.map +1 -0
  57. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  58. package/crud/contentModel/fields/descriptionField.js +42 -0
  59. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  60. package/crud/contentModel/fields/imageField.d.ts +2 -0
  61. package/crud/contentModel/fields/imageField.js +46 -0
  62. package/crud/contentModel/fields/imageField.js.map +1 -0
  63. package/crud/contentModel/fields/titleField.d.ts +2 -0
  64. package/crud/contentModel/fields/titleField.js +58 -0
  65. package/crud/contentModel/fields/titleField.js.map +1 -0
  66. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  67. package/crud/contentModel/validate/endingAllowed.js +26 -0
  68. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  69. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  70. package/crud/contentModel/validate/isModelEndingAllowed.js +24 -0
  71. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  72. package/crud/contentModel/validate/modelId.d.ts +11 -0
  73. package/crud/contentModel/validate/modelId.js +36 -0
  74. package/crud/contentModel/validate/modelId.js.map +1 -0
  75. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  76. package/crud/contentModel/validate/pluralApiName.js +24 -0
  77. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  78. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  79. package/crud/contentModel/validate/singularApiName.js +24 -0
  80. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  81. package/crud/contentModel/validateLayout.js +0 -8
  82. package/crud/contentModel/validateLayout.js.map +1 -1
  83. package/crud/contentModel/validateModel.d.ts +4 -4
  84. package/crud/contentModel/validateModel.js +7 -12
  85. package/crud/contentModel/validateModel.js.map +1 -1
  86. package/crud/contentModel/validateModelFields.d.ts +4 -4
  87. package/crud/contentModel/validateModelFields.js +133 -154
  88. package/crud/contentModel/validateModelFields.js.map +1 -1
  89. package/crud/contentModel/validation.d.ts +551 -0
  90. package/crud/contentModel/validation.js +145 -0
  91. package/crud/contentModel/validation.js.map +1 -0
  92. package/crud/contentModel.crud.js +410 -375
  93. package/crud/contentModel.crud.js.map +1 -1
  94. package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
  95. package/crud/contentModelGroup/beforeCreate.js +3 -15
  96. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  97. package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
  98. package/crud/contentModelGroup/beforeDelete.js +3 -11
  99. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  100. package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
  101. package/crud/contentModelGroup/beforeUpdate.js +2 -7
  102. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  103. package/crud/contentModelGroup/validation.d.ts +30 -0
  104. package/crud/contentModelGroup/validation.js +34 -0
  105. package/crud/contentModelGroup/validation.js.map +1 -0
  106. package/crud/contentModelGroup.crud.js +227 -221
  107. package/crud/contentModelGroup.crud.js.map +1 -1
  108. package/crud/settings.crud.d.ts +1 -1
  109. package/crud/settings.crud.js +8 -30
  110. package/crud/settings.crud.js.map +1 -1
  111. package/crud/system.crud.js +55 -138
  112. package/crud/system.crud.js.map +1 -1
  113. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -14
  114. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  115. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  116. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  117. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  118. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +16 -71
  119. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  120. package/fieldConverters/index.d.ts +2 -1
  121. package/fieldConverters/index.js +2 -5
  122. package/fieldConverters/index.js.map +1 -1
  123. package/graphql/buildSchemaPlugins.d.ts +8 -3
  124. package/graphql/buildSchemaPlugins.js +6 -14
  125. package/graphql/buildSchemaPlugins.js.map +1 -1
  126. package/graphql/checkEndpointAccess.d.ts +2 -0
  127. package/graphql/checkEndpointAccess.js +18 -0
  128. package/graphql/checkEndpointAccess.js.map +1 -0
  129. package/graphql/createExecutableSchema.d.ts +6 -0
  130. package/graphql/createExecutableSchema.js +29 -0
  131. package/graphql/createExecutableSchema.js.map +1 -0
  132. package/graphql/createRequestBody.d.ts +2 -0
  133. package/graphql/createRequestBody.js +14 -0
  134. package/graphql/createRequestBody.js.map +1 -0
  135. package/graphql/formatErrorPayload.d.ts +1 -0
  136. package/graphql/formatErrorPayload.js +25 -0
  137. package/graphql/formatErrorPayload.js.map +1 -0
  138. package/graphql/generateSchema.d.ts +8 -0
  139. package/graphql/generateSchema.js +31 -0
  140. package/graphql/generateSchema.js.map +1 -0
  141. package/graphql/getSchema.d.ts +17 -0
  142. package/graphql/getSchema.js +102 -0
  143. package/graphql/getSchema.js.map +1 -0
  144. package/graphql/graphQLHandlerFactory.js +7 -130
  145. package/graphql/graphQLHandlerFactory.js.map +1 -1
  146. package/graphql/handleRequest.d.ts +11 -0
  147. package/graphql/handleRequest.js +81 -0
  148. package/graphql/handleRequest.js.map +1 -0
  149. package/graphql/index.d.ts +1 -3
  150. package/graphql/index.js +2 -46
  151. package/graphql/index.js.map +1 -1
  152. package/graphql/schema/baseContentSchema.d.ts +6 -2
  153. package/graphql/schema/baseContentSchema.js +15 -29
  154. package/graphql/schema/baseContentSchema.js.map +1 -1
  155. package/graphql/schema/baseSchema.d.ts +3 -0
  156. package/graphql/schema/baseSchema.js +53 -0
  157. package/graphql/schema/baseSchema.js.map +1 -0
  158. package/graphql/schema/contentEntries.d.ts +6 -2
  159. package/graphql/schema/contentEntries.js +119 -108
  160. package/graphql/schema/contentEntries.js.map +1 -1
  161. package/graphql/schema/contentModelGroups.d.ts +6 -2
  162. package/graphql/schema/contentModelGroups.js +16 -29
  163. package/graphql/schema/contentModelGroups.js.map +1 -1
  164. package/graphql/schema/contentModels.d.ts +6 -2
  165. package/graphql/schema/contentModels.js +77 -22
  166. package/graphql/schema/contentModels.js.map +1 -1
  167. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  168. package/graphql/schema/createFieldResolvers.js +26 -38
  169. package/graphql/schema/createFieldResolvers.js.map +1 -1
  170. package/graphql/schema/createManageResolvers.d.ts +1 -1
  171. package/graphql/schema/createManageResolvers.js +42 -60
  172. package/graphql/schema/createManageResolvers.js.map +1 -1
  173. package/graphql/schema/createManageSDL.d.ts +3 -0
  174. package/graphql/schema/createManageSDL.js +66 -73
  175. package/graphql/schema/createManageSDL.js.map +1 -1
  176. package/graphql/schema/createPreviewResolvers.js +6 -24
  177. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  178. package/graphql/schema/createReadResolvers.js +11 -24
  179. package/graphql/schema/createReadResolvers.js.map +1 -1
  180. package/graphql/schema/createReadSDL.d.ts +3 -0
  181. package/graphql/schema/createReadSDL.js +33 -35
  182. package/graphql/schema/createReadSDL.js.map +1 -1
  183. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  184. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  185. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  186. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  187. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  188. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  189. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  190. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  191. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  192. package/graphql/schema/resolvers/manage/resolveGet.js +5 -25
  193. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  194. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  195. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  196. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  197. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  198. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
  199. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +18 -0
  200. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
  201. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  202. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  203. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  204. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  205. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  206. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  207. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  208. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  209. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  210. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  211. package/graphql/schema/resolvers/preview/resolveGet.js +3 -15
  212. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  213. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  214. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  215. package/graphql/schema/resolvers/read/resolveGet.js +3 -15
  216. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  217. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  218. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  219. package/graphql/schema/schemaPlugins.d.ts +8 -3
  220. package/graphql/schema/schemaPlugins.js +64 -66
  221. package/graphql/schema/schemaPlugins.js.map +1 -1
  222. package/graphql/system.js +55 -87
  223. package/graphql/system.js.map +1 -1
  224. package/graphqlFields/boolean.js +0 -12
  225. package/graphqlFields/boolean.js.map +1 -1
  226. package/graphqlFields/datetime.js +0 -17
  227. package/graphqlFields/datetime.js.map +1 -1
  228. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  229. package/graphqlFields/dynamicZone/dynamicZoneField.js +243 -0
  230. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  231. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  232. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  233. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  234. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  235. package/graphqlFields/dynamicZone/index.js +19 -0
  236. package/graphqlFields/dynamicZone/index.js.map +1 -0
  237. package/graphqlFields/file.js +0 -8
  238. package/graphqlFields/file.js.map +1 -1
  239. package/graphqlFields/helpers.js +0 -10
  240. package/graphqlFields/helpers.js.map +1 -1
  241. package/graphqlFields/index.d.ts +1 -1
  242. package/graphqlFields/index.js +2 -12
  243. package/graphqlFields/index.js.map +1 -1
  244. package/graphqlFields/longText.js +0 -10
  245. package/graphqlFields/longText.js.map +1 -1
  246. package/graphqlFields/number.js +4 -12
  247. package/graphqlFields/number.js.map +1 -1
  248. package/graphqlFields/object.js +132 -99
  249. package/graphqlFields/object.js.map +1 -1
  250. package/graphqlFields/ref.js +90 -114
  251. package/graphqlFields/ref.js.map +1 -1
  252. package/graphqlFields/richText.js +0 -9
  253. package/graphqlFields/richText.js.map +1 -1
  254. package/graphqlFields/text.js +0 -11
  255. package/graphqlFields/text.js.map +1 -1
  256. package/index.d.ts +5 -3
  257. package/index.js +27 -27
  258. package/index.js.map +1 -1
  259. package/modelManager/DefaultCmsModelManager.d.ts +7 -7
  260. package/modelManager/DefaultCmsModelManager.js +1 -17
  261. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  262. package/modelManager/index.js +0 -4
  263. package/modelManager/index.js.map +1 -1
  264. package/package.json +30 -32
  265. package/parameters/context.js +0 -4
  266. package/parameters/context.js.map +1 -1
  267. package/parameters/header.js +1 -12
  268. package/parameters/header.js.map +1 -1
  269. package/parameters/index.js +0 -8
  270. package/parameters/index.js.map +1 -1
  271. package/parameters/manual.js +7 -15
  272. package/parameters/manual.js.map +1 -1
  273. package/parameters/path.js +1 -12
  274. package/parameters/path.js.map +1 -1
  275. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  276. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  277. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  278. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  279. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  280. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  281. package/plugins/CmsGroupPlugin.js +1 -9
  282. package/plugins/CmsGroupPlugin.js.map +1 -1
  283. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  284. package/plugins/CmsModelFieldConverterPlugin.js +1 -6
  285. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  286. package/plugins/CmsModelPlugin.d.ts +27 -5
  287. package/plugins/CmsModelPlugin.js +46 -51
  288. package/plugins/CmsModelPlugin.js.map +1 -1
  289. package/plugins/CmsParametersPlugin.js +1 -8
  290. package/plugins/CmsParametersPlugin.js.map +1 -1
  291. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  292. package/plugins/StorageOperationsCmsModelPlugin.js +42 -0
  293. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  294. package/plugins/StorageTransformPlugin.d.ts +11 -11
  295. package/plugins/StorageTransformPlugin.js +1 -10
  296. package/plugins/StorageTransformPlugin.js.map +1 -1
  297. package/plugins/index.d.ts +3 -0
  298. package/plugins/index.js +33 -10
  299. package/plugins/index.js.map +1 -1
  300. package/storage/default.js +0 -3
  301. package/storage/default.js.map +1 -1
  302. package/storage/object.js +7 -27
  303. package/storage/object.js.map +1 -1
  304. package/types.d.ts +642 -239
  305. package/types.js +67 -72
  306. package/types.js.map +1 -1
  307. package/utils/access.js +11 -25
  308. package/utils/access.js.map +1 -1
  309. package/utils/converters/Converter.js +1 -14
  310. package/utils/converters/Converter.js.map +1 -1
  311. package/utils/converters/ConverterCollection.d.ts +7 -0
  312. package/utils/converters/ConverterCollection.js +36 -32
  313. package/utils/converters/ConverterCollection.js.map +1 -1
  314. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  315. package/utils/converters/valueKeyStorageConverter.js +23 -50
  316. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  317. package/utils/createTypeFromFields.d.ts +16 -0
  318. package/utils/createTypeFromFields.js +66 -0
  319. package/utils/createTypeFromFields.js.map +1 -0
  320. package/utils/createTypeName.d.ts +0 -2
  321. package/utils/createTypeName.js +5 -20
  322. package/utils/createTypeName.js.map +1 -1
  323. package/utils/entryStorage.js +25 -42
  324. package/utils/entryStorage.js.map +1 -1
  325. package/utils/filterAsync.js +0 -5
  326. package/utils/filterAsync.js.map +1 -1
  327. package/utils/getBaseFieldType.d.ts +4 -0
  328. package/utils/getBaseFieldType.js +10 -0
  329. package/utils/getBaseFieldType.js.map +1 -0
  330. package/utils/getEntryDescription.d.ts +2 -0
  331. package/utils/getEntryDescription.js +17 -0
  332. package/utils/getEntryDescription.js.map +1 -0
  333. package/utils/getEntryImage.d.ts +2 -0
  334. package/utils/getEntryImage.js +17 -0
  335. package/utils/getEntryImage.js.map +1 -0
  336. package/utils/getEntryTitle.js +0 -9
  337. package/utils/getEntryTitle.js.map +1 -1
  338. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  339. package/utils/getSchemaFromFieldPlugins.js +23 -19
  340. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  341. package/utils/incrementEntryIdVersion.d.ts +5 -0
  342. package/utils/incrementEntryIdVersion.js +29 -0
  343. package/utils/incrementEntryIdVersion.js.map +1 -0
  344. package/utils/ownership.d.ts +3 -3
  345. package/utils/ownership.js +0 -8
  346. package/utils/ownership.js.map +1 -1
  347. package/utils/permissions.js +7 -26
  348. package/utils/permissions.js.map +1 -1
  349. package/utils/renderFields.d.ts +2 -1
  350. package/utils/renderFields.js +10 -10
  351. package/utils/renderFields.js.map +1 -1
  352. package/utils/renderGetFilterFields.js +6 -14
  353. package/utils/renderGetFilterFields.js.map +1 -1
  354. package/utils/renderInputFields.d.ts +2 -1
  355. package/utils/renderInputFields.js +6 -9
  356. package/utils/renderInputFields.js.map +1 -1
  357. package/utils/renderListFilterFields.js +10 -9
  358. package/utils/renderListFilterFields.js.map +1 -1
  359. package/utils/renderSortEnum.d.ts +7 -4
  360. package/utils/renderSortEnum.js +21 -11
  361. package/utils/renderSortEnum.js.map +1 -1
  362. package/utils/toSlug.js +1 -5
  363. package/utils/toSlug.js.map +1 -1
  364. package/validators/dateGte.js +0 -7
  365. package/validators/dateGte.js.map +1 -1
  366. package/validators/dateLte.js +0 -7
  367. package/validators/dateLte.js.map +1 -1
  368. package/validators/dynamicZone.d.ts +2 -0
  369. package/validators/dynamicZone.js +20 -0
  370. package/validators/dynamicZone.js.map +1 -0
  371. package/validators/gte.js +0 -8
  372. package/validators/gte.js.map +1 -1
  373. package/validators/in.js +0 -8
  374. package/validators/in.js.map +1 -1
  375. package/validators/index.js +2 -16
  376. package/validators/index.js.map +1 -1
  377. package/validators/lte.js +0 -8
  378. package/validators/lte.js.map +1 -1
  379. package/validators/maxLength.js +0 -8
  380. package/validators/maxLength.js.map +1 -1
  381. package/validators/minLength.js +0 -8
  382. package/validators/minLength.js.map +1 -1
  383. package/validators/pattern.js +0 -9
  384. package/validators/pattern.js.map +1 -1
  385. package/validators/patternPlugins/email.js +0 -2
  386. package/validators/patternPlugins/email.js.map +1 -1
  387. package/validators/patternPlugins/index.js +0 -8
  388. package/validators/patternPlugins/index.js.map +1 -1
  389. package/validators/patternPlugins/lowerCase.js +0 -2
  390. package/validators/patternPlugins/lowerCase.js.map +1 -1
  391. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  392. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  393. package/validators/patternPlugins/upperCase.js +0 -2
  394. package/validators/patternPlugins/upperCase.js.map +1 -1
  395. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  396. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  397. package/validators/patternPlugins/url.js +0 -2
  398. package/validators/patternPlugins/url.js.map +1 -1
  399. package/validators/required.js +0 -5
  400. package/validators/required.js.map +1 -1
  401. package/validators/timeGte.js +0 -8
  402. package/validators/timeGte.js.map +1 -1
  403. package/validators/timeLte.js +0 -8
  404. package/validators/timeLte.js.map +1 -1
  405. package/validators/unique.js +1 -8
  406. package/validators/unique.js.map +1 -1
  407. package/crud/contentModel/createFieldModels.d.ts +0 -2
  408. package/crud/contentModel/createFieldModels.js +0 -26
  409. package/crud/contentModel/createFieldModels.js.map +0 -1
  410. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  411. package/crud/contentModel/fieldIdValidation.js +0 -25
  412. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  413. package/crud/contentModel/idValidation.d.ts +0 -1
  414. package/crud/contentModel/idValidation.js +0 -22
  415. package/crud/contentModel/idValidation.js.map +0 -1
  416. package/crud/contentModel/models.d.ts +0 -4
  417. package/crud/contentModel/models.js +0 -180
  418. package/crud/contentModel/models.js.map +0 -1
  419. package/crud/contentModel/systemFields.d.ts +0 -1
  420. package/crud/contentModel/systemFields.js +0 -8
  421. package/crud/contentModel/systemFields.js.map +0 -1
  422. package/crud/index.d.ts +0 -6
  423. package/crud/index.js +0 -89
  424. package/crud/index.js.map +0 -1
  425. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  426. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  427. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  428. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  429. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  430. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  431. package/upgrades/5.33.0/index.d.ts +0 -3
  432. package/upgrades/5.33.0/index.js +0 -186
  433. package/upgrades/5.33.0/index.js.map +0 -1
  434. package/upgrades/index.d.ts +0 -1
  435. package/upgrades/index.js +0 -12
  436. package/upgrades/index.js.map +0 -1
  437. package/utils/filterModelFields.d.ts +0 -16
  438. package/utils/filterModelFields.js +0 -81
  439. package/utils/filterModelFields.js.map +0 -1
  440. package/utils/pluralizedTypeName.d.ts +0 -1
  441. package/utils/pluralizedTypeName.js +0 -26
  442. package/utils/pluralizedTypeName.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["allowedEndpoints","createPathParameterPlugin","CmsParametersPlugin","context","request","params","type","locale","WebinyError","includes"],"sources":["path.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsParametersPlugin } from \"~/plugins/CmsParametersPlugin\";\nimport { ApiEndpoint } from \"~/types\";\n\nconst allowedEndpoints: ApiEndpoint[] = [\"manage\", \"read\", \"preview\"];\n\nexport const createPathParameterPlugin = () => {\n return new CmsParametersPlugin(async context => {\n /**\n * If any of the properties is not defined, just ignore this plugin\n */\n if (!context.request?.params) {\n return null;\n }\n\n const { type, locale } = context.request.params as Record<string, string | null>;\n if (!type && !locale) {\n return null;\n }\n\n if (!type) {\n throw new WebinyError(`Missing request parameter \"type\".`);\n } else if (!locale) {\n throw new WebinyError(`Missing request parameter \"locale\".`);\n } else if (allowedEndpoints.includes(type as ApiEndpoint) === false) {\n throw new WebinyError(`Endpoint \"${type}\" not allowed!`);\n }\n\n return {\n type: type as ApiEndpoint,\n locale\n };\n });\n};\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAGA,MAAMA,gBAA+B,GAAG,CAAC,QAAD,EAAW,MAAX,EAAmB,SAAnB,CAAxC;;AAEO,MAAMC,yBAAyB,GAAG,MAAM;EAC3C,OAAO,IAAIC,wCAAJ,CAAwB,MAAMC,OAAN,IAAiB;IAAA;;IAC5C;AACR;AACA;IACQ,IAAI,sBAACA,OAAO,CAACC,OAAT,6CAAC,iBAAiBC,MAAlB,CAAJ,EAA8B;MAC1B,OAAO,IAAP;IACH;;IAED,MAAM;MAAEC,IAAF;MAAQC;IAAR,IAAmBJ,OAAO,CAACC,OAAR,CAAgBC,MAAzC;;IACA,IAAI,CAACC,IAAD,IAAS,CAACC,MAAd,EAAsB;MAClB,OAAO,IAAP;IACH;;IAED,IAAI,CAACD,IAAL,EAAW;MACP,MAAM,IAAIE,cAAJ,CAAiB,mCAAjB,CAAN;IACH,CAFD,MAEO,IAAI,CAACD,MAAL,EAAa;MAChB,MAAM,IAAIC,cAAJ,CAAiB,qCAAjB,CAAN;IACH,CAFM,MAEA,IAAIR,gBAAgB,CAACS,QAAjB,CAA0BH,IAA1B,MAAmD,KAAvD,EAA8D;MACjE,MAAM,IAAIE,cAAJ,CAAiB,aAAYF,IAAK,gBAAlC,CAAN;IACH;;IAED,OAAO;MACHA,IAAI,EAAEA,IADH;MAEHC;IAFG,CAAP;EAIH,CAzBM,CAAP;AA0BH,CA3BM"}
1
+ {"version":3,"names":["allowedEndpoints","createPathParameterPlugin","CmsParametersPlugin","context","request","params","type","locale","WebinyError","includes"],"sources":["path.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsParametersPlugin } from \"~/plugins/CmsParametersPlugin\";\nimport { ApiEndpoint } from \"~/types\";\n\nconst allowedEndpoints: ApiEndpoint[] = [\"manage\", \"read\", \"preview\"];\n\nexport const createPathParameterPlugin = () => {\n return new CmsParametersPlugin(async context => {\n /**\n * If any of the properties is not defined, just ignore this plugin\n */\n if (!context.request?.params) {\n return null;\n }\n\n const { type, locale } = context.request.params as Record<string, string | null>;\n if (!type && !locale) {\n return null;\n }\n\n if (!type) {\n throw new WebinyError(`Missing request parameter \"type\".`);\n } else if (!locale) {\n throw new WebinyError(`Missing request parameter \"locale\".`);\n } else if (allowedEndpoints.includes(type as ApiEndpoint) === false) {\n throw new WebinyError(`Endpoint \"${type}\" not allowed!`);\n }\n\n return {\n type: type as ApiEndpoint,\n locale\n };\n });\n};\n"],"mappings":";;;;;;;AAAA;AACA;AAGA,MAAMA,gBAA+B,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC;AAE9D,MAAMC,yBAAyB,GAAG,MAAM;EAC3C,OAAO,IAAIC,wCAAmB,CAAC,MAAMC,OAAO,IAAI;IAAA;IAC5C;AACR;AACA;IACQ,IAAI,sBAACA,OAAO,CAACC,OAAO,6CAAf,iBAAiBC,MAAM,GAAE;MAC1B,OAAO,IAAI;IACf;IAEA,MAAM;MAAEC,IAAI;MAAEC;IAAO,CAAC,GAAGJ,OAAO,CAACC,OAAO,CAACC,MAAuC;IAChF,IAAI,CAACC,IAAI,IAAI,CAACC,MAAM,EAAE;MAClB,OAAO,IAAI;IACf;IAEA,IAAI,CAACD,IAAI,EAAE;MACP,MAAM,IAAIE,cAAW,CAAE,mCAAkC,CAAC;IAC9D,CAAC,MAAM,IAAI,CAACD,MAAM,EAAE;MAChB,MAAM,IAAIC,cAAW,CAAE,qCAAoC,CAAC;IAChE,CAAC,MAAM,IAAIR,gBAAgB,CAACS,QAAQ,CAACH,IAAI,CAAgB,KAAK,KAAK,EAAE;MACjE,MAAM,IAAIE,cAAW,CAAE,aAAYF,IAAK,gBAAe,CAAC;IAC5D;IAEA,OAAO;MACHA,IAAI,EAAEA,IAAmB;MACzBC;IACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -0,0 +1,5 @@
1
+ import { GraphQLSchemaPlugin } from "@webiny/handler-graphql";
2
+ import { CmsContext } from "../types";
3
+ export declare class CmsGraphQLSchemaPlugin<T = CmsContext> extends GraphQLSchemaPlugin<T> {
4
+ static type: string;
5
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.CmsGraphQLSchemaPlugin = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _handlerGraphql = require("@webiny/handler-graphql");
10
+ class CmsGraphQLSchemaPlugin extends _handlerGraphql.GraphQLSchemaPlugin {}
11
+ exports.CmsGraphQLSchemaPlugin = CmsGraphQLSchemaPlugin;
12
+ (0, _defineProperty2.default)(CmsGraphQLSchemaPlugin, "type", "cms.graphql.schema");
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CmsGraphQLSchemaPlugin","GraphQLSchemaPlugin"],"sources":["CmsGraphQLSchemaPlugin.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { CmsContext } from \"~/types\";\n\nexport class CmsGraphQLSchemaPlugin<T = CmsContext> extends GraphQLSchemaPlugin<T> {\n public static override type = \"cms.graphql.schema\";\n}\n"],"mappings":";;;;;;;;AAAA;AAGO,MAAMA,sBAAsB,SAAyBC,mCAAmB,CAAI;AAElF;AAAA,8BAFYD,sBAAsB,UACD,oBAAoB"}
@@ -0,0 +1,20 @@
1
+ import { Plugin } from "@webiny/plugins";
2
+ import { CmsModel } from "../types";
3
+ interface CmsGraphQLSchemaSorterPluginCallableParams {
4
+ model: CmsModel;
5
+ sorters: string[];
6
+ }
7
+ interface CmsGraphQLSchemaSorterPluginCallable {
8
+ (params: CmsGraphQLSchemaSorterPluginCallableParams): string[];
9
+ }
10
+ export declare class CmsGraphQLSchemaSorterPlugin extends Plugin {
11
+ static readonly type: string;
12
+ private readonly cb;
13
+ constructor(cb: CmsGraphQLSchemaSorterPluginCallable);
14
+ /**
15
+ * Method must return new sorting array. Or existing one if no changes are made.
16
+ */
17
+ createSorter(params: CmsGraphQLSchemaSorterPluginCallableParams): string[];
18
+ }
19
+ export declare const createCmsGraphQLSchemaSorterPlugin: (cb: CmsGraphQLSchemaSorterPluginCallable) => CmsGraphQLSchemaSorterPlugin;
20
+ export {};
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createCmsGraphQLSchemaSorterPlugin = exports.CmsGraphQLSchemaSorterPlugin = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _plugins = require("@webiny/plugins");
10
+ class CmsGraphQLSchemaSorterPlugin extends _plugins.Plugin {
11
+ constructor(cb) {
12
+ super();
13
+ (0, _defineProperty2.default)(this, "cb", void 0);
14
+ this.cb = cb;
15
+ }
16
+ /**
17
+ * Method must return new sorting array. Or existing one if no changes are made.
18
+ */
19
+ createSorter(params) {
20
+ return this.cb(params);
21
+ }
22
+ }
23
+ exports.CmsGraphQLSchemaSorterPlugin = CmsGraphQLSchemaSorterPlugin;
24
+ (0, _defineProperty2.default)(CmsGraphQLSchemaSorterPlugin, "type", "cms.graphql.schema.sorter");
25
+ const createCmsGraphQLSchemaSorterPlugin = cb => {
26
+ return new CmsGraphQLSchemaSorterPlugin(cb);
27
+ };
28
+ exports.createCmsGraphQLSchemaSorterPlugin = createCmsGraphQLSchemaSorterPlugin;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CmsGraphQLSchemaSorterPlugin","Plugin","constructor","cb","createSorter","params","createCmsGraphQLSchemaSorterPlugin"],"sources":["CmsGraphQLSchemaSorterPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsModel } from \"~/types\";\n\ninterface CmsGraphQLSchemaSorterPluginCallableParams {\n model: CmsModel;\n sorters: string[];\n}\ninterface CmsGraphQLSchemaSorterPluginCallable {\n (params: CmsGraphQLSchemaSorterPluginCallableParams): string[];\n}\nexport class CmsGraphQLSchemaSorterPlugin extends Plugin {\n public static override readonly type: string = \"cms.graphql.schema.sorter\";\n\n private readonly cb: CmsGraphQLSchemaSorterPluginCallable;\n public constructor(cb: CmsGraphQLSchemaSorterPluginCallable) {\n super();\n\n this.cb = cb;\n }\n /**\n * Method must return new sorting array. Or existing one if no changes are made.\n */\n public createSorter(params: CmsGraphQLSchemaSorterPluginCallableParams): string[] {\n return this.cb(params);\n }\n}\n\nexport const createCmsGraphQLSchemaSorterPlugin = (\n cb: CmsGraphQLSchemaSorterPluginCallable\n): CmsGraphQLSchemaSorterPlugin => {\n return new CmsGraphQLSchemaSorterPlugin(cb);\n};\n"],"mappings":";;;;;;;;AAAA;AAUO,MAAMA,4BAA4B,SAASC,eAAM,CAAC;EAI9CC,WAAW,CAACC,EAAwC,EAAE;IACzD,KAAK,EAAE;IAAC;IAER,IAAI,CAACA,EAAE,GAAGA,EAAE;EAChB;EACA;AACJ;AACA;EACWC,YAAY,CAACC,MAAkD,EAAY;IAC9E,OAAO,IAAI,CAACF,EAAE,CAACE,MAAM,CAAC;EAC1B;AACJ;AAAC;AAAA,8BAfYL,4BAA4B,UACU,2BAA2B;AAgBvE,MAAMM,kCAAkC,GAC3CH,EAAwC,IACT;EAC/B,OAAO,IAAIH,4BAA4B,CAACG,EAAE,CAAC;AAC/C,CAAC;AAAC"}
@@ -1,30 +1,22 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createCmsGroup = exports.CmsGroupPlugin = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _plugins = require("@webiny/plugins");
13
-
14
10
  class CmsGroupPlugin extends _plugins.Plugin {
15
11
  constructor(contentModelGroup) {
16
12
  super();
17
13
  (0, _defineProperty2.default)(this, "contentModelGroup", void 0);
18
14
  this.contentModelGroup = contentModelGroup;
19
15
  }
20
-
21
16
  }
22
-
23
17
  exports.CmsGroupPlugin = CmsGroupPlugin;
24
18
  (0, _defineProperty2.default)(CmsGroupPlugin, "type", "cms-content-model-group");
25
-
26
19
  const createCmsGroup = group => {
27
20
  return new CmsGroupPlugin(group);
28
21
  };
29
-
30
22
  exports.createCmsGroup = createCmsGroup;
@@ -1 +1 @@
1
- {"version":3,"names":["CmsGroupPlugin","Plugin","constructor","contentModelGroup","createCmsGroup","group"],"sources":["CmsGroupPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsGroup as BaseCmsGroup } from \"~/types\";\n\ninterface CmsGroup extends Omit<BaseCmsGroup, \"locale\" | \"tenant\" | \"webinyVersion\"> {\n tenant?: string;\n locale?: string;\n}\nexport class CmsGroupPlugin extends Plugin {\n public static override readonly type: string = \"cms-content-model-group\";\n public readonly contentModelGroup: CmsGroup;\n\n constructor(contentModelGroup: CmsGroup) {\n super();\n this.contentModelGroup = contentModelGroup;\n }\n}\n\nexport const createCmsGroup = (group: CmsGroup): CmsGroupPlugin => {\n return new CmsGroupPlugin(group);\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAOO,MAAMA,cAAN,SAA6BC,eAA7B,CAAoC;EAIvCC,WAAW,CAACC,iBAAD,EAA8B;IACrC;IADqC;IAErC,KAAKA,iBAAL,GAAyBA,iBAAzB;EACH;;AAPsC;;;8BAA9BH,c,UACsC,yB;;AAS5C,MAAMI,cAAc,GAAIC,KAAD,IAAqC;EAC/D,OAAO,IAAIL,cAAJ,CAAmBK,KAAnB,CAAP;AACH,CAFM"}
1
+ {"version":3,"names":["CmsGroupPlugin","Plugin","constructor","contentModelGroup","createCmsGroup","group"],"sources":["CmsGroupPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsGroup as BaseCmsGroup } from \"~/types\";\n\ninterface CmsGroup extends Omit<BaseCmsGroup, \"locale\" | \"tenant\" | \"webinyVersion\"> {\n tenant?: string;\n locale?: string;\n}\nexport class CmsGroupPlugin extends Plugin {\n public static override readonly type: string = \"cms-content-model-group\";\n public readonly contentModelGroup: CmsGroup;\n\n constructor(contentModelGroup: CmsGroup) {\n super();\n this.contentModelGroup = contentModelGroup;\n }\n}\n\nexport const createCmsGroup = (group: CmsGroup): CmsGroupPlugin => {\n return new CmsGroupPlugin(group);\n};\n"],"mappings":";;;;;;;;AAAA;AAOO,MAAMA,cAAc,SAASC,eAAM,CAAC;EAIvCC,WAAW,CAACC,iBAA2B,EAAE;IACrC,KAAK,EAAE;IAAC;IACR,IAAI,CAACA,iBAAiB,GAAGA,iBAAiB;EAC9C;AACJ;AAAC;AAAA,8BARYH,cAAc,UACwB,yBAAyB;AASrE,MAAMI,cAAc,GAAIC,KAAe,IAAqB;EAC/D,OAAO,IAAIL,cAAc,CAACK,KAAK,CAAC;AACpC,CAAC;AAAC"}
@@ -1,8 +1,8 @@
1
1
  import { Plugin } from "@webiny/plugins";
2
2
  import { CmsEntryValues, CmsModelFieldWithParent } from "../types";
3
3
  import { ConverterCollection } from "../utils/converters/ConverterCollection";
4
- export interface ConvertParams {
5
- field: CmsModelFieldWithParent;
4
+ export interface ConvertParams<F = CmsModelFieldWithParent> {
5
+ field: F;
6
6
  value: any;
7
7
  converterCollection: ConverterCollection;
8
8
  }
@@ -1,17 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.CmsModelFieldConverterPlugin = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _plugins = require("@webiny/plugins");
13
-
14
10
  class CmsModelFieldConverterPlugin extends _plugins.Plugin {}
15
-
16
11
  exports.CmsModelFieldConverterPlugin = CmsModelFieldConverterPlugin;
17
12
  (0, _defineProperty2.default)(CmsModelFieldConverterPlugin, "type", "cms.field.converter");
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelFieldConverterPlugin","Plugin"],"sources":["CmsModelFieldConverterPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\nexport interface ConvertParams {\n field: CmsModelFieldWithParent;\n value: any;\n converterCollection: ConverterCollection;\n}\n\nexport abstract class CmsModelFieldConverterPlugin extends Plugin {\n public static override type = \"cms.field.converter\";\n\n public abstract getFieldType(): string;\n\n public abstract convertToStorage(params: ConvertParams): CmsEntryValues;\n public abstract convertFromStorage(params: ConvertParams): CmsEntryValues;\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAUO,MAAeA,4BAAf,SAAoDC,eAApD,CAA2D;;;8BAA5CD,4B,UACY,qB"}
1
+ {"version":3,"names":["CmsModelFieldConverterPlugin","Plugin"],"sources":["CmsModelFieldConverterPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { CmsEntryValues, CmsModelFieldWithParent } from \"~/types\";\nimport { ConverterCollection } from \"~/utils/converters/ConverterCollection\";\n\nexport interface ConvertParams<F = CmsModelFieldWithParent> {\n field: F;\n value: any;\n converterCollection: ConverterCollection;\n}\n\nexport abstract class CmsModelFieldConverterPlugin extends Plugin {\n public static override type = \"cms.field.converter\";\n\n public abstract getFieldType(): string;\n\n public abstract convertToStorage(params: ConvertParams): CmsEntryValues;\n public abstract convertFromStorage(params: ConvertParams): CmsEntryValues;\n}\n"],"mappings":";;;;;;;;AAAA;AAUO,MAAeA,4BAA4B,SAASC,eAAM,CAAC;AAOjE;AAAA,8BAPqBD,4BAA4B,UAChB,qBAAqB"}
@@ -20,22 +20,44 @@ interface CmsModelFieldInput extends Omit<CmsModelFieldBase, "storageId" | "sett
20
20
  */
21
21
  settings?: CmsModelFieldSettings;
22
22
  }
23
- interface CmsModelInput extends Omit<CmsModelBase, "locale" | "tenant" | "webinyVersion" | "fields"> {
23
+ export interface CmsApiModel extends Omit<CmsModel, "isPrivate" | "fields" | "singularApiName" | "pluralApiName"> {
24
+ isPrivate?: never;
25
+ noValidate?: never;
26
+ singularApiName?: string;
27
+ pluralApiName?: string;
24
28
  fields: CmsModelFieldInput[];
25
- locale?: string;
26
- tenant?: string;
27
29
  }
30
+ export interface CmsApiModelFull extends Omit<CmsApiModel, "fields" | "noValidate"> {
31
+ noValidate: true;
32
+ fields: CmsModelFieldBase[];
33
+ }
34
+ interface CmsPrivateModel extends Omit<CmsModel, "isPrivate" | "singularApiName" | "pluralApiName" | "fields"> {
35
+ noValidate?: never;
36
+ singularApiName?: never;
37
+ pluralApiName?: never;
38
+ isPrivate: true;
39
+ fields: CmsModelFieldInput[];
40
+ }
41
+ export interface CmsPrivateModelFull extends Omit<CmsPrivateModel, "fields" | "noValidate"> {
42
+ fields: CmsModelFieldBase[];
43
+ noValidate: true;
44
+ }
45
+ export declare type CmsModelInput = CmsApiModel | CmsPrivateModel | CmsApiModelFull | CmsPrivateModelFull;
28
46
  interface CmsModel extends Omit<CmsModelBase, "locale" | "tenant" | "webinyVersion"> {
29
47
  locale?: string;
30
48
  tenant?: string;
31
49
  }
50
+ interface CmsModelPluginOptions {
51
+ validateLayout?: boolean;
52
+ }
32
53
  export declare class CmsModelPlugin extends Plugin {
33
54
  static readonly type: string;
34
55
  readonly contentModel: CmsModel;
35
- constructor(contentModel: CmsModelInput);
56
+ private readonly options;
57
+ constructor(contentModel: CmsModelInput, options?: CmsModelPluginOptions);
36
58
  private buildModel;
37
59
  private buildFields;
38
60
  private validateLayout;
39
61
  }
40
- export declare const createCmsModel: (model: CmsModelInput) => CmsModelPlugin;
62
+ export declare const createCmsModel: (model: CmsModelInput, options?: CmsModelPluginOptions) => CmsModelPlugin;
41
63
  export {};
@@ -1,56 +1,68 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.createCmsModel = exports.CmsModelPlugin = void 0;
9
-
8
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _plugins = require("@webiny/plugins");
13
-
14
10
  var _error = _interopRequireDefault(require("@webiny/error"));
15
-
16
- var _createFieldStorageId = require("../crud/contentModel/createFieldStorageId");
17
-
18
11
  var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
19
-
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
-
12
+ var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
13
+ var _pluralize = _interopRequireDefault(require("pluralize"));
14
+ var _plugins = require("@webiny/plugins");
15
+ var _createFieldStorageId = require("../crud/contentModel/createFieldStorageId");
16
+ const createApiName = name => {
17
+ return (0, _upperFirst.default)((0, _camelCase.default)(name));
18
+ };
19
+ const createPluralApiName = name => {
20
+ return (0, _pluralize.default)(createApiName(name));
21
+ };
24
22
  class CmsModelPlugin extends _plugins.Plugin {
25
- constructor(contentModel) {
23
+ constructor(contentModel, options) {
26
24
  super();
27
25
  (0, _defineProperty2.default)(this, "contentModel", void 0);
26
+ (0, _defineProperty2.default)(this, "options", void 0);
27
+ this.options = options || {};
28
28
  this.contentModel = this.buildModel(contentModel);
29
29
  }
30
-
31
30
  buildModel(input) {
32
- const model = _objectSpread(_objectSpread({}, input), {}, {
31
+ const isPrivate = input.isPrivate || false;
32
+ const singularApiName = input.singularApiName ? createApiName(input.singularApiName) : createApiName(input.name);
33
+ const pluralApiName = input.pluralApiName ? createApiName(input.pluralApiName) : createPluralApiName(input.name);
34
+ if (input.noValidate) {
35
+ /**
36
+ * We can safely ignore this error, because we are sure noValidate is not a model field.
37
+ */
38
+ // @ts-ignore
39
+ delete input["noValidate"];
40
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
41
+ isPrivate,
42
+ singularApiName,
43
+ pluralApiName
44
+ });
45
+ }
46
+ const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
47
+ isPrivate,
48
+ singularApiName,
49
+ pluralApiName,
33
50
  fields: this.buildFields(input, input.fields)
34
51
  });
35
-
36
52
  this.validateLayout(model);
37
53
  return model;
38
54
  }
39
-
40
55
  buildFields(model, inputFields) {
41
56
  if (inputFields.length === 0) {
42
57
  throw new _error.default(`Missing fields for the defined model "${model.modelId}".`, "MISSING_FIELDS", {
43
58
  model
44
59
  });
45
60
  }
46
-
47
61
  const fields = [];
48
62
  const storageIdList = [];
49
63
  const fieldIdList = [];
50
-
51
64
  for (const input of inputFields) {
52
65
  var _settings;
53
-
54
66
  /**
55
67
  * Field must contain an fieldId. It is required in the graphql, but lets check it just in case
56
68
  */
@@ -60,12 +72,10 @@ class CmsModelPlugin extends _plugins.Plugin {
60
72
  field: input
61
73
  });
62
74
  }
63
-
64
75
  const fieldId = (0, _camelCase.default)(input.fieldId);
65
76
  /**
66
77
  * FieldID must be in correct pattern.
67
78
  */
68
-
69
79
  if (fieldId.match(/^[0-9]/) !== null) {
70
80
  throw new _error.default(`Field's "fieldId" does not match correct pattern in the content model "${model.modelId}" - cannot start with a number.`, "FIELD_FIELD_ID_ERROR", {
71
81
  model,
@@ -75,8 +85,6 @@ class CmsModelPlugin extends _plugins.Plugin {
75
85
  /**
76
86
  * FieldID also must be camelCased.
77
87
  */
78
-
79
-
80
88
  if (fieldId !== input.fieldId) {
81
89
  throw new _error.default(`Field's "fieldId" must be a camel cased string in the content model "${model.modelId}".`, "FIELD_FIELD_ID_ERROR", {
82
90
  model,
@@ -86,20 +94,16 @@ class CmsModelPlugin extends _plugins.Plugin {
86
94
  /**
87
95
  * ... and fieldId must be unique.
88
96
  */
89
-
90
-
91
97
  if (fieldIdList.includes(fieldId) === true) {
92
98
  throw new _error.default(`Field's "fieldId" is not unique in the content model "${model.modelId}".`, "FIELD_ID_NOT_UNIQUE_ERROR", {
93
99
  model,
94
100
  field: input
95
101
  });
96
102
  }
97
-
98
103
  let storageId = input.storageId ? (0, _camelCase.default)(input.storageId) : null;
99
104
  /**
100
105
  * If defined, storageId MUST be camel cased string - for backward compatibility.
101
106
  */
102
-
103
107
  if (storageId && (storageId.match(/^([a-zA-Z-0-9]+)$/) === null || storageId !== input.storageId)) {
104
108
  throw new _error.default(`Field's "storageId" of the field with "fieldId" ${input.fieldId} is not camel cased string in the content model "${model.modelId}".`, "STORAGE_ID_NOT_CAMEL_CASED_ERROR", {
105
109
  model,
@@ -109,58 +113,54 @@ class CmsModelPlugin extends _plugins.Plugin {
109
113
  } else if (!storageId) {
110
114
  storageId = (0, _createFieldStorageId.createFieldStorageId)(input);
111
115
  }
116
+
112
117
  /**
113
118
  * Fields storageId must be unique.
114
119
  */
115
-
116
-
117
120
  if (storageIdList.includes(storageId) === true) {
118
121
  throw new _error.default(`Field's "storageId" is not unique in the content model "${model.modelId}".`, "STORAGE_ID_ERROR", {
119
122
  model,
120
123
  field: input
121
124
  });
122
125
  }
126
+
123
127
  /**
124
128
  * We can safely ignore error because we are going through the fields and making sure each has storageId.
125
129
  */
126
130
  // @ts-ignore
127
-
128
-
129
131
  let settings = input.settings;
130
132
  const childFields = ((_settings = settings) === null || _settings === void 0 ? void 0 : _settings.fields) || [];
131
-
132
133
  if (input.type === "object" && childFields.length > 0) {
133
- settings = _objectSpread(_objectSpread({}, settings || {}), {}, {
134
+ settings = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, settings || {}), {}, {
134
135
  fields: this.buildFields(model, childFields)
135
136
  });
136
137
  }
137
-
138
- const field = _objectSpread(_objectSpread({}, input), {}, {
138
+ const field = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
139
139
  settings,
140
140
  storageId
141
141
  });
142
142
  /**
143
143
  * Add all relevant data to arrays.
144
144
  */
145
-
146
-
147
145
  fields.push(field);
148
146
  storageIdList.push(field.storageId);
149
147
  fieldIdList.push(field.fieldId);
150
148
  }
151
-
152
149
  return fields;
153
150
  }
154
-
155
151
  validateLayout(model) {
152
+ /**
153
+ * Only skip validation if option.validateLayout was set as false, explicitly.
154
+ */
155
+ if (this.options.validateLayout === false) {
156
+ return;
157
+ }
156
158
  for (const field of model.fields) {
157
159
  let total = 0;
158
-
159
160
  for (const row of model.layout) {
160
161
  const count = row.filter(cell => cell === field.id).length;
161
162
  total = total + count;
162
163
  }
163
-
164
164
  if (total === 1) {
165
165
  continue;
166
166
  } else if (total > 1) {
@@ -169,21 +169,16 @@ class CmsModelPlugin extends _plugins.Plugin {
169
169
  field
170
170
  });
171
171
  }
172
-
173
172
  throw new _error.default(`Missing field "${field.id}" in layout.`, "MISSING_FIELD_IN_LAYOUT", {
174
173
  model,
175
174
  field
176
175
  });
177
176
  }
178
177
  }
179
-
180
178
  }
181
-
182
179
  exports.CmsModelPlugin = CmsModelPlugin;
183
180
  (0, _defineProperty2.default)(CmsModelPlugin, "type", "cms-content-model");
184
-
185
- const createCmsModel = model => {
186
- return new CmsModelPlugin(model);
181
+ const createCmsModel = (model, options) => {
182
+ return new CmsModelPlugin(model, options);
187
183
  };
188
-
189
184
  exports.createCmsModel = createCmsModel;
@@ -1 +1 @@
1
- {"version":3,"names":["CmsModelPlugin","Plugin","constructor","contentModel","buildModel","input","model","fields","buildFields","validateLayout","inputFields","length","WebinyError","modelId","storageIdList","fieldIdList","fieldId","trim","field","lodashCamelCase","match","includes","storageId","createFieldStorageId","settings","childFields","type","push","total","row","layout","count","filter","cell","id","createCmsModel"],"sources":["CmsModelPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport {\n CmsModel as CmsModelBase,\n CmsModelField as CmsModelFieldBase,\n CmsModelFieldSettings as BaseCmsModelFieldSettings\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { createFieldStorageId } from \"~/crud/contentModel/createFieldStorageId\";\nimport lodashCamelCase from \"lodash/camelCase\";\n\ninterface CmsModelFieldSettings extends Omit<BaseCmsModelFieldSettings, \"fields\"> {\n /**\n * Object field has child fields.\n */\n fields?: CmsModelFieldInput[];\n}\n\ninterface CmsModelFieldInput extends Omit<CmsModelFieldBase, \"storageId\" | \"settings\"> {\n /**\n * If defined, it must be camelCased string.\n * This is for backwards compatibility - before fields had storageId.\n *\n * This should only be populated in old model fields.\n * News ones must have this empty.\n */\n storageId?: string;\n /**\n * We must have a possibility to have a nested field defined without the storageId.\n */\n settings?: CmsModelFieldSettings;\n}\n\ninterface CmsModelInput\n extends Omit<CmsModelBase, \"locale\" | \"tenant\" | \"webinyVersion\" | \"fields\"> {\n fields: CmsModelFieldInput[];\n locale?: string;\n tenant?: string;\n}\ninterface CmsModel extends Omit<CmsModelBase, \"locale\" | \"tenant\" | \"webinyVersion\"> {\n locale?: string;\n tenant?: string;\n}\n\nexport class CmsModelPlugin extends Plugin {\n public static override readonly type: string = \"cms-content-model\";\n public readonly contentModel: CmsModel;\n\n constructor(contentModel: CmsModelInput) {\n super();\n this.contentModel = this.buildModel(contentModel);\n }\n\n private buildModel(input: CmsModelInput): CmsModel {\n const model: CmsModel = {\n ...input,\n fields: this.buildFields(input, input.fields)\n };\n this.validateLayout(model);\n return model;\n }\n\n private buildFields(\n model: CmsModelInput,\n inputFields: CmsModelFieldInput[]\n ): CmsModelFieldBase[] {\n if (inputFields.length === 0) {\n throw new WebinyError(\n `Missing fields for the defined model \"${model.modelId}\".`,\n \"MISSING_FIELDS\",\n {\n model\n }\n );\n }\n const fields: CmsModelFieldBase[] = [];\n const storageIdList: string[] = [];\n const fieldIdList: string[] = [];\n for (const input of inputFields) {\n /**\n * Field must contain an fieldId. It is required in the graphql, but lets check it just in case\n */\n if (!(input.fieldId || \"\").trim()) {\n throw new WebinyError(\n `Field's \"storageId\" is not defined for the content model \"${model.modelId}\".`,\n \"FIELD_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n const fieldId = lodashCamelCase(input.fieldId);\n /**\n * FieldID must be in correct pattern.\n */\n if (fieldId.match(/^[0-9]/) !== null) {\n throw new WebinyError(\n `Field's \"fieldId\" does not match correct pattern in the content model \"${model.modelId}\" - cannot start with a number.`,\n \"FIELD_FIELD_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n /**\n * FieldID also must be camelCased.\n */\n if (fieldId !== input.fieldId) {\n throw new WebinyError(\n `Field's \"fieldId\" must be a camel cased string in the content model \"${model.modelId}\".`,\n \"FIELD_FIELD_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n /**\n * ... and fieldId must be unique.\n */\n if (fieldIdList.includes(fieldId) === true) {\n throw new WebinyError(\n `Field's \"fieldId\" is not unique in the content model \"${model.modelId}\".`,\n \"FIELD_ID_NOT_UNIQUE_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n\n let storageId = input.storageId ? lodashCamelCase(input.storageId) : null;\n /**\n * If defined, storageId MUST be camel cased string - for backward compatibility.\n */\n if (\n storageId &&\n (storageId.match(/^([a-zA-Z-0-9]+)$/) === null || storageId !== input.storageId)\n ) {\n throw new WebinyError(\n `Field's \"storageId\" of the field with \"fieldId\" ${input.fieldId} is not camel cased string in the content model \"${model.modelId}\".`,\n \"STORAGE_ID_NOT_CAMEL_CASED_ERROR\",\n {\n model,\n storageId,\n field: input\n }\n );\n } else if (!storageId) {\n storageId = createFieldStorageId(input);\n }\n\n /**\n * Fields storageId must be unique.\n */\n if (storageIdList.includes(storageId) === true) {\n throw new WebinyError(\n `Field's \"storageId\" is not unique in the content model \"${model.modelId}\".`,\n \"STORAGE_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n\n /**\n * We can safely ignore error because we are going through the fields and making sure each has storageId.\n */\n // @ts-ignore\n let settings: BaseCmsModelFieldSettings = input.settings;\n\n const childFields = settings?.fields || [];\n if (input.type === \"object\" && childFields.length > 0) {\n settings = {\n ...(settings || {}),\n fields: this.buildFields(model, childFields)\n };\n }\n\n const field: CmsModelFieldBase = {\n ...input,\n settings,\n storageId\n };\n /**\n * Add all relevant data to arrays.\n */\n fields.push(field);\n storageIdList.push(field.storageId);\n fieldIdList.push(field.fieldId);\n }\n return fields;\n }\n\n private validateLayout(model: CmsModel): void {\n for (const field of model.fields) {\n let total = 0;\n for (const row of model.layout) {\n const count = row.filter(cell => cell === field.id).length;\n total = total + count;\n }\n if (total === 1) {\n continue;\n } else if (total > 1) {\n throw new WebinyError(\n `Field \"${field.id}\" is in more than one layout cell.`,\n \"DUPLICATE_FIELD_IN_LAYOUT\",\n {\n model,\n field\n }\n );\n }\n throw new WebinyError(\n `Missing field \"${field.id}\" in layout.`,\n \"MISSING_FIELD_IN_LAYOUT\",\n {\n model,\n field\n }\n );\n }\n }\n}\n\nexport const createCmsModel = (model: CmsModelInput): CmsModelPlugin => {\n return new CmsModelPlugin(model);\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createApiName","name","upperFirst","camelCase","createPluralApiName","pluralize","CmsModelPlugin","Plugin","constructor","contentModel","options","buildModel","input","isPrivate","singularApiName","pluralApiName","noValidate","model","fields","buildFields","validateLayout","inputFields","length","WebinyError","modelId","storageIdList","fieldIdList","fieldId","trim","field","lodashCamelCase","match","includes","storageId","createFieldStorageId","settings","childFields","type","push","total","row","layout","count","filter","cell","id","createCmsModel"],"sources":["CmsModelPlugin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport lodashCamelCase from \"lodash/camelCase\";\nimport camelCase from \"lodash/camelCase\";\nimport upperFirst from \"lodash/upperFirst\";\nimport pluralize from \"pluralize\";\nimport { Plugin } from \"@webiny/plugins\";\nimport {\n CmsModel as CmsModelBase,\n CmsModelField as CmsModelFieldBase,\n CmsModelFieldSettings as BaseCmsModelFieldSettings\n} from \"~/types\";\nimport { createFieldStorageId } from \"~/crud/contentModel/createFieldStorageId\";\n\nconst createApiName = (name: string) => {\n return upperFirst(camelCase(name));\n};\n\nconst createPluralApiName = (name: string) => {\n return pluralize(createApiName(name));\n};\n\ninterface CmsModelFieldSettings extends Omit<BaseCmsModelFieldSettings, \"fields\"> {\n /**\n * Object field has child fields.\n */\n fields?: CmsModelFieldInput[];\n}\n\ninterface CmsModelFieldInput extends Omit<CmsModelFieldBase, \"storageId\" | \"settings\"> {\n /**\n * If defined, it must be camelCased string.\n * This is for backwards compatibility - before fields had storageId.\n *\n * This should only be populated in old model fields.\n * News ones must have this empty.\n */\n storageId?: string;\n /**\n * We must have a possibility to have a nested field defined without the storageId.\n */\n settings?: CmsModelFieldSettings;\n}\n\nexport interface CmsApiModel\n extends Omit<CmsModel, \"isPrivate\" | \"fields\" | \"singularApiName\" | \"pluralApiName\"> {\n isPrivate?: never;\n noValidate?: never;\n singularApiName?: string;\n pluralApiName?: string;\n fields: CmsModelFieldInput[];\n}\n\nexport interface CmsApiModelFull extends Omit<CmsApiModel, \"fields\" | \"noValidate\"> {\n noValidate: true;\n fields: CmsModelFieldBase[];\n}\n\ninterface CmsPrivateModel\n extends Omit<CmsModel, \"isPrivate\" | \"singularApiName\" | \"pluralApiName\" | \"fields\"> {\n noValidate?: never;\n singularApiName?: never;\n pluralApiName?: never;\n isPrivate: true;\n fields: CmsModelFieldInput[];\n}\n\nexport interface CmsPrivateModelFull extends Omit<CmsPrivateModel, \"fields\" | \"noValidate\"> {\n fields: CmsModelFieldBase[];\n noValidate: true;\n}\n\nexport type CmsModelInput = CmsApiModel | CmsPrivateModel | CmsApiModelFull | CmsPrivateModelFull;\n\ninterface CmsModel extends Omit<CmsModelBase, \"locale\" | \"tenant\" | \"webinyVersion\"> {\n locale?: string;\n tenant?: string;\n}\n\ninterface CmsModelPluginOptions {\n validateLayout?: boolean;\n}\n\nexport class CmsModelPlugin extends Plugin {\n public static override readonly type: string = \"cms-content-model\";\n public readonly contentModel: CmsModel;\n\n private readonly options: CmsModelPluginOptions;\n\n constructor(contentModel: CmsModelInput, options?: CmsModelPluginOptions) {\n super();\n this.options = options || {};\n this.contentModel = this.buildModel(contentModel);\n }\n\n private buildModel(input: CmsModelInput): CmsModel {\n const isPrivate = input.isPrivate || false;\n const singularApiName = input.singularApiName\n ? createApiName(input.singularApiName)\n : createApiName(input.name);\n const pluralApiName = input.pluralApiName\n ? createApiName(input.pluralApiName)\n : createPluralApiName(input.name);\n\n if (input.noValidate) {\n /**\n * We can safely ignore this error, because we are sure noValidate is not a model field.\n */\n // @ts-ignore\n delete input[\"noValidate\"];\n return {\n ...input,\n isPrivate,\n singularApiName,\n pluralApiName\n };\n }\n\n const model: CmsModel = {\n ...input,\n isPrivate,\n singularApiName,\n pluralApiName,\n fields: this.buildFields(input, input.fields)\n };\n this.validateLayout(model);\n return model;\n }\n\n private buildFields(\n model: CmsModelInput,\n inputFields: CmsModelFieldInput[]\n ): CmsModelFieldBase[] {\n if (inputFields.length === 0) {\n throw new WebinyError(\n `Missing fields for the defined model \"${model.modelId}\".`,\n \"MISSING_FIELDS\",\n {\n model\n }\n );\n }\n const fields: CmsModelFieldBase[] = [];\n const storageIdList: string[] = [];\n const fieldIdList: string[] = [];\n for (const input of inputFields) {\n /**\n * Field must contain an fieldId. It is required in the graphql, but lets check it just in case\n */\n if (!(input.fieldId || \"\").trim()) {\n throw new WebinyError(\n `Field's \"storageId\" is not defined for the content model \"${model.modelId}\".`,\n \"FIELD_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n const fieldId = lodashCamelCase(input.fieldId);\n /**\n * FieldID must be in correct pattern.\n */\n if (fieldId.match(/^[0-9]/) !== null) {\n throw new WebinyError(\n `Field's \"fieldId\" does not match correct pattern in the content model \"${model.modelId}\" - cannot start with a number.`,\n \"FIELD_FIELD_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n /**\n * FieldID also must be camelCased.\n */\n if (fieldId !== input.fieldId) {\n throw new WebinyError(\n `Field's \"fieldId\" must be a camel cased string in the content model \"${model.modelId}\".`,\n \"FIELD_FIELD_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n /**\n * ... and fieldId must be unique.\n */\n if (fieldIdList.includes(fieldId) === true) {\n throw new WebinyError(\n `Field's \"fieldId\" is not unique in the content model \"${model.modelId}\".`,\n \"FIELD_ID_NOT_UNIQUE_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n\n let storageId = input.storageId ? lodashCamelCase(input.storageId) : null;\n /**\n * If defined, storageId MUST be camel cased string - for backward compatibility.\n */\n if (\n storageId &&\n (storageId.match(/^([a-zA-Z-0-9]+)$/) === null || storageId !== input.storageId)\n ) {\n throw new WebinyError(\n `Field's \"storageId\" of the field with \"fieldId\" ${input.fieldId} is not camel cased string in the content model \"${model.modelId}\".`,\n \"STORAGE_ID_NOT_CAMEL_CASED_ERROR\",\n {\n model,\n storageId,\n field: input\n }\n );\n } else if (!storageId) {\n storageId = createFieldStorageId(input);\n }\n\n /**\n * Fields storageId must be unique.\n */\n if (storageIdList.includes(storageId) === true) {\n throw new WebinyError(\n `Field's \"storageId\" is not unique in the content model \"${model.modelId}\".`,\n \"STORAGE_ID_ERROR\",\n {\n model,\n field: input\n }\n );\n }\n\n /**\n * We can safely ignore error because we are going through the fields and making sure each has storageId.\n */\n // @ts-ignore\n let settings: BaseCmsModelFieldSettings = input.settings;\n\n const childFields = settings?.fields || [];\n if (input.type === \"object\" && childFields.length > 0) {\n settings = {\n ...(settings || {}),\n fields: this.buildFields(model, childFields)\n };\n }\n\n const field: CmsModelFieldBase = {\n ...input,\n settings,\n storageId\n };\n /**\n * Add all relevant data to arrays.\n */\n fields.push(field);\n storageIdList.push(field.storageId);\n fieldIdList.push(field.fieldId);\n }\n return fields;\n }\n\n private validateLayout(model: CmsModel): void {\n /**\n * Only skip validation if option.validateLayout was set as false, explicitly.\n */\n if (this.options.validateLayout === false) {\n return;\n }\n for (const field of model.fields) {\n let total = 0;\n for (const row of model.layout) {\n const count = row.filter(cell => cell === field.id).length;\n total = total + count;\n }\n if (total === 1) {\n continue;\n } else if (total > 1) {\n throw new WebinyError(\n `Field \"${field.id}\" is in more than one layout cell.`,\n \"DUPLICATE_FIELD_IN_LAYOUT\",\n {\n model,\n field\n }\n );\n }\n throw new WebinyError(\n `Missing field \"${field.id}\" in layout.`,\n \"MISSING_FIELD_IN_LAYOUT\",\n {\n model,\n field\n }\n );\n }\n }\n}\n\nexport const createCmsModel = (\n model: CmsModelInput,\n options?: CmsModelPluginOptions\n): CmsModelPlugin => {\n return new CmsModelPlugin(model, options);\n};\n"],"mappings":"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"}
@@ -1,28 +1,21 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.CmsParametersPlugin = void 0;
9
-
10
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
9
  var _plugins = require("@webiny/plugins");
13
-
14
10
  class CmsParametersPlugin extends _plugins.Plugin {
15
11
  constructor(callable) {
16
12
  super();
17
13
  (0, _defineProperty2.default)(this, "callable", void 0);
18
14
  this.callable = callable;
19
15
  }
20
-
21
16
  async getParameters(context) {
22
17
  return this.callable(context);
23
18
  }
24
-
25
19
  }
26
-
27
20
  exports.CmsParametersPlugin = CmsParametersPlugin;
28
21
  (0, _defineProperty2.default)(CmsParametersPlugin, "type", "cms-parameters-plugin");
@@ -1 +1 @@
1
- {"version":3,"names":["CmsParametersPlugin","Plugin","constructor","callable","getParameters","context"],"sources":["CmsParametersPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\n\n/**\n * Type can be null because it might be that Headless CMS context is loaded on a different Lambda where there is no GraphQL Schema generated.\n */\nexport type CmsParametersPluginResponseType = ApiEndpoint | null;\nexport type CmsParametersPluginResponseLocale = string;\n\nexport interface CmsParametersPluginResponse {\n type: CmsParametersPluginResponseType;\n locale: CmsParametersPluginResponseLocale;\n}\n\nexport interface CmsParametersPluginCallable {\n (context: CmsContext): Promise<CmsParametersPluginResponse | null>;\n}\n\nexport class CmsParametersPlugin extends Plugin {\n public static override readonly type: string = \"cms-parameters-plugin\";\n\n private readonly callable: CmsParametersPluginCallable;\n\n public constructor(callable: CmsParametersPluginCallable) {\n super();\n\n this.callable = callable;\n }\n\n public async getParameters(context: CmsContext): Promise<CmsParametersPluginResponse | null> {\n return this.callable(context);\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;;AAkBO,MAAMA,mBAAN,SAAkCC,eAAlC,CAAyC;EAKrCC,WAAW,CAACC,QAAD,EAAwC;IACtD;IADsD;IAGtD,KAAKA,QAAL,GAAgBA,QAAhB;EACH;;EAEyB,MAAbC,aAAa,CAACC,OAAD,EAAmE;IACzF,OAAO,KAAKF,QAAL,CAAcE,OAAd,CAAP;EACH;;AAb2C;;;8BAAnCL,mB,UACsC,uB"}
1
+ {"version":3,"names":["CmsParametersPlugin","Plugin","constructor","callable","getParameters","context"],"sources":["CmsParametersPlugin.ts"],"sourcesContent":["import { Plugin } from \"@webiny/plugins\";\nimport { ApiEndpoint, CmsContext } from \"~/types\";\n\n/**\n * Type can be null because it might be that Headless CMS context is loaded on a different Lambda where there is no GraphQL Schema generated.\n */\nexport type CmsParametersPluginResponseType = ApiEndpoint | null;\nexport type CmsParametersPluginResponseLocale = string;\n\nexport interface CmsParametersPluginResponse {\n type: CmsParametersPluginResponseType;\n locale: CmsParametersPluginResponseLocale;\n}\n\nexport interface CmsParametersPluginCallable {\n (context: CmsContext): Promise<CmsParametersPluginResponse | null>;\n}\n\nexport class CmsParametersPlugin extends Plugin {\n public static override readonly type: string = \"cms-parameters-plugin\";\n\n private readonly callable: CmsParametersPluginCallable;\n\n public constructor(callable: CmsParametersPluginCallable) {\n super();\n\n this.callable = callable;\n }\n\n public async getParameters(context: CmsContext): Promise<CmsParametersPluginResponse | null> {\n return this.callable(context);\n }\n}\n"],"mappings":";;;;;;;;AAAA;AAkBO,MAAMA,mBAAmB,SAASC,eAAM,CAAC;EAKrCC,WAAW,CAACC,QAAqC,EAAE;IACtD,KAAK,EAAE;IAAC;IAER,IAAI,CAACA,QAAQ,GAAGA,QAAQ;EAC5B;EAEA,MAAaC,aAAa,CAACC,OAAmB,EAA+C;IACzF,OAAO,IAAI,CAACF,QAAQ,CAACE,OAAO,CAAC;EACjC;AACJ;AAAC;AAAA,8BAdYL,mBAAmB,UACmB,uBAAuB"}
@@ -0,0 +1,23 @@
1
+ import { Plugin } from "@webiny/plugins";
2
+ import { CmsModel, StorageOperationsCmsModel } from "../types";
3
+ export interface StorageOperationsCmsModelPluginCallable {
4
+ (model: CmsModel): StorageOperationsCmsModel;
5
+ }
6
+ /**
7
+ * This plugin should be initialized only once and hence the name.
8
+ */
9
+ export declare class StorageOperationsCmsModelPlugin extends Plugin {
10
+ static readonly type: string;
11
+ name: string;
12
+ private readonly models;
13
+ private readonly cb;
14
+ constructor(cb: StorageOperationsCmsModelPluginCallable);
15
+ getModel(input: CmsModel): StorageOperationsCmsModel;
16
+ /**
17
+ * We can cache the converters by having a cache key that is a combination of model ID and savedOn.
18
+ * The models created via the code will not have savedOn, so they will be unknown - and that is ok as they cannot change in the middle of the call.
19
+ *
20
+ * The models created via the CRUD operations might get changed in the middle of the call, so we need to re-create the SO model.
21
+ */
22
+ private createCacheKey;
23
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.StorageOperationsCmsModelPlugin = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _plugins = require("@webiny/plugins");
10
+ /**
11
+ * This plugin should be initialized only once and hence the name.
12
+ */
13
+ class StorageOperationsCmsModelPlugin extends _plugins.Plugin {
14
+ constructor(cb) {
15
+ super();
16
+ (0, _defineProperty2.default)(this, "name", "cms.storageOperations.model");
17
+ (0, _defineProperty2.default)(this, "models", {});
18
+ (0, _defineProperty2.default)(this, "cb", void 0);
19
+ this.cb = cb;
20
+ }
21
+ getModel(input) {
22
+ const cacheKey = this.createCacheKey(input);
23
+ if (this.models[cacheKey]) {
24
+ return this.models[cacheKey];
25
+ }
26
+ const model = this.cb(input);
27
+ this.models[cacheKey] = model;
28
+ return model;
29
+ }
30
+
31
+ /**
32
+ * We can cache the converters by having a cache key that is a combination of model ID and savedOn.
33
+ * The models created via the code will not have savedOn, so they will be unknown - and that is ok as they cannot change in the middle of the call.
34
+ *
35
+ * The models created via the CRUD operations might get changed in the middle of the call, so we need to re-create the SO model.
36
+ */
37
+ createCacheKey(model) {
38
+ return [model.tenant, model.locale, model.modelId, model.savedOn || "unknown"].join("#");
39
+ }
40
+ }
41
+ exports.StorageOperationsCmsModelPlugin = StorageOperationsCmsModelPlugin;
42
+ (0, _defineProperty2.default)(StorageOperationsCmsModelPlugin, "type", "cms.storageOperations.model");