@webiny/api-headless-cms 5.23.1 → 5.25.0-beta.0

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 (255) hide show
  1. package/content/contextSetup.js.map +1 -0
  2. package/content/graphQLHandlerFactory.js +12 -2
  3. package/content/graphQLHandlerFactory.js.map +1 -0
  4. package/content/parameterPlugins.js.map +1 -0
  5. package/content/plugins/CmsGroupPlugin.js.map +1 -0
  6. package/content/plugins/CmsModelPlugin.js.map +1 -0
  7. package/content/plugins/CmsParametersPlugin.d.ts +1 -1
  8. package/content/plugins/CmsParametersPlugin.js.map +1 -0
  9. package/content/plugins/buildSchemaPlugins.js.map +1 -0
  10. package/content/plugins/crud/contentEntry/afterDelete.d.ts +3 -2
  11. package/content/plugins/crud/contentEntry/afterDelete.js +2 -1
  12. package/content/plugins/crud/contentEntry/afterDelete.js.map +1 -0
  13. package/content/plugins/crud/contentEntry/beforeCreate.d.ts +3 -2
  14. package/content/plugins/crud/contentEntry/beforeCreate.js.map +1 -0
  15. package/content/plugins/crud/contentEntry/beforeUpdate.d.ts +3 -2
  16. package/content/plugins/crud/contentEntry/beforeUpdate.js.map +1 -0
  17. package/content/plugins/crud/contentEntry/entryDataValidation.d.ts +2 -2
  18. package/content/plugins/crud/contentEntry/entryDataValidation.js +2 -3
  19. package/content/plugins/crud/contentEntry/entryDataValidation.js.map +1 -0
  20. package/content/plugins/crud/contentEntry/markLockedFields.d.ts +2 -1
  21. package/content/plugins/crud/contentEntry/markLockedFields.js +1 -1
  22. package/content/plugins/crud/contentEntry/markLockedFields.js.map +1 -0
  23. package/content/plugins/crud/contentEntry/referenceFieldsMapping.js +7 -3
  24. package/content/plugins/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
  25. package/content/plugins/crud/contentEntry.crud.d.ts +2 -2
  26. package/content/plugins/crud/contentEntry.crud.js +24 -13
  27. package/content/plugins/crud/contentEntry.crud.js.map +1 -0
  28. package/content/plugins/crud/contentModel/afterCreate.d.ts +3 -2
  29. package/content/plugins/crud/contentModel/afterCreate.js.map +1 -0
  30. package/content/plugins/crud/contentModel/afterDelete.d.ts +3 -2
  31. package/content/plugins/crud/contentModel/afterDelete.js.map +1 -0
  32. package/content/plugins/crud/contentModel/afterUpdate.d.ts +3 -2
  33. package/content/plugins/crud/contentModel/afterUpdate.js.map +1 -0
  34. package/content/plugins/crud/contentModel/beforeCreate.d.ts +5 -4
  35. package/content/plugins/crud/contentModel/beforeCreate.js +1 -1
  36. package/content/plugins/crud/contentModel/beforeCreate.js.map +1 -0
  37. package/content/plugins/crud/contentModel/beforeDelete.d.ts +3 -2
  38. package/content/plugins/crud/contentModel/beforeDelete.js.map +1 -0
  39. package/content/plugins/crud/contentModel/beforeUpdate.d.ts +3 -2
  40. package/content/plugins/crud/contentModel/beforeUpdate.js +77 -0
  41. package/content/plugins/crud/contentModel/beforeUpdate.js.map +1 -0
  42. package/content/plugins/crud/contentModel/contentModelManagerFactory.d.ts +2 -2
  43. package/content/plugins/crud/contentModel/contentModelManagerFactory.js.map +1 -0
  44. package/content/plugins/crud/contentModel/createFieldModels.js.map +1 -0
  45. package/content/plugins/crud/contentModel/idValidation.js.map +1 -0
  46. package/content/plugins/crud/contentModel/models.js +9 -0
  47. package/content/plugins/crud/contentModel/models.js.map +1 -0
  48. package/content/plugins/crud/contentModel/validateLayout.js.map +1 -0
  49. package/content/plugins/crud/contentModel.crud.d.ts +2 -2
  50. package/content/plugins/crud/contentModel.crud.js +2 -2
  51. package/content/plugins/crud/contentModel.crud.js.map +1 -0
  52. package/content/plugins/crud/contentModelGroup/beforeCreate.d.ts +3 -2
  53. package/content/plugins/crud/contentModelGroup/beforeCreate.js.map +1 -0
  54. package/content/plugins/crud/contentModelGroup/beforeDelete.d.ts +3 -2
  55. package/content/plugins/crud/contentModelGroup/beforeDelete.js.map +1 -0
  56. package/content/plugins/crud/contentModelGroup/beforeUpdate.d.ts +3 -2
  57. package/content/plugins/crud/contentModelGroup/beforeUpdate.js.map +1 -0
  58. package/content/plugins/crud/contentModelGroup.crud.d.ts +2 -2
  59. package/content/plugins/crud/contentModelGroup.crud.js.map +1 -0
  60. package/content/plugins/crud/index.d.ts +2 -2
  61. package/content/plugins/crud/index.js.map +1 -0
  62. package/content/plugins/graphqlFields/boolean.js +2 -6
  63. package/content/plugins/graphqlFields/boolean.js.map +1 -0
  64. package/content/plugins/graphqlFields/datetime.js +5 -3
  65. package/content/plugins/graphqlFields/datetime.js.map +1 -0
  66. package/content/plugins/graphqlFields/file.js +2 -6
  67. package/content/plugins/graphqlFields/file.js.map +1 -0
  68. package/content/plugins/graphqlFields/helpers.d.ts +6 -0
  69. package/content/plugins/graphqlFields/helpers.js +49 -0
  70. package/content/plugins/graphqlFields/helpers.js.map +1 -0
  71. package/content/plugins/graphqlFields/index.js.map +1 -0
  72. package/content/plugins/graphqlFields/longText.js +2 -6
  73. package/content/plugins/graphqlFields/longText.js.map +1 -0
  74. package/content/plugins/graphqlFields/number.js +2 -6
  75. package/content/plugins/graphqlFields/number.js.map +1 -0
  76. package/content/plugins/graphqlFields/object.js +20 -18
  77. package/content/plugins/graphqlFields/object.js.map +1 -0
  78. package/content/plugins/graphqlFields/ref.js +51 -18
  79. package/content/plugins/graphqlFields/ref.js.map +1 -0
  80. package/content/plugins/graphqlFields/richText.js +2 -6
  81. package/content/plugins/graphqlFields/richText.js.map +1 -0
  82. package/content/plugins/graphqlFields/text.js +2 -6
  83. package/content/plugins/graphqlFields/text.js.map +1 -0
  84. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +1 -1
  85. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +1 -0
  86. package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js.map +1 -0
  87. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +1 -1
  88. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +1 -0
  89. package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js.map +1 -0
  90. package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +3 -3
  91. package/content/plugins/modelManager/DefaultCmsModelManager.js.map +1 -0
  92. package/content/plugins/modelManager/index.js.map +1 -0
  93. package/content/plugins/schema/baseSchema.js +1 -0
  94. package/content/plugins/schema/baseSchema.js.map +1 -0
  95. package/content/plugins/schema/contentEntries.js +12 -5
  96. package/content/plugins/schema/contentEntries.js.map +1 -0
  97. package/content/plugins/schema/contentModelGroups.js +1 -2
  98. package/content/plugins/schema/contentModelGroups.js.map +1 -0
  99. package/content/plugins/schema/contentModels.js +2 -3
  100. package/content/plugins/schema/contentModels.js.map +1 -0
  101. package/content/plugins/schema/createFieldResolvers.d.ts +8 -7
  102. package/content/plugins/schema/createFieldResolvers.js +25 -12
  103. package/content/plugins/schema/createFieldResolvers.js.map +1 -0
  104. package/content/plugins/schema/createManageResolvers.d.ts +7 -6
  105. package/content/plugins/schema/createManageResolvers.js.map +1 -0
  106. package/content/plugins/schema/createManageSDL.d.ts +5 -4
  107. package/content/plugins/schema/createManageSDL.js.map +1 -0
  108. package/content/plugins/schema/createPreviewResolvers.d.ts +8 -6
  109. package/content/plugins/schema/createPreviewResolvers.js.map +1 -0
  110. package/content/plugins/schema/createReadResolvers.d.ts +8 -6
  111. package/content/plugins/schema/createReadResolvers.js.map +1 -0
  112. package/content/plugins/schema/createReadSDL.d.ts +7 -6
  113. package/content/plugins/schema/createReadSDL.js.map +1 -0
  114. package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +1 -1
  115. package/content/plugins/schema/resolvers/commonFieldResolvers.js.map +1 -0
  116. package/content/plugins/schema/resolvers/manage/resolveCreate.d.ts +5 -4
  117. package/content/plugins/schema/resolvers/manage/resolveCreate.js +2 -4
  118. package/content/plugins/schema/resolvers/manage/resolveCreate.js.map +1 -0
  119. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.d.ts +5 -4
  120. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js +2 -4
  121. package/content/plugins/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
  122. package/content/plugins/schema/resolvers/manage/resolveDelete.d.ts +6 -1
  123. package/content/plugins/schema/resolvers/manage/resolveDelete.js +4 -8
  124. package/content/plugins/schema/resolvers/manage/resolveDelete.js.map +1 -0
  125. package/content/plugins/schema/resolvers/manage/resolveGet.d.ts +6 -1
  126. package/content/plugins/schema/resolvers/manage/resolveGet.js.map +1 -0
  127. package/content/plugins/schema/resolvers/manage/resolveGetByIds.d.ts +6 -1
  128. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js +2 -4
  129. package/content/plugins/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
  130. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.d.ts +6 -1
  131. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js +2 -4
  132. package/content/plugins/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
  133. package/content/plugins/schema/resolvers/manage/resolveList.d.ts +4 -2
  134. package/content/plugins/schema/resolvers/manage/resolveList.js +2 -4
  135. package/content/plugins/schema/resolvers/manage/resolveList.js.map +1 -0
  136. package/content/plugins/schema/resolvers/manage/resolvePublish.d.ts +6 -1
  137. package/content/plugins/schema/resolvers/manage/resolvePublish.js.map +1 -0
  138. package/content/plugins/schema/resolvers/manage/resolveRepublish.d.ts +6 -1
  139. package/content/plugins/schema/resolvers/manage/resolveRepublish.js.map +1 -0
  140. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.d.ts +3 -2
  141. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js +2 -4
  142. package/content/plugins/schema/resolvers/manage/resolveRequestChanges.js.map +1 -0
  143. package/content/plugins/schema/resolvers/manage/resolveRequestReview.d.ts +3 -2
  144. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js +2 -4
  145. package/content/plugins/schema/resolvers/manage/resolveRequestReview.js.map +1 -0
  146. package/content/plugins/schema/resolvers/manage/resolveUnpublish.d.ts +6 -1
  147. package/content/plugins/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
  148. package/content/plugins/schema/resolvers/manage/resolveUpdate.d.ts +5 -4
  149. package/content/plugins/schema/resolvers/manage/resolveUpdate.js +2 -4
  150. package/content/plugins/schema/resolvers/manage/resolveUpdate.js.map +1 -0
  151. package/content/plugins/schema/resolvers/preview/resolveGet.d.ts +4 -2
  152. package/content/plugins/schema/resolvers/preview/resolveGet.js.map +1 -0
  153. package/content/plugins/schema/resolvers/preview/resolveList.d.ts +4 -2
  154. package/content/plugins/schema/resolvers/preview/resolveList.js +2 -4
  155. package/content/plugins/schema/resolvers/preview/resolveList.js.map +1 -0
  156. package/content/plugins/schema/resolvers/read/resolveGet.d.ts +4 -2
  157. package/content/plugins/schema/resolvers/read/resolveGet.js.map +1 -0
  158. package/content/plugins/schema/resolvers/read/resolveList.d.ts +4 -2
  159. package/content/plugins/schema/resolvers/read/resolveList.js +2 -4
  160. package/content/plugins/schema/resolvers/read/resolveList.js.map +1 -0
  161. package/content/plugins/schema/schemaPlugins.js.map +1 -0
  162. package/content/plugins/storage/StorageTransformPlugin.d.ts +2 -2
  163. package/content/plugins/storage/StorageTransformPlugin.js.map +1 -0
  164. package/content/plugins/storage/default.js.map +1 -0
  165. package/content/plugins/storage/object.js +15 -10
  166. package/content/plugins/storage/object.js.map +1 -0
  167. package/content/plugins/utils/createTypeName.d.ts +3 -3
  168. package/content/plugins/utils/createTypeName.js.map +1 -0
  169. package/content/plugins/utils/entryStorage.d.ts +2 -2
  170. package/content/plugins/utils/entryStorage.js +0 -4
  171. package/content/plugins/utils/entryStorage.js.map +1 -0
  172. package/content/plugins/utils/getEntryTitle.d.ts +1 -1
  173. package/content/plugins/utils/getEntryTitle.js +1 -1
  174. package/content/plugins/utils/getEntryTitle.js.map +1 -0
  175. package/content/plugins/utils/getSchemaFromFieldPlugins.d.ts +7 -6
  176. package/content/plugins/utils/getSchemaFromFieldPlugins.js +12 -7
  177. package/content/plugins/utils/getSchemaFromFieldPlugins.js.map +1 -0
  178. package/content/plugins/utils/pluralizedTypeName.d.ts +1 -1
  179. package/content/plugins/utils/pluralizedTypeName.js.map +1 -0
  180. package/content/plugins/utils/renderFields.d.ts +11 -12
  181. package/content/plugins/utils/renderFields.js +1 -1
  182. package/content/plugins/utils/renderFields.js.map +1 -0
  183. package/content/plugins/utils/renderGetFilterFields.d.ts +5 -4
  184. package/content/plugins/utils/renderGetFilterFields.js +28 -13
  185. package/content/plugins/utils/renderGetFilterFields.js.map +1 -0
  186. package/content/plugins/utils/renderInputFields.d.ts +10 -10
  187. package/content/plugins/utils/renderInputFields.js.map +1 -0
  188. package/content/plugins/utils/renderListFilterFields.d.ts +7 -6
  189. package/content/plugins/utils/renderListFilterFields.js +24 -12
  190. package/content/plugins/utils/renderListFilterFields.js.map +1 -0
  191. package/content/plugins/utils/renderSortEnum.js +5 -5
  192. package/content/plugins/utils/renderSortEnum.js.map +1 -0
  193. package/content/plugins/validators/dateGte.js +1 -1
  194. package/content/plugins/validators/dateGte.js.map +1 -0
  195. package/content/plugins/validators/dateLte.js +1 -1
  196. package/content/plugins/validators/dateLte.js.map +1 -0
  197. package/content/plugins/validators/gte.js +3 -1
  198. package/content/plugins/validators/gte.js.map +1 -0
  199. package/content/plugins/validators/in.js +3 -1
  200. package/content/plugins/validators/in.js.map +1 -0
  201. package/content/plugins/validators/index.js.map +1 -0
  202. package/content/plugins/validators/lte.js +3 -1
  203. package/content/plugins/validators/lte.js.map +1 -0
  204. package/content/plugins/validators/maxLength.js +3 -1
  205. package/content/plugins/validators/maxLength.js.map +1 -0
  206. package/content/plugins/validators/minLength.js +3 -1
  207. package/content/plugins/validators/minLength.js.map +1 -0
  208. package/content/plugins/validators/pattern.js +2 -2
  209. package/content/plugins/validators/pattern.js.map +1 -0
  210. package/content/plugins/validators/patternPlugins/email.js.map +1 -0
  211. package/content/plugins/validators/patternPlugins/index.js.map +1 -0
  212. package/content/plugins/validators/patternPlugins/lowerCase.js.map +1 -0
  213. package/content/plugins/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
  214. package/content/plugins/validators/patternPlugins/upperCase.js.map +1 -0
  215. package/content/plugins/validators/patternPlugins/upperCaseSpace.js.map +1 -0
  216. package/content/plugins/validators/patternPlugins/url.js.map +1 -0
  217. package/content/plugins/validators/required.js.map +1 -0
  218. package/content/plugins/validators/timeGte.js +3 -1
  219. package/content/plugins/validators/timeGte.js.map +1 -0
  220. package/content/plugins/validators/timeLte.js +3 -1
  221. package/content/plugins/validators/timeLte.js.map +1 -0
  222. package/content/plugins/validators/unique.js +1 -0
  223. package/content/plugins/validators/unique.js.map +1 -0
  224. package/index.d.ts +3 -3
  225. package/index.js.map +1 -0
  226. package/migrateCMSPermissions.d.ts +2 -2
  227. package/migrateCMSPermissions.js +4 -0
  228. package/migrateCMSPermissions.js.map +1 -0
  229. package/package.json +27 -26
  230. package/plugins/context.js +8 -3
  231. package/plugins/context.js.map +1 -0
  232. package/plugins/crud/index.d.ts +2 -2
  233. package/plugins/crud/index.js.map +1 -0
  234. package/plugins/crud/settings.crud.d.ts +2 -2
  235. package/plugins/crud/settings.crud.js.map +1 -0
  236. package/plugins/crud/system.crud.d.ts +3 -2
  237. package/plugins/crud/system.crud.js +2 -2
  238. package/plugins/crud/system.crud.js.map +1 -0
  239. package/plugins/graphql/system.d.ts +5 -4
  240. package/plugins/graphql/system.js +5 -3
  241. package/plugins/graphql/system.js.map +1 -0
  242. package/plugins/graphql.js +7 -0
  243. package/plugins/graphql.js.map +1 -0
  244. package/plugins/upgrades/index.js.map +1 -0
  245. package/plugins/upgrades/v5.5.0/helpers.js.map +1 -0
  246. package/plugins/upgrades/v5.5.0/index.js +5 -0
  247. package/plugins/upgrades/v5.5.0/index.js.map +1 -0
  248. package/transformers.js.map +1 -0
  249. package/types.d.ts +70 -40
  250. package/types.js +6 -0
  251. package/types.js.map +1 -0
  252. package/utils.d.ts +14 -16
  253. package/utils.js.map +1 -0
  254. package/content/plugins/graphqlFields/requiredField.d.ts +0 -2
  255. package/content/plugins/graphqlFields/requiredField.js +0 -24
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["contentModel.crud.ts"],"names":["createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","map","model","managers","Map","updateManager","manager","set","modelId","checkModelPermissions","check","utils","checkPermissions","rwd","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","t","l","contentModel","webinyVersion","WEBINY_VERSION","modelsGet","pluginModel","find","get","NotFoundError","modelsList","databaseModels","load","pluginsModels","concat","permission","filterAsync","validateOwnership","validateModelAccess","getModel","checkOwnership","checkModelAccess","getModelManager","target","has","m","onBeforeModelCreate","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","createModel","inputData","createdData","CreateContentModelModel","populate","validate","input","toJSON","security","disableAuthorization","group","cms","getGroup","enableAuthorization","identity","name","description","titleFieldId","createdBy","displayName","createdOn","Date","toISOString","savedOn","fields","lockedFields","layout","publish","createdModel","create","clearAll","updateModelDirect","initialModel","original","resultModel","update","createModelFrom","data","CreateContentModelModelFrom","i18n","groups","updateModel","updatedData","UpdateContentModelModel","onlyDirty","Object","keys","length","groupData","modelFields","deleteModel","delete","ex","WebinyError","message","error","getManagers"],"mappings":"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","sourcesContent":["import {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelManager,\n CmsModelPermission,\n HeadlessCmsStorageOperations,\n BeforeModelCreateTopicParams,\n AfterModelCreateTopicParams,\n BeforeModelUpdateTopicParams,\n AfterModelUpdateTopicParams,\n BeforeModelDeleteTopicParams,\n AfterModelDeleteTopicParams,\n BeforeModelCreateFromTopicParams,\n AfterModelCreateFromTopicParams,\n CmsModelCreateInput,\n CmsModelUpdateInput,\n CmsModelCreateFromInput\n} from \"~/types\";\nimport * as utils from \"~/utils\";\nimport DataLoader from \"dataloader\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport {\n CreateContentModelModel,\n CreateContentModelModelFrom,\n UpdateContentModelModel\n} from \"./contentModel/models\";\nimport { createFieldModels } from \"./contentModel/createFieldModels\";\nimport { validateLayout } from \"./contentModel/validateLayout\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeModelCreate } from \"./contentModel/beforeCreate\";\nimport { assignBeforeModelUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignBeforeModelDelete } from \"./contentModel/beforeDelete\";\nimport { assignAfterModelCreate } from \"./contentModel/afterCreate\";\nimport { assignAfterModelUpdate } from \"./contentModel/afterUpdate\";\nimport { assignAfterModelDelete } from \"./contentModel/afterDelete\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const loaders = {\n listModels: new DataLoader(async () => {\n const models = await storageOperations.models.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n return [\n models.map(model => {\n return {\n ...model,\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n })\n ];\n })\n };\n\n const managers = new Map<string, CmsModelManager>();\n const updateManager = async (\n context: CmsContext,\n model: CmsModel\n ): Promise<CmsModelManager> => {\n const manager = await contentModelManagerFactory(context, model);\n managers.set(model.modelId, manager);\n return manager;\n };\n\n const checkModelPermissions = (check: string): Promise<CmsModelPermission> => {\n return utils.checkPermissions(context, \"cms.contentModel\", { rwd: check });\n };\n\n const getModelsAsPlugins = (): CmsModel[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModel;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map<CmsModel>(plugin => {\n return {\n ...plugin.contentModel,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const modelsGet = async (modelId: string): Promise<CmsModel> => {\n const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);\n\n if (pluginModel) {\n return pluginModel;\n }\n\n const model = await storageOperations.models.get({\n tenant: getTenant().id,\n locale: getLocale().code,\n modelId\n });\n\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n const modelsList = async (): Promise<CmsModel[]> => {\n const databaseModels = await loaders.listModels.load(\"listModels\");\n\n const pluginsModels = getModelsAsPlugins();\n\n return databaseModels.concat(pluginsModels);\n };\n\n const listModels = async () => {\n const permission = await checkModelPermissions(\"r\");\n const models = await modelsList();\n return utils.filterAsync(models, async model => {\n if (!utils.validateOwnership(context, permission, model)) {\n return false;\n }\n return utils.validateModelAccess(context, model);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n const permission = await checkModelPermissions(\"r\");\n\n const model = await modelsGet(modelId);\n\n utils.checkOwnership(context, permission, model);\n await utils.checkModelAccess(context, model);\n\n return model;\n };\n\n const getModelManager: CmsModelContext[\"getModelManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const models = await modelsList();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`There is no content model \"${modelId}\".`);\n }\n return await updateManager(context, model);\n };\n\n const onBeforeModelCreate = createTopic<BeforeModelCreateTopicParams>();\n const onAfterModelCreate = createTopic<AfterModelCreateTopicParams>();\n const onBeforeModelCreateFrom = createTopic<BeforeModelCreateFromTopicParams>();\n const onAfterModelCreateFrom = createTopic<AfterModelCreateFromTopicParams>();\n const onBeforeModelUpdate = createTopic<BeforeModelUpdateTopicParams>();\n const onAfterModelUpdate = createTopic<AfterModelUpdateTopicParams>();\n const onBeforeModelDelete = createTopic<BeforeModelDeleteTopicParams>();\n const onAfterModelDelete = createTopic<AfterModelDeleteTopicParams>();\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeModelCreate({\n onBeforeModelCreate,\n onBeforeModelCreateFrom,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelCreate({\n context,\n onAfterModelCreate\n });\n assignBeforeModelUpdate({\n onBeforeModelUpdate,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelUpdate({\n context,\n onAfterModelUpdate\n });\n assignBeforeModelDelete({\n onBeforeModelDelete,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelDelete({\n context,\n onAfterModelDelete\n });\n\n return {\n onBeforeModelCreate,\n onAfterModelCreate,\n onBeforeModelCreateFrom,\n onAfterModelCreateFrom,\n onBeforeModelUpdate,\n onAfterModelUpdate,\n onBeforeModelDelete,\n onAfterModelDelete,\n getModel,\n listModels,\n async createModel(inputData) {\n await checkModelPermissions(\"w\");\n\n const createdData = new CreateContentModelModel().populate(inputData);\n await createdData.validate();\n const input: CmsModelCreateInput = await createdData.toJSON();\n\n context.security.disableAuthorization();\n const group = await context.cms.getGroup(input.group);\n context.security.enableAuthorization();\n if (!group) {\n throw new NotFoundError(`There is no group \"${input.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n name: input.name,\n description: input.description,\n modelId: input.modelId || \"\",\n titleFieldId: \"id\",\n locale: getLocale().code,\n tenant: getTenant().id,\n group: {\n id: group.id,\n name: group.name\n },\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString() as any,\n savedOn: new Date().toISOString() as any,\n fields: [],\n lockedFields: [],\n layout: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await onBeforeModelCreate.publish({\n input,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n input,\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onAfterModelCreate.publish({\n input,\n model: createdModel\n });\n\n return createdModel;\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n await onBeforeModelUpdate.publish({\n input: {} as any,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n original,\n model,\n input: {} as any\n });\n\n await updateManager(context, resultModel);\n\n loaders.listModels.clearAll();\n\n await onAfterModelUpdate.publish({\n input: {} as any,\n original,\n model: resultModel\n });\n\n return resultModel;\n },\n async createModelFrom(modelId, data) {\n await checkModelPermissions(\"w\");\n /**\n * Get a model record; this will also perform ownership validation.\n */\n const original = await getModel(modelId);\n\n const createdData = new CreateContentModelModelFrom().populate({\n name: data.name,\n modelId: data.modelId,\n description: data.description || original.description,\n group: data.group,\n locale: data.locale\n });\n\n await createdData.validate();\n const input: CmsModelCreateFromInput = await createdData.toJSON();\n\n const locale = await context.i18n.getLocale(input.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${input.locale}\".`);\n }\n /**\n * Use storage operations directly because we cannot get group from different locale via context methods.\n */\n const group = await context.cms.storageOperations.groups.get({\n id: input.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${input.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n ...original,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n name: input.name,\n modelId: input.modelId || \"\",\n description: input.description,\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString() as any,\n savedOn: new Date().toISOString() as any,\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await onBeforeModelCreateFrom.publish({\n input,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n input,\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onAfterModelCreateFrom.publish({\n input,\n original,\n model: createdModel\n });\n\n return createdModel;\n },\n async updateModel(modelId, inputData) {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const updatedData = new UpdateContentModelModel().populate(inputData);\n await updatedData.validate();\n\n const input: CmsModelUpdateInput = await updatedData.toJSON({ onlyDirty: true });\n if (Object.keys(input).length === 0) {\n return {} as any;\n }\n let group: CmsModel[\"group\"] = {\n id: original.group.id,\n name: original.group.name\n };\n if (input.group) {\n context.security.disableAuthorization();\n const groupData = await context.cms.getGroup(input.group);\n context.security.enableAuthorization();\n if (!groupData) {\n throw new NotFoundError(`There is no group \"${input.group}\".`);\n }\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const modelFields = await createFieldModels(original, inputData);\n const model: CmsModel = {\n ...original,\n ...input,\n group,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n fields: modelFields,\n savedOn: new Date().toISOString() as any\n };\n validateLayout(model, modelFields);\n\n await onBeforeModelUpdate.publish({\n input,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n original,\n model,\n input\n });\n\n await updateManager(context, resultModel);\n\n await onAfterModelUpdate.publish({\n input,\n original,\n model: resultModel\n });\n\n return resultModel;\n },\n async deleteModel(modelId) {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n await onBeforeModelDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n await onAfterModelDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n },\n getModelManager,\n getManagers: () => managers\n };\n};\n"]}
@@ -1,9 +1,10 @@
1
1
  import { BeforeGroupCreateTopicParams, HeadlessCmsStorageOperations } from "../../../../types";
2
2
  import { Topic } from "@webiny/pubsub/types";
3
3
  import { PluginsContainer } from "@webiny/plugins";
4
- export interface Params {
4
+ interface AssignBeforeGroupCreateParams {
5
5
  onBeforeCreate: Topic<BeforeGroupCreateTopicParams>;
6
6
  plugins: PluginsContainer;
7
7
  storageOperations: HeadlessCmsStorageOperations;
8
8
  }
9
- export declare const assignBeforeGroupCreate: (params: Params) => void;
9
+ export declare const assignBeforeGroupCreate: (params: AssignBeforeGroupCreateParams) => void;
10
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["beforeCreate.ts"],"names":["assignBeforeGroupCreate","params","onBeforeCreate","plugins","storageOperations","subscribe","group","slug","trim","groups","list","where","tenant","locale","length","WebinyError","name","shortid","generate","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","Error"],"mappings":";;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;AAC9E,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,OAAlB;AAA2BC,IAAAA;AAA3B,MAAiDH,MAAvD;AAEAC,EAAAA,cAAc,CAACG,SAAf,CAAyB,MAAMJ,MAAN,IAAgB;AACrC,UAAM;AAAEK,MAAAA;AAAF,QAAYL,MAAlB;;AAEA,QAAIK,KAAK,CAACC,IAAN,IAAcD,KAAK,CAACC,IAAN,CAAWC,IAAX,EAAlB,EAAqC;AACjC,YAAMC,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAlB,CAAyBC,IAAzB,CAA8B;AAC/CC,QAAAA,KAAK,EAAE;AACHC,UAAAA,MAAM,EAAEN,KAAK,CAACM,MADX;AAEHC,UAAAA,MAAM,EAAEP,KAAK,CAACO,MAFX;AAGHN,UAAAA,IAAI,EAAED,KAAK,CAACC;AAHT;AADwC,OAA9B,CAArB;;AAOA,UAAIE,MAAM,CAACK,MAAP,GAAgB,CAApB,EAAuB;AACnB,cAAM,IAAIC,cAAJ,CACD,4BAA2BT,KAAK,CAACC,IAAK,mBADrC,EAEF,qBAFE,CAAN;AAIH;AACJ,KAdD,MAcO;AACH,YAAMA,IAAI,GAAG,mBAAOD,KAAK,CAACU,IAAb,CAAb;AACA,YAAMP,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAlB,CAAyBC,IAAzB,CAA8B;AAC/CC,QAAAA,KAAK,EAAE;AACHC,UAAAA,MAAM,EAAEN,KAAK,CAACM,MADX;AAEHC,UAAAA,MAAM,EAAEP,KAAK,CAACO,MAFX;AAGHN,UAAAA;AAHG;AADwC,OAA9B,CAArB;;AAQA,UAAIE,MAAM,CAACK,MAAP,KAAkB,CAAtB,EAAyB;AACrBR,QAAAA,KAAK,CAACC,IAAN,GAAaA,IAAb;AACH,OAFD,MAEO;AACHD,QAAAA,KAAK,CAACC,IAAN,GAAc,GAAEA,IAAK,IAAGU,iBAAQC,QAAR,EAAmB,EAA3C;AACH;AACJ;;AAED,UAAMC,WAAW,GAAGhB,OAAO,CACtBiB,MADe,CACQC,+BAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBlB,IAAvB,KAAgCD,KAAK,CAACC,IAFpC,CAApB;;AAIA,QAAIY,WAAJ,EAAiB;AACb,YAAM,IAAIO,KAAJ,CACD,kBAAiBpB,KAAK,CAACC,IAAK,uEAD3B,CAAN;AAGH;AACJ,GA3CD;AA4CH,CA/CM","sourcesContent":["import { BeforeGroupCreateTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { toSlug } from \"~/utils\";\nimport WebinyError from \"@webiny/error\";\nimport shortid from \"shortid\";\n\ninterface AssignBeforeGroupCreateParams {\n onBeforeCreate: Topic<BeforeGroupCreateTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupCreate = (params: AssignBeforeGroupCreateParams) => {\n const { onBeforeCreate, plugins, storageOperations } = params;\n\n onBeforeCreate.subscribe(async params => {\n const { group } = params;\n\n if (group.slug && group.slug.trim()) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug: group.slug\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the slug \"${group.slug}\" already exists.`,\n \"SLUG_ALREADY_EXISTS\"\n );\n }\n } else {\n const slug = toSlug(group.name);\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug\n }\n });\n\n if (groups.length === 0) {\n group.slug = slug;\n } else {\n group.slug = `${slug}-${shortid.generate()}`;\n }\n }\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(\n `Cannot create \"${group.slug}\" content model group because one is already registered via a plugin.`\n );\n }\n });\n};\n"]}
@@ -1,9 +1,10 @@
1
1
  import { Topic } from "@webiny/pubsub/types";
2
2
  import { BeforeGroupDeleteTopicParams, HeadlessCmsStorageOperations } from "../../../../types";
3
3
  import { PluginsContainer } from "@webiny/plugins";
4
- export interface Params {
4
+ interface AssignBeforeGroupDeleteParams {
5
5
  onBeforeDelete: Topic<BeforeGroupDeleteTopicParams>;
6
6
  plugins: PluginsContainer;
7
7
  storageOperations: HeadlessCmsStorageOperations;
8
8
  }
9
- export declare const assignBeforeGroupDelete: (params: Params) => void;
9
+ export declare const assignBeforeGroupDelete: (params: AssignBeforeGroupDeleteParams) => void;
10
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["beforeDelete.ts"],"names":["assignBeforeGroupDelete","params","onBeforeDelete","plugins","storageOperations","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","models","list","where","tenant","locale","items","filter","model","id","length","WebinyError"],"mappings":";;;;;;;;;AAGA;;AACA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;AAC9E,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA,OAAlB;AAA2BC,IAAAA;AAA3B,MAAiDH,MAAvD;AAEAC,EAAAA,cAAc,CAACG,SAAf,CAAyB,MAAMJ,MAAN,IAAgB;AACrC,UAAM;AAAEK,MAAAA;AAAF,QAAYL,MAAlB;AAEA,UAAMM,WAAW,GAAGJ,OAAO,CACtBK,MADe,CACQC,+BAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBC,IAAvB,KAAgCR,KAAK,CAACQ,IAFpC,CAApB;;AAIA,QAAIP,WAAJ,EAAiB;AACb,YAAM,IAAIQ,KAAJ,CAAW,mDAAX,CAAN;AACH;;AAED,UAAMC,MAAM,GAAG,MAAMZ,iBAAiB,CAACY,MAAlB,CAAyBC,IAAzB,CAA8B;AAC/CC,MAAAA,KAAK,EAAE;AACHC,QAAAA,MAAM,EAAEb,KAAK,CAACa,MADX;AAEHC,QAAAA,MAAM,EAAEd,KAAK,CAACc;AAFX;AADwC,KAA9B,CAArB;AAMA,UAAMC,KAAK,GAAGL,MAAM,CAACM,MAAP,CAAcC,KAAK,IAAI;AACjC,aAAOA,KAAK,CAACjB,KAAN,CAAYkB,EAAZ,KAAmBlB,KAAK,CAACkB,EAAhC;AACH,KAFa,CAAd;;AAGA,QAAIH,KAAK,CAACI,MAAN,GAAe,CAAnB,EAAsB;AAClB,YAAM,IAAIC,cAAJ,CACF,sEADE,EAEF,qBAFE,EAGF;AACIpB,QAAAA;AADJ,OAHE,CAAN;AAOH;AACJ,GA7BD;AA8BH,CAjCM","sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { BeforeGroupDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ninterface AssignBeforeGroupDeleteParams {\n onBeforeDelete: Topic<BeforeGroupDeleteTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupDelete = (params: AssignBeforeGroupDeleteParams) => {\n const { onBeforeDelete, plugins, storageOperations } = params;\n\n onBeforeDelete.subscribe(async params => {\n const { group } = params;\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(`Cms Groups defined via plugins cannot be deleted.`);\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: group.tenant,\n locale: group.locale\n }\n });\n const items = models.filter(model => {\n return model.group.id === group.id;\n });\n if (items.length > 0) {\n throw new WebinyError(\n \"Cannot delete this group because there are models that belong to it.\",\n \"BEFORE_DELETE_ERROR\",\n {\n group\n }\n );\n }\n });\n};\n"]}
@@ -1,8 +1,9 @@
1
1
  import { Topic } from "@webiny/pubsub/types";
2
2
  import { BeforeGroupUpdateTopicParams } from "../../../../types";
3
3
  import { PluginsContainer } from "@webiny/plugins";
4
- export interface Params {
4
+ interface AssignBeforeGroupUpdateParams {
5
5
  onBeforeUpdate: Topic<BeforeGroupUpdateTopicParams>;
6
6
  plugins: PluginsContainer;
7
7
  }
8
- export declare const assignBeforeGroupUpdate: (params: Params) => void;
8
+ export declare const assignBeforeGroupUpdate: (params: AssignBeforeGroupUpdateParams) => void;
9
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["beforeUpdate.ts"],"names":["assignBeforeGroupUpdate","params","onBeforeUpdate","plugins","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error"],"mappings":";;;;;;;AAEA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;AAC9E,QAAM;AAAEC,IAAAA,cAAF;AAAkBC,IAAAA;AAAlB,MAA8BF,MAApC;AAEAC,EAAAA,cAAc,CAACE,SAAf,CAAyB,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAe;AACpC,UAAMC,WAAW,GAAGH,OAAO,CACtBI,MADe,CACQC,+BAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBC,IAAvB,KAAgCR,KAAK,CAACQ,IAFpC,CAApB;;AAGA,QAAI,CAACP,WAAL,EAAkB;AACd;AACH;;AACD,UAAM,IAAIQ,KAAJ,CAAW,mDAAX,CAAN;AACH,GARD;AASH,CAZM","sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { BeforeGroupUpdateTopicParams } from \"~/types\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface AssignBeforeGroupUpdateParams {\n onBeforeUpdate: Topic<BeforeGroupUpdateTopicParams>;\n plugins: PluginsContainer;\n}\nexport const assignBeforeGroupUpdate = (params: AssignBeforeGroupUpdateParams) => {\n const { onBeforeUpdate, plugins } = params;\n\n onBeforeUpdate.subscribe(({ group }) => {\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n if (!groupPlugin) {\n return;\n }\n throw new Error(`Cms Groups defined via plugins cannot be updated.`);\n });\n};\n"]}
@@ -2,11 +2,11 @@ import { CmsGroupContext, CmsContext, HeadlessCmsStorageOperations } from "../..
2
2
  import { Tenant } from "@webiny/api-tenancy/types";
3
3
  import { I18NLocale } from "@webiny/api-i18n/types";
4
4
  import { SecurityIdentity } from "@webiny/api-security/types";
5
- export interface Params {
5
+ export interface CreateModelGroupsCrudParams {
6
6
  getTenant: () => Tenant;
7
7
  getLocale: () => I18NLocale;
8
8
  storageOperations: HeadlessCmsStorageOperations;
9
9
  context: CmsContext;
10
10
  getIdentity: () => SecurityIdentity;
11
11
  }
12
- export declare const createModelGroupsCrud: (params: Params) => CmsGroupContext;
12
+ export declare const createModelGroupsCrud: (params: CreateModelGroupsCrudParams) => CmsGroupContext;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["contentModelGroup.crud.ts"],"names":["CreateContentModelGroupModel","name","validation","create","slug","description","icon","UpdateContentModelGroupModel","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","getGroupsAsPlugins","tenant","id","locale","code","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","map","webinyVersion","WEBINY_VERSION","checkPermissions","check","utils","rwd","groupsGet","groupPlugin","find","group","groups","get","ex","WebinyError","message","data","NotFoundError","groupsList","where","pluginsGroups","databaseGroups","list","concat","onBeforeCreate","onAfterCreate","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","listGroups","response","validateOwnership","createGroup","inputData","createdData","populate","toSlug","validate","input","toJSON","identity","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","result","updateGroup","original","updatedDataJson","onlyDirty","Object","keys","length","updatedGroup","update","error","deleteGroup","delete"],"mappings":"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","sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\n/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\n CmsGroupPermission,\n CmsGroup,\n CmsContext,\n HeadlessCmsStorageOperations,\n CmsGroupCreateInput,\n BeforeGroupCreateTopicParams,\n AfterGroupCreateTopicParams,\n BeforeGroupUpdateTopicParams,\n AfterGroupUpdateTopicParams,\n BeforeGroupDeleteTopicParams,\n AfterGroupDeleteTopicParams\n} from \"~/types\";\nimport * as utils from \"~/utils\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"~/content/plugins/crud/contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"~/content/plugins/crud/contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"~/content/plugins/crud/contentModelGroup/beforeDelete\";\n\nconst CreateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"required,maxLength:100\") }),\n slug: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"required,maxLength:255\") })\n})();\n\nconst UpdateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"maxLength:255\") })\n})();\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const getGroupsAsPlugins = (): CmsGroup[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const checkPermissions = (check: string): Promise<CmsGroupPermission> => {\n return utils.checkPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groupPlugin = getGroupsAsPlugins().find(group => group.id === id);\n\n if (groupPlugin) {\n return groupPlugin;\n }\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n let group: CmsGroup | null = null;\n try {\n group = await storageOperations.groups.get({\n tenant,\n locale,\n id\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"GET_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n const tenant = getTenant().id;\n const locale = getLocale().code;\n try {\n const pluginsGroups = getGroupsAsPlugins();\n\n const databaseGroups = await storageOperations.groups.list({\n where: {\n ...(where || {}),\n tenant: where ? where.tenant : tenant,\n locale: where ? where.locale : locale\n }\n });\n\n return pluginsGroups.concat(\n databaseGroups.map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n })\n );\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n const onBeforeCreate = createTopic<BeforeGroupCreateTopicParams>();\n const onAfterCreate = createTopic<AfterGroupCreateTopicParams>();\n const onBeforeUpdate = createTopic<BeforeGroupUpdateTopicParams>();\n const onAfterUpdate = createTopic<AfterGroupUpdateTopicParams>();\n const onBeforeDelete = createTopic<BeforeGroupDeleteTopicParams>();\n const onAfterDelete = createTopic<AfterGroupDeleteTopicParams>();\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n onBeforeGroupCreate: onBeforeCreate,\n onAfterGroupCreate: onAfterCreate,\n onBeforeGroupUpdate: onBeforeUpdate,\n onAfterGroupUpdate: onAfterUpdate,\n onBeforeGroupDelete: onBeforeDelete,\n onAfterGroupDelete: onAfterDelete,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n utils.checkOwnership(context, permission, group);\n utils.validateGroupAccess(context, permission, group);\n\n return group;\n },\n listGroups: async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n const permission = await checkPermissions(\"r\");\n\n const response = await groupsList({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return response.filter(group => {\n if (!utils.validateOwnership(context, permission, group)) {\n return false;\n }\n return utils.validateGroupAccess(context, permission, group);\n });\n },\n createGroup: async inputData => {\n await checkPermissions(\"w\");\n\n const createdData = new CreateContentModelGroupModel().populate({\n ...inputData,\n slug: inputData.slug ? utils.toSlug(inputData.slug) : \"\"\n });\n await createdData.validate();\n const input: CmsGroupCreateInput & { slug: string } = await createdData.toJSON();\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...input,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n webinyVersion: context.WEBINY_VERSION\n };\n try {\n await onBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n input,\n group\n });\n\n await onAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n },\n updateGroup: async (id, inputData) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await groupsGet(id);\n\n utils.checkOwnership(context, permission, original);\n\n const input = new UpdateContentModelGroupModel().populate(inputData);\n await input.validate();\n\n const updatedDataJson: Partial<CmsGroup> = await input.toJSON({\n onlyDirty: true\n });\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(updatedDataJson).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...updatedDataJson,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n original,\n group,\n input\n });\n\n await onAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n },\n deleteGroup: async id => {\n const permission = await checkPermissions(\"d\");\n\n const group = await groupsGet(id);\n\n utils.checkOwnership(context, permission, group);\n\n try {\n await onBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n\n await onAfterDelete.publish({\n group\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n }\n };\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { ContextPlugin } from "@webiny/handler";
2
2
  import { CmsContext, HeadlessCmsStorageOperations } from "../../../types";
3
- export interface Params {
3
+ export interface CreateContentCrudsParams {
4
4
  storageOperations: HeadlessCmsStorageOperations;
5
5
  }
6
- export declare const createContentCruds: (params: Params) => ContextPlugin<CmsContext>;
6
+ export declare const createContentCruds: (params: CreateContentCrudsParams) => ContextPlugin<CmsContext>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["debug","process","env","DEBUG","createContentCruds","params","storageOperations","ContextPlugin","context","cms","console","log","getLocale","getIdentity","security","getTenant","tenancy","getCurrentTenant","plugins","length","register","init"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,KAAK,GAAGC,OAAO,CAACC,GAAR,CAAYC,KAAZ,KAAsB,MAApC;;AAMO,MAAMC,kBAAkB,GAAIC,MAAD,IAAsC;AACpE,QAAM;AAAEC,IAAAA;AAAF,MAAwBD,MAA9B;AACA,SAAO,IAAIE,sBAAJ,CAA8B,MAAMC,OAAN,IAAiB;AAClD;AACR;AACA;AACA;AACQ,QAAI,CAACA,OAAO,CAACC,GAAb,EAAkB;AACdT,MAAAA,KAAK,IACDU,OAAO,CAACC,GAAR,CACK,mGADL,CADJ;AAIA;AACH;;AACD,UAAMC,SAAS,GAAG,MAAM;AACpB,aAAOJ,OAAO,CAACC,GAAR,CAAYG,SAAZ,EAAP;AACH,KAFD;;AAIA,UAAMC,WAAW,GAAG,MAAM;AACtB,aAAOL,OAAO,CAACM,QAAR,CAAiBD,WAAjB,EAAP;AACH,KAFD;;AAIA,UAAME,SAAS,GAAG,MAAM;AACpB,aAAOP,OAAO,CAACQ,OAAR,CAAgBC,gBAAhB,EAAP;AACH,KAFD;;AAIA,QAAIX,iBAAiB,CAACY,OAAlB,IAA6BZ,iBAAiB,CAACY,OAAlB,CAA0BC,MAA1B,GAAmC,CAApE,EAAuE;AACnEX,MAAAA,OAAO,CAACU,OAAR,CAAgBE,QAAhB,CAAyBd,iBAAiB,CAACY,OAA3C;AACH;;AAEDV,IAAAA,OAAO,CAACC,GAAR,2FACOD,OAAO,CAACC,GADf;AAEIH,MAAAA;AAFJ,OAGO,8BAAiB;AAChBE,MAAAA,OADgB;AAEhBO,MAAAA,SAFgB;AAGhBF,MAAAA,WAHgB;AAIhBP,MAAAA;AAJgB,KAAjB,CAHP,GASO,kCAAmB;AAClBE,MAAAA,OADkB;AAElBO,MAAAA,SAFkB;AAGlBH,MAAAA,SAHkB;AAIlBN,MAAAA;AAJkB,KAAnB,CATP,GAeO,8CAAsB;AACrBE,MAAAA,OADqB;AAErBO,MAAAA,SAFqB;AAGrBH,MAAAA,SAHqB;AAIrBC,MAAAA,WAJqB;AAKrBP,MAAAA;AALqB,KAAtB,CAfP,GAsBO,oCAAiB;AAChBE,MAAAA,OADgB;AAEhBI,MAAAA,SAFgB;AAGhBG,MAAAA,SAHgB;AAIhBF,MAAAA,WAJgB;AAKhBP,MAAAA;AALgB,KAAjB,CAtBP,GA6BO,0CAAuB;AACtBE,MAAAA,OADsB;AAEtBK,MAAAA,WAFsB;AAGtBP,MAAAA;AAHsB,KAAvB,CA7BP;;AAoCA,QAAI,CAACA,iBAAiB,CAACe,IAAvB,EAA6B;AACzB;AACH;;AACD,UAAMf,iBAAiB,CAACe,IAAlB,CAAuBb,OAAO,CAACC,GAA/B,CAAN;AACH,GApEM,CAAP;AAqEH,CAvEM","sourcesContent":["import { ContextPlugin } from \"@webiny/handler\";\nimport { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport { createModelGroupsCrud } from \"~/content/plugins/crud/contentModelGroup.crud\";\nimport { createModelsCrud } from \"~/content/plugins/crud/contentModel.crud\";\nimport { createContentEntryCrud } from \"~/content/plugins/crud/contentEntry.crud\";\nimport { createSystemCrud } from \"~/plugins/crud/system.crud\";\nimport { createSettingsCrud } from \"~/plugins/crud/settings.crud\";\n\nconst debug = process.env.DEBUG === \"true\";\n\nexport interface CreateContentCrudsParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContentCruds = (params: CreateContentCrudsParams) => {\n const { storageOperations } = params;\n return new ContextPlugin<CmsContext>(async context => {\n /**\n * This should never happen in the actual project.\n * It is to make sure that we load setup context before the CRUD init in our internal code.\n */\n if (!context.cms) {\n debug &&\n console.log(\n `Missing initial \"cms\" on the context. Make sure that you set it up before creating Content CRUDs.`\n );\n return;\n }\n const getLocale = () => {\n return context.cms.getLocale();\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n if (storageOperations.plugins && storageOperations.plugins.length > 0) {\n context.plugins.register(storageOperations.plugins);\n }\n\n context.cms = {\n ...context.cms,\n storageOperations,\n ...createSystemCrud({\n context,\n getTenant,\n getIdentity,\n storageOperations\n }),\n ...createSettingsCrud({\n context,\n getTenant,\n getLocale,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n storageOperations\n })\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context.cms);\n });\n};\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const createListFilters = ({
11
11
  field
@@ -58,11 +58,7 @@ const plugin = {
58
58
  createInputField({
59
59
  field
60
60
  }) {
61
- if (field.multipleValues) {
62
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [Boolean]", field);
63
- }
64
-
65
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": Boolean", field);
61
+ return (0, _helpers.createGraphQLInputField)(field, "Boolean");
66
62
  }
67
63
 
68
64
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["boolean.ts"],"names":["createListFilters","field","fieldId","plugin","name","type","fieldType","isSortable","isSearchable","read","createGetFilters","createTypeField","multipleValues","manage","createInputField"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAwC;AAC9D,SAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,KAHI;AAIH,CALD;;AAOA,MAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,oCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,SAH8B;AAIzCC,EAAAA,UAAU,EAAE,IAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFT,IAAAA,iBADE;;AAEFU,IAAAA,gBAAgB,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACC,OAAQ,WAAxB;AACH,KAJC;;AAKFS,IAAAA,eAAe,CAAC;AAAEV,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACW,cAAV,EAA0B;AACtB,eAAQ,GAAEX,KAAK,CAACC,OAAQ,aAAxB;AACH;;AAED,aAAQ,GAAED,KAAK,CAACC,OAAQ,WAAxB;AACH;;AAXC,GANmC;AAmBzCW,EAAAA,MAAM,EAAE;AACJb,IAAAA,iBADI;;AAEJW,IAAAA,eAAe,CAAC;AAAEV,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACW,cAAV,EAA0B;AACtB,eAAOX,KAAK,CAACC,OAAN,GAAgB,aAAvB;AACH;;AAED,aAAOD,KAAK,CAACC,OAAN,GAAgB,WAAvB;AACH,KARG;;AASJY,IAAAA,gBAAgB,CAAC;AAAEb,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,SAA/B,CAAP;AACH;;AAXG;AAnBiC,CAA7C;eAkCeE,M","sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: Boolean\n ${field.fieldId}_not: Boolean\n `;\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-boolean\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"boolean\",\n isSortable: true,\n isSearchable: true,\n read: {\n createListFilters,\n createGetFilters({ field }) {\n return `${field.fieldId}: Boolean`;\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [Boolean]`;\n }\n\n return `${field.fieldId}: Boolean`;\n }\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return field.fieldId + \": [Boolean]\";\n }\n\n return field.fieldId + \": Boolean\";\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"Boolean\");\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const fieldGraphQLTypes = {
11
11
  time: "Time",
@@ -15,7 +15,9 @@ const fieldGraphQLTypes = {
15
15
  };
16
16
 
17
17
  const getFieldGraphQLType = field => {
18
- const type = field.settings.type;
18
+ var _field$settings;
19
+
20
+ const type = (_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.type;
19
21
 
20
22
  if (!type || !fieldGraphQLTypes[type]) {
21
23
  return "DateTime";
@@ -77,7 +79,7 @@ const plugin = {
77
79
  createInputField({
78
80
  field
79
81
  }) {
80
- return (0, _requiredField.attachRequiredFieldValue)(`${field.fieldId}: ${getFieldGraphQLType(field)}`, field);
82
+ return (0, _helpers.createGraphQLInputField)(field, getFieldGraphQLType(field));
81
83
  }
82
84
 
83
85
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["datetime.ts"],"names":["fieldGraphQLTypes","time","dateTimeWithoutTimezone","dateTimeWithTimezone","date","getFieldGraphQLType","field","type","settings","createListFilters","fieldId","plugin","name","fieldType","isSortable","isSearchable","read","createGetFilters","createTypeField","multipleValues","manage","createInputField"],"mappings":";;;;;;;AACA;;AAEA,MAAMA,iBAAyC,GAAG;AAC9CC,EAAAA,IAAI,EAAE,MADwC;AAE9CC,EAAAA,uBAAuB,EAAE,UAFqB;AAG9CC,EAAAA,oBAAoB,EAAE,WAHwB;AAI9CC,EAAAA,IAAI,EAAE;AAJwC,CAAlD;;AAOA,MAAMC,mBAAmB,GAAIC,KAAD,IAAkC;AAAA;;AAC1D,QAAMC,IAAI,sBAAGD,KAAK,CAACE,QAAT,oDAAG,gBAAgBD,IAA7B;;AACA,MAAI,CAACA,IAAD,IAAS,CAACP,iBAAiB,CAACO,IAAD,CAA/B,EAAuC;AACnC,WAAO,UAAP;AACH;;AACD,SAAOP,iBAAiB,CAACO,IAAD,CAAxB;AACH,CAND;;AAWA,MAAME,iBAAiB,GAAG,CAAC;AAAEH,EAAAA;AAAF,CAAD,KAAwC;AAC9D,SAAQ;AACZ,UAAUA,KAAK,CAACI,OAAQ,KAAIL,mBAAmB,CAACC,KAAD,CAAQ;AACvD,UAAUA,KAAK,CAACI,OAAQ,SAAQL,mBAAmB,CAACC,KAAD,CAAQ;AAC3D,UAAUA,KAAK,CAACI,OAAQ,SAAQL,mBAAmB,CAACC,KAAD,CAAQ;AAC3D,UAAUA,KAAK,CAACI,OAAQ,aAAYL,mBAAmB,CAACC,KAAD,CAAQ;AAC/D,UAAUA,KAAK,CAACI,OAAQ,QAAOL,mBAAmB,CAACC,KAAD,CAAQ;AAC1D,UAAUA,KAAK,CAACI,OAAQ,SAAQL,mBAAmB,CAACC,KAAD,CAAQ;AAC3D,UAAUA,KAAK,CAACI,OAAQ,QAAOL,mBAAmB,CAACC,KAAD,CAAQ;AAC1D,UAAUA,KAAK,CAACI,OAAQ,SAAQL,mBAAmB,CAACC,KAAD,CAAQ;AAC3D,KATI;AAUH,CAXD;;AAaA,MAAMK,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,qCADmC;AAEzCL,EAAAA,IAAI,EAAE,4BAFmC;AAGzCM,EAAAA,SAAS,EAAE,UAH8B;AAIzCC,EAAAA,UAAU,EAAE,IAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFP,IAAAA,iBADE;;AAEFQ,IAAAA,gBAAgB,CAAC;AAAEX,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACI,OAAQ,KAAIL,mBAAmB,CAACC,KAAD,CAAQ,EAAvD;AACH,KAJC;;AAKFY,IAAAA,eAAe,CAAC;AAAEZ,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACa,cAAV,EAA0B;AACtB,eAAQ,GAAEb,KAAK,CAACI,OAAQ,MAAKL,mBAAmB,CAACC,KAAD,CAAQ,GAAxD;AACH;;AAED,aAAQ,GAAEA,KAAK,CAACI,OAAQ,KAAIL,mBAAmB,CAACC,KAAD,CAAQ,EAAvD;AACH;;AAXC,GANmC;AAmBzCc,EAAAA,MAAM,EAAE;AACJX,IAAAA,iBADI;;AAEJS,IAAAA,eAAe,CAAC;AAAEZ,MAAAA;AAAF,KAAD,EAAY;AACvB,aAAQ,GAAEA,KAAK,CAACI,OAAQ,KAAIL,mBAAmB,CAACC,KAAD,CAAQ,EAAvD;AACH,KAJG;;AAKJe,IAAAA,gBAAgB,CAAC;AAAEf,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+BD,mBAAmB,CAACC,KAAD,CAAlD,CAAP;AACH;;AAPG;AAnBiC,CAA7C;eA8BeK,M","sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\nconst fieldGraphQLTypes: Record<string, string> = {\n time: \"Time\",\n dateTimeWithoutTimezone: \"DateTime\",\n dateTimeWithTimezone: \"DateTimeZ\",\n date: \"Date\"\n};\n\nconst getFieldGraphQLType = (field: CmsModelField): string => {\n const type = field.settings?.type;\n if (!type || !fieldGraphQLTypes[type]) {\n return \"DateTime\";\n }\n return fieldGraphQLTypes[type];\n};\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: ${getFieldGraphQLType(field)}\n ${field.fieldId}_not: ${getFieldGraphQLType(field)}\n ${field.fieldId}_in: [${getFieldGraphQLType(field)}]\n ${field.fieldId}_not_in: [${getFieldGraphQLType(field)}]\n ${field.fieldId}_lt: ${getFieldGraphQLType(field)}\n ${field.fieldId}_lte: ${getFieldGraphQLType(field)}\n ${field.fieldId}_gt: ${getFieldGraphQLType(field)}\n ${field.fieldId}_gte: ${getFieldGraphQLType(field)}\n `;\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-datetime\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"datetime\",\n isSortable: true,\n isSearchable: true,\n read: {\n createListFilters,\n createGetFilters({ field }) {\n return `${field.fieldId}: ${getFieldGraphQLType(field)}`;\n },\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [${getFieldGraphQLType(field)}]`;\n }\n\n return `${field.fieldId}: ${getFieldGraphQLType(field)}`;\n }\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n return `${field.fieldId}: ${getFieldGraphQLType(field)}`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, getFieldGraphQLType(field));\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const plugin = {
11
11
  name: "cms-model-field-to-graphql-file",
@@ -39,11 +39,7 @@ const plugin = {
39
39
  createInputField({
40
40
  field
41
41
  }) {
42
- if (field.multipleValues) {
43
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [String]", field);
44
- }
45
-
46
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": String", field);
42
+ return (0, _helpers.createGraphQLInputField)(field, "String");
47
43
  }
48
44
 
49
45
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["file.ts"],"names":["plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","field","multipleValues","fieldId","manage","createInputField"],"mappings":";;;;;;;AACA;;AAEA,MAAMA,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,iCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,MAH8B;AAIzCC,EAAAA,UAAU,EAAE,KAJ6B;AAKzCC,EAAAA,YAAY,EAAE,KAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACtB,eAAQ,GAAED,KAAK,CAACE,OAAQ,YAAxB;AACH;;AAED,aAAQ,GAAEF,KAAK,CAACE,OAAQ,UAAxB;AACH;;AAPC,GANmC;AAezCC,EAAAA,MAAM,EAAE;AACJJ,IAAAA,eAAe,CAAC;AAAEC,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACC,cAAV,EAA0B;AACtB,eAAOD,KAAK,CAACE,OAAN,GAAgB,YAAvB;AACH;;AACD,aAAOF,KAAK,CAACE,OAAN,GAAgB,UAAvB;AACH,KANG;;AAOJE,IAAAA,gBAAgB,CAAC;AAAEJ,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,QAA/B,CAAP;AACH;;AATG;AAfiC,CAA7C;eA4BeR,M","sourcesContent":["import { CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-file\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"file\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [String]`;\n }\n\n return `${field.fieldId}: String`;\n }\n },\n manage: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return field.fieldId + \": [String]\";\n }\n return field.fieldId + \": String\";\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"String\");\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -0,0 +1,6 @@
1
+ import { CmsModelField } from "../../../types";
2
+ export declare const attachRequiredFieldValue: (def: string, field: CmsModelField) => string;
3
+ /**
4
+ * Method creates single and multiple values fields.
5
+ */
6
+ export declare const createGraphQLInputField: (field: CmsModelField, graphQlType: string) => string;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createGraphQLInputField = exports.attachRequiredFieldValue = void 0;
7
+ const requiredValidationName = "required";
8
+
9
+ const getIsRequired = validations => {
10
+ return (validations || []).some(validation => {
11
+ return validation.name === requiredValidationName;
12
+ });
13
+ };
14
+
15
+ const attachRequiredFieldValue = (def, field) => {
16
+ if (!field.validation || field.validation.length === 0) {
17
+ return def;
18
+ }
19
+
20
+ const isRequired = field.validation.some(validation => {
21
+ return validation.name === "required";
22
+ });
23
+
24
+ if (!isRequired) {
25
+ return def;
26
+ }
27
+
28
+ return `${def}!`;
29
+ };
30
+ /**
31
+ * Method creates single and multiple values fields.
32
+ */
33
+
34
+
35
+ exports.attachRequiredFieldValue = attachRequiredFieldValue;
36
+
37
+ const createGraphQLInputField = (field, graphQlType) => {
38
+ const singleRequired = getIsRequired(field.validation) ? "!" : "";
39
+
40
+ if (!field.multipleValues) {
41
+ return `${field.fieldId}: ${graphQlType}${singleRequired}`;
42
+ }
43
+
44
+ const multipleRequired = getIsRequired(field.listValidation) ? "!" : "";
45
+ const itemRequired = process.env.HEADLESS_CMS_GRAPHQL_INPUT_REQUIRE_ARRAY_ITEM === "false" ? "" : "!";
46
+ return `${field.fieldId}: [${graphQlType}${itemRequired}]${multipleRequired}`;
47
+ };
48
+
49
+ exports.createGraphQLInputField = createGraphQLInputField;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["helpers.ts"],"names":["requiredValidationName","getIsRequired","validations","some","validation","name","attachRequiredFieldValue","def","field","length","isRequired","createGraphQLInputField","graphQlType","singleRequired","multipleValues","fieldId","multipleRequired","listValidation","itemRequired","process","env","HEADLESS_CMS_GRAPHQL_INPUT_REQUIRE_ARRAY_ITEM"],"mappings":";;;;;;AAEA,MAAMA,sBAAsB,GAAG,UAA/B;;AAEA,MAAMC,aAAa,GAAIC,WAAD,IAAsD;AACxE,SAAO,CAACA,WAAW,IAAI,EAAhB,EAAoBC,IAApB,CAAyBC,UAAU,IAAI;AAC1C,WAAOA,UAAU,CAACC,IAAX,KAAoBL,sBAA3B;AACH,GAFM,CAAP;AAGH,CAJD;;AAMO,MAAMM,wBAAwB,GAAG,CAACC,GAAD,EAAcC,KAAd,KAA+C;AACnF,MAAI,CAACA,KAAK,CAACJ,UAAP,IAAqBI,KAAK,CAACJ,UAAN,CAAiBK,MAAjB,KAA4B,CAArD,EAAwD;AACpD,WAAOF,GAAP;AACH;;AACD,QAAMG,UAAU,GAAGF,KAAK,CAACJ,UAAN,CAAiBD,IAAjB,CAAsBC,UAAU,IAAI;AACnD,WAAOA,UAAU,CAACC,IAAX,KAAoB,UAA3B;AACH,GAFkB,CAAnB;;AAGA,MAAI,CAACK,UAAL,EAAiB;AACb,WAAOH,GAAP;AACH;;AACD,SAAQ,GAAEA,GAAI,GAAd;AACH,CAXM;AAYP;AACA;AACA;;;;;AACO,MAAMI,uBAAuB,GAAG,CAACH,KAAD,EAAuBI,WAAvB,KAAuD;AAC1F,QAAMC,cAAc,GAAGZ,aAAa,CAACO,KAAK,CAACJ,UAAP,CAAb,GAAkC,GAAlC,GAAwC,EAA/D;;AACA,MAAI,CAACI,KAAK,CAACM,cAAX,EAA2B;AACvB,WAAQ,GAAEN,KAAK,CAACO,OAAQ,KAAIH,WAAY,GAAEC,cAAe,EAAzD;AACH;;AACD,QAAMG,gBAAgB,GAAGf,aAAa,CAACO,KAAK,CAACS,cAAP,CAAb,GAAsC,GAAtC,GAA4C,EAArE;AAEA,QAAMC,YAAY,GACdC,OAAO,CAACC,GAAR,CAAYC,6CAAZ,KAA8D,OAA9D,GAAwE,EAAxE,GAA6E,GADjF;AAGA,SAAQ,GAAEb,KAAK,CAACO,OAAQ,MAAKH,WAAY,GAAEM,YAAa,IAAGF,gBAAiB,EAA5E;AACH,CAXM","sourcesContent":["import { CmsModelField, CmsModelFieldValidation } from \"~/types\";\n\nconst requiredValidationName = \"required\";\n\nconst getIsRequired = (validations?: CmsModelFieldValidation[]): boolean => {\n return (validations || []).some(validation => {\n return validation.name === requiredValidationName;\n });\n};\n\nexport const attachRequiredFieldValue = (def: string, field: CmsModelField): string => {\n if (!field.validation || field.validation.length === 0) {\n return def;\n }\n const isRequired = field.validation.some(validation => {\n return validation.name === \"required\";\n });\n if (!isRequired) {\n return def;\n }\n return `${def}!`;\n};\n/**\n * Method creates single and multiple values fields.\n */\nexport const createGraphQLInputField = (field: CmsModelField, graphQlType: string): string => {\n const singleRequired = getIsRequired(field.validation) ? \"!\" : \"\";\n if (!field.multipleValues) {\n return `${field.fieldId}: ${graphQlType}${singleRequired}`;\n }\n const multipleRequired = getIsRequired(field.listValidation) ? \"!\" : \"\";\n\n const itemRequired =\n process.env.HEADLESS_CMS_GRAPHQL_INPUT_REQUIRE_ARRAY_ITEM === \"false\" ? \"\" : \"!\";\n\n return `${field.fieldId}: [${graphQlType}${itemRequired}]${multipleRequired}`;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["text","ref","number","datetime","boolean","longText","richText","file","object"],"mappings":";;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;eAEe,MAAM,CAACA,aAAD,EAAOC,YAAP,EAAYC,eAAZ,EAAoBC,iBAApB,EAA8BC,gBAA9B,EAAuCC,iBAAvC,EAAiDC,iBAAjD,EAA2DC,aAA3D,EAAiEC,eAAjE,C","sourcesContent":["import text from \"./text\";\nimport longText from \"./longText\";\nimport ref from \"./ref\";\nimport number from \"./number\";\nimport boolean from \"./boolean\";\nimport datetime from \"./datetime\";\nimport richText from \"./richText\";\nimport file from \"./file\";\nimport object from \"./object\";\n\nexport default () => [text, ref, number, datetime, boolean, longText, richText, file, object];\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const createListFilters = ({
11
11
  field
@@ -51,11 +51,7 @@ const plugin = {
51
51
  createInputField({
52
52
  field
53
53
  }) {
54
- if (field.multipleValues) {
55
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [String]", field);
56
- }
57
-
58
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": String", field);
54
+ return (0, _helpers.createGraphQLInputField)(field, "String");
59
55
  }
60
56
 
61
57
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["longText.ts"],"names":["createListFilters","field","fieldId","plugin","name","type","fieldType","isSortable","isSearchable","read","createTypeField","multipleValues","manage","createInputField"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAwC;AAC9D,SAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,KAHI;AAIH,CALD;;AAOA,MAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,sCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,WAH8B;AAIzCC,EAAAA,UAAU,EAAE,KAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,eAAe,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACU,cAAV,EAA0B;AACtB,eAAQ,GAAEV,KAAK,CAACC,OAAQ,YAAxB;AACH;;AAED,aAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;AACH,KAPC;;AAQFF,IAAAA;AARE,GANmC;AAgBzCY,EAAAA,MAAM,EAAE;AACJZ,IAAAA,iBADI;;AAEJU,IAAAA,eAAe,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACU,cAAV,EAA0B;AACtB,eAAOV,KAAK,CAACC,OAAN,GAAgB,YAAvB;AACH;;AAED,aAAOD,KAAK,CAACC,OAAN,GAAgB,UAAvB;AACH,KARG;;AASJW,IAAAA,gBAAgB,CAAC;AAAEZ,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,QAA/B,CAAP;AACH;;AAXG;AAhBiC,CAA7C;eA+BeE,M","sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}_contains: String\n ${field.fieldId}_not_contains: String\n `;\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-long-text\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"long-text\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [String]`;\n }\n\n return `${field.fieldId}: String`;\n },\n createListFilters\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return field.fieldId + \": [String]\";\n }\n\n return field.fieldId + \": String\";\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"String\");\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _requiredField = require("./requiredField");
8
+ var _helpers = require("./helpers");
9
9
 
10
10
  const createListFilters = ({
11
11
  field
@@ -64,11 +64,7 @@ const plugin = {
64
64
  createInputField({
65
65
  field
66
66
  }) {
67
- if (field.multipleValues) {
68
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": [Number]", field);
69
- }
70
-
71
- return (0, _requiredField.attachRequiredFieldValue)(field.fieldId + ": Number", field);
67
+ return (0, _helpers.createGraphQLInputField)(field, "Number");
72
68
  }
73
69
 
74
70
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["number.ts"],"names":["createListFilters","field","fieldId","plugin","name","type","fieldType","isSortable","isSearchable","read","createGetFilters","createTypeField","multipleValues","manage","createInputField"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,iBAAiB,GAAG,CAAC;AAAEC,EAAAA;AAAF,CAAD,KAAwC;AAC9D,SAAQ;AACZ,UAAUA,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,UAAUD,KAAK,CAACC,OAAQ;AACxB,KATI;AAUH,CAXD;;AAaA,MAAMC,MAAoC,GAAG;AACzCC,EAAAA,IAAI,EAAE,mCADmC;AAEzCC,EAAAA,IAAI,EAAE,4BAFmC;AAGzCC,EAAAA,SAAS,EAAE,QAH8B;AAIzCC,EAAAA,UAAU,EAAE,IAJ6B;AAKzCC,EAAAA,YAAY,EAAE,IAL2B;AAMzCC,EAAAA,IAAI,EAAE;AACFC,IAAAA,gBAAgB,CAAC;AAAET,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAQ,GAAEA,KAAK,CAACC,OAAQ,UAAxB;AACH,KAHC;;AAIFF,IAAAA,iBAJE;;AAKFW,IAAAA,eAAe,CAAC;AAAEV,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACW,cAAV,EAA0B;AACtB,eAAQ,GAAEX,KAAK,CAACC,OAAQ,YAAxB;AACH;;AAED,aAAQ,GAAED,KAAK,CAACC,OAAQ,UAAxB;AACH;;AAXC,GANmC;AAmBzCW,EAAAA,MAAM,EAAE;AACJb,IAAAA,iBADI;;AAEJW,IAAAA,eAAe,CAAC;AAAEV,MAAAA;AAAF,KAAD,EAAY;AACvB,UAAIA,KAAK,CAACW,cAAV,EAA0B;AACtB,eAAOX,KAAK,CAACC,OAAN,GAAgB,YAAvB;AACH;;AAED,aAAOD,KAAK,CAACC,OAAN,GAAgB,UAAvB;AACH,KARG;;AASJY,IAAAA,gBAAgB,CAAC;AAAEb,MAAAA;AAAF,KAAD,EAAY;AACxB,aAAO,sCAAwBA,KAAxB,EAA+B,QAA/B,CAAP;AACH;;AAXG;AAnBiC,CAA7C;eAkCeE,M","sourcesContent":["import { CmsModelField, CmsModelFieldToGraphQLPlugin } from \"~/types\";\nimport { createGraphQLInputField } from \"./helpers\";\n\ninterface CreateListFiltersParams {\n field: CmsModelField;\n}\nconst createListFilters = ({ field }: CreateListFiltersParams) => {\n return `\n ${field.fieldId}: Number\n ${field.fieldId}_not: Number\n ${field.fieldId}_in: [Number]\n ${field.fieldId}_not_in: [Number]\n ${field.fieldId}_lt: Number\n ${field.fieldId}_lte: Number\n ${field.fieldId}_gt: Number\n ${field.fieldId}_gte: Number\n `;\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-number\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"number\",\n isSortable: true,\n isSearchable: true,\n read: {\n createGetFilters({ field }) {\n return `${field.fieldId}: Number`;\n },\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [Number]`;\n }\n\n return `${field.fieldId}: Number`;\n }\n },\n manage: {\n createListFilters,\n createTypeField({ field }) {\n if (field.multipleValues) {\n return field.fieldId + \": [Number]\";\n }\n\n return field.fieldId + \": Number\";\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"Number\");\n }\n }\n};\n\nexport default plugin;\n"]}
@@ -15,25 +15,23 @@ var _renderInputFields = require("../utils/renderInputFields");
15
15
 
16
16
  var _createTypeName = require("../utils/createTypeName");
17
17
 
18
- var _requiredField = require("./requiredField");
19
-
20
- const typeFromField = ({
21
- typeOfType,
22
- model,
23
- type,
24
- field,
25
- fieldTypePlugins
26
- }) => {
18
+ var _helpers = require("./helpers");
19
+
20
+ const typeFromField = params => {
21
+ var _field$settings;
22
+
23
+ const {
24
+ typeOfType,
25
+ model,
26
+ type,
27
+ field,
28
+ fieldTypePlugins
29
+ } = params;
27
30
  const typeSuffix = typeOfType === "input" ? "Input" : "";
28
31
  const typeName = (0, _createTypeName.createTypeName)(model.modelId);
29
32
  const mTypeName = (0, _createTypeName.createManageTypeName)(typeName); // `field` is an "object" field
30
33
 
31
- const fields = field.settings.fields;
32
-
33
- if (!fields || fields.length === 0) {
34
- return null;
35
- }
36
-
34
+ const fields = ((_field$settings = field.settings) === null || _field$settings === void 0 ? void 0 : _field$settings.fields) || [];
37
35
  const fieldTypeName = `${mTypeName}_${(0, _upperFirst.default)(field.fieldId)}`;
38
36
  const typeFields = [];
39
37
  const nestedTypes = []; // Once the loop below starts, we'll be executing a recursive "object" type generation.
@@ -124,7 +122,9 @@ const plugin = {
124
122
  createFieldResolvers,
125
123
  graphQLType
126
124
  }) {
127
- if (!field.settings.fields || field.settings.fields.length === 0) {
125
+ var _field$settings2;
126
+
127
+ if (!((_field$settings2 = field.settings) !== null && _field$settings2 !== void 0 && _field$settings2.fields) || field.settings.fields.length === 0) {
128
128
  return false;
129
129
  }
130
130
 
@@ -190,7 +190,7 @@ const plugin = {
190
190
  typeDefs
191
191
  } = result;
192
192
  return {
193
- fields: (0, _requiredField.attachRequiredFieldValue)(`${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`, field),
193
+ fields: (0, _helpers.attachRequiredFieldValue)(`${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`, field),
194
194
  typeDefs
195
195
  };
196
196
  },
@@ -200,7 +200,9 @@ const plugin = {
200
200
  field,
201
201
  createFieldResolvers
202
202
  }) {
203
- if (!field.settings.fields || field.settings.fields.length === 0) {
203
+ var _field$settings3;
204
+
205
+ if (!((_field$settings3 = field.settings) !== null && _field$settings3 !== void 0 && _field$settings3.fields) || field.settings.fields.length === 0) {
204
206
  return false;
205
207
  }
206
208
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["object.ts"],"names":["typeFromField","params","typeOfType","model","type","field","fieldTypePlugins","typeSuffix","typeName","modelId","mTypeName","fields","settings","fieldTypeName","fieldId","typeFields","nestedTypes","replace","RegExp","f","result","typeDefs","push","fieldType","join","plugin","name","isSortable","isSearchable","read","createTypeField","multipleValues","createResolver","createFieldResolvers","graphQLType","length","typeResolvers","resolver","manage","createInputField"],"mappings":"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","sourcesContent":["import upperFirst from \"lodash/upperFirst\";\nimport {\n ApiEndpoint,\n CmsFieldTypePlugins,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { renderField } from \"~/content/plugins/utils/renderFields\";\nimport { renderInputField } from \"~/content/plugins/utils/renderInputFields\";\nimport { createManageTypeName, createTypeName } from \"~/content/plugins/utils/createTypeName\";\nimport { attachRequiredFieldValue } from \"./helpers\";\n\ninterface TypeFromFieldParams {\n typeOfType: string;\n model: CmsModel;\n type: ApiEndpoint;\n field: CmsModelField;\n fieldTypePlugins: CmsFieldTypePlugins;\n}\ninterface TypeFromFieldResponse {\n fieldType: string;\n typeDefs: string;\n}\nconst typeFromField = (params: TypeFromFieldParams): TypeFromFieldResponse | null => {\n const { typeOfType, model, type, field, fieldTypePlugins } = params;\n const typeSuffix = typeOfType === \"input\" ? \"Input\" : \"\";\n const typeName = createTypeName(model.modelId);\n const mTypeName = createManageTypeName(typeName);\n\n // `field` is an \"object\" field\n const fields: CmsModelField[] = field.settings?.fields || [];\n\n const fieldTypeName = `${mTypeName}_${upperFirst(field.fieldId)}`;\n\n const typeFields = [];\n const nestedTypes = [];\n\n // Once the loop below starts, we'll be executing a recursive \"object\" type generation.\n // The main trick here is that nested objects don't know who the parent is, and will generate\n // type names using the \"model\", as if they're at the top level:\n // Every time the types are returned, we need to replace the model name in the generated type name\n // with the actual prefix which includes parent field name type.\n const replace = new RegExp(`${mTypeName}_`, \"g\");\n\n for (const f of fields) {\n const result =\n typeOfType === \"type\"\n ? renderField({ field: f, type, model, fieldTypePlugins })\n : renderInputField({ field: f, model, fieldTypePlugins });\n\n if (!result) {\n continue;\n }\n\n const { fields, typeDefs } = result;\n\n typeFields.push(fields.replace(replace, `${fieldTypeName}_`));\n if (typeDefs) {\n nestedTypes.push(typeDefs.replace(replace, `${fieldTypeName}_`));\n }\n }\n\n return {\n fieldType: `${fieldTypeName}${typeSuffix}`,\n typeDefs: /* GraphQL */ `\n ${nestedTypes.join(\"\\n\")}\n \n ${typeOfType} ${fieldTypeName}${typeSuffix} {\n ${typeFields.join(\"\\n\")}\n }\n `\n };\n};\n\nconst plugin: CmsModelFieldToGraphQLPlugin = {\n name: \"cms-model-field-to-graphql-object\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"object\",\n isSortable: false,\n isSearchable: false,\n read: {\n createTypeField({ field, model, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"read\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n typeDefs\n };\n },\n createResolver({ field, createFieldResolvers, graphQLType }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n }\n },\n manage: {\n createTypeField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"type\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n typeDefs\n };\n },\n createInputField({ model, field, fieldTypePlugins }) {\n const result = typeFromField({\n typeOfType: \"input\",\n model,\n type: \"manage\",\n field,\n fieldTypePlugins\n });\n if (!result) {\n return null;\n }\n const { fieldType, typeDefs } = result;\n\n return {\n fields: attachRequiredFieldValue(\n `${field.fieldId}: ${field.multipleValues ? `[${fieldType}!]` : fieldType}`,\n field\n ),\n typeDefs\n };\n },\n createResolver({ graphQLType, field, createFieldResolvers }) {\n if (!field.settings?.fields || field.settings.fields.length === 0) {\n return false;\n }\n const fieldType = `${graphQLType}_${upperFirst(field.fieldId)}`;\n const typeResolvers = createFieldResolvers({\n graphQLType: fieldType,\n fields: field.settings.fields\n });\n return {\n resolver: null,\n typeResolvers: typeResolvers || {}\n };\n }\n }\n};\n\nexport default plugin;\n"]}