@webiny/api-headless-cms 0.0.0-unstable.97a151f74d → 0.0.0-unstable.99666aeb00

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 (457) hide show
  1. package/constants.d.ts +1 -0
  2. package/constants.js +8 -0
  3. package/constants.js.map +1 -0
  4. package/context.d.ts +5 -2
  5. package/context.js +94 -24
  6. package/context.js.map +1 -1
  7. package/crud/contentEntry/afterDelete.js +0 -5
  8. package/crud/contentEntry/afterDelete.js.map +1 -1
  9. package/crud/contentEntry/beforeCreate.js +0 -3
  10. package/crud/contentEntry/beforeCreate.js.map +1 -1
  11. package/crud/contentEntry/beforeUpdate.js +0 -3
  12. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  13. package/crud/contentEntry/entryDataValidation.js +1 -40
  14. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  15. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  16. package/crud/contentEntry/markLockedFields.js +15 -28
  17. package/crud/contentEntry/markLockedFields.js.map +1 -1
  18. package/crud/contentEntry/referenceFieldsMapping.js +39 -66
  19. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  20. package/crud/contentEntry/searchableFields.js +1 -12
  21. package/crud/contentEntry/searchableFields.js.map +1 -1
  22. package/crud/contentEntry.crud.d.ts +12 -5
  23. package/crud/contentEntry.crud.js +1166 -917
  24. package/crud/contentEntry.crud.js.map +1 -1
  25. package/crud/contentModel/afterCreate.js +0 -2
  26. package/crud/contentModel/afterCreate.js.map +1 -1
  27. package/crud/contentModel/afterCreateFrom.js +0 -2
  28. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  29. package/crud/contentModel/afterDelete.js +0 -2
  30. package/crud/contentModel/afterDelete.js.map +1 -1
  31. package/crud/contentModel/afterUpdate.js +0 -2
  32. package/crud/contentModel/afterUpdate.js.map +1 -1
  33. package/crud/contentModel/beforeCreate.d.ts +2 -3
  34. package/crud/contentModel/beforeCreate.js +43 -109
  35. package/crud/contentModel/beforeCreate.js.map +1 -1
  36. package/crud/contentModel/beforeDelete.d.ts +1 -1
  37. package/crud/contentModel/beforeDelete.js +1 -15
  38. package/crud/contentModel/beforeDelete.js.map +1 -1
  39. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  40. package/crud/contentModel/beforeUpdate.js +33 -10
  41. package/crud/contentModel/beforeUpdate.js.map +1 -1
  42. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  43. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  44. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  45. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  46. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  47. package/crud/contentModel/createFieldStorageId.js +0 -3
  48. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  49. package/crud/contentModel/defaultFields.d.ts +5 -0
  50. package/crud/contentModel/defaultFields.js +58 -0
  51. package/crud/contentModel/defaultFields.js.map +1 -0
  52. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  53. package/crud/contentModel/fields/descriptionField.js +42 -0
  54. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  55. package/crud/contentModel/fields/imageField.d.ts +2 -0
  56. package/crud/contentModel/fields/imageField.js +46 -0
  57. package/crud/contentModel/fields/imageField.js.map +1 -0
  58. package/crud/contentModel/fields/titleField.d.ts +2 -0
  59. package/crud/contentModel/fields/titleField.js +58 -0
  60. package/crud/contentModel/fields/titleField.js.map +1 -0
  61. package/crud/contentModel/validate/endingAllowed.d.ts +6 -0
  62. package/crud/contentModel/validate/endingAllowed.js +26 -0
  63. package/crud/contentModel/validate/endingAllowed.js.map +1 -0
  64. package/crud/contentModel/validate/isModelEndingAllowed.d.ts +6 -0
  65. package/crud/contentModel/validate/isModelEndingAllowed.js +24 -0
  66. package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -0
  67. package/crud/contentModel/validate/modelId.d.ts +11 -0
  68. package/crud/contentModel/validate/modelId.js +36 -0
  69. package/crud/contentModel/validate/modelId.js.map +1 -0
  70. package/crud/contentModel/validate/pluralApiName.d.ts +7 -0
  71. package/crud/contentModel/validate/pluralApiName.js +24 -0
  72. package/crud/contentModel/validate/pluralApiName.js.map +1 -0
  73. package/crud/contentModel/validate/singularApiName.d.ts +7 -0
  74. package/crud/contentModel/validate/singularApiName.js +24 -0
  75. package/crud/contentModel/validate/singularApiName.js.map +1 -0
  76. package/crud/contentModel/validateLayout.js +0 -8
  77. package/crud/contentModel/validateLayout.js.map +1 -1
  78. package/crud/contentModel/validateModel.d.ts +4 -4
  79. package/crud/contentModel/validateModel.js +6 -11
  80. package/crud/contentModel/validateModel.js.map +1 -1
  81. package/crud/contentModel/validateModelFields.d.ts +4 -4
  82. package/crud/contentModel/validateModelFields.js +120 -145
  83. package/crud/contentModel/validateModelFields.js.map +1 -1
  84. package/crud/contentModel/validation.d.ts +551 -0
  85. package/crud/contentModel/validation.js +145 -0
  86. package/crud/contentModel/validation.js.map +1 -0
  87. package/crud/contentModel.crud.d.ts +2 -0
  88. package/crud/contentModel.crud.js +380 -381
  89. package/crud/contentModel.crud.js.map +1 -1
  90. package/crud/contentModelGroup/beforeCreate.js +0 -12
  91. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  92. package/crud/contentModelGroup/beforeDelete.js +0 -8
  93. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  94. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  95. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  96. package/crud/contentModelGroup/validation.d.ts +30 -0
  97. package/crud/contentModelGroup/validation.js +34 -0
  98. package/crud/contentModelGroup/validation.js.map +1 -0
  99. package/crud/contentModelGroup.crud.d.ts +2 -0
  100. package/crud/contentModelGroup.crud.js +223 -222
  101. package/crud/contentModelGroup.crud.js.map +1 -1
  102. package/crud/settings.crud.d.ts +3 -1
  103. package/crud/settings.crud.js +7 -28
  104. package/crud/settings.crud.js.map +1 -1
  105. package/crud/system.crud.js +1 -96
  106. package/crud/system.crud.js.map +1 -1
  107. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  108. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  109. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  110. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  111. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  112. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  113. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  114. package/fieldConverters/index.d.ts +2 -1
  115. package/fieldConverters/index.js +2 -5
  116. package/fieldConverters/index.js.map +1 -1
  117. package/graphql/buildSchemaPlugins.d.ts +8 -3
  118. package/graphql/buildSchemaPlugins.js +6 -14
  119. package/graphql/buildSchemaPlugins.js.map +1 -1
  120. package/graphql/checkEndpointAccess.d.ts +2 -0
  121. package/graphql/checkEndpointAccess.js +18 -0
  122. package/graphql/checkEndpointAccess.js.map +1 -0
  123. package/graphql/createExecutableSchema.d.ts +6 -0
  124. package/graphql/createExecutableSchema.js +29 -0
  125. package/graphql/createExecutableSchema.js.map +1 -0
  126. package/graphql/createRequestBody.d.ts +2 -0
  127. package/graphql/createRequestBody.js +14 -0
  128. package/graphql/createRequestBody.js.map +1 -0
  129. package/graphql/formatErrorPayload.d.ts +1 -0
  130. package/graphql/formatErrorPayload.js +25 -0
  131. package/graphql/formatErrorPayload.js.map +1 -0
  132. package/graphql/generateSchema.d.ts +8 -0
  133. package/graphql/generateSchema.js +31 -0
  134. package/graphql/generateSchema.js.map +1 -0
  135. package/graphql/getSchema.d.ts +17 -0
  136. package/graphql/getSchema.js +102 -0
  137. package/graphql/getSchema.js.map +1 -0
  138. package/graphql/graphQLHandlerFactory.js +8 -169
  139. package/graphql/graphQLHandlerFactory.js.map +1 -1
  140. package/graphql/handleRequest.d.ts +11 -0
  141. package/graphql/handleRequest.js +81 -0
  142. package/graphql/handleRequest.js.map +1 -0
  143. package/graphql/index.d.ts +1 -3
  144. package/graphql/index.js +2 -46
  145. package/graphql/index.js.map +1 -1
  146. package/graphql/schema/baseContentSchema.d.ts +6 -2
  147. package/graphql/schema/baseContentSchema.js +10 -20
  148. package/graphql/schema/baseContentSchema.js.map +1 -1
  149. package/graphql/schema/baseSchema.d.ts +3 -0
  150. package/graphql/schema/baseSchema.js +84 -0
  151. package/graphql/schema/baseSchema.js.map +1 -0
  152. package/graphql/schema/contentEntries.d.ts +6 -2
  153. package/graphql/schema/contentEntries.js +123 -107
  154. package/graphql/schema/contentEntries.js.map +1 -1
  155. package/graphql/schema/contentModelGroups.d.ts +6 -2
  156. package/graphql/schema/contentModelGroups.js +16 -29
  157. package/graphql/schema/contentModelGroups.js.map +1 -1
  158. package/graphql/schema/contentModels.d.ts +6 -2
  159. package/graphql/schema/contentModels.js +46 -27
  160. package/graphql/schema/contentModels.js.map +1 -1
  161. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  162. package/graphql/schema/createFieldResolvers.js +19 -36
  163. package/graphql/schema/createFieldResolvers.js.map +1 -1
  164. package/graphql/schema/createFieldTypePluginRecords.d.ts +3 -0
  165. package/graphql/schema/createFieldTypePluginRecords.js +13 -0
  166. package/graphql/schema/createFieldTypePluginRecords.js.map +1 -0
  167. package/graphql/schema/createManageResolvers.d.ts +1 -1
  168. package/graphql/schema/createManageResolvers.js +47 -43
  169. package/graphql/schema/createManageResolvers.js.map +1 -1
  170. package/graphql/schema/createManageSDL.d.ts +3 -0
  171. package/graphql/schema/createManageSDL.js +96 -77
  172. package/graphql/schema/createManageSDL.js.map +1 -1
  173. package/graphql/schema/createPreviewResolvers.js +3 -17
  174. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  175. package/graphql/schema/createReadResolvers.js +8 -17
  176. package/graphql/schema/createReadResolvers.js.map +1 -1
  177. package/graphql/schema/createReadSDL.d.ts +3 -0
  178. package/graphql/schema/createReadSDL.js +47 -47
  179. package/graphql/schema/createReadSDL.js.map +1 -1
  180. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  181. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  182. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  183. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  184. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  185. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  186. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  187. package/graphql/schema/resolvers/manage/resolveDelete.d.ts +2 -1
  188. package/graphql/schema/resolvers/manage/resolveDelete.js +13 -9
  189. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  190. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.d.ts +7 -0
  191. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +20 -0
  192. package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -0
  193. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  194. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  195. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  196. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  197. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  198. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  199. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.d.ts +4 -0
  200. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +18 -0
  201. package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -0
  202. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  203. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  204. package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
  205. package/graphql/schema/resolvers/manage/resolveMove.js +30 -0
  206. package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
  207. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  208. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  209. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  210. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  211. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  212. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  213. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  214. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  215. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  216. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  217. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  218. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  219. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  220. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  221. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  222. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  223. package/graphql/schema/schemaPlugins.d.ts +8 -3
  224. package/graphql/schema/schemaPlugins.js +58 -69
  225. package/graphql/schema/schemaPlugins.js.map +1 -1
  226. package/graphql/system.d.ts +2 -5
  227. package/graphql/system.js +56 -98
  228. package/graphql/system.js.map +1 -1
  229. package/graphqlFields/boolean.js +0 -12
  230. package/graphqlFields/boolean.js.map +1 -1
  231. package/graphqlFields/datetime.js +0 -17
  232. package/graphqlFields/datetime.js.map +1 -1
  233. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +1 -1
  234. package/graphqlFields/dynamicZone/dynamicZoneField.js +79 -45
  235. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  236. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +2 -18
  237. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
  238. package/graphqlFields/dynamicZone/index.js +0 -2
  239. package/graphqlFields/dynamicZone/index.js.map +1 -1
  240. package/graphqlFields/file.js +0 -8
  241. package/graphqlFields/file.js.map +1 -1
  242. package/graphqlFields/helpers.js +0 -10
  243. package/graphqlFields/helpers.js.map +1 -1
  244. package/graphqlFields/index.js +0 -12
  245. package/graphqlFields/index.js.map +1 -1
  246. package/graphqlFields/longText.js +0 -10
  247. package/graphqlFields/longText.js.map +1 -1
  248. package/graphqlFields/number.js +1 -12
  249. package/graphqlFields/number.js.map +1 -1
  250. package/graphqlFields/object.js +48 -52
  251. package/graphqlFields/object.js.map +1 -1
  252. package/graphqlFields/ref.js +64 -66
  253. package/graphqlFields/ref.js.map +1 -1
  254. package/graphqlFields/richText.js +0 -9
  255. package/graphqlFields/richText.js.map +1 -1
  256. package/graphqlFields/text.js +2 -11
  257. package/graphqlFields/text.js.map +1 -1
  258. package/index.d.ts +5 -3
  259. package/index.js +26 -28
  260. package/index.js.map +1 -1
  261. package/modelManager/DefaultCmsModelManager.js +0 -16
  262. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  263. package/modelManager/index.js +0 -4
  264. package/modelManager/index.js.map +1 -1
  265. package/package.json +35 -41
  266. package/parameters/context.js +0 -4
  267. package/parameters/context.js.map +1 -1
  268. package/parameters/header.js +0 -11
  269. package/parameters/header.js.map +1 -1
  270. package/parameters/index.js +0 -8
  271. package/parameters/index.js.map +1 -1
  272. package/parameters/manual.js +1 -8
  273. package/parameters/manual.js.map +1 -1
  274. package/parameters/path.js +0 -11
  275. package/parameters/path.js.map +1 -1
  276. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  277. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  278. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  279. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  280. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  281. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  282. package/plugins/CmsGroupPlugin.js +0 -8
  283. package/plugins/CmsGroupPlugin.js.map +1 -1
  284. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  285. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  286. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  287. package/plugins/CmsModelPlugin.d.ts +21 -3
  288. package/plugins/CmsModelPlugin.js +30 -40
  289. package/plugins/CmsModelPlugin.js.map +1 -1
  290. package/plugins/CmsParametersPlugin.js +0 -7
  291. package/plugins/CmsParametersPlugin.js.map +1 -1
  292. package/plugins/StorageOperationsCmsModelPlugin.d.ts +23 -0
  293. package/plugins/StorageOperationsCmsModelPlugin.js +42 -0
  294. package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -0
  295. package/plugins/StorageTransformPlugin.js +0 -9
  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 +0 -19
  303. package/storage/object.js.map +1 -1
  304. package/types.d.ts +371 -96
  305. package/types.js +64 -64
  306. package/types.js.map +1 -1
  307. package/utils/converters/Converter.js +0 -13
  308. package/utils/converters/Converter.js.map +1 -1
  309. package/utils/converters/ConverterCollection.js +9 -33
  310. package/utils/converters/ConverterCollection.js.map +1 -1
  311. package/utils/converters/valueKeyStorageConverter.d.ts +1 -5
  312. package/utils/converters/valueKeyStorageConverter.js +26 -46
  313. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  314. package/utils/createTypeFromFields.d.ts +1 -0
  315. package/utils/createTypeFromFields.js +12 -21
  316. package/utils/createTypeFromFields.js.map +1 -1
  317. package/utils/createTypeName.d.ts +0 -2
  318. package/utils/createTypeName.js +2 -19
  319. package/utils/createTypeName.js.map +1 -1
  320. package/utils/entryStorage.js +17 -34
  321. package/utils/entryStorage.js.map +1 -1
  322. package/utils/filterAsync.js +0 -5
  323. package/utils/filterAsync.js.map +1 -1
  324. package/utils/getBaseFieldType.d.ts +1 -3
  325. package/utils/getBaseFieldType.js +0 -2
  326. package/utils/getBaseFieldType.js.map +1 -1
  327. package/utils/getEntryDescription.d.ts +2 -0
  328. package/utils/getEntryDescription.js +17 -0
  329. package/utils/getEntryDescription.js.map +1 -0
  330. package/utils/getEntryImage.d.ts +2 -0
  331. package/utils/getEntryImage.js +17 -0
  332. package/utils/getEntryImage.js.map +1 -0
  333. package/utils/getEntryTitle.d.ts +1 -1
  334. package/utils/getEntryTitle.js +0 -9
  335. package/utils/getEntryTitle.js.map +1 -1
  336. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  337. package/utils/getSchemaFromFieldPlugins.js +23 -19
  338. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  339. package/utils/incrementEntryIdVersion.d.ts +5 -0
  340. package/utils/incrementEntryIdVersion.js +29 -0
  341. package/utils/incrementEntryIdVersion.js.map +1 -0
  342. package/utils/permissions/EntriesPermissions.d.ts +4 -0
  343. package/utils/permissions/EntriesPermissions.js +9 -0
  344. package/utils/permissions/EntriesPermissions.js.map +1 -0
  345. package/utils/permissions/ModelGroupsPermissions.d.ts +11 -0
  346. package/utils/permissions/ModelGroupsPermissions.js +48 -0
  347. package/utils/permissions/ModelGroupsPermissions.js.map +1 -0
  348. package/utils/permissions/ModelsPermissions.d.ts +20 -0
  349. package/utils/permissions/ModelsPermissions.js +91 -0
  350. package/utils/permissions/ModelsPermissions.js.map +1 -0
  351. package/utils/permissions/SettingsPermissions.d.ts +4 -0
  352. package/utils/permissions/SettingsPermissions.js +9 -0
  353. package/utils/permissions/SettingsPermissions.js.map +1 -0
  354. package/utils/renderFields.d.ts +4 -2
  355. package/utils/renderFields.js +10 -11
  356. package/utils/renderFields.js.map +1 -1
  357. package/utils/renderGetFilterFields.d.ts +2 -2
  358. package/utils/renderGetFilterFields.js +7 -33
  359. package/utils/renderGetFilterFields.js.map +1 -1
  360. package/utils/renderInputFields.d.ts +4 -2
  361. package/utils/renderInputFields.js +17 -14
  362. package/utils/renderInputFields.js.map +1 -1
  363. package/utils/renderListFilterFields.d.ts +3 -1
  364. package/utils/renderListFilterFields.js +16 -30
  365. package/utils/renderListFilterFields.js.map +1 -1
  366. package/utils/renderSortEnum.d.ts +9 -5
  367. package/utils/renderSortEnum.js +24 -12
  368. package/utils/renderSortEnum.js.map +1 -1
  369. package/utils/toSlug.js +0 -4
  370. package/utils/toSlug.js.map +1 -1
  371. package/validators/dateGte.js +0 -7
  372. package/validators/dateGte.js.map +1 -1
  373. package/validators/dateLte.js +0 -7
  374. package/validators/dateLte.js.map +1 -1
  375. package/validators/dynamicZone.js +0 -4
  376. package/validators/dynamicZone.js.map +1 -1
  377. package/validators/gte.js +0 -8
  378. package/validators/gte.js.map +1 -1
  379. package/validators/in.js +0 -8
  380. package/validators/in.js.map +1 -1
  381. package/validators/index.js +0 -16
  382. package/validators/index.js.map +1 -1
  383. package/validators/lte.js +0 -8
  384. package/validators/lte.js.map +1 -1
  385. package/validators/maxLength.js +0 -8
  386. package/validators/maxLength.js.map +1 -1
  387. package/validators/minLength.js +0 -8
  388. package/validators/minLength.js.map +1 -1
  389. package/validators/pattern.js +0 -9
  390. package/validators/pattern.js.map +1 -1
  391. package/validators/patternPlugins/email.js +0 -2
  392. package/validators/patternPlugins/email.js.map +1 -1
  393. package/validators/patternPlugins/index.js +0 -8
  394. package/validators/patternPlugins/index.js.map +1 -1
  395. package/validators/patternPlugins/lowerCase.js +0 -2
  396. package/validators/patternPlugins/lowerCase.js.map +1 -1
  397. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  398. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  399. package/validators/patternPlugins/upperCase.js +0 -2
  400. package/validators/patternPlugins/upperCase.js.map +1 -1
  401. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  402. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  403. package/validators/patternPlugins/url.js +0 -2
  404. package/validators/patternPlugins/url.js.map +1 -1
  405. package/validators/required.js +0 -5
  406. package/validators/required.js.map +1 -1
  407. package/validators/timeGte.js +0 -8
  408. package/validators/timeGte.js.map +1 -1
  409. package/validators/timeLte.js +0 -8
  410. package/validators/timeLte.js.map +1 -1
  411. package/validators/unique.js +0 -7
  412. package/validators/unique.js.map +1 -1
  413. package/crud/contentModel/createFieldModels.d.ts +0 -2
  414. package/crud/contentModel/createFieldModels.js +0 -26
  415. package/crud/contentModel/createFieldModels.js.map +0 -1
  416. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  417. package/crud/contentModel/fieldIdValidation.js +0 -25
  418. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  419. package/crud/contentModel/idValidation.d.ts +0 -1
  420. package/crud/contentModel/idValidation.js +0 -22
  421. package/crud/contentModel/idValidation.js.map +0 -1
  422. package/crud/contentModel/models.d.ts +0 -4
  423. package/crud/contentModel/models.js +0 -192
  424. package/crud/contentModel/models.js.map +0 -1
  425. package/crud/contentModel/systemFields.d.ts +0 -1
  426. package/crud/contentModel/systemFields.js +0 -8
  427. package/crud/contentModel/systemFields.js.map +0 -1
  428. package/crud/index.d.ts +0 -6
  429. package/crud/index.js +0 -85
  430. package/crud/index.js.map +0 -1
  431. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  432. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  433. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  434. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  435. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  436. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  437. package/upgrades/5.33.0/index.d.ts +0 -3
  438. package/upgrades/5.33.0/index.js +0 -182
  439. package/upgrades/5.33.0/index.js.map +0 -1
  440. package/upgrades/index.d.ts +0 -1
  441. package/upgrades/index.js +0 -12
  442. package/upgrades/index.js.map +0 -1
  443. package/utils/access.d.ts +0 -8
  444. package/utils/access.js +0 -90
  445. package/utils/access.js.map +0 -1
  446. package/utils/filterModelFields.d.ts +0 -16
  447. package/utils/filterModelFields.js +0 -77
  448. package/utils/filterModelFields.js.map +0 -1
  449. package/utils/ownership.d.ts +0 -8
  450. package/utils/ownership.js +0 -41
  451. package/utils/ownership.js.map +0 -1
  452. package/utils/permissions.d.ts +0 -7
  453. package/utils/permissions.js +0 -106
  454. package/utils/permissions.js.map +0 -1
  455. package/utils/pluralizedTypeName.d.ts +0 -1
  456. package/utils/pluralizedTypeName.js +0 -26
  457. package/utils/pluralizedTypeName.js.map +0 -1
@@ -1,182 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.createUpgrade = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- var _error = _interopRequireDefault(require("@webiny/error"));
13
-
14
- const assignStorageId = fields => {
15
- return fields.map(field => {
16
- const settings = (0, _objectSpread2.default)({}, field.settings || {});
17
-
18
- if (settings.fields && Array.isArray(settings.fields) === true) {
19
- settings.fields = assignStorageId(settings.fields);
20
- }
21
-
22
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, field), {}, {
23
- storageId: field.fieldId,
24
- settings
25
- });
26
- });
27
- };
28
- /**
29
- * If at least one field does not have storageId define, we should definitely update the model.
30
- */
31
-
32
-
33
- const shouldUpdate = fields => {
34
- return fields.some(field => {
35
- var _field$settings;
36
-
37
- if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
38
- return shouldUpdate(field.settings.fields);
39
- }
40
-
41
- return !field.storageId;
42
- });
43
- };
44
-
45
- const upgradeTenantModels = async params => {
46
- const {
47
- tenant,
48
- cms,
49
- i18n
50
- } = params;
51
- /**
52
- * We need all locales for this tenant, so we can go and find all models for all the locales.
53
- */
54
-
55
- const [locales] = await i18n.locales.storageOperations.list({
56
- where: {
57
- tenant: tenant.id
58
- },
59
- limit: 100
60
- });
61
-
62
- if (locales.length === 0) {
63
- console.log(`There are no locales under the tenant "${tenant.id}".`);
64
- return;
65
- }
66
-
67
- for (const locale of locales) {
68
- /**
69
- * We need all the models that are not plugin models.
70
- */
71
- const models = await cms.storageOperations.models.list({
72
- where: {
73
- tenant: tenant.id,
74
- locale: locale.code
75
- }
76
- });
77
-
78
- if (models.length === 0) {
79
- console.log(`No models in tenant "${tenant.id}" and locale "${locale.code}" combination.`);
80
- continue;
81
- }
82
- /**
83
- * Then we need to go into each of the model fields and add the storageId, which is the same as the fieldId
84
- */
85
-
86
-
87
- const updatedModels = models.filter(model => {
88
- /**
89
- * If model has at least one field with no storageId, continue with the update.
90
- */
91
- const toUpdate = shouldUpdate(model.fields);
92
- /**
93
- * If not updating the model, lets log it - just in case...
94
- */
95
-
96
- if (!toUpdate) {
97
- console.log(`Skipping update of model "${model.modelId} - ${tenant.id} - ${locale.code}".`);
98
- return false;
99
- }
100
-
101
- return true;
102
- }).map(model => {
103
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
104
- fields: assignStorageId(model.fields)
105
- });
106
- });
107
- /**
108
- * And update all the models
109
- */
110
-
111
- for (const model of updatedModels) {
112
- try {
113
- await cms.storageOperations.models.update({
114
- model
115
- });
116
- } catch (ex) {
117
- throw new _error.default(`Could not update CMS model ${model.modelId}`, "MODEL_UPGRADE_ERROR", {
118
- model
119
- });
120
- }
121
- }
122
- }
123
- /**
124
- * In the end we need to write the new cms system version.
125
- */
126
-
127
-
128
- await cms.setSystemVersion("5.33.0");
129
- };
130
-
131
- const createUpgrade = () => {
132
- return {
133
- type: "api-upgrade",
134
- version: "5.33.0",
135
- app: "headless-cms",
136
- apply: async context => {
137
- const {
138
- security,
139
- tenancy,
140
- cms,
141
- i18n
142
- } = context;
143
- /**
144
- * We need to be able to access all data.
145
- */
146
-
147
- security.disableAuthorization();
148
- const initialTenant = tenancy.getCurrentTenant();
149
- const tenants = await tenancy.listTenants();
150
-
151
- try {
152
- for (const tenant of tenants) {
153
- tenancy.setCurrentTenant(tenant);
154
- await upgradeTenantModels({
155
- tenant,
156
- cms,
157
- i18n
158
- });
159
- }
160
- } catch (ex) {
161
- console.log(`Upgrade error: ${JSON.stringify({
162
- message: ex.message,
163
- code: ex.code,
164
- data: ex.data
165
- })}`);
166
- throw new _error.default(`Could not finish the 5.33.0 upgrade. Please contact Webiny team on Slack and share the error.`, "UPGRADE_ERROR", {
167
- message: ex.message,
168
- code: ex.code,
169
- data: ex.data
170
- });
171
- } finally {
172
- /**
173
- * Always enable the security after all the code runs.
174
- */
175
- security.enableAuthorization();
176
- tenancy.setCurrentTenant(initialTenant);
177
- }
178
- }
179
- };
180
- };
181
-
182
- exports.createUpgrade = createUpgrade;
@@ -1 +0,0 @@
1
- {"version":3,"names":["assignStorageId","fields","map","field","settings","Array","isArray","storageId","fieldId","shouldUpdate","some","upgradeTenantModels","params","tenant","cms","i18n","locales","storageOperations","list","where","id","limit","length","console","log","locale","models","code","updatedModels","filter","model","toUpdate","modelId","update","ex","WebinyError","setSystemVersion","createUpgrade","type","version","app","apply","context","security","tenancy","disableAuthorization","initialTenant","getCurrentTenant","tenants","listTenants","setCurrentTenant","JSON","stringify","message","data","enableAuthorization"],"sources":["index.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { UpgradePlugin } from \"@webiny/api-upgrade\";\nimport { CmsContext, CmsModelField, HeadlessCms } from \"~/types\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NContextObject } from \"@webiny/api-i18n/types\";\n\nconst assignStorageId = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.map(field => {\n const settings = {\n ...(field.settings || {})\n };\n if (settings.fields && Array.isArray(settings.fields) === true) {\n settings.fields = assignStorageId(settings.fields);\n }\n return {\n ...field,\n storageId: field.fieldId,\n settings\n };\n });\n};\n/**\n * If at least one field does not have storageId define, we should definitely update the model.\n */\nconst shouldUpdate = (fields: CmsModelField[]): boolean => {\n return fields.some(field => {\n if (field.settings?.fields) {\n return shouldUpdate(field.settings.fields);\n }\n return !field.storageId;\n });\n};\n\ninterface UpgradeTenantModelsParams {\n tenant: Tenant;\n cms: HeadlessCms;\n i18n: I18NContextObject;\n}\n\nconst upgradeTenantModels = async (params: UpgradeTenantModelsParams): Promise<void> => {\n const { tenant, cms, i18n } = params;\n /**\n * We need all locales for this tenant, so we can go and find all models for all the locales.\n */\n const [locales] = await i18n.locales.storageOperations.list({\n where: {\n tenant: tenant.id\n },\n limit: 100\n });\n if (locales.length === 0) {\n console.log(`There are no locales under the tenant \"${tenant.id}\".`);\n return;\n }\n for (const locale of locales) {\n /**\n * We need all the models that are not plugin models.\n */\n const models = await cms.storageOperations.models.list({\n where: {\n tenant: tenant.id,\n locale: locale.code\n }\n });\n if (models.length === 0) {\n console.log(\n `No models in tenant \"${tenant.id}\" and locale \"${locale.code}\" combination.`\n );\n continue;\n }\n\n /**\n * Then we need to go into each of the model fields and add the storageId, which is the same as the fieldId\n */\n const updatedModels = models\n .filter(model => {\n /**\n * If model has at least one field with no storageId, continue with the update.\n */\n const toUpdate = shouldUpdate(model.fields);\n\n /**\n * If not updating the model, lets log it - just in case...\n */\n if (!toUpdate) {\n console.log(\n `Skipping update of model \"${model.modelId} - ${tenant.id} - ${locale.code}\".`\n );\n return false;\n }\n return true;\n })\n .map(model => {\n return {\n ...model,\n fields: assignStorageId(model.fields)\n };\n });\n /**\n * And update all the models\n */\n for (const model of updatedModels) {\n try {\n await cms.storageOperations.models.update({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not update CMS model ${model.modelId}`,\n \"MODEL_UPGRADE_ERROR\",\n {\n model\n }\n );\n }\n }\n }\n /**\n * In the end we need to write the new cms system version.\n */\n await cms.setSystemVersion(\"5.33.0\");\n};\n\nexport const createUpgrade = (): UpgradePlugin<CmsContext> => {\n return {\n type: \"api-upgrade\",\n version: \"5.33.0\",\n app: \"headless-cms\",\n apply: async context => {\n const { security, tenancy, cms, i18n } = context;\n\n /**\n * We need to be able to access all data.\n */\n security.disableAuthorization();\n\n const initialTenant = tenancy.getCurrentTenant();\n\n const tenants = await tenancy.listTenants();\n try {\n for (const tenant of tenants) {\n tenancy.setCurrentTenant(tenant);\n await upgradeTenantModels({\n tenant,\n cms,\n i18n\n });\n }\n } catch (ex) {\n console.log(\n `Upgrade error: ${JSON.stringify({\n message: ex.message,\n code: ex.code,\n data: ex.data\n })}`\n );\n throw new WebinyError(\n `Could not finish the 5.33.0 upgrade. Please contact Webiny team on Slack and share the error.`,\n \"UPGRADE_ERROR\",\n {\n message: ex.message,\n code: ex.code,\n data: ex.data\n }\n );\n } finally {\n /**\n * Always enable the security after all the code runs.\n */\n security.enableAuthorization();\n tenancy.setCurrentTenant(initialTenant);\n }\n }\n };\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const createUpgrades: () => import("@webiny/api-upgrade").UpgradePlugin<import("../types").CmsContext>[];
package/upgrades/index.js DELETED
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createUpgrades = void 0;
7
-
8
- var _ = require("./5.33.0");
9
-
10
- const createUpgrades = () => [(0, _.createUpgrade)()];
11
-
12
- exports.createUpgrades = createUpgrades;
@@ -1 +0,0 @@
1
- {"version":3,"names":["createUpgrades","create533Upgrade"],"sources":["index.ts"],"sourcesContent":["import { createUpgrade as create533Upgrade } from \"~/upgrades/5.33.0\";\n\nexport const createUpgrades = () => [create533Upgrade()];\n"],"mappings":";;;;;;;AAAA;;AAEO,MAAMA,cAAc,GAAG,MAAM,CAAC,IAAAC,eAAA,GAAD,CAA7B"}
package/utils/access.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { CmsContext, CmsGroup, CmsGroupPermission, CmsModel } from "../types";
2
- export declare const validateGroupAccess: (context: CmsContext, permission: CmsGroupPermission, group: CmsGroup) => boolean;
3
- export declare const validateModelAccess: (context: CmsContext, model: CmsModel) => Promise<boolean>;
4
- /**
5
- * model access is checking for both specific model or group access
6
- * if permission has specific models set as access pattern then groups will not matter (although both can be set)
7
- */
8
- export declare const checkModelAccess: (context: CmsContext, model: CmsModel) => Promise<void>;
package/utils/access.js DELETED
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.validateModelAccess = exports.validateGroupAccess = exports.checkModelAccess = void 0;
7
-
8
- var _apiSecurity = require("@webiny/api-security");
9
-
10
- var _permissions = require("./permissions");
11
-
12
- const validateGroupAccess = (context, permission, group) => {
13
- const {
14
- groups
15
- } = permission; // when no groups defined on permission
16
- // it means user has access to everything
17
-
18
- if (!groups) {
19
- return true;
20
- }
21
-
22
- const locale = context.cms.getLocale().code; // when there is no locale in groups, it means that no access was given
23
- // this happens when access control was set but no models or groups were added
24
-
25
- if (Array.isArray(groups[locale]) === false || groups[locale].includes(group.id) === false) {
26
- return false;
27
- }
28
-
29
- return true;
30
- };
31
-
32
- exports.validateGroupAccess = validateGroupAccess;
33
-
34
- const validateModelAccess = async (context, model) => {
35
- const modelGroupPermission = await (0, _permissions.checkPermissions)(context, "cms.contentModelGroup", {
36
- rwd: "r"
37
- });
38
- const {
39
- groups
40
- } = modelGroupPermission;
41
- const modelPermission = await (0, _permissions.checkPermissions)(context, "cms.contentModel", {
42
- rwd: "r"
43
- });
44
- const {
45
- models
46
- } = modelPermission; // when no models or groups defined on permission
47
- // it means user has access to everything
48
-
49
- if (!models && !groups) {
50
- return true;
51
- }
52
-
53
- const locale = context.cms.getLocale().code; // Check whether the model is question belongs to "content model groups" for which user has permission.
54
-
55
- if (groups) {
56
- if (Array.isArray(groups[locale]) === false || groups[locale].includes(model.group.id) === false) {
57
- return false;
58
- }
59
- } // Check whether the model is question belongs to "content models" for which user has permission.
60
-
61
-
62
- if (models) {
63
- if (Array.isArray(models[locale]) === false || models[locale].includes(model.modelId) === false) {
64
- return false;
65
- }
66
- }
67
-
68
- return true;
69
- };
70
- /**
71
- * model access is checking for both specific model or group access
72
- * if permission has specific models set as access pattern then groups will not matter (although both can be set)
73
- */
74
-
75
-
76
- exports.validateModelAccess = validateModelAccess;
77
-
78
- const checkModelAccess = async (context, model) => {
79
- if (await validateModelAccess(context, model)) {
80
- return;
81
- }
82
-
83
- throw new _apiSecurity.NotAuthorizedError({
84
- data: {
85
- reason: `Not allowed to access model "${model.modelId}".`
86
- }
87
- });
88
- };
89
-
90
- exports.checkModelAccess = checkModelAccess;
@@ -1 +0,0 @@
1
- {"version":3,"names":["validateGroupAccess","context","permission","group","groups","locale","cms","getLocale","code","Array","isArray","includes","id","validateModelAccess","model","modelGroupPermission","checkPermissions","rwd","modelPermission","models","modelId","checkModelAccess","NotAuthorizedError","data","reason"],"sources":["access.ts"],"sourcesContent":["import { NotAuthorizedError } from \"@webiny/api-security\";\nimport { CmsContext, CmsGroup, CmsGroupPermission, CmsModel, CmsModelPermission } from \"~/types\";\nimport { checkPermissions } from \"./permissions\";\n\nexport const validateGroupAccess = (\n context: CmsContext,\n permission: CmsGroupPermission,\n group: CmsGroup\n): boolean => {\n const { groups } = permission;\n // when no groups defined on permission\n // it means user has access to everything\n if (!groups) {\n return true;\n }\n const locale = context.cms.getLocale().code;\n // when there is no locale in groups, it means that no access was given\n // this happens when access control was set but no models or groups were added\n if (Array.isArray(groups[locale]) === false || groups[locale].includes(group.id) === false) {\n return false;\n }\n return true;\n};\n\nexport const validateModelAccess = async (\n context: CmsContext,\n model: CmsModel\n): Promise<boolean> => {\n const modelGroupPermission: CmsGroupPermission = await checkPermissions(\n context,\n \"cms.contentModelGroup\",\n { rwd: \"r\" }\n );\n const { groups } = modelGroupPermission;\n\n const modelPermission: CmsModelPermission = await checkPermissions(\n context,\n \"cms.contentModel\",\n {\n rwd: \"r\"\n }\n );\n const { models } = modelPermission;\n // when no models or groups defined on permission\n // it means user has access to everything\n if (!models && !groups) {\n return true;\n }\n const locale = context.cms.getLocale().code;\n // Check whether the model is question belongs to \"content model groups\" for which user has permission.\n if (groups) {\n if (\n Array.isArray(groups[locale]) === false ||\n groups[locale].includes(model.group.id) === false\n ) {\n return false;\n }\n }\n // Check whether the model is question belongs to \"content models\" for which user has permission.\n if (models) {\n if (\n Array.isArray(models[locale]) === false ||\n models[locale].includes(model.modelId) === false\n ) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * model access is checking for both specific model or group access\n * if permission has specific models set as access pattern then groups will not matter (although both can be set)\n */\nexport const checkModelAccess = async (context: CmsContext, model: CmsModel): Promise<void> => {\n if (await validateModelAccess(context, model)) {\n return;\n }\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access model \"${model.modelId}\".`\n }\n });\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEO,MAAMA,mBAAmB,GAAG,CAC/BC,OAD+B,EAE/BC,UAF+B,EAG/BC,KAH+B,KAIrB;EACV,MAAM;IAAEC;EAAF,IAAaF,UAAnB,CADU,CAEV;EACA;;EACA,IAAI,CAACE,MAAL,EAAa;IACT,OAAO,IAAP;EACH;;EACD,MAAMC,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYC,SAAZ,GAAwBC,IAAvC,CAPU,CAQV;EACA;;EACA,IAAIC,KAAK,CAACC,OAAN,CAAcN,MAAM,CAACC,MAAD,CAApB,MAAkC,KAAlC,IAA2CD,MAAM,CAACC,MAAD,CAAN,CAAeM,QAAf,CAAwBR,KAAK,CAACS,EAA9B,MAAsC,KAArF,EAA4F;IACxF,OAAO,KAAP;EACH;;EACD,OAAO,IAAP;AACH,CAlBM;;;;AAoBA,MAAMC,mBAAmB,GAAG,OAC/BZ,OAD+B,EAE/Ba,KAF+B,KAGZ;EACnB,MAAMC,oBAAwC,GAAG,MAAM,IAAAC,6BAAA,EACnDf,OADmD,EAEnD,uBAFmD,EAGnD;IAAEgB,GAAG,EAAE;EAAP,CAHmD,CAAvD;EAKA,MAAM;IAAEb;EAAF,IAAaW,oBAAnB;EAEA,MAAMG,eAAmC,GAAG,MAAM,IAAAF,6BAAA,EAC9Cf,OAD8C,EAE9C,kBAF8C,EAG9C;IACIgB,GAAG,EAAE;EADT,CAH8C,CAAlD;EAOA,MAAM;IAAEE;EAAF,IAAaD,eAAnB,CAfmB,CAgBnB;EACA;;EACA,IAAI,CAACC,MAAD,IAAW,CAACf,MAAhB,EAAwB;IACpB,OAAO,IAAP;EACH;;EACD,MAAMC,MAAM,GAAGJ,OAAO,CAACK,GAAR,CAAYC,SAAZ,GAAwBC,IAAvC,CArBmB,CAsBnB;;EACA,IAAIJ,MAAJ,EAAY;IACR,IACIK,KAAK,CAACC,OAAN,CAAcN,MAAM,CAACC,MAAD,CAApB,MAAkC,KAAlC,IACAD,MAAM,CAACC,MAAD,CAAN,CAAeM,QAAf,CAAwBG,KAAK,CAACX,KAAN,CAAYS,EAApC,MAA4C,KAFhD,EAGE;MACE,OAAO,KAAP;IACH;EACJ,CA9BkB,CA+BnB;;;EACA,IAAIO,MAAJ,EAAY;IACR,IACIV,KAAK,CAACC,OAAN,CAAcS,MAAM,CAACd,MAAD,CAApB,MAAkC,KAAlC,IACAc,MAAM,CAACd,MAAD,CAAN,CAAeM,QAAf,CAAwBG,KAAK,CAACM,OAA9B,MAA2C,KAF/C,EAGE;MACE,OAAO,KAAP;IACH;EACJ;;EAED,OAAO,IAAP;AACH,CA7CM;AA+CP;AACA;AACA;AACA;;;;;AACO,MAAMC,gBAAgB,GAAG,OAAOpB,OAAP,EAA4Ba,KAA5B,KAA+D;EAC3F,IAAI,MAAMD,mBAAmB,CAACZ,OAAD,EAAUa,KAAV,CAA7B,EAA+C;IAC3C;EACH;;EACD,MAAM,IAAIQ,+BAAJ,CAAuB;IACzBC,IAAI,EAAE;MACFC,MAAM,EAAG,gCAA+BV,KAAK,CAACM,OAAQ;IADpD;EADmB,CAAvB,CAAN;AAKH,CATM"}
@@ -1,16 +0,0 @@
1
- /**
2
- * We are leaving this file because isDeleted might come back later
3
- */
4
- import { ApiEndpoint, CmsModel } from "../types";
5
- /**
6
- * Filters deleted fields from all given models.
7
- */
8
- interface FilterModelsDeletedFieldsCallableParams {
9
- models: CmsModel[];
10
- type: ApiEndpoint;
11
- }
12
- interface FilterModelsDeletedFieldsCallable {
13
- (params: FilterModelsDeletedFieldsCallableParams): CmsModel[];
14
- }
15
- export declare const filterModelsDeletedFields: FilterModelsDeletedFieldsCallable;
16
- export {};
@@ -1,77 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.filterModelsDeletedFields = void 0;
9
-
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
-
12
- /**
13
- * We are leaving this file because isDeleted might come back later
14
- */
15
- // @ts-nocheck
16
-
17
- /**
18
- * Filters deleted fields from the list of fields.
19
- *
20
- * Used to recursively delete fields - object field.
21
- */
22
- const filterDeletedFields = params => {
23
- return params.fields.reduce((output, field) => {
24
- var _field$settings;
25
-
26
- if (!!field.isDeleted) {
27
- return output;
28
- } else if ((_field$settings = field.settings) !== null && _field$settings !== void 0 && _field$settings.fields) {
29
- const fields = filterDeletedFields({
30
- fields: field.settings.fields
31
- });
32
- output.push((0, _objectSpread2.default)((0, _objectSpread2.default)({}, field), {}, {
33
- settings: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, field.settings), {}, {
34
- fields
35
- })
36
- }));
37
- return output;
38
- }
39
-
40
- output.push(field);
41
- return output;
42
- }, []);
43
- };
44
- /**
45
- * Filters deleted fields from given model.
46
- */
47
-
48
-
49
- const filterModelDeletedFields = ({
50
- model
51
- }) => {
52
- const fields = filterDeletedFields(model);
53
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
54
- fields
55
- });
56
- };
57
- /**
58
- * Filters deleted fields from all given models.
59
- */
60
-
61
-
62
- const filterModelsDeletedFields = ({
63
- models,
64
- type
65
- }) => {
66
- if (type === "manage") {
67
- return models;
68
- }
69
-
70
- return models.map(model => {
71
- return filterModelDeletedFields({
72
- model
73
- });
74
- });
75
- };
76
-
77
- exports.filterModelsDeletedFields = filterModelsDeletedFields;
@@ -1 +0,0 @@
1
- {"version":3,"names":["filterDeletedFields","params","fields","reduce","output","field","isDeleted","settings","push","filterModelDeletedFields","model","filterModelsDeletedFields","models","type","map"],"sources":["filterModelFields.ts"],"sourcesContent":["/**\n * We are leaving this file because isDeleted might come back later\n */\n// @ts-nocheck\nimport { ApiEndpoint, CmsModel, CmsModelField } from \"~/types\";\n\n/**\n * Filters deleted fields from the list of fields.\n *\n * Used to recursively delete fields - object field.\n */\ninterface FilterModelFieldsCallableParams {\n fields: CmsModelField[];\n}\ninterface FilterModelFieldsCallable {\n (params: FilterModelFieldsCallableParams): CmsModelField[];\n}\n\nconst filterDeletedFields: FilterModelFieldsCallable = params => {\n return params.fields.reduce<CmsModelField[]>((output, field) => {\n if (!!field.isDeleted) {\n return output;\n } else if (field.settings?.fields) {\n const fields = filterDeletedFields({\n fields: field.settings.fields\n });\n\n output.push({\n ...field,\n settings: {\n ...field.settings,\n fields\n }\n });\n return output;\n }\n\n output.push(field);\n\n return output;\n }, []);\n};\n\n/**\n * Filters deleted fields from given model.\n */\ninterface FilterModelDeletedFieldsCallableParams {\n model: CmsModel;\n}\ninterface FilterModelDeletedFieldsCallable {\n (params: FilterModelDeletedFieldsCallableParams): CmsModel;\n}\nconst filterModelDeletedFields: FilterModelDeletedFieldsCallable = ({ model }) => {\n const fields = filterDeletedFields(model);\n return {\n ...model,\n fields\n };\n};\n\n/**\n * Filters deleted fields from all given models.\n */\ninterface FilterModelsDeletedFieldsCallableParams {\n models: CmsModel[];\n type: ApiEndpoint;\n}\ninterface FilterModelsDeletedFieldsCallable {\n (params: FilterModelsDeletedFieldsCallableParams): CmsModel[];\n}\nexport const filterModelsDeletedFields: FilterModelsDeletedFieldsCallable = ({ models, type }) => {\n if (type === \"manage\") {\n return models;\n }\n return models.map(model => {\n return filterModelDeletedFields({\n model\n });\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AAQA,MAAMA,mBAA8C,GAAGC,MAAM,IAAI;EAC7D,OAAOA,MAAM,CAACC,MAAP,CAAcC,MAAd,CAAsC,CAACC,MAAD,EAASC,KAAT,KAAmB;IAAA;;IAC5D,IAAI,CAAC,CAACA,KAAK,CAACC,SAAZ,EAAuB;MACnB,OAAOF,MAAP;IACH,CAFD,MAEO,uBAAIC,KAAK,CAACE,QAAV,4CAAI,gBAAgBL,MAApB,EAA4B;MAC/B,MAAMA,MAAM,GAAGF,mBAAmB,CAAC;QAC/BE,MAAM,EAAEG,KAAK,CAACE,QAAN,CAAeL;MADQ,CAAD,CAAlC;MAIAE,MAAM,CAACI,IAAP,6DACOH,KADP;QAEIE,QAAQ,8DACDF,KAAK,CAACE,QADL;UAEJL;QAFI;MAFZ;MAOA,OAAOE,MAAP;IACH;;IAEDA,MAAM,CAACI,IAAP,CAAYH,KAAZ;IAEA,OAAOD,MAAP;EACH,CArBM,EAqBJ,EArBI,CAAP;AAsBH,CAvBD;AAyBA;AACA;AACA;;;AAOA,MAAMK,wBAA0D,GAAG,CAAC;EAAEC;AAAF,CAAD,KAAe;EAC9E,MAAMR,MAAM,GAAGF,mBAAmB,CAACU,KAAD,CAAlC;EACA,mEACOA,KADP;IAEIR;EAFJ;AAIH,CAND;AAQA;AACA;AACA;;;AAQO,MAAMS,yBAA4D,GAAG,CAAC;EAAEC,MAAF;EAAUC;AAAV,CAAD,KAAsB;EAC9F,IAAIA,IAAI,KAAK,QAAb,EAAuB;IACnB,OAAOD,MAAP;EACH;;EACD,OAAOA,MAAM,CAACE,GAAP,CAAWJ,KAAK,IAAI;IACvB,OAAOD,wBAAwB,CAAC;MAC5BC;IAD4B,CAAD,CAA/B;EAGH,CAJM,CAAP;AAKH,CATM"}
@@ -1,8 +0,0 @@
1
- import { BaseCmsSecurityPermission, CmsContext, CreatedBy } from "../types";
2
- interface OwnableRecord {
3
- createdBy?: CreatedBy;
4
- ownedBy?: CreatedBy;
5
- }
6
- export declare const checkOwnership: (context: CmsContext, permission: BaseCmsSecurityPermission, record: OwnableRecord) => void;
7
- export declare const validateOwnership: (context: CmsContext, permission: BaseCmsSecurityPermission, record: OwnableRecord) => boolean;
8
- export {};
@@ -1,41 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.validateOwnership = exports.checkOwnership = void 0;
7
-
8
- var _apiSecurity = require("@webiny/api-security");
9
-
10
- const checkOwnership = (context, permission, record) => {
11
- var _record$ownedBy, _record$createdBy;
12
-
13
- if (!permission.own) {
14
- return;
15
- }
16
-
17
- const identity = context.security.getIdentity();
18
- const owner = identity && ((_record$ownedBy = record.ownedBy) === null || _record$ownedBy === void 0 ? void 0 : _record$ownedBy.id) === identity.id;
19
- const creator = identity && ((_record$createdBy = record.createdBy) === null || _record$createdBy === void 0 ? void 0 : _record$createdBy.id) === identity.id;
20
-
21
- if (!owner && !creator) {
22
- throw new _apiSecurity.NotAuthorizedError({
23
- data: {
24
- reason: `You are not the owner of the record.`
25
- }
26
- });
27
- }
28
- };
29
-
30
- exports.checkOwnership = checkOwnership;
31
-
32
- const validateOwnership = (context, permission, record) => {
33
- try {
34
- checkOwnership(context, permission, record);
35
- return true;
36
- } catch {
37
- return false;
38
- }
39
- };
40
-
41
- exports.validateOwnership = validateOwnership;
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkOwnership","context","permission","record","own","identity","security","getIdentity","owner","ownedBy","id","creator","createdBy","NotAuthorizedError","data","reason","validateOwnership"],"sources":["ownership.ts"],"sourcesContent":["import { BaseCmsSecurityPermission, CmsContext, CreatedBy } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\ninterface OwnableRecord {\n createdBy?: CreatedBy;\n ownedBy?: CreatedBy;\n}\n\nexport const checkOwnership = (\n context: CmsContext,\n permission: BaseCmsSecurityPermission,\n record: OwnableRecord\n): void => {\n if (!permission.own) {\n return;\n }\n\n const identity = context.security.getIdentity();\n const owner = identity && record.ownedBy?.id === identity.id;\n const creator = identity && record.createdBy?.id === identity.id;\n\n if (!owner && !creator) {\n throw new NotAuthorizedError({\n data: {\n reason: `You are not the owner of the record.`\n }\n });\n }\n};\n\nexport const validateOwnership = (\n context: CmsContext,\n permission: BaseCmsSecurityPermission,\n record: OwnableRecord\n): boolean => {\n try {\n checkOwnership(context, permission, record);\n return true;\n } catch {\n return false;\n }\n};\n"],"mappings":";;;;;;;AACA;;AAOO,MAAMA,cAAc,GAAG,CAC1BC,OAD0B,EAE1BC,UAF0B,EAG1BC,MAH0B,KAInB;EAAA;;EACP,IAAI,CAACD,UAAU,CAACE,GAAhB,EAAqB;IACjB;EACH;;EAED,MAAMC,QAAQ,GAAGJ,OAAO,CAACK,QAAR,CAAiBC,WAAjB,EAAjB;EACA,MAAMC,KAAK,GAAGH,QAAQ,IAAI,oBAAAF,MAAM,CAACM,OAAP,oEAAgBC,EAAhB,MAAuBL,QAAQ,CAACK,EAA1D;EACA,MAAMC,OAAO,GAAGN,QAAQ,IAAI,sBAAAF,MAAM,CAACS,SAAP,wEAAkBF,EAAlB,MAAyBL,QAAQ,CAACK,EAA9D;;EAEA,IAAI,CAACF,KAAD,IAAU,CAACG,OAAf,EAAwB;IACpB,MAAM,IAAIE,+BAAJ,CAAuB;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG;MADP;IADmB,CAAvB,CAAN;EAKH;AACJ,CApBM;;;;AAsBA,MAAMC,iBAAiB,GAAG,CAC7Bf,OAD6B,EAE7BC,UAF6B,EAG7BC,MAH6B,KAInB;EACV,IAAI;IACAH,cAAc,CAACC,OAAD,EAAUC,UAAV,EAAsBC,MAAtB,CAAd;IACA,OAAO,IAAP;EACH,CAHD,CAGE,MAAM;IACJ,OAAO,KAAP;EACH;AACJ,CAXM"}
@@ -1,7 +0,0 @@
1
- import { BaseCmsSecurityPermission, CmsContext, CmsEntryPermission } from "../types";
2
- export declare const hasRwd: (permission: BaseCmsSecurityPermission, rwd: string) => boolean;
3
- export declare const hasPw: (permission: CmsEntryPermission, pw: string) => boolean;
4
- export declare const checkPermissions: <TPermission extends BaseCmsSecurityPermission = BaseCmsSecurityPermission>(context: CmsContext, name: string, check?: {
5
- rwd?: string;
6
- pw?: string;
7
- }) => Promise<TPermission>;
@@ -1,106 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.hasRwd = exports.hasPw = exports.checkPermissions = void 0;
7
-
8
- var _apiSecurity = require("@webiny/api-security");
9
-
10
- const hasRwd = (permission, rwd) => {
11
- if (typeof permission.rwd !== "string") {
12
- return true;
13
- }
14
-
15
- return permission.rwd.includes(rwd);
16
- };
17
-
18
- exports.hasRwd = hasRwd;
19
-
20
- const hasPw = (permission, pw) => {
21
- const isCustom = Object.keys(permission).length > 1; // "name" key is always present
22
-
23
- if (!isCustom) {
24
- // Means it's a "full-access" permission.
25
- return true;
26
- }
27
-
28
- if (typeof permission.pw !== "string") {
29
- return false;
30
- }
31
-
32
- return permission.pw.includes(pw);
33
- };
34
-
35
- exports.hasPw = hasPw;
36
- const PW = {
37
- p: "publish",
38
- u: "unpublish"
39
- };
40
- const RWD = {
41
- r: "read",
42
- w: "write",
43
- d: "delete"
44
- };
45
-
46
- const checkPermissions = async (context, name, check) => {
47
- // Check if user is allowed to edit content in current language
48
- const contentPermission = await context.security.getPermission("content.i18n");
49
-
50
- if (!contentPermission) {
51
- throw new _apiSecurity.NotAuthorizedError({
52
- data: {
53
- reason: "Missing access to content in any locale."
54
- }
55
- });
56
- } // We need to check this manually as CMS locale comes from the URL and not the default i18n app.
57
-
58
-
59
- const code = context.cms.getLocale().code;
60
- const locales = contentPermission.locales; // IMPORTANT: If we have a `contentPermission`, and `locales` key is NOT SET - it means the user has access to all locales.
61
- // However, if the the `locales` IS SET - check that it contains the required locale.
62
-
63
- if (Array.isArray(locales) && !locales.includes(code)) {
64
- throw new _apiSecurity.NotAuthorizedError({
65
- data: {
66
- reason: `Not allowed to access content in "${code}."`
67
- }
68
- });
69
- }
70
-
71
- const permission = await context.security.getPermission(name);
72
-
73
- if (!permission) {
74
- throw new _apiSecurity.NotAuthorizedError({
75
- data: {
76
- reason: `Missing permission "${name}".`
77
- }
78
- });
79
- }
80
-
81
- if (!check) {
82
- return permission;
83
- }
84
-
85
- if (check.rwd && !hasRwd(permission, check.rwd)) {
86
- throw new _apiSecurity.NotAuthorizedError({
87
- data: {
88
- reason: `Not allowed to perform "${RWD[check.rwd]}" on "${name}".`
89
- }
90
- });
91
- } // p = publish
92
- // u = unpublish
93
-
94
-
95
- if (check.pw && !hasPw(permission, check.pw)) {
96
- throw new _apiSecurity.NotAuthorizedError({
97
- data: {
98
- reason: `Not allowed to perform "${PW[check.pw]}" on "${name}".`
99
- }
100
- });
101
- }
102
-
103
- return permission;
104
- };
105
-
106
- exports.checkPermissions = checkPermissions;
@@ -1 +0,0 @@
1
- {"version":3,"names":["hasRwd","permission","rwd","includes","hasPw","pw","isCustom","Object","keys","length","PW","p","u","RWD","r","w","d","checkPermissions","context","name","check","contentPermission","security","getPermission","NotAuthorizedError","data","reason","code","cms","getLocale","locales","Array","isArray"],"sources":["permissions.ts"],"sourcesContent":["import { BaseCmsSecurityPermission, CmsContext, CmsEntryPermission } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\nexport const hasRwd = (permission: BaseCmsSecurityPermission, rwd: string): boolean => {\n if (typeof permission.rwd !== \"string\") {\n return true;\n }\n\n return permission.rwd.includes(rwd);\n};\n\nexport const hasPw = (permission: CmsEntryPermission, pw: string): boolean => {\n const isCustom = Object.keys(permission).length > 1; // \"name\" key is always present\n\n if (!isCustom) {\n // Means it's a \"full-access\" permission.\n return true;\n }\n\n if (typeof permission.pw !== \"string\") {\n return false;\n }\n\n return permission.pw.includes(pw);\n};\n\nconst PW: Record<string, string> = {\n p: \"publish\",\n u: \"unpublish\"\n};\n\nconst RWD: Record<string, string> = {\n r: \"read\",\n w: \"write\",\n d: \"delete\"\n};\n\nexport const checkPermissions = async <\n TPermission extends BaseCmsSecurityPermission = BaseCmsSecurityPermission\n>(\n context: CmsContext,\n name: string,\n check?: { rwd?: string; pw?: string }\n): Promise<TPermission> => {\n // Check if user is allowed to edit content in current language\n const contentPermission = await context.security.getPermission(\"content.i18n\");\n\n if (!contentPermission) {\n throw new NotAuthorizedError({\n data: {\n reason: \"Missing access to content in any locale.\"\n }\n });\n }\n\n // We need to check this manually as CMS locale comes from the URL and not the default i18n app.\n const code = context.cms.getLocale().code;\n\n const locales: string[] = contentPermission.locales;\n\n // IMPORTANT: If we have a `contentPermission`, and `locales` key is NOT SET - it means the user has access to all locales.\n // However, if the the `locales` IS SET - check that it contains the required locale.\n if (Array.isArray(locales) && !locales.includes(code)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to access content in \"${code}.\"`\n }\n });\n }\n\n const permission = await context.security.getPermission<TPermission>(name);\n\n if (!permission) {\n throw new NotAuthorizedError({\n data: {\n reason: `Missing permission \"${name}\".`\n }\n });\n }\n\n if (!check) {\n return permission;\n }\n\n if (check.rwd && !hasRwd(permission, check.rwd)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to perform \"${RWD[check.rwd]}\" on \"${name}\".`\n }\n });\n }\n\n // p = publish\n // u = unpublish\n if (check.pw && !hasPw(permission, check.pw)) {\n throw new NotAuthorizedError({\n data: {\n reason: `Not allowed to perform \"${PW[check.pw]}\" on \"${name}\".`\n }\n });\n }\n\n return permission;\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const pluralizedTypeName: (typeName: string) => string;
@@ -1,26 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.pluralizedTypeName = void 0;
9
-
10
- var _pluralize = _interopRequireDefault(require("pluralize"));
11
-
12
- // This will make it so if the content model name is a single capitalized letter
13
- // Ex. A, pluralizedTypeName will capitalize the name to As, instead of AS
14
- const pluralizedTypeName = typeName => {
15
- let pluralizedTypeName;
16
-
17
- if (typeName.length === 1) {
18
- pluralizedTypeName = `${typeName}s`;
19
- } else {
20
- pluralizedTypeName = (0, _pluralize.default)(typeName);
21
- }
22
-
23
- return pluralizedTypeName;
24
- };
25
-
26
- exports.pluralizedTypeName = pluralizedTypeName;
@@ -1 +0,0 @@
1
- {"version":3,"names":["pluralizedTypeName","typeName","length","pluralize"],"sources":["pluralizedTypeName.ts"],"sourcesContent":["import pluralize from \"pluralize\";\n\n// This will make it so if the content model name is a single capitalized letter\n// Ex. A, pluralizedTypeName will capitalize the name to As, instead of AS\nexport const pluralizedTypeName = (typeName: string): string => {\n let pluralizedTypeName;\n if (typeName.length === 1) {\n pluralizedTypeName = `${typeName}s`;\n } else {\n pluralizedTypeName = pluralize(typeName);\n }\n return pluralizedTypeName;\n};\n"],"mappings":";;;;;;;;;AAAA;;AAEA;AACA;AACO,MAAMA,kBAAkB,GAAIC,QAAD,IAA8B;EAC5D,IAAID,kBAAJ;;EACA,IAAIC,QAAQ,CAACC,MAAT,KAAoB,CAAxB,EAA2B;IACvBF,kBAAkB,GAAI,GAAEC,QAAS,GAAjC;EACH,CAFD,MAEO;IACHD,kBAAkB,GAAG,IAAAG,kBAAA,EAAUF,QAAV,CAArB;EACH;;EACD,OAAOD,kBAAP;AACH,CARM"}