@webiny/api-headless-cms 0.0.0-unstable.40876133bb → 0.0.0-unstable.496cf268ac

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 (371) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +53 -19
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/afterDelete.js +0 -5
  5. package/crud/contentEntry/afterDelete.js.map +1 -1
  6. package/crud/contentEntry/beforeCreate.js +0 -3
  7. package/crud/contentEntry/beforeCreate.js.map +1 -1
  8. package/crud/contentEntry/beforeUpdate.js +0 -3
  9. package/crud/contentEntry/beforeUpdate.js.map +1 -1
  10. package/crud/contentEntry/entryDataValidation.js +1 -40
  11. package/crud/contentEntry/entryDataValidation.js.map +1 -1
  12. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  13. package/crud/contentEntry/markLockedFields.js +19 -29
  14. package/crud/contentEntry/markLockedFields.js.map +1 -1
  15. package/crud/contentEntry/referenceFieldsMapping.js +12 -64
  16. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  17. package/crud/contentEntry/searchableFields.d.ts +9 -0
  18. package/crud/contentEntry/searchableFields.js +72 -0
  19. package/crud/contentEntry/searchableFields.js.map +1 -0
  20. package/crud/contentEntry.crud.d.ts +2 -1
  21. package/crud/contentEntry.crud.js +140 -193
  22. package/crud/contentEntry.crud.js.map +1 -1
  23. package/crud/contentModel/afterCreate.js +0 -2
  24. package/crud/contentModel/afterCreate.js.map +1 -1
  25. package/crud/contentModel/afterCreateFrom.js +0 -2
  26. package/crud/contentModel/afterCreateFrom.js.map +1 -1
  27. package/crud/contentModel/afterDelete.js +0 -2
  28. package/crud/contentModel/afterDelete.js.map +1 -1
  29. package/crud/contentModel/afterUpdate.js +0 -2
  30. package/crud/contentModel/afterUpdate.js.map +1 -1
  31. package/crud/contentModel/beforeCreate.d.ts +2 -3
  32. package/crud/contentModel/beforeCreate.js +11 -36
  33. package/crud/contentModel/beforeCreate.js.map +1 -1
  34. package/crud/contentModel/beforeDelete.js +0 -10
  35. package/crud/contentModel/beforeDelete.js.map +1 -1
  36. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  37. package/crud/contentModel/beforeUpdate.js +6 -7
  38. package/crud/contentModel/beforeUpdate.js.map +1 -1
  39. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  40. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  41. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  42. package/crud/contentModel/contentModelManagerFactory.js +0 -7
  43. package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
  44. package/crud/contentModel/createFieldStorageId.js +4 -3
  45. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  46. package/crud/contentModel/defaultFields.d.ts +5 -0
  47. package/crud/contentModel/defaultFields.js +58 -0
  48. package/crud/contentModel/defaultFields.js.map +1 -0
  49. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  50. package/crud/contentModel/fields/descriptionField.js +42 -0
  51. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  52. package/crud/contentModel/fields/imageField.d.ts +2 -0
  53. package/crud/contentModel/fields/imageField.js +46 -0
  54. package/crud/contentModel/fields/imageField.js.map +1 -0
  55. package/crud/contentModel/fields/titleField.d.ts +2 -0
  56. package/crud/contentModel/fields/titleField.js +58 -0
  57. package/crud/contentModel/fields/titleField.js.map +1 -0
  58. package/crud/contentModel/models.js +12 -0
  59. package/crud/contentModel/models.js.map +1 -1
  60. package/crud/contentModel/validateLayout.js +0 -8
  61. package/crud/contentModel/validateLayout.js.map +1 -1
  62. package/crud/contentModel/validateModel.d.ts +4 -4
  63. package/crud/contentModel/validateModel.js +6 -11
  64. package/crud/contentModel/validateModel.js.map +1 -1
  65. package/crud/contentModel/validateModelFields.d.ts +4 -4
  66. package/crud/contentModel/validateModelFields.js +131 -147
  67. package/crud/contentModel/validateModelFields.js.map +1 -1
  68. package/crud/contentModel/validation.d.ts +519 -0
  69. package/crud/contentModel/validation.js +145 -0
  70. package/crud/contentModel/validation.js.map +1 -0
  71. package/crud/contentModel.crud.js +245 -272
  72. package/crud/contentModel.crud.js.map +1 -1
  73. package/crud/contentModelGroup/beforeCreate.js +0 -12
  74. package/crud/contentModelGroup/beforeCreate.js.map +1 -1
  75. package/crud/contentModelGroup/beforeDelete.js +0 -8
  76. package/crud/contentModelGroup/beforeDelete.js.map +1 -1
  77. package/crud/contentModelGroup/beforeUpdate.js +0 -5
  78. package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
  79. package/crud/contentModelGroup/validation.d.ts +30 -0
  80. package/crud/contentModelGroup/validation.js +34 -0
  81. package/crud/contentModelGroup/validation.js.map +1 -0
  82. package/crud/contentModelGroup.crud.js +53 -95
  83. package/crud/contentModelGroup.crud.js.map +1 -1
  84. package/crud/settings.crud.js +0 -12
  85. package/crud/settings.crud.js.map +1 -1
  86. package/crud/system.crud.js +1 -96
  87. package/crud/system.crud.js.map +1 -1
  88. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +0 -13
  89. package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
  90. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  91. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  92. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  93. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +0 -53
  94. package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
  95. package/fieldConverters/index.d.ts +2 -1
  96. package/fieldConverters/index.js +2 -5
  97. package/fieldConverters/index.js.map +1 -1
  98. package/graphql/buildSchemaPlugins.d.ts +8 -3
  99. package/graphql/buildSchemaPlugins.js +6 -14
  100. package/graphql/buildSchemaPlugins.js.map +1 -1
  101. package/graphql/createExecutableSchema.d.ts +7 -0
  102. package/graphql/createExecutableSchema.js +29 -0
  103. package/graphql/createExecutableSchema.js.map +1 -0
  104. package/graphql/generateSchema.d.ts +8 -0
  105. package/graphql/generateSchema.js +31 -0
  106. package/graphql/generateSchema.js.map +1 -0
  107. package/graphql/graphQLHandlerFactory.js +95 -74
  108. package/graphql/graphQLHandlerFactory.js.map +1 -1
  109. package/graphql/index.d.ts +1 -3
  110. package/graphql/index.js +2 -46
  111. package/graphql/index.js.map +1 -1
  112. package/graphql/schema/baseContentSchema.d.ts +6 -2
  113. package/graphql/schema/baseContentSchema.js +10 -20
  114. package/graphql/schema/baseContentSchema.js.map +1 -1
  115. package/graphql/schema/baseSchema.d.ts +3 -0
  116. package/graphql/schema/baseSchema.js +53 -0
  117. package/graphql/schema/baseSchema.js.map +1 -0
  118. package/graphql/schema/contentEntries.d.ts +6 -2
  119. package/graphql/schema/contentEntries.js +118 -107
  120. package/graphql/schema/contentEntries.js.map +1 -1
  121. package/graphql/schema/contentModelGroups.d.ts +6 -2
  122. package/graphql/schema/contentModelGroups.js +10 -23
  123. package/graphql/schema/contentModelGroups.js.map +1 -1
  124. package/graphql/schema/contentModels.d.ts +6 -2
  125. package/graphql/schema/contentModels.js +62 -26
  126. package/graphql/schema/contentModels.js.map +1 -1
  127. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  128. package/graphql/schema/createFieldResolvers.js +20 -27
  129. package/graphql/schema/createFieldResolvers.js.map +1 -1
  130. package/graphql/schema/createManageResolvers.d.ts +1 -1
  131. package/graphql/schema/createManageResolvers.js +33 -43
  132. package/graphql/schema/createManageResolvers.js.map +1 -1
  133. package/graphql/schema/createManageSDL.d.ts +3 -0
  134. package/graphql/schema/createManageSDL.js +64 -67
  135. package/graphql/schema/createManageSDL.js.map +1 -1
  136. package/graphql/schema/createPreviewResolvers.js +3 -17
  137. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  138. package/graphql/schema/createReadResolvers.js +8 -17
  139. package/graphql/schema/createReadResolvers.js.map +1 -1
  140. package/graphql/schema/createReadSDL.d.ts +3 -0
  141. package/graphql/schema/createReadSDL.js +33 -35
  142. package/graphql/schema/createReadSDL.js.map +1 -1
  143. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  144. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -3
  145. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  146. package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
  147. package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
  148. package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
  149. package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
  150. package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
  151. package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
  152. package/graphql/schema/resolvers/manage/resolveGet.js +0 -16
  153. package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
  154. package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
  155. package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
  156. package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
  157. package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
  158. package/graphql/schema/resolvers/manage/resolveList.js +0 -3
  159. package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
  160. package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
  161. package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
  162. package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
  163. package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
  164. package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
  165. package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
  166. package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
  167. package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
  168. package/graphql/schema/resolvers/preview/resolveGet.js +0 -8
  169. package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
  170. package/graphql/schema/resolvers/preview/resolveList.js +0 -3
  171. package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
  172. package/graphql/schema/resolvers/read/resolveGet.js +0 -8
  173. package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
  174. package/graphql/schema/resolvers/read/resolveList.js +0 -3
  175. package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
  176. package/graphql/schema/schemaPlugins.d.ts +8 -3
  177. package/graphql/schema/schemaPlugins.js +64 -66
  178. package/graphql/schema/schemaPlugins.js.map +1 -1
  179. package/graphql/system.js +55 -87
  180. package/graphql/system.js.map +1 -1
  181. package/graphqlFields/boolean.js +0 -12
  182. package/graphqlFields/boolean.js.map +1 -1
  183. package/graphqlFields/datetime.js +0 -17
  184. package/graphqlFields/datetime.js.map +1 -1
  185. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  186. package/graphqlFields/dynamicZone/dynamicZoneField.js +216 -0
  187. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  188. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  189. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  190. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  191. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  192. package/graphqlFields/dynamicZone/index.js +19 -0
  193. package/graphqlFields/dynamicZone/index.js.map +1 -0
  194. package/graphqlFields/file.js +0 -8
  195. package/graphqlFields/file.js.map +1 -1
  196. package/graphqlFields/helpers.js +0 -10
  197. package/graphqlFields/helpers.js.map +1 -1
  198. package/graphqlFields/index.d.ts +1 -1
  199. package/graphqlFields/index.js +2 -12
  200. package/graphqlFields/index.js.map +1 -1
  201. package/graphqlFields/longText.js +0 -10
  202. package/graphqlFields/longText.js.map +1 -1
  203. package/graphqlFields/number.js +4 -12
  204. package/graphqlFields/number.js.map +1 -1
  205. package/graphqlFields/object.js +118 -98
  206. package/graphqlFields/object.js.map +1 -1
  207. package/graphqlFields/ref.js +86 -106
  208. package/graphqlFields/ref.js.map +1 -1
  209. package/graphqlFields/richText.js +0 -9
  210. package/graphqlFields/richText.js.map +1 -1
  211. package/graphqlFields/text.js +0 -11
  212. package/graphqlFields/text.js.map +1 -1
  213. package/index.d.ts +3 -3
  214. package/index.js +3 -27
  215. package/index.js.map +1 -1
  216. package/modelManager/DefaultCmsModelManager.js +0 -16
  217. package/modelManager/DefaultCmsModelManager.js.map +1 -1
  218. package/modelManager/index.js +0 -4
  219. package/modelManager/index.js.map +1 -1
  220. package/package.json +27 -28
  221. package/parameters/context.js +0 -4
  222. package/parameters/context.js.map +1 -1
  223. package/parameters/header.js +0 -11
  224. package/parameters/header.js.map +1 -1
  225. package/parameters/index.js +0 -8
  226. package/parameters/index.js.map +1 -1
  227. package/parameters/manual.js +1 -8
  228. package/parameters/manual.js.map +1 -1
  229. package/parameters/path.js +0 -11
  230. package/parameters/path.js.map +1 -1
  231. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  232. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  233. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  234. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  235. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  236. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  237. package/plugins/CmsGroupPlugin.js +0 -8
  238. package/plugins/CmsGroupPlugin.js.map +1 -1
  239. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  240. package/plugins/CmsModelFieldConverterPlugin.js +0 -5
  241. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  242. package/plugins/CmsModelPlugin.d.ts +11 -1
  243. package/plugins/CmsModelPlugin.js +15 -40
  244. package/plugins/CmsModelPlugin.js.map +1 -1
  245. package/plugins/CmsParametersPlugin.js +0 -7
  246. package/plugins/CmsParametersPlugin.js.map +1 -1
  247. package/plugins/StorageTransformPlugin.d.ts +11 -11
  248. package/plugins/StorageTransformPlugin.js +0 -9
  249. package/plugins/StorageTransformPlugin.js.map +1 -1
  250. package/plugins/index.d.ts +2 -0
  251. package/plugins/index.js +22 -10
  252. package/plugins/index.js.map +1 -1
  253. package/storage/default.js +0 -3
  254. package/storage/default.js.map +1 -1
  255. package/storage/object.js +4 -20
  256. package/storage/object.js.map +1 -1
  257. package/types.d.ts +315 -77
  258. package/types.js +63 -70
  259. package/types.js.map +1 -1
  260. package/utils/access.js +11 -25
  261. package/utils/access.js.map +1 -1
  262. package/utils/converters/Converter.js +0 -13
  263. package/utils/converters/Converter.js.map +1 -1
  264. package/utils/converters/ConverterCollection.js +14 -34
  265. package/utils/converters/ConverterCollection.js.map +1 -1
  266. package/utils/converters/valueKeyStorageConverter.js +2 -27
  267. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  268. package/utils/createTypeFromFields.d.ts +16 -0
  269. package/utils/createTypeFromFields.js +67 -0
  270. package/utils/createTypeFromFields.js.map +1 -0
  271. package/utils/createTypeName.js +2 -9
  272. package/utils/createTypeName.js.map +1 -1
  273. package/utils/entryStorage.js +22 -35
  274. package/utils/entryStorage.js.map +1 -1
  275. package/utils/filterAsync.js +0 -5
  276. package/utils/filterAsync.js.map +1 -1
  277. package/utils/getBaseFieldType.d.ts +4 -0
  278. package/utils/getBaseFieldType.js +10 -0
  279. package/utils/getBaseFieldType.js.map +1 -0
  280. package/utils/getEntryDescription.d.ts +2 -0
  281. package/utils/getEntryDescription.js +17 -0
  282. package/utils/getEntryDescription.js.map +1 -0
  283. package/utils/getEntryImage.d.ts +2 -0
  284. package/utils/getEntryImage.js +17 -0
  285. package/utils/getEntryImage.js.map +1 -0
  286. package/utils/getEntryTitle.js +0 -9
  287. package/utils/getEntryTitle.js.map +1 -1
  288. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  289. package/utils/getSchemaFromFieldPlugins.js +23 -19
  290. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  291. package/utils/ownership.d.ts +3 -3
  292. package/utils/ownership.js +0 -8
  293. package/utils/ownership.js.map +1 -1
  294. package/utils/permissions.js +8 -23
  295. package/utils/permissions.js.map +1 -1
  296. package/utils/removeNullValues.d.ts +1 -0
  297. package/utils/removeNullValues.js +17 -0
  298. package/utils/removeNullValues.js.map +1 -0
  299. package/utils/removeUndefinedValues.d.ts +1 -0
  300. package/utils/removeUndefinedValues.js +17 -0
  301. package/utils/removeUndefinedValues.js.map +1 -0
  302. package/utils/renderFields.d.ts +2 -1
  303. package/utils/renderFields.js +10 -10
  304. package/utils/renderFields.js.map +1 -1
  305. package/utils/renderGetFilterFields.js +6 -14
  306. package/utils/renderGetFilterFields.js.map +1 -1
  307. package/utils/renderInputFields.d.ts +2 -1
  308. package/utils/renderInputFields.js +6 -9
  309. package/utils/renderInputFields.js.map +1 -1
  310. package/utils/renderListFilterFields.js +4 -10
  311. package/utils/renderListFilterFields.js.map +1 -1
  312. package/utils/renderSortEnum.d.ts +7 -4
  313. package/utils/renderSortEnum.js +21 -11
  314. package/utils/renderSortEnum.js.map +1 -1
  315. package/utils/toSlug.js +0 -4
  316. package/utils/toSlug.js.map +1 -1
  317. package/validators/dateGte.js +0 -7
  318. package/validators/dateGte.js.map +1 -1
  319. package/validators/dateLte.js +0 -7
  320. package/validators/dateLte.js.map +1 -1
  321. package/validators/dynamicZone.d.ts +2 -0
  322. package/validators/dynamicZone.js +20 -0
  323. package/validators/dynamicZone.js.map +1 -0
  324. package/validators/gte.js +0 -8
  325. package/validators/gte.js.map +1 -1
  326. package/validators/in.js +0 -8
  327. package/validators/in.js.map +1 -1
  328. package/validators/index.js +2 -16
  329. package/validators/index.js.map +1 -1
  330. package/validators/lte.js +0 -8
  331. package/validators/lte.js.map +1 -1
  332. package/validators/maxLength.js +0 -8
  333. package/validators/maxLength.js.map +1 -1
  334. package/validators/minLength.js +0 -8
  335. package/validators/minLength.js.map +1 -1
  336. package/validators/pattern.js +0 -9
  337. package/validators/pattern.js.map +1 -1
  338. package/validators/patternPlugins/email.js +0 -2
  339. package/validators/patternPlugins/email.js.map +1 -1
  340. package/validators/patternPlugins/index.js +0 -8
  341. package/validators/patternPlugins/index.js.map +1 -1
  342. package/validators/patternPlugins/lowerCase.js +0 -2
  343. package/validators/patternPlugins/lowerCase.js.map +1 -1
  344. package/validators/patternPlugins/lowerCaseSpace.js +0 -2
  345. package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
  346. package/validators/patternPlugins/upperCase.js +0 -2
  347. package/validators/patternPlugins/upperCase.js.map +1 -1
  348. package/validators/patternPlugins/upperCaseSpace.js +0 -2
  349. package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
  350. package/validators/patternPlugins/url.js +0 -2
  351. package/validators/patternPlugins/url.js.map +1 -1
  352. package/validators/required.js +0 -5
  353. package/validators/required.js.map +1 -1
  354. package/validators/timeGte.js +0 -8
  355. package/validators/timeGte.js.map +1 -1
  356. package/validators/timeLte.js +0 -8
  357. package/validators/timeLte.js.map +1 -1
  358. package/validators/unique.js +0 -7
  359. package/validators/unique.js.map +1 -1
  360. package/crud/index.d.ts +0 -6
  361. package/crud/index.js +0 -85
  362. package/crud/index.js.map +0 -1
  363. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  364. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  365. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  366. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  367. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  368. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  369. package/utils/filterModelFields.d.ts +0 -16
  370. package/utils/filterModelFields.js +0 -77
  371. package/utils/filterModelFields.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["getStoragePluginFactory","context","defaultStoragePlugin","plugins","byType","StorageTransformPlugin","type","reverse","reduce","collection","plugin","fieldType","entryStorageTransform","model","operation","entry","getStoragePlugin","transformedValues","field","fields","WebinyError","name","fieldId","value","values","entryToStorageTransform","entryFromStorageTransform","entryFieldFromStorageTransform","params","fromStorage"],"sources":["entryStorage.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"~/plugins/StorageTransformPlugin\";\nimport { CmsEntry, CmsModel, CmsModelField, CmsContext } from \"~/types\";\n\ninterface GetStoragePluginFactory {\n (context: CmsContext): (fieldType: string) => StorageTransformPlugin<any>;\n}\n\nconst getStoragePluginFactory: GetStoragePluginFactory = context => {\n let defaultStoragePlugin: StorageTransformPlugin;\n\n const plugins = context.plugins\n .byType<StorageTransformPlugin>(StorageTransformPlugin.type)\n // we reverse plugins because we want to get latest added only\n .reverse()\n .reduce((collection, plugin) => {\n // check if it's a default plugin\n if (plugin.fieldType === \"*\" && !defaultStoragePlugin) {\n defaultStoragePlugin = plugin;\n return collection;\n }\n\n /**\n * either existing plugin added or plugin fieldType does not exist in current model\n * this is to iterate a bit less later\n */\n if (!collection[plugin.fieldType]) {\n collection[plugin.fieldType] = plugin;\n }\n\n return collection;\n }, {} as Record<string, StorageTransformPlugin>);\n\n return (fieldType: string) => {\n return plugins[fieldType] || defaultStoragePlugin;\n };\n};\n\n/**\n * This should be used when transforming the whole entry.\n */\nconst entryStorageTransform = async (\n context: CmsContext,\n model: CmsModel,\n operation: \"toStorage\" | \"fromStorage\",\n entry: CmsEntry\n): Promise<CmsEntry> => {\n const getStoragePlugin = getStoragePluginFactory(context);\n\n const transformedValues: Record<string, any> = {};\n for (const field of model.fields) {\n const plugin = getStoragePlugin(field.type);\n // TODO: remove this once plugins are converted into classes\n if (typeof plugin[operation] !== \"function\") {\n throw new WebinyError(\n `Missing \"${operation}\" function in storage plugin \"${plugin.name}\" for field type \"${field.type}\"`\n );\n }\n\n transformedValues[field.fieldId] = await plugin[operation]({\n plugins: context.plugins,\n model,\n field,\n value: entry.values[field.fieldId],\n getStoragePlugin\n });\n }\n\n return { ...entry, values: transformedValues };\n};\n\n/**\n * A function that is used in crud to transform entry into the storage type.\n */\nexport const entryToStorageTransform = async (\n context: CmsContext,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"toStorage\", entry);\n};\n\n/**\n * A function that is used to transform the whole entry from storage into its native form.\n */\nexport const entryFromStorageTransform = async (\n context: CmsContext,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"fromStorage\", entry);\n};\n\ninterface EntryFieldFromStorageTransformParams {\n context: CmsContext;\n model: CmsModel;\n field: CmsModelField;\n value: any;\n}\n/*\n * A function that is used to transform a single field from storage\n */\nexport const entryFieldFromStorageTransform = async <T = any>(\n params: EntryFieldFromStorageTransformParams\n): Promise<T> => {\n const { context, model, field, value } = params;\n const getStoragePlugin = getStoragePluginFactory(context);\n\n const plugin = getStoragePlugin(field.type);\n\n // TODO: remove this once plugins are converted into classes\n if (typeof plugin.fromStorage !== \"function\") {\n throw new WebinyError(\n `Missing \"fromStorage\" function in storage plugin \"${plugin.name}\" for field type \"${field.type}\"`\n );\n }\n\n return plugin.fromStorage({\n plugins: context.plugins,\n model,\n field,\n value,\n getStoragePlugin\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAOA,MAAMA,uBAAgD,GAAGC,OAAO,IAAI;EAChE,IAAIC,oBAAJ;EAEA,MAAMC,OAAO,GAAGF,OAAO,CAACE,OAAR,CACXC,MADW,CACoBC,8CAAA,CAAuBC,IAD3C,EAEZ;EAFY,CAGXC,OAHW,GAIXC,MAJW,CAIJ,CAACC,UAAD,EAAaC,MAAb,KAAwB;IAC5B;IACA,IAAIA,MAAM,CAACC,SAAP,KAAqB,GAArB,IAA4B,CAACT,oBAAjC,EAAuD;MACnDA,oBAAoB,GAAGQ,MAAvB;MACA,OAAOD,UAAP;IACH;IAED;AACZ;AACA;AACA;;;IACY,IAAI,CAACA,UAAU,CAACC,MAAM,CAACC,SAAR,CAAf,EAAmC;MAC/BF,UAAU,CAACC,MAAM,CAACC,SAAR,CAAV,GAA+BD,MAA/B;IACH;;IAED,OAAOD,UAAP;EACH,CApBW,EAoBT,EApBS,CAAhB;EAsBA,OAAQE,SAAD,IAAuB;IAC1B,OAAOR,OAAO,CAACQ,SAAD,CAAP,IAAsBT,oBAA7B;EACH,CAFD;AAGH,CA5BD;AA8BA;AACA;AACA;;;AACA,MAAMU,qBAAqB,GAAG,OAC1BX,OAD0B,EAE1BY,KAF0B,EAG1BC,SAH0B,EAI1BC,KAJ0B,KAKN;EACpB,MAAMC,gBAAgB,GAAGhB,uBAAuB,CAACC,OAAD,CAAhD;EAEA,MAAMgB,iBAAsC,GAAG,EAA/C;;EACA,KAAK,MAAMC,KAAX,IAAoBL,KAAK,CAACM,MAA1B,EAAkC;IAC9B,MAAMT,MAAM,GAAGM,gBAAgB,CAACE,KAAK,CAACZ,IAAP,CAA/B,CAD8B,CAE9B;;IACA,IAAI,OAAOI,MAAM,CAACI,SAAD,CAAb,KAA6B,UAAjC,EAA6C;MACzC,MAAM,IAAIM,cAAJ,CACD,YAAWN,SAAU,iCAAgCJ,MAAM,CAACW,IAAK,qBAAoBH,KAAK,CAACZ,IAAK,GAD/F,CAAN;IAGH;;IAEDW,iBAAiB,CAACC,KAAK,CAACI,OAAP,CAAjB,GAAmC,MAAMZ,MAAM,CAACI,SAAD,CAAN,CAAkB;MACvDX,OAAO,EAAEF,OAAO,CAACE,OADsC;MAEvDU,KAFuD;MAGvDK,KAHuD;MAIvDK,KAAK,EAAER,KAAK,CAACS,MAAN,CAAaN,KAAK,CAACI,OAAnB,CAJgD;MAKvDN;IALuD,CAAlB,CAAzC;EAOH;;EAED,mEAAYD,KAAZ;IAAmBS,MAAM,EAAEP;EAA3B;AACH,CA5BD;AA8BA;AACA;AACA;;;AACO,MAAMQ,uBAAuB,GAAG,OACnCxB,OADmC,EAEnCY,KAFmC,EAGnCE,KAHmC,KAIf;EACpB,OAAOH,qBAAqB,CAACX,OAAD,EAAUY,KAAV,EAAiB,WAAjB,EAA8BE,KAA9B,CAA5B;AACH,CANM;AAQP;AACA;AACA;;;;;AACO,MAAMW,yBAAyB,GAAG,OACrCzB,OADqC,EAErCY,KAFqC,EAGrCE,KAHqC,KAIjB;EACpB,OAAOH,qBAAqB,CAACX,OAAD,EAAUY,KAAV,EAAiB,aAAjB,EAAgCE,KAAhC,CAA5B;AACH,CANM;;;;AAcP;AACA;AACA;AACO,MAAMY,8BAA8B,GAAG,MAC1CC,MAD0C,IAE7B;EACb,MAAM;IAAE3B,OAAF;IAAWY,KAAX;IAAkBK,KAAlB;IAAyBK;EAAzB,IAAmCK,MAAzC;EACA,MAAMZ,gBAAgB,GAAGhB,uBAAuB,CAACC,OAAD,CAAhD;EAEA,MAAMS,MAAM,GAAGM,gBAAgB,CAACE,KAAK,CAACZ,IAAP,CAA/B,CAJa,CAMb;;EACA,IAAI,OAAOI,MAAM,CAACmB,WAAd,KAA8B,UAAlC,EAA8C;IAC1C,MAAM,IAAIT,cAAJ,CACD,qDAAoDV,MAAM,CAACW,IAAK,qBAAoBH,KAAK,CAACZ,IAAK,GAD9F,CAAN;EAGH;;EAED,OAAOI,MAAM,CAACmB,WAAP,CAAmB;IACtB1B,OAAO,EAAEF,OAAO,CAACE,OADK;IAEtBU,KAFsB;IAGtBK,KAHsB;IAItBK,KAJsB;IAKtBP;EALsB,CAAnB,CAAP;AAOH,CAtBM"}
1
+ {"version":3,"names":["getStoragePluginFactory","context","defaultStoragePlugin","plugins","byType","StorageTransformPlugin","type","reverse","reduce","collection","plugin","fieldType","entryStorageTransform","model","operation","entry","getStoragePlugin","transformedValues","field","fields","baseType","getBaseFieldType","WebinyError","name","fieldId","value","values","entryToStorageTransform","entryFromStorageTransform","entryFieldFromStorageTransform","params","fromStorage"],"sources":["entryStorage.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { StorageTransformPlugin } from \"~/plugins/StorageTransformPlugin\";\nimport { CmsEntry, CmsModel, CmsModelField, CmsContext } from \"~/types\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\n\ninterface GetStoragePluginFactory {\n (context: CmsContext): (fieldType: string) => StorageTransformPlugin<any>;\n}\n\nconst getStoragePluginFactory: GetStoragePluginFactory = context => {\n let defaultStoragePlugin: StorageTransformPlugin;\n\n const plugins = context.plugins\n .byType<StorageTransformPlugin>(StorageTransformPlugin.type)\n // we reverse plugins because we want to get latest added only\n .reverse()\n .reduce((collection, plugin) => {\n /**\n * Check if it's a default plugin and set it - always override the previous one.\n */\n if (plugin.fieldType === \"*\") {\n defaultStoragePlugin = plugin;\n return collection;\n }\n\n /**\n * We will just set the plugin for given type.\n * The last one will override existing one - so users can override our default ones.\n */\n collection[plugin.fieldType] = plugin;\n\n return collection;\n }, {} as Record<string, StorageTransformPlugin>);\n\n return (fieldType: string) => {\n return plugins[fieldType] || defaultStoragePlugin;\n };\n};\n\n/**\n * This should be used when transforming the whole entry.\n */\nconst entryStorageTransform = async (\n context: CmsContext,\n model: CmsModel,\n operation: \"toStorage\" | \"fromStorage\",\n entry: CmsEntry\n): Promise<CmsEntry> => {\n const getStoragePlugin = getStoragePluginFactory(context);\n\n const transformedValues: Record<string, any> = {};\n for (const field of model.fields) {\n const baseType = getBaseFieldType(field);\n const plugin = getStoragePlugin(baseType);\n // TODO: remove this once plugins are converted into classes\n if (typeof plugin[operation] !== \"function\") {\n throw new WebinyError(\n `Missing \"${operation}\" function in storage plugin \"${plugin.name}\" for field type \"${baseType}\"`\n );\n }\n\n transformedValues[field.fieldId] = await plugin[operation]({\n plugins: context.plugins,\n model,\n field,\n value: entry.values[field.fieldId],\n getStoragePlugin\n });\n }\n\n return { ...entry, values: transformedValues };\n};\n\n/**\n * A function that is used in crud to transform entry into the storage type.\n */\nexport const entryToStorageTransform = async (\n context: CmsContext,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"toStorage\", entry);\n};\n\n/**\n * A function that is used to transform the whole entry from storage into its native form.\n */\nexport const entryFromStorageTransform = async (\n context: CmsContext,\n model: CmsModel,\n entry: CmsEntry\n): Promise<CmsEntry> => {\n return entryStorageTransform(context, model, \"fromStorage\", entry);\n};\n\ninterface EntryFieldFromStorageTransformParams {\n context: CmsContext;\n model: CmsModel;\n field: CmsModelField;\n value: any;\n}\n/*\n * A function that is used to transform a single field from storage\n */\nexport const entryFieldFromStorageTransform = async <T = any>(\n params: EntryFieldFromStorageTransformParams\n): Promise<T> => {\n const { context, model, field, value } = params;\n const getStoragePlugin = getStoragePluginFactory(context);\n\n const baseType = getBaseFieldType(field);\n const plugin = getStoragePlugin(baseType);\n\n // TODO: remove this once plugins are converted into classes\n if (typeof plugin.fromStorage !== \"function\") {\n throw new WebinyError(\n `Missing \"fromStorage\" function in storage plugin \"${plugin.name}\" for field type \"${baseType}\"`\n );\n }\n\n return plugin.fromStorage({\n plugins: context.plugins,\n model,\n field,\n value,\n getStoragePlugin\n });\n};\n"],"mappings":"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"}
@@ -4,20 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.filterAsync = void 0;
7
-
8
7
  const filterAsync = async (items, predicate) => {
9
8
  const filteredItems = [];
10
-
11
9
  for (let i = 0; i < items.length; i++) {
12
10
  const item = items[i];
13
11
  const valid = await predicate(item);
14
-
15
12
  if (valid) {
16
13
  filteredItems.push(item);
17
14
  }
18
15
  }
19
-
20
16
  return filteredItems;
21
17
  };
22
-
23
18
  exports.filterAsync = filterAsync;
@@ -1 +1 @@
1
- {"version":3,"names":["filterAsync","items","predicate","filteredItems","i","length","item","valid","push"],"sources":["filterAsync.ts"],"sourcesContent":["export const filterAsync = async <T = Record<string, any>>(\n items: T[],\n predicate: (param: T) => Promise<boolean>\n): Promise<T[]> => {\n const filteredItems = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const valid = await predicate(item);\n if (valid) {\n filteredItems.push(item);\n }\n }\n\n return filteredItems;\n};\n"],"mappings":";;;;;;;AAAO,MAAMA,WAAW,GAAG,OACvBC,KADuB,EAEvBC,SAFuB,KAGR;EACf,MAAMC,aAAa,GAAG,EAAtB;;EAEA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,KAAK,CAACI,MAA1B,EAAkCD,CAAC,EAAnC,EAAuC;IACnC,MAAME,IAAI,GAAGL,KAAK,CAACG,CAAD,CAAlB;IACA,MAAMG,KAAK,GAAG,MAAML,SAAS,CAACI,IAAD,CAA7B;;IACA,IAAIC,KAAJ,EAAW;MACPJ,aAAa,CAACK,IAAd,CAAmBF,IAAnB;IACH;EACJ;;EAED,OAAOH,aAAP;AACH,CAfM"}
1
+ {"version":3,"names":["filterAsync","items","predicate","filteredItems","i","length","item","valid","push"],"sources":["filterAsync.ts"],"sourcesContent":["export const filterAsync = async <T = Record<string, any>>(\n items: T[],\n predicate: (param: T) => Promise<boolean>\n): Promise<T[]> => {\n const filteredItems = [];\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const valid = await predicate(item);\n if (valid) {\n filteredItems.push(item);\n }\n }\n\n return filteredItems;\n};\n"],"mappings":";;;;;;AAAO,MAAMA,WAAW,GAAG,OACvBC,KAAU,EACVC,SAAyC,KAC1B;EACf,MAAMC,aAAa,GAAG,EAAE;EAExB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;IACnC,MAAME,IAAI,GAAGL,KAAK,CAACG,CAAC,CAAC;IACrB,MAAMG,KAAK,GAAG,MAAML,SAAS,CAACI,IAAI,CAAC;IACnC,IAAIC,KAAK,EAAE;MACPJ,aAAa,CAACK,IAAI,CAACF,IAAI,CAAC;IAC5B;EACJ;EAEA,OAAOH,aAAa;AACxB,CAAC;AAAC"}
@@ -0,0 +1,4 @@
1
+ import { CmsModelField } from "../types";
2
+ export declare const getBaseFieldType: (field: {
3
+ type: CmsModelField["type"];
4
+ }) => string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getBaseFieldType = void 0;
7
+ const getBaseFieldType = field => {
8
+ return field.type.split(":")[0];
9
+ };
10
+ exports.getBaseFieldType = getBaseFieldType;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getBaseFieldType","field","type","split"],"sources":["getBaseFieldType.ts"],"sourcesContent":["import { CmsModelField } from \"~/types\";\n\nexport const getBaseFieldType = (field: { type: CmsModelField[\"type\"] }) => {\n return field.type.split(\":\")[0];\n};\n"],"mappings":";;;;;;AAEO,MAAMA,gBAAgB,GAAIC,KAAsC,IAAK;EACxE,OAAOA,KAAK,CAACC,IAAI,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAAC"}
@@ -0,0 +1,2 @@
1
+ import { CmsEntry, CmsModel } from "../types";
2
+ export declare function getEntryDescription(model: CmsModel, entry: CmsEntry): string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getEntryDescription = getEntryDescription;
7
+ function getEntryDescription(model, entry) {
8
+ if (!model.descriptionFieldId) {
9
+ return "";
10
+ }
11
+ const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);
12
+ if (!field) {
13
+ return "";
14
+ }
15
+ const descriptionFieldId = field.fieldId;
16
+ return entry.values[descriptionFieldId] || "";
17
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getEntryDescription","model","entry","descriptionFieldId","field","fields","find","f","fieldId","values"],"sources":["getEntryDescription.ts"],"sourcesContent":["import { CmsEntry, CmsModel } from \"~/types\";\n\nexport function getEntryDescription(model: CmsModel, entry: CmsEntry): string {\n if (!model.descriptionFieldId) {\n return \"\";\n }\n const field = model.fields.find(f => f.fieldId === model.descriptionFieldId);\n if (!field) {\n return \"\";\n }\n const descriptionFieldId = field.fieldId;\n return entry.values[descriptionFieldId] || \"\";\n}\n"],"mappings":";;;;;;AAEO,SAASA,mBAAmB,CAACC,KAAe,EAAEC,KAAe,EAAU;EAC1E,IAAI,CAACD,KAAK,CAACE,kBAAkB,EAAE;IAC3B,OAAO,EAAE;EACb;EACA,MAAMC,KAAK,GAAGH,KAAK,CAACI,MAAM,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,OAAO,KAAKP,KAAK,CAACE,kBAAkB,CAAC;EAC5E,IAAI,CAACC,KAAK,EAAE;IACR,OAAO,EAAE;EACb;EACA,MAAMD,kBAAkB,GAAGC,KAAK,CAACI,OAAO;EACxC,OAAON,KAAK,CAACO,MAAM,CAACN,kBAAkB,CAAC,IAAI,EAAE;AACjD"}
@@ -0,0 +1,2 @@
1
+ import { CmsEntry, CmsModel } from "../types";
2
+ export declare function getEntryImage(model: CmsModel, entry: CmsEntry): string | null;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getEntryImage = getEntryImage;
7
+ function getEntryImage(model, entry) {
8
+ if (!model.imageFieldId) {
9
+ return null;
10
+ }
11
+ const field = model.fields.find(f => f.fieldId === model.imageFieldId);
12
+ if (!field) {
13
+ return null;
14
+ }
15
+ const imageFieldId = field.fieldId;
16
+ return entry.values[imageFieldId] || null;
17
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getEntryImage","model","entry","imageFieldId","field","fields","find","f","fieldId","values"],"sources":["getEntryImage.ts"],"sourcesContent":["import { CmsEntry, CmsModel } from \"~/types\";\n\nexport function getEntryImage(model: CmsModel, entry: CmsEntry): string | null {\n if (!model.imageFieldId) {\n return null;\n }\n const field = model.fields.find(f => f.fieldId === model.imageFieldId);\n if (!field) {\n return null;\n }\n const imageFieldId = field.fieldId;\n return entry.values[imageFieldId] || null;\n}\n"],"mappings":";;;;;;AAEO,SAASA,aAAa,CAACC,KAAe,EAAEC,KAAe,EAAiB;EAC3E,IAAI,CAACD,KAAK,CAACE,YAAY,EAAE;IACrB,OAAO,IAAI;EACf;EACA,MAAMC,KAAK,GAAGH,KAAK,CAACI,MAAM,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,OAAO,KAAKP,KAAK,CAACE,YAAY,CAAC;EACtE,IAAI,CAACC,KAAK,EAAE;IACR,OAAO,IAAI;EACf;EACA,MAAMD,YAAY,GAAGC,KAAK,CAACI,OAAO;EAClC,OAAON,KAAK,CAACO,MAAM,CAACN,YAAY,CAAC,IAAI,IAAI;AAC7C"}
@@ -4,40 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getEntryTitle = getEntryTitle;
7
-
8
7
  function getEntryTitle(model, entry) {
9
8
  if (!model.titleFieldId) {
10
9
  return entry.id;
11
10
  }
12
-
13
11
  const field = model.fields.find(f => f.fieldId === model.titleFieldId);
14
-
15
12
  if (!field) {
16
13
  return entry.id;
17
14
  }
18
-
19
15
  const titleFieldId = field.fieldId;
20
16
  const titleValue = entry.values[titleFieldId];
21
-
22
17
  if (!titleValue) {
23
18
  return entry.id;
24
19
  }
25
-
26
20
  const {
27
21
  enabled = false,
28
22
  values
29
23
  } = field.predefinedValues || {};
30
-
31
24
  if (!enabled || !values || Array.isArray(values) === false) {
32
25
  return titleValue;
33
26
  }
34
-
35
27
  for (const value of values) {
36
28
  // needs to be loose because titleValue can be a number and value can be a string - but it must match
37
29
  if (value.value == titleValue) {
38
30
  return value.label;
39
31
  }
40
32
  }
41
-
42
33
  return titleValue;
43
34
  }
@@ -1 +1 @@
1
- {"version":3,"names":["getEntryTitle","model","entry","titleFieldId","id","field","fields","find","f","fieldId","titleValue","values","enabled","predefinedValues","Array","isArray","value","label"],"sources":["getEntryTitle.ts"],"sourcesContent":["import { CmsEntry, CmsModel } from \"~/types\";\n\nexport function getEntryTitle(model: CmsModel, entry: CmsEntry): string {\n if (!model.titleFieldId) {\n return entry.id;\n }\n const field = model.fields.find(f => f.fieldId === model.titleFieldId);\n if (!field) {\n return entry.id;\n }\n const titleFieldId = field.fieldId;\n const titleValue = entry.values[titleFieldId];\n if (!titleValue) {\n return entry.id;\n }\n\n const { enabled = false, values } = field.predefinedValues || {};\n if (!enabled || !values || Array.isArray(values) === false) {\n return titleValue;\n }\n for (const value of values) {\n // needs to be loose because titleValue can be a number and value can be a string - but it must match\n if (value.value == titleValue) {\n return value.label;\n }\n }\n return titleValue;\n}\n"],"mappings":";;;;;;;AAEO,SAASA,aAAT,CAAuBC,KAAvB,EAAwCC,KAAxC,EAAiE;EACpE,IAAI,CAACD,KAAK,CAACE,YAAX,EAAyB;IACrB,OAAOD,KAAK,CAACE,EAAb;EACH;;EACD,MAAMC,KAAK,GAAGJ,KAAK,CAACK,MAAN,CAAaC,IAAb,CAAkBC,CAAC,IAAIA,CAAC,CAACC,OAAF,KAAcR,KAAK,CAACE,YAA3C,CAAd;;EACA,IAAI,CAACE,KAAL,EAAY;IACR,OAAOH,KAAK,CAACE,EAAb;EACH;;EACD,MAAMD,YAAY,GAAGE,KAAK,CAACI,OAA3B;EACA,MAAMC,UAAU,GAAGR,KAAK,CAACS,MAAN,CAAaR,YAAb,CAAnB;;EACA,IAAI,CAACO,UAAL,EAAiB;IACb,OAAOR,KAAK,CAACE,EAAb;EACH;;EAED,MAAM;IAAEQ,OAAO,GAAG,KAAZ;IAAmBD;EAAnB,IAA8BN,KAAK,CAACQ,gBAAN,IAA0B,EAA9D;;EACA,IAAI,CAACD,OAAD,IAAY,CAACD,MAAb,IAAuBG,KAAK,CAACC,OAAN,CAAcJ,MAAd,MAA0B,KAArD,EAA4D;IACxD,OAAOD,UAAP;EACH;;EACD,KAAK,MAAMM,KAAX,IAAoBL,MAApB,EAA4B;IACxB;IACA,IAAIK,KAAK,CAACA,KAAN,IAAeN,UAAnB,EAA+B;MAC3B,OAAOM,KAAK,CAACC,KAAb;IACH;EACJ;;EACD,OAAOP,UAAP;AACH"}
1
+ {"version":3,"names":["getEntryTitle","model","entry","titleFieldId","id","field","fields","find","f","fieldId","titleValue","values","enabled","predefinedValues","Array","isArray","value","label"],"sources":["getEntryTitle.ts"],"sourcesContent":["import { CmsEntry, CmsModel } from \"~/types\";\n\nexport function getEntryTitle(model: CmsModel, entry: CmsEntry): string {\n if (!model.titleFieldId) {\n return entry.id;\n }\n const field = model.fields.find(f => f.fieldId === model.titleFieldId);\n if (!field) {\n return entry.id;\n }\n const titleFieldId = field.fieldId;\n const titleValue = entry.values[titleFieldId];\n if (!titleValue) {\n return entry.id;\n }\n\n const { enabled = false, values } = field.predefinedValues || {};\n if (!enabled || !values || Array.isArray(values) === false) {\n return titleValue;\n }\n for (const value of values) {\n // needs to be loose because titleValue can be a number and value can be a string - but it must match\n if (value.value == titleValue) {\n return value.label;\n }\n }\n return titleValue;\n}\n"],"mappings":";;;;;;AAEO,SAASA,aAAa,CAACC,KAAe,EAAEC,KAAe,EAAU;EACpE,IAAI,CAACD,KAAK,CAACE,YAAY,EAAE;IACrB,OAAOD,KAAK,CAACE,EAAE;EACnB;EACA,MAAMC,KAAK,GAAGJ,KAAK,CAACK,MAAM,CAACC,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACC,OAAO,KAAKR,KAAK,CAACE,YAAY,CAAC;EACtE,IAAI,CAACE,KAAK,EAAE;IACR,OAAOH,KAAK,CAACE,EAAE;EACnB;EACA,MAAMD,YAAY,GAAGE,KAAK,CAACI,OAAO;EAClC,MAAMC,UAAU,GAAGR,KAAK,CAACS,MAAM,CAACR,YAAY,CAAC;EAC7C,IAAI,CAACO,UAAU,EAAE;IACb,OAAOR,KAAK,CAACE,EAAE;EACnB;EAEA,MAAM;IAAEQ,OAAO,GAAG,KAAK;IAAED;EAAO,CAAC,GAAGN,KAAK,CAACQ,gBAAgB,IAAI,CAAC,CAAC;EAChE,IAAI,CAACD,OAAO,IAAI,CAACD,MAAM,IAAIG,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,KAAK,KAAK,EAAE;IACxD,OAAOD,UAAU;EACrB;EACA,KAAK,MAAMM,KAAK,IAAIL,MAAM,EAAE;IACxB;IACA,IAAIK,KAAK,CAACA,KAAK,IAAIN,UAAU,EAAE;MAC3B,OAAOM,KAAK,CAACC,KAAK;IACtB;EACJ;EACA,OAAOP,UAAU;AACrB"}
@@ -1,12 +1,9 @@
1
- import { CmsModel, CmsContext, CmsFieldTypePlugins, ApiEndpoint } from "../types";
2
- import { GraphQLSchemaDefinition } from "@webiny/handler-graphql/types";
3
- interface RenderTypesFromFieldPluginsParams {
1
+ import { CmsModel, CmsFieldTypePlugins, ApiEndpoint } from "../types";
2
+ import { CmsGraphQLSchemaPlugin } from "../plugins";
3
+ interface Params {
4
4
  models: CmsModel[];
5
5
  fieldTypePlugins: CmsFieldTypePlugins;
6
6
  type: ApiEndpoint;
7
7
  }
8
- interface RenderTypesFromFieldPlugins {
9
- (params: RenderTypesFromFieldPluginsParams): GraphQLSchemaDefinition<CmsContext>[];
10
- }
11
- export declare const getSchemaFromFieldPlugins: RenderTypesFromFieldPlugins;
8
+ export declare const createGraphQLSchemaPluginFromFieldPlugins: (params: Params) => CmsGraphQLSchemaPlugin<import("../types").CmsContext>[];
12
9
  export {};
@@ -3,33 +3,37 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getSchemaFromFieldPlugins = void 0;
6
+ exports.createGraphQLSchemaPluginFromFieldPlugins = void 0;
7
+ var _plugins = require("../plugins");
7
8
  const TYPE_MAP = {
8
9
  preview: "read",
9
10
  read: "read",
10
11
  manage: "manage"
11
12
  };
12
-
13
- const getSchemaFromFieldPlugins = ({
14
- models,
15
- fieldTypePlugins,
16
- type
17
- }) => {
18
- return Object.values(fieldTypePlugins).map(plugin => {
19
- if (!TYPE_MAP[type] || !plugin[TYPE_MAP[type]]) {
20
- return null;
13
+ const createGraphQLSchemaPluginFromFieldPlugins = params => {
14
+ const {
15
+ models,
16
+ fieldTypePlugins,
17
+ type
18
+ } = params;
19
+ const plugins = [];
20
+ for (const key in fieldTypePlugins) {
21
+ const fieldTypePlugin = fieldTypePlugins[key];
22
+ if (!TYPE_MAP[type] || !fieldTypePlugin[TYPE_MAP[type]]) {
23
+ continue;
21
24
  }
22
-
23
- const createSchema = plugin[TYPE_MAP[type]].createSchema; // Render gql types generated by field type plugins
24
-
25
+ const createSchema = fieldTypePlugin[TYPE_MAP[type]].createSchema;
26
+ // Render gql types generated by field type plugins
25
27
  if (!createSchema) {
26
- return null;
28
+ continue;
27
29
  }
28
-
29
- return createSchema({
30
+ const schema = createSchema({
30
31
  models
31
32
  });
32
- }).filter(Boolean);
33
+ const plugin = new _plugins.CmsGraphQLSchemaPlugin(schema);
34
+ plugin.name = `headless-cms.graphql.schema.${type}.field.${fieldTypePlugin.fieldType}`;
35
+ plugins.push(plugin);
36
+ }
37
+ return plugins;
33
38
  };
34
-
35
- exports.getSchemaFromFieldPlugins = getSchemaFromFieldPlugins;
39
+ exports.createGraphQLSchemaPluginFromFieldPlugins = createGraphQLSchemaPluginFromFieldPlugins;
@@ -1 +1 @@
1
- {"version":3,"names":["TYPE_MAP","preview","read","manage","getSchemaFromFieldPlugins","models","fieldTypePlugins","type","Object","values","map","plugin","createSchema","filter","Boolean"],"sources":["getSchemaFromFieldPlugins.ts"],"sourcesContent":["import { CmsModel, CmsContext, CmsFieldTypePlugins, ApiEndpoint } from \"~/types\";\nimport { GraphQLSchemaDefinition } from \"@webiny/handler-graphql/types\";\n\ninterface RenderTypesFromFieldPluginsParams {\n models: CmsModel[];\n fieldTypePlugins: CmsFieldTypePlugins;\n type: ApiEndpoint;\n}\ninterface RenderTypesFromFieldPlugins {\n (params: RenderTypesFromFieldPluginsParams): GraphQLSchemaDefinition<CmsContext>[];\n}\n\nconst TYPE_MAP: Record<string, \"manage\" | \"read\"> = {\n preview: \"read\",\n read: \"read\",\n manage: \"manage\"\n};\n\nexport const getSchemaFromFieldPlugins: RenderTypesFromFieldPlugins = ({\n models,\n fieldTypePlugins,\n type\n}) => {\n return Object.values(fieldTypePlugins)\n .map(plugin => {\n if (!TYPE_MAP[type] || !plugin[TYPE_MAP[type]]) {\n return null;\n }\n const createSchema = plugin[TYPE_MAP[type]].createSchema;\n // Render gql types generated by field type plugins\n if (!createSchema) {\n return null;\n }\n return createSchema({ models });\n })\n .filter(Boolean) as GraphQLSchemaDefinition<CmsContext>[];\n};\n"],"mappings":";;;;;;AAYA,MAAMA,QAA2C,GAAG;EAChDC,OAAO,EAAE,MADuC;EAEhDC,IAAI,EAAE,MAF0C;EAGhDC,MAAM,EAAE;AAHwC,CAApD;;AAMO,MAAMC,yBAAsD,GAAG,CAAC;EACnEC,MADmE;EAEnEC,gBAFmE;EAGnEC;AAHmE,CAAD,KAIhE;EACF,OAAOC,MAAM,CAACC,MAAP,CAAcH,gBAAd,EACFI,GADE,CACEC,MAAM,IAAI;IACX,IAAI,CAACX,QAAQ,CAACO,IAAD,CAAT,IAAmB,CAACI,MAAM,CAACX,QAAQ,CAACO,IAAD,CAAT,CAA9B,EAAgD;MAC5C,OAAO,IAAP;IACH;;IACD,MAAMK,YAAY,GAAGD,MAAM,CAACX,QAAQ,CAACO,IAAD,CAAT,CAAN,CAAuBK,YAA5C,CAJW,CAKX;;IACA,IAAI,CAACA,YAAL,EAAmB;MACf,OAAO,IAAP;IACH;;IACD,OAAOA,YAAY,CAAC;MAAEP;IAAF,CAAD,CAAnB;EACH,CAXE,EAYFQ,MAZE,CAYKC,OAZL,CAAP;AAaH,CAlBM"}
1
+ {"version":3,"names":["TYPE_MAP","preview","read","manage","createGraphQLSchemaPluginFromFieldPlugins","params","models","fieldTypePlugins","type","plugins","key","fieldTypePlugin","createSchema","schema","plugin","CmsGraphQLSchemaPlugin","name","fieldType","push"],"sources":["getSchemaFromFieldPlugins.ts"],"sourcesContent":["import { CmsModel, CmsFieldTypePlugins, ApiEndpoint } from \"~/types\";\nimport { CmsGraphQLSchemaPlugin } from \"~/plugins\";\n\nconst TYPE_MAP: Record<string, \"manage\" | \"read\"> = {\n preview: \"read\",\n read: \"read\",\n manage: \"manage\"\n};\n\ninterface Params {\n models: CmsModel[];\n fieldTypePlugins: CmsFieldTypePlugins;\n type: ApiEndpoint;\n}\nexport const createGraphQLSchemaPluginFromFieldPlugins = (params: Params) => {\n const { models, fieldTypePlugins, type } = params;\n\n const plugins: CmsGraphQLSchemaPlugin[] = [];\n for (const key in fieldTypePlugins) {\n const fieldTypePlugin = fieldTypePlugins[key];\n if (!TYPE_MAP[type] || !fieldTypePlugin[TYPE_MAP[type]]) {\n continue;\n }\n const createSchema = fieldTypePlugin[TYPE_MAP[type]].createSchema;\n // Render gql types generated by field type plugins\n if (!createSchema) {\n continue;\n }\n const schema = createSchema({ models });\n\n const plugin = new CmsGraphQLSchemaPlugin(schema);\n plugin.name = `headless-cms.graphql.schema.${type}.field.${fieldTypePlugin.fieldType}`;\n plugins.push(plugin);\n }\n return plugins;\n};\n"],"mappings":";;;;;;AACA;AAEA,MAAMA,QAA2C,GAAG;EAChDC,OAAO,EAAE,MAAM;EACfC,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACZ,CAAC;AAOM,MAAMC,yCAAyC,GAAIC,MAAc,IAAK;EACzE,MAAM;IAAEC,MAAM;IAAEC,gBAAgB;IAAEC;EAAK,CAAC,GAAGH,MAAM;EAEjD,MAAMI,OAAiC,GAAG,EAAE;EAC5C,KAAK,MAAMC,GAAG,IAAIH,gBAAgB,EAAE;IAChC,MAAMI,eAAe,GAAGJ,gBAAgB,CAACG,GAAG,CAAC;IAC7C,IAAI,CAACV,QAAQ,CAACQ,IAAI,CAAC,IAAI,CAACG,eAAe,CAACX,QAAQ,CAACQ,IAAI,CAAC,CAAC,EAAE;MACrD;IACJ;IACA,MAAMI,YAAY,GAAGD,eAAe,CAACX,QAAQ,CAACQ,IAAI,CAAC,CAAC,CAACI,YAAY;IACjE;IACA,IAAI,CAACA,YAAY,EAAE;MACf;IACJ;IACA,MAAMC,MAAM,GAAGD,YAAY,CAAC;MAAEN;IAAO,CAAC,CAAC;IAEvC,MAAMQ,MAAM,GAAG,IAAIC,+BAAsB,CAACF,MAAM,CAAC;IACjDC,MAAM,CAACE,IAAI,GAAI,+BAA8BR,IAAK,UAASG,eAAe,CAACM,SAAU,EAAC;IACtFR,OAAO,CAACS,IAAI,CAACJ,MAAM,CAAC;EACxB;EACA,OAAOL,OAAO;AAClB,CAAC;AAAC"}
@@ -1,7 +1,7 @@
1
- import { BaseCmsSecurityPermission, CmsContext, CreatedBy } from "../types";
1
+ import { BaseCmsSecurityPermission, CmsContext, CmsIdentity } from "../types";
2
2
  interface OwnableRecord {
3
- createdBy?: CreatedBy;
4
- ownedBy?: CreatedBy;
3
+ createdBy?: CmsIdentity;
4
+ ownedBy?: CmsIdentity;
5
5
  }
6
6
  export declare const checkOwnership: (context: CmsContext, permission: BaseCmsSecurityPermission, record: OwnableRecord) => void;
7
7
  export declare const validateOwnership: (context: CmsContext, permission: BaseCmsSecurityPermission, record: OwnableRecord) => boolean;
@@ -4,20 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.validateOwnership = exports.checkOwnership = void 0;
7
-
8
7
  var _apiSecurity = require("@webiny/api-security");
9
-
10
8
  const checkOwnership = (context, permission, record) => {
11
9
  var _record$ownedBy, _record$createdBy;
12
-
13
10
  if (!permission.own) {
14
11
  return;
15
12
  }
16
-
17
13
  const identity = context.security.getIdentity();
18
14
  const owner = identity && ((_record$ownedBy = record.ownedBy) === null || _record$ownedBy === void 0 ? void 0 : _record$ownedBy.id) === identity.id;
19
15
  const creator = identity && ((_record$createdBy = record.createdBy) === null || _record$createdBy === void 0 ? void 0 : _record$createdBy.id) === identity.id;
20
-
21
16
  if (!owner && !creator) {
22
17
  throw new _apiSecurity.NotAuthorizedError({
23
18
  data: {
@@ -26,9 +21,7 @@ const checkOwnership = (context, permission, record) => {
26
21
  });
27
22
  }
28
23
  };
29
-
30
24
  exports.checkOwnership = checkOwnership;
31
-
32
25
  const validateOwnership = (context, permission, record) => {
33
26
  try {
34
27
  checkOwnership(context, permission, record);
@@ -37,5 +30,4 @@ const validateOwnership = (context, permission, record) => {
37
30
  return false;
38
31
  }
39
32
  };
40
-
41
33
  exports.validateOwnership = validateOwnership;
@@ -1 +1 @@
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
+ {"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, CmsIdentity } from \"~/types\";\nimport { NotAuthorizedError } from \"@webiny/api-security\";\n\ninterface OwnableRecord {\n createdBy?: CmsIdentity;\n ownedBy?: CmsIdentity;\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,OAAmB,EACnBC,UAAqC,EACrCC,MAAqB,KACd;EAAA;EACP,IAAI,CAACD,UAAU,CAACE,GAAG,EAAE;IACjB;EACJ;EAEA,MAAMC,QAAQ,GAAGJ,OAAO,CAACK,QAAQ,CAACC,WAAW,EAAE;EAC/C,MAAMC,KAAK,GAAGH,QAAQ,IAAI,oBAAAF,MAAM,CAACM,OAAO,oDAAd,gBAAgBC,EAAE,MAAKL,QAAQ,CAACK,EAAE;EAC5D,MAAMC,OAAO,GAAGN,QAAQ,IAAI,sBAAAF,MAAM,CAACS,SAAS,sDAAhB,kBAAkBF,EAAE,MAAKL,QAAQ,CAACK,EAAE;EAEhE,IAAI,CAACF,KAAK,IAAI,CAACG,OAAO,EAAE;IACpB,MAAM,IAAIE,+BAAkB,CAAC;MACzBC,IAAI,EAAE;QACFC,MAAM,EAAG;MACb;IACJ,CAAC,CAAC;EACN;AACJ,CAAC;AAAC;AAEK,MAAMC,iBAAiB,GAAG,CAC7Bf,OAAmB,EACnBC,UAAqC,EACrCC,MAAqB,KACX;EACV,IAAI;IACAH,cAAc,CAACC,OAAO,EAAEC,UAAU,EAAEC,MAAM,CAAC;IAC3C,OAAO,IAAI;EACf,CAAC,CAAC,MAAM;IACJ,OAAO,KAAK;EAChB;AACJ,CAAC;AAAC"}
@@ -4,19 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.hasRwd = exports.hasPw = exports.checkPermissions = void 0;
7
-
8
7
  var _apiSecurity = require("@webiny/api-security");
9
-
10
8
  const hasRwd = (permission, rwd) => {
11
9
  if (typeof permission.rwd !== "string") {
12
10
  return true;
13
11
  }
14
-
15
12
  return permission.rwd.includes(rwd);
16
13
  };
17
-
18
14
  exports.hasRwd = hasRwd;
19
-
20
15
  const hasPw = (permission, pw) => {
21
16
  const isCustom = Object.keys(permission).length > 1; // "name" key is always present
22
17
 
@@ -24,14 +19,11 @@ const hasPw = (permission, pw) => {
24
19
  // Means it's a "full-access" permission.
25
20
  return true;
26
21
  }
27
-
28
22
  if (typeof permission.pw !== "string") {
29
23
  return false;
30
24
  }
31
-
32
25
  return permission.pw.includes(pw);
33
26
  };
34
-
35
27
  exports.hasPw = hasPw;
36
28
  const PW = {
37
29
  p: "publish",
@@ -42,24 +34,23 @@ const RWD = {
42
34
  w: "write",
43
35
  d: "delete"
44
36
  };
45
-
46
37
  const checkPermissions = async (context, name, check) => {
47
38
  // Check if user is allowed to edit content in current language
48
39
  const contentPermission = await context.security.getPermission("content.i18n");
49
-
50
40
  if (!contentPermission) {
51
41
  throw new _apiSecurity.NotAuthorizedError({
52
42
  data: {
53
43
  reason: "Missing access to content in any locale."
54
44
  }
55
45
  });
56
- } // We need to check this manually as CMS locale comes from the URL and not the default i18n app.
57
-
46
+ }
58
47
 
48
+ // We need to check this manually as CMS locale comes from the URL and not the default i18n app.
59
49
  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.
50
+ const locales = contentPermission.locales;
62
51
 
52
+ // IMPORTANT: If we have a `contentPermission`, and `locales` key is NOT SET - it means the user has access to all locales.
53
+ // However, if the the `locales` IS SET - check that it contains the required locale.
63
54
  if (Array.isArray(locales) && !locales.includes(code)) {
64
55
  throw new _apiSecurity.NotAuthorizedError({
65
56
  data: {
@@ -67,9 +58,7 @@ const checkPermissions = async (context, name, check) => {
67
58
  }
68
59
  });
69
60
  }
70
-
71
61
  const permission = await context.security.getPermission(name);
72
-
73
62
  if (!permission) {
74
63
  throw new _apiSecurity.NotAuthorizedError({
75
64
  data: {
@@ -77,21 +66,19 @@ const checkPermissions = async (context, name, check) => {
77
66
  }
78
67
  });
79
68
  }
80
-
81
69
  if (!check) {
82
70
  return permission;
83
71
  }
84
-
85
72
  if (check.rwd && !hasRwd(permission, check.rwd)) {
86
73
  throw new _apiSecurity.NotAuthorizedError({
87
74
  data: {
88
75
  reason: `Not allowed to perform "${RWD[check.rwd]}" on "${name}".`
89
76
  }
90
77
  });
91
- } // p = publish
92
- // u = unpublish
93
-
78
+ }
94
79
 
80
+ // p = publish
81
+ // u = unpublish
95
82
  if (check.pw && !hasPw(permission, check.pw)) {
96
83
  throw new _apiSecurity.NotAuthorizedError({
97
84
  data: {
@@ -99,8 +86,6 @@ const checkPermissions = async (context, name, check) => {
99
86
  }
100
87
  });
101
88
  }
102
-
103
89
  return permission;
104
90
  };
105
-
106
91
  exports.checkPermissions = checkPermissions;
@@ -1 +1 @@
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
+ {"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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"}
@@ -0,0 +1 @@
1
+ export declare const removeNullValues: <T extends Record<string, any>>(target: T) => T;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeNullValues = void 0;
7
+ const removeNullValues = target => {
8
+ const result = {};
9
+ for (const key in target) {
10
+ if (target[key] === null) {
11
+ continue;
12
+ }
13
+ result[key] = target[key];
14
+ }
15
+ return result;
16
+ };
17
+ exports.removeNullValues = removeNullValues;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["removeNullValues","target","result","key"],"sources":["removeNullValues.ts"],"sourcesContent":["export const removeNullValues = <T extends Record<string, any>>(target: T): T => {\n const result = {} as T;\n for (const key in target) {\n if (target[key] === null) {\n continue;\n }\n\n result[key] = target[key];\n }\n return result as T;\n};\n"],"mappings":";;;;;;AAAO,MAAMA,gBAAgB,GAAmCC,MAAS,IAAQ;EAC7E,MAAMC,MAAM,GAAG,CAAC,CAAM;EACtB,KAAK,MAAMC,GAAG,IAAIF,MAAM,EAAE;IACtB,IAAIA,MAAM,CAACE,GAAG,CAAC,KAAK,IAAI,EAAE;MACtB;IACJ;IAEAD,MAAM,CAACC,GAAG,CAAC,GAAGF,MAAM,CAACE,GAAG,CAAC;EAC7B;EACA,OAAOD,MAAM;AACjB,CAAC;AAAC"}
@@ -0,0 +1 @@
1
+ export declare const removeUndefinedValues: <T extends Record<string, any>>(target: T) => T;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeUndefinedValues = void 0;
7
+ const removeUndefinedValues = target => {
8
+ const result = {};
9
+ for (const key in target) {
10
+ if (target[key] === undefined) {
11
+ continue;
12
+ }
13
+ result[key] = target[key];
14
+ }
15
+ return result;
16
+ };
17
+ exports.removeUndefinedValues = removeUndefinedValues;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["removeUndefinedValues","target","result","key","undefined"],"sources":["removeUndefinedValues.ts"],"sourcesContent":["export const removeUndefinedValues = <T extends Record<string, any>>(target: T): T => {\n const result = {} as T;\n for (const key in target) {\n if (target[key] === undefined) {\n continue;\n }\n\n result[key] = target[key];\n }\n return result as T;\n};\n"],"mappings":";;;;;;AAAO,MAAMA,qBAAqB,GAAmCC,MAAS,IAAQ;EAClF,MAAMC,MAAM,GAAG,CAAC,CAAM;EACtB,KAAK,MAAMC,GAAG,IAAIF,MAAM,EAAE;IACtB,IAAIA,MAAM,CAACE,GAAG,CAAC,KAAKC,SAAS,EAAE;MAC3B;IACJ;IAEAF,MAAM,CAACC,GAAG,CAAC,GAAGF,MAAM,CAACE,GAAG,CAAC;EAC7B;EACA,OAAOD,MAAM;AACjB,CAAC;AAAC"}
@@ -1,5 +1,6 @@
1
1
  import { ApiEndpoint, CmsFieldTypePlugins, CmsModel, CmsModelField, CmsModelFieldDefinition } from "../types";
2
2
  interface RenderFieldsParams {
3
+ models: CmsModel[];
3
4
  model: CmsModel;
4
5
  type: ApiEndpoint;
5
6
  fieldTypePlugins: CmsFieldTypePlugins;
@@ -11,5 +12,5 @@ export declare const renderFields: RenderFields;
11
12
  interface RenderFieldParams extends RenderFieldsParams {
12
13
  field: CmsModelField;
13
14
  }
14
- export declare const renderField: ({ model, type, field, fieldTypePlugins }: RenderFieldParams) => CmsModelFieldDefinition | null;
15
+ export declare const renderField: ({ models, model, type, field, fieldTypePlugins }: RenderFieldParams) => CmsModelFieldDefinition | null;
15
16
  export {};