@webiny/api-headless-cms 0.0.0-unstable.6e5425ee89 → 0.0.0-unstable.7f63ea0744

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 (182) hide show
  1. package/context.d.ts +5 -2
  2. package/context.js +53 -4
  3. package/context.js.map +1 -1
  4. package/crud/contentEntry/markLockedFields.js +4 -2
  5. package/crud/contentEntry/markLockedFields.js.map +1 -1
  6. package/crud/contentEntry/referenceFieldsMapping.js +7 -5
  7. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  8. package/crud/contentEntry/searchableFields.d.ts +9 -0
  9. package/crud/contentEntry/searchableFields.js +72 -0
  10. package/crud/contentEntry/searchableFields.js.map +1 -0
  11. package/crud/contentEntry.crud.js +99 -42
  12. package/crud/contentEntry.crud.js.map +1 -1
  13. package/crud/contentModel/beforeCreate.d.ts +2 -3
  14. package/crud/contentModel/beforeCreate.js +4 -5
  15. package/crud/contentModel/beforeCreate.js.map +1 -1
  16. package/crud/contentModel/beforeUpdate.d.ts +2 -4
  17. package/crud/contentModel/beforeUpdate.js +2 -2
  18. package/crud/contentModel/beforeUpdate.js.map +1 -1
  19. package/crud/contentModel/createFieldStorageId.js +4 -1
  20. package/crud/contentModel/createFieldStorageId.js.map +1 -1
  21. package/crud/contentModel/validateModel.d.ts +3 -4
  22. package/crud/contentModel/validateModel.js +6 -3
  23. package/crud/contentModel/validateModel.js.map +1 -1
  24. package/crud/contentModel/validateModelFields.d.ts +3 -4
  25. package/crud/contentModel/validateModelFields.js +100 -38
  26. package/crud/contentModel/validateModelFields.js.map +1 -1
  27. package/crud/contentModel/validation.d.ts +477 -0
  28. package/crud/contentModel/validation.js +97 -0
  29. package/crud/contentModel/validation.js.map +1 -0
  30. package/crud/contentModel.crud.js +212 -177
  31. package/crud/contentModel.crud.js.map +1 -1
  32. package/crud/contentModelGroup/validation.d.ts +30 -0
  33. package/crud/contentModelGroup/validation.js +34 -0
  34. package/crud/contentModelGroup/validation.js.map +1 -0
  35. package/crud/contentModelGroup.crud.js +47 -52
  36. package/crud/contentModelGroup.crud.js.map +1 -1
  37. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
  38. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +203 -0
  39. package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
  40. package/fieldConverters/index.d.ts +2 -1
  41. package/fieldConverters/index.js +2 -1
  42. package/fieldConverters/index.js.map +1 -1
  43. package/graphql/buildSchemaPlugins.d.ts +8 -3
  44. package/graphql/buildSchemaPlugins.js +3 -7
  45. package/graphql/buildSchemaPlugins.js.map +1 -1
  46. package/graphql/createExecutableSchema.d.ts +7 -0
  47. package/graphql/createExecutableSchema.js +29 -0
  48. package/graphql/createExecutableSchema.js.map +1 -0
  49. package/graphql/generateSchema.d.ts +8 -0
  50. package/graphql/generateSchema.js +31 -0
  51. package/graphql/generateSchema.js.map +1 -0
  52. package/graphql/graphQLHandlerFactory.js +91 -50
  53. package/graphql/graphQLHandlerFactory.js.map +1 -1
  54. package/graphql/index.d.ts +1 -3
  55. package/graphql/index.js +2 -39
  56. package/graphql/index.js.map +1 -1
  57. package/graphql/schema/baseContentSchema.d.ts +6 -2
  58. package/graphql/schema/baseContentSchema.js +6 -4
  59. package/graphql/schema/baseContentSchema.js.map +1 -1
  60. package/graphql/schema/baseSchema.d.ts +3 -0
  61. package/graphql/schema/baseSchema.js +53 -0
  62. package/graphql/schema/baseSchema.js.map +1 -0
  63. package/graphql/schema/contentEntries.d.ts +6 -2
  64. package/graphql/schema/contentEntries.js +37 -23
  65. package/graphql/schema/contentEntries.js.map +1 -1
  66. package/graphql/schema/contentModelGroups.d.ts +6 -2
  67. package/graphql/schema/contentModelGroups.js +7 -3
  68. package/graphql/schema/contentModelGroups.js.map +1 -1
  69. package/graphql/schema/contentModels.d.ts +6 -2
  70. package/graphql/schema/contentModels.js +40 -7
  71. package/graphql/schema/contentModels.js.map +1 -1
  72. package/graphql/schema/createFieldResolvers.d.ts +1 -1
  73. package/graphql/schema/createFieldResolvers.js +17 -6
  74. package/graphql/schema/createFieldResolvers.js.map +1 -1
  75. package/graphql/schema/createManageSDL.d.ts +2 -0
  76. package/graphql/schema/createManageSDL.js +10 -6
  77. package/graphql/schema/createManageSDL.js.map +1 -1
  78. package/graphql/schema/createReadResolvers.js +5 -0
  79. package/graphql/schema/createReadResolvers.js.map +1 -1
  80. package/graphql/schema/createReadSDL.d.ts +2 -0
  81. package/graphql/schema/createReadSDL.js +11 -5
  82. package/graphql/schema/createReadSDL.js.map +1 -1
  83. package/graphql/schema/schemaPlugins.d.ts +8 -3
  84. package/graphql/schema/schemaPlugins.js +58 -46
  85. package/graphql/schema/schemaPlugins.js.map +1 -1
  86. package/graphql/system.js +69 -72
  87. package/graphql/system.js.map +1 -1
  88. package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
  89. package/graphqlFields/dynamicZone/dynamicZoneField.js +208 -0
  90. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
  91. package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
  92. package/graphqlFields/dynamicZone/dynamicZoneStorage.js +63 -0
  93. package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
  94. package/graphqlFields/dynamicZone/index.d.ts +2 -0
  95. package/graphqlFields/dynamicZone/index.js +19 -0
  96. package/graphqlFields/dynamicZone/index.js.map +1 -0
  97. package/graphqlFields/index.d.ts +1 -1
  98. package/graphqlFields/index.js +2 -1
  99. package/graphqlFields/index.js.map +1 -1
  100. package/graphqlFields/number.js +4 -0
  101. package/graphqlFields/number.js.map +1 -1
  102. package/graphqlFields/object.js +112 -68
  103. package/graphqlFields/object.js.map +1 -1
  104. package/graphqlFields/ref.js +31 -45
  105. package/graphqlFields/ref.js.map +1 -1
  106. package/index.d.ts +3 -3
  107. package/index.js +3 -7
  108. package/index.js.map +1 -1
  109. package/package.json +28 -28
  110. package/plugins/CmsGraphQLSchemaPlugin.d.ts +5 -0
  111. package/plugins/CmsGraphQLSchemaPlugin.js +12 -0
  112. package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -0
  113. package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +20 -0
  114. package/plugins/CmsGraphQLSchemaSorterPlugin.js +28 -0
  115. package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -0
  116. package/plugins/CmsModelFieldConverterPlugin.d.ts +2 -2
  117. package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
  118. package/plugins/StorageTransformPlugin.d.ts +11 -11
  119. package/plugins/StorageTransformPlugin.js.map +1 -1
  120. package/plugins/index.d.ts +2 -0
  121. package/plugins/index.js +22 -0
  122. package/plugins/index.js.map +1 -1
  123. package/storage/object.js +4 -2
  124. package/storage/object.js.map +1 -1
  125. package/types.d.ts +241 -57
  126. package/types.js +62 -7
  127. package/types.js.map +1 -1
  128. package/utils/converters/ConverterCollection.js +5 -2
  129. package/utils/converters/ConverterCollection.js.map +1 -1
  130. package/utils/createTypeFromFields.d.ts +15 -0
  131. package/utils/createTypeFromFields.js +64 -0
  132. package/utils/createTypeFromFields.js.map +1 -0
  133. package/utils/createTypeName.js +2 -1
  134. package/utils/createTypeName.js.map +1 -1
  135. package/utils/entryStorage.js +14 -11
  136. package/utils/entryStorage.js.map +1 -1
  137. package/utils/getBaseFieldType.d.ts +4 -0
  138. package/utils/getBaseFieldType.js +10 -0
  139. package/utils/getBaseFieldType.js.map +1 -0
  140. package/utils/getSchemaFromFieldPlugins.d.ts +4 -7
  141. package/utils/getSchemaFromFieldPlugins.js +22 -14
  142. package/utils/getSchemaFromFieldPlugins.js.map +1 -1
  143. package/utils/renderFields.js +2 -1
  144. package/utils/renderFields.js.map +1 -1
  145. package/utils/renderGetFilterFields.js +6 -3
  146. package/utils/renderGetFilterFields.js.map +1 -1
  147. package/utils/renderInputFields.js +2 -1
  148. package/utils/renderInputFields.js.map +1 -1
  149. package/utils/renderListFilterFields.js +4 -2
  150. package/utils/renderListFilterFields.js.map +1 -1
  151. package/utils/renderSortEnum.d.ts +7 -4
  152. package/utils/renderSortEnum.js +21 -4
  153. package/utils/renderSortEnum.js.map +1 -1
  154. package/validators/dynamicZone.d.ts +2 -0
  155. package/validators/dynamicZone.js +20 -0
  156. package/validators/dynamicZone.js.map +1 -0
  157. package/validators/index.js +2 -1
  158. package/validators/index.js.map +1 -1
  159. package/crud/contentModel/createFieldModels.d.ts +0 -2
  160. package/crud/contentModel/createFieldModels.js +0 -20
  161. package/crud/contentModel/createFieldModels.js.map +0 -1
  162. package/crud/contentModel/fieldIdValidation.d.ts +0 -1
  163. package/crud/contentModel/fieldIdValidation.js +0 -20
  164. package/crud/contentModel/fieldIdValidation.js.map +0 -1
  165. package/crud/contentModel/idValidation.d.ts +0 -1
  166. package/crud/contentModel/idValidation.js +0 -17
  167. package/crud/contentModel/idValidation.js.map +0 -1
  168. package/crud/contentModel/models.d.ts +0 -4
  169. package/crud/contentModel/models.js +0 -173
  170. package/crud/contentModel/models.js.map +0 -1
  171. package/crud/index.d.ts +0 -6
  172. package/crud/index.js +0 -69
  173. package/crud/index.js.map +0 -1
  174. package/graphql/schema/resolvers/manage/resolveRequestChanges.d.ts +0 -7
  175. package/graphql/schema/resolvers/manage/resolveRequestChanges.js +0 -21
  176. package/graphql/schema/resolvers/manage/resolveRequestChanges.js.map +0 -1
  177. package/graphql/schema/resolvers/manage/resolveRequestReview.d.ts +0 -7
  178. package/graphql/schema/resolvers/manage/resolveRequestReview.js +0 -21
  179. package/graphql/schema/resolvers/manage/resolveRequestReview.js.map +0 -1
  180. package/utils/filterModelFields.d.ts +0 -16
  181. package/utils/filterModelFields.js +0 -71
  182. package/utils/filterModelFields.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["featureVersion","semver","coerce","attachStorageIdToFields","fields","map","field","settings","storageId","fieldId","attachStorageIdToModelFields","model","webinyVersion","version","match","compare","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","clearModelsCache","loader","Object","values","clearAll","managers","Map","updateManager","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","check","checkPermissions","rwd","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","t","l","contentModel","WEBINY_VERSION","validateModelFields","modelsGet","pluginModel","find","get","NotFoundError","modelsList","databaseModels","load","pluginsModels","concat","permission","filterAsync","validateOwnership","validateModelAccess","getModel","checkOwnership","checkModelAccess","getModelManager","target","has","m","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelBeforeUpdate","onModelAfterUpdate","onModelBeforeDelete","onModelAfterDelete","onModelInitialize","assignModelBeforeCreate","assignModelAfterCreate","assignModelBeforeUpdate","assignModelAfterUpdate","assignModelAfterCreateFrom","assignModelBeforeDelete","assignModelAfterDelete","onBeforeModelCreate","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","createModel","inputData","createdData","CreateContentModelModel","populate","validate","input","toJSON","security","disableAuthorization","group","cms","getGroup","enableAuthorization","createFieldModels","identity","name","description","titleFieldId","createdBy","displayName","createdOn","Date","toISOString","savedOn","lockedFields","layout","publish","createdModel","create","updateModelDirect","initialModel","original","resultModel","update","createModelFrom","data","CreateContentModelModelFrom","i18n","groups","updateModel","updatedData","UpdateContentModelModel","onlyDirty","keys","length","groupData","deleteModel","delete","ex","WebinyError","message","error","initializeModel","getEntryManager","getManagers","getEntryManagers"],"sources":["contentModel.crud.ts"],"sourcesContent":["import {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelManager,\n CmsModelPermission,\n HeadlessCmsStorageOperations,\n OnModelBeforeCreateTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelInitializeParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelAfterCreateFromTopicParams,\n CmsModelCreateInput,\n CmsModelUpdateInput,\n CmsModelCreateFromInput,\n CmsModelField\n} from \"~/types\";\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 WebinyError from \"@webiny/error\";\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 { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { assignModelAfterCreate } from \"./contentModel/afterCreate\";\nimport { assignModelAfterUpdate } from \"./contentModel/afterUpdate\";\nimport { assignModelAfterDelete } from \"./contentModel/afterDelete\";\nimport { assignModelAfterCreateFrom } from \"./contentModel/afterCreateFrom\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { checkPermissions } from \"~/utils/permissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { checkModelAccess, validateModelAccess } from \"~/utils/access\";\nimport { validateModelFields } from \"~/crud/contentModel/validateModelFields\";\nimport semver, { SemVer } from \"semver\";\n\n/**\n * TODO: remove for 5.34.0\n * Required because of the 5.33.0 upgrade.\n * Until the upgrade is done, API will break because there is no storageId assigned.\n */\nconst featureVersion = semver.coerce(\"5.33.0\") as SemVer;\n\nconst attachStorageIdToFields = (fields: CmsModelField[]): CmsModelField[] => {\n return fields.map(field => {\n if (field.settings?.fields) {\n field.settings.fields = attachStorageIdToFields(field.settings.fields);\n }\n if (!field.storageId) {\n field.storageId = field.fieldId;\n }\n return field;\n });\n};\n\nconst attachStorageIdToModelFields = (model: CmsModel): CmsModelField[] => {\n if (!model.webinyVersion) {\n return model.fields;\n }\n\n const version = semver.coerce(model.webinyVersion);\n if (!version) {\n return model.fields;\n }\n /**\n * Unfortunately we need to check for beta and next.\n * TODO remove after 5.33.0\n */\n if (model.webinyVersion.match(/beta|next/)) {\n return attachStorageIdToFields(model.fields);\n }\n if (semver.compare(version, featureVersion) >= 0) {\n return model.fields;\n }\n return attachStorageIdToFields(model.fields);\n};\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 fields: attachStorageIdToModelFields(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n })\n ];\n })\n };\n\n const clearModelsCache = (): void => {\n for (const loader of Object.values(loaders)) {\n loader.clearAll();\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 checkPermissions(context, \"cms.contentModel\", { rwd: check });\n };\n\n const getModelsAsPlugins = (): CmsModel[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const models = 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 * Only point where we can truly validate the user model is in the runtime.\n */\n for (const model of models) {\n validateModelFields({\n model,\n plugins: context.plugins\n });\n }\n return models;\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 filterAsync(models, async model => {\n if (!validateOwnership(context, permission, model)) {\n return false;\n }\n return 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 checkOwnership(context, permission, model);\n await 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 // create\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n // create from\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n // update\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n // delete\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n plugins: context.plugins,\n storageOperations\n });\n assignModelAfterCreate({\n context,\n onModelAfterCreate\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n plugins: context.plugins,\n storageOperations\n });\n assignModelAfterUpdate({\n context,\n onModelAfterUpdate\n });\n assignModelAfterCreateFrom({\n context,\n onModelAfterCreateFrom\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n assignModelAfterDelete({\n context,\n onModelAfterDelete\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeModelCreate: onModelBeforeCreate,\n onAfterModelCreate: onModelAfterCreate,\n onBeforeModelCreateFrom: onModelBeforeCreateFrom,\n onAfterModelCreateFrom: onModelAfterCreateFrom,\n onBeforeModelUpdate: onModelBeforeUpdate,\n onAfterModelUpdate: onModelAfterUpdate,\n onBeforeModelDelete: onModelBeforeDelete,\n onAfterModelDelete: onModelAfterDelete,\n /**\n * Released in 5.34.0\n */\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelInitialize,\n clearModelsCache,\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 fields = await createFieldModels(input.fields);\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(),\n savedOn: new Date().toISOString(),\n fields,\n lockedFields: [],\n layout: input.layout || [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await onModelBeforeCreate.publish({\n input,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.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 onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n loaders.listModels.clearAll();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\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(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n await onModelBeforeCreateFrom.publish({\n input,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.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 /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\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 fields = await createFieldModels(inputData.fields);\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,\n savedOn: new Date().toISOString()\n };\n\n await onModelBeforeUpdate.publish({\n input,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.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 onModelBeforeDelete.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 onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n },\n async initializeModel(modelId) {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model });\n\n return true;\n },\n getModelManager,\n getEntryManager: async model => {\n return getModelManager(model);\n },\n getManagers: () => managers,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["ensureTypeTag","model","tags","some","tag","startsWith","push","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","map","clearModelsCache","loader","Object","values","clearAll","managers","Map","updateManager","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","check","checkPermissions","rwd","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","modelTenant","modelLocale","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","onModelBeforeCreate","createTopic","onModelAfterCreate","onModelCreateError","onModelBeforeCreateFrom","onModelAfterCreateFrom","onModelCreateFromError","onModelBeforeUpdate","onModelAfterUpdate","onModelUpdateError","onModelBeforeDelete","onModelAfterDelete","onModelDeleteError","onModelInitialize","assignModelBeforeCreate","assignModelAfterCreate","assignModelBeforeUpdate","assignModelAfterUpdate","assignModelAfterCreateFrom","assignModelBeforeDelete","assignModelAfterDelete","onBeforeModelCreate","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","data","security","disableAuthorization","group","cms","getGroup","enableAuthorization","identity","name","description","titleFieldId","createdBy","displayName","createdOn","Date","toISOString","savedOn","fields","lockedFields","layout","publish","createdModel","create","ex","updateModelDirect","initialModel","original","resultModel","update","createModelFrom","userInput","createModelCreateFromValidation","i18n","groups","updateModel","createModelUpdateValidation","keys","length","groupData","deleteModel","delete","WebinyError","message","initializeModel","getEntryManager","getManagers","getEntryManagers"],"sources":["contentModel.crud.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelManager,\n HeadlessCmsStorageOperations,\n OnModelBeforeCreateTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelInitializeParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelAfterCreateFromTopicParams,\n CmsModelUpdateInput,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelUpdateErrorTopicParams,\n OnModelDeleteErrorTopicParams,\n CmsModelGroup\n} from \"~/types\";\n\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\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 { assignModelBeforeCreate } from \"./contentModel/beforeCreate\";\nimport { assignModelBeforeUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignModelBeforeDelete } from \"./contentModel/beforeDelete\";\nimport { assignModelAfterCreate } from \"./contentModel/afterCreate\";\nimport { assignModelAfterUpdate } from \"./contentModel/afterUpdate\";\nimport { assignModelAfterDelete } from \"./contentModel/afterDelete\";\nimport { assignModelAfterCreateFrom } from \"./contentModel/afterCreateFrom\";\nimport { CmsModelPlugin } from \"~/plugins/CmsModelPlugin\";\nimport { checkPermissions } from \"~/utils/permissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { checkModelAccess, validateModelAccess } from \"~/utils/access\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError } from \"@webiny/utils\";\n\n/**\n * Given a model, return an array of tags ensuring the `type` tag is set.\n */\nconst ensureTypeTag = (model: Pick<CmsModel, \"tags\">) => {\n // Let's make sure we have a `type` tag assigned.\n // If `type` tag is not set, set it to a default one (`model`).\n const tags = model.tags || [];\n if (!tags.some(tag => tag.startsWith(\"type:\"))) {\n tags.push(\"type:model\");\n }\n\n return tags;\n};\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\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 tags: ensureTypeTag(model),\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n })\n ];\n })\n };\n\n const clearModelsCache = (): void => {\n for (const loader of Object.values(loaders)) {\n loader.clearAll();\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) => {\n return 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: modelTenant, locale: modelLocale } = plugin.contentModel;\n if (modelTenant && modelTenant !== tenant) {\n return false;\n } else if (modelLocale && modelLocale !== locale) {\n return false;\n }\n return true;\n })\n .map<CmsModel>(plugin => {\n return {\n ...plugin.contentModel,\n tags: ensureTypeTag(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 tags: ensureTypeTag(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: CmsModel[] = 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 filterAsync(models, async model => {\n if (!validateOwnership(context, permission, model)) {\n return false;\n }\n return 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 checkOwnership(context, permission, model);\n await 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 /**\n * Create\n */\n const onModelBeforeCreate =\n createTopic<OnModelBeforeCreateTopicParams>(\"cms.onModelBeforeCreate\");\n const onModelAfterCreate = createTopic<OnModelAfterCreateTopicParams>(\"cms.onModelAfterCreate\");\n const onModelCreateError = createTopic<OnModelCreateErrorTopicParams>(\"cms.onModelCreateError\");\n /**\n * Create from / clone\n */\n const onModelBeforeCreateFrom = createTopic<OnModelBeforeCreateFromTopicParams>(\n \"cms.onModelBeforeCreateFrom\"\n );\n const onModelAfterCreateFrom = createTopic<OnModelAfterCreateFromTopicParams>(\n \"cms.onModelAfterCreateFrom\"\n );\n const onModelCreateFromError = createTopic<OnModelCreateFromErrorParams>(\n \"cms.onModelCreateFromError\"\n );\n /**\n * Update\n */\n const onModelBeforeUpdate =\n createTopic<OnModelBeforeUpdateTopicParams>(\"cms.onModelBeforeUpdate\");\n const onModelAfterUpdate = createTopic<OnModelAfterUpdateTopicParams>(\"cms.onModelAfterUpdate\");\n const onModelUpdateError = createTopic<OnModelUpdateErrorTopicParams>(\"cms.onModelUpdateError\");\n /**\n * Delete\n */\n const onModelBeforeDelete =\n createTopic<OnModelBeforeDeleteTopicParams>(\"cms.onModelBeforeDelete\");\n const onModelAfterDelete = createTopic<OnModelAfterDeleteTopicParams>(\"cms.onModelAfterDelete\");\n const onModelDeleteError = createTopic<OnModelDeleteErrorTopicParams>(\"cms.onModelDeleteError\");\n /**\n * Initialize\n */\n const onModelInitialize = createTopic<OnModelInitializeParams>(\"cms.onModelInitialize\");\n /**\n * We need to assign some default behaviors.\n */\n assignModelBeforeCreate({\n onModelBeforeCreate,\n onModelBeforeCreateFrom,\n context,\n storageOperations\n });\n assignModelAfterCreate({\n context,\n onModelAfterCreate\n });\n assignModelBeforeUpdate({\n onModelBeforeUpdate,\n context\n });\n assignModelAfterUpdate({\n context,\n onModelAfterUpdate\n });\n assignModelAfterCreateFrom({\n context,\n onModelAfterCreateFrom\n });\n assignModelBeforeDelete({\n onModelBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n assignModelAfterDelete({\n context,\n onModelAfterDelete\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeModelCreate: onModelBeforeCreate,\n onAfterModelCreate: onModelAfterCreate,\n onBeforeModelCreateFrom: onModelBeforeCreateFrom,\n onAfterModelCreateFrom: onModelAfterCreateFrom,\n onBeforeModelUpdate: onModelBeforeUpdate,\n onAfterModelUpdate: onModelAfterUpdate,\n onBeforeModelDelete: onModelBeforeDelete,\n onAfterModelDelete: onModelAfterDelete,\n /**\n * Released in 5.34.0\n */\n onModelBeforeCreate,\n onModelAfterCreate,\n onModelCreateError,\n onModelBeforeCreateFrom,\n onModelAfterCreateFrom,\n onModelCreateFromError,\n onModelBeforeUpdate,\n onModelAfterUpdate,\n onModelUpdateError,\n onModelBeforeDelete,\n onModelAfterDelete,\n onModelDeleteError,\n onModelInitialize,\n clearModelsCache,\n getModel,\n listModels,\n async createModel(input) {\n await checkModelPermissions(\"w\");\n\n const result = await createModelCreateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = result.data;\n\n context.security.disableAuthorization();\n const group = await context.cms.getGroup(data.group);\n context.security.enableAuthorization();\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n\n const identity = getIdentity();\n const model: CmsModel = {\n name: data.name,\n description: data.description || \"\",\n modelId: data.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(),\n savedOn: new Date().toISOString(),\n fields: data.fields,\n lockedFields: [],\n layout: data.layout || [],\n tags: [...(data.tags || [])],\n webinyVersion: context.WEBINY_VERSION\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeCreate.publish({\n input: data,\n model\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onModelAfterCreate.publish({\n input: data,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateError.publish({\n input: data,\n model,\n error: ex\n });\n throw ex;\n }\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 try {\n await onModelBeforeUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n loaders.listModels.clearAll();\n\n await onModelAfterUpdate.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: {} as CmsModelUpdateInput,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n },\n async createModelFrom(modelId, userInput) {\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 result = await createModelCreateFromValidation().safeParseAsync({\n name: userInput.name,\n modelId: userInput.modelId,\n description: userInput.description || original.description,\n group: userInput.group,\n locale: userInput.locale\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = result.data;\n\n const locale = await context.i18n.getLocale(data.locale || original.locale);\n if (!locale) {\n throw new NotFoundError(`There is no locale \"${data.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: data.group,\n tenant: original.tenant,\n locale: locale.code\n });\n if (!group) {\n throw new NotFoundError(`There is no group \"${data.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: data.name,\n modelId: data.modelId || \"\",\n description: data.description || \"\",\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n lockedFields: [],\n webinyVersion: context.WEBINY_VERSION\n };\n\n try {\n await onModelBeforeCreateFrom.publish({\n input: data,\n model,\n original\n });\n\n const createdModel = await storageOperations.models.create({\n model\n });\n\n loaders.listModels.clearAll();\n\n await updateManager(context, model);\n\n await onModelAfterCreateFrom.publish({\n input: data,\n original,\n model: createdModel\n });\n\n return createdModel;\n } catch (ex) {\n await onModelCreateFromError.publish({\n input: data,\n original,\n model,\n error: ex\n });\n throw ex;\n }\n },\n async updateModel(modelId, input) {\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 result = await createModelUpdateValidation().safeParseAsync(input);\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = result.data;\n\n if (Object.keys(data).length === 0) {\n /**\n * We need to return the original if nothing is to be updated.\n */\n return original;\n }\n let group: CmsModelGroup = {\n id: original.group.id,\n name: original.group.name\n };\n if (data.group) {\n context.security.disableAuthorization();\n const groupData = await context.cms.getGroup(data.group);\n context.security.enableAuthorization();\n if (!groupData) {\n throw new NotFoundError(`There is no group \"${data.group}\".`);\n }\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n group,\n description: data.description || original.description,\n tenant: original.tenant || getTenant().id,\n locale: original.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION,\n savedOn: new Date().toISOString()\n };\n\n model.tags = ensureTypeTag(model);\n\n try {\n await onModelBeforeUpdate.publish({\n input: data,\n original,\n model\n });\n\n const resultModel = await storageOperations.models.update({\n model\n });\n\n await updateManager(context, resultModel);\n\n await onModelAfterUpdate.publish({\n input: data,\n original,\n model: resultModel\n });\n\n return resultModel;\n } catch (ex) {\n await onModelUpdateError.publish({\n input: data,\n model,\n original,\n error: ex\n });\n\n throw ex;\n }\n },\n async deleteModel(modelId) {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n try {\n await onModelBeforeDelete.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 onModelAfterDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n } catch (ex) {\n await onModelDeleteError.publish({\n model,\n error: ex\n });\n throw ex;\n }\n },\n async initializeModel(modelId, data) {\n /**\n * We require that users have write permissions to initialize models.\n * Maybe introduce another permission for it?\n */\n await checkModelPermissions(\"w\");\n\n const model = await getModel(modelId);\n\n await onModelInitialize.publish({ model, data });\n\n return true;\n },\n getModelManager,\n getEntryManager: async model => {\n return getModelManager(model);\n },\n getManagers: () => managers,\n getEntryManagers: () => managers\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import zod from "zod";
2
+ export declare const createGroupCreateValidation: () => zod.ZodObject<{
3
+ name: zod.ZodString;
4
+ slug: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
5
+ description: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
6
+ icon: zod.ZodString;
7
+ }, "strip", zod.ZodTypeAny, {
8
+ description: string;
9
+ name: string;
10
+ slug: string;
11
+ icon: string;
12
+ }, {
13
+ description?: string | undefined;
14
+ slug?: string | undefined;
15
+ name: string;
16
+ icon: string;
17
+ }>;
18
+ export declare const createGroupUpdateValidation: () => zod.ZodObject<{
19
+ name: zod.ZodOptional<zod.ZodString>;
20
+ description: zod.ZodOptional<zod.ZodString>;
21
+ icon: zod.ZodOptional<zod.ZodString>;
22
+ }, "strip", zod.ZodTypeAny, {
23
+ description?: string | undefined;
24
+ name?: string | undefined;
25
+ icon?: string | undefined;
26
+ }, {
27
+ description?: string | undefined;
28
+ name?: string | undefined;
29
+ icon?: string | undefined;
30
+ }>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.createGroupUpdateValidation = exports.createGroupCreateValidation = void 0;
8
+ var _zod = _interopRequireDefault(require("zod"));
9
+ var _toSlug = require("../../utils/toSlug");
10
+ const str = _zod.default.string().trim();
11
+ const name = str.max(100);
12
+ const description = str.max(255).optional();
13
+ const icon = str.min(1).max(255);
14
+ const createGroupCreateValidation = () => {
15
+ return _zod.default.object({
16
+ name: name.min(1),
17
+ slug: str.max(100).optional().transform(value => {
18
+ return value ? (0, _toSlug.toSlug)(value) : "";
19
+ }),
20
+ description: description.transform(value => {
21
+ return value || "";
22
+ }),
23
+ icon
24
+ });
25
+ };
26
+ exports.createGroupCreateValidation = createGroupCreateValidation;
27
+ const createGroupUpdateValidation = () => {
28
+ return _zod.default.object({
29
+ name: name.optional(),
30
+ description,
31
+ icon: icon.optional()
32
+ });
33
+ };
34
+ exports.createGroupUpdateValidation = createGroupUpdateValidation;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["str","zod","string","trim","name","max","description","optional","icon","min","createGroupCreateValidation","object","slug","transform","value","toSlug","createGroupUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport { toSlug } from \"~/utils/toSlug\";\n\nconst str = zod.string().trim();\n\nconst name = str.max(100);\nconst description = str.max(255).optional();\nconst icon = str.min(1).max(255);\n\nexport const createGroupCreateValidation = () => {\n return zod.object({\n name: name.min(1),\n slug: str\n .max(100)\n .optional()\n .transform(value => {\n return value ? toSlug(value) : \"\";\n }),\n description: description.transform(value => {\n return value || \"\";\n }),\n icon\n });\n};\n\nexport const createGroupUpdateValidation = () => {\n return zod.object({\n name: name.optional(),\n description,\n icon: icon.optional()\n });\n};\n"],"mappings":";;;;;;;AAAA;AACA;AAEA,MAAMA,GAAG,GAAGC,YAAG,CAACC,MAAM,EAAE,CAACC,IAAI,EAAE;AAE/B,MAAMC,IAAI,GAAGJ,GAAG,CAACK,GAAG,CAAC,GAAG,CAAC;AACzB,MAAMC,WAAW,GAAGN,GAAG,CAACK,GAAG,CAAC,GAAG,CAAC,CAACE,QAAQ,EAAE;AAC3C,MAAMC,IAAI,GAAGR,GAAG,CAACS,GAAG,CAAC,CAAC,CAAC,CAACJ,GAAG,CAAC,GAAG,CAAC;AAEzB,MAAMK,2BAA2B,GAAG,MAAM;EAC7C,OAAOT,YAAG,CAACU,MAAM,CAAC;IACdP,IAAI,EAAEA,IAAI,CAACK,GAAG,CAAC,CAAC,CAAC;IACjBG,IAAI,EAAEZ,GAAG,CACJK,GAAG,CAAC,GAAG,CAAC,CACRE,QAAQ,EAAE,CACVM,SAAS,CAACC,KAAK,IAAI;MAChB,OAAOA,KAAK,GAAG,IAAAC,cAAM,EAACD,KAAK,CAAC,GAAG,EAAE;IACrC,CAAC,CAAC;IACNR,WAAW,EAAEA,WAAW,CAACO,SAAS,CAACC,KAAK,IAAI;MACxC,OAAOA,KAAK,IAAI,EAAE;IACtB,CAAC,CAAC;IACFN;EACJ,CAAC,CAAC;AACN,CAAC;AAAC;AAEK,MAAMQ,2BAA2B,GAAG,MAAM;EAC7C,OAAOf,YAAG,CAACU,MAAM,CAAC;IACdP,IAAI,EAAEA,IAAI,CAACG,QAAQ,EAAE;IACrBD,WAAW;IACXE,IAAI,EAAEA,IAAI,CAACD,QAAQ;EACvB,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createModelGroupsCrud = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _fields = require("@commodo/fields");
10
- var _validation = require("@webiny/validation");
11
9
  var _mdbid = _interopRequireDefault(require("mdbid"));
12
10
  var _handlerGraphql = require("@webiny/handler-graphql");
13
11
  var _error = _interopRequireDefault(require("@webiny/error"));
@@ -20,42 +18,13 @@ var _dataloader = _interopRequireDefault(require("dataloader"));
20
18
  var _permissions = require("../utils/permissions");
21
19
  var _ownership = require("../utils/ownership");
22
20
  var _access = require("../utils/access");
23
- var _toSlug = require("../utils/toSlug");
24
- /**
25
- * Package @commodo/fields does not have types.
26
- */
27
- // @ts-ignore
28
-
21
+ var _validation = require("./contentModelGroup/validation");
22
+ var _utils = require("@webiny/utils");
29
23
  /**
30
24
  * Package mdbid does not have types.
31
25
  */
32
26
  // @ts-ignore
33
27
 
34
- const CreateContentModelGroupModel = (0, _fields.withFields)({
35
- name: (0, _fields.string)({
36
- validation: _validation.validation.create("required,maxLength:100")
37
- }),
38
- slug: (0, _fields.string)({
39
- validation: _validation.validation.create("maxLength:100")
40
- }),
41
- description: (0, _fields.string)({
42
- validation: _validation.validation.create("maxLength:255")
43
- }),
44
- icon: (0, _fields.string)({
45
- validation: _validation.validation.create("required,maxLength:255")
46
- })
47
- })();
48
- const UpdateContentModelGroupModel = (0, _fields.withFields)({
49
- name: (0, _fields.string)({
50
- validation: _validation.validation.create("maxLength:100")
51
- }),
52
- description: (0, _fields.string)({
53
- validation: _validation.validation.create("maxLength:255")
54
- }),
55
- icon: (0, _fields.string)({
56
- validation: _validation.validation.create("maxLength:255")
57
- })
58
- })();
59
28
  const createModelGroupsCrud = params => {
60
29
  const {
61
30
  getTenant,
@@ -140,15 +109,24 @@ const createModelGroupsCrud = params => {
140
109
  }
141
110
  };
142
111
 
143
- // create
112
+ /**
113
+ * Create
114
+ */
144
115
  const onGroupBeforeCreate = (0, _pubsub.createTopic)("cms.onGroupBeforeCreate");
145
116
  const onGroupAfterCreate = (0, _pubsub.createTopic)("cms.onGroupAfterCreate");
146
- // update
117
+ const onGroupCreateError = (0, _pubsub.createTopic)("cms.onGroupCreateError");
118
+ /**
119
+ * Update
120
+ */
147
121
  const onGroupBeforeUpdate = (0, _pubsub.createTopic)("cms.onGroupBeforeUpdate");
148
122
  const onGroupAfterUpdate = (0, _pubsub.createTopic)("cms.onGroupAfterUpdate");
149
- // delete
123
+ const onGroupUpdateError = (0, _pubsub.createTopic)("cms.onGroupUpdateError");
124
+ /**
125
+ * Delete
126
+ */
150
127
  const onGroupBeforeDelete = (0, _pubsub.createTopic)("cms.onGroupBeforeDelete");
151
128
  const onGroupAfterDelete = (0, _pubsub.createTopic)("cms.onGroupAfterDelete");
129
+ const onGroupDeleteError = (0, _pubsub.createTopic)("cms.onGroupDeleteError");
152
130
 
153
131
  /**
154
132
  * We need to assign some default behaviors.
@@ -182,10 +160,13 @@ const createModelGroupsCrud = params => {
182
160
  */
183
161
  onGroupBeforeCreate,
184
162
  onGroupAfterCreate,
163
+ onGroupCreateError,
185
164
  onGroupBeforeUpdate,
186
165
  onGroupAfterUpdate,
166
+ onGroupUpdateError,
187
167
  onGroupBeforeDelete,
188
168
  onGroupAfterDelete,
169
+ onGroupDeleteError,
189
170
  clearGroupsCache,
190
171
  getGroup: async id => {
191
172
  const permission = await checkPermissions("r");
@@ -216,17 +197,16 @@ const createModelGroupsCrud = params => {
216
197
  return (0, _access.validateGroupAccess)(context, permission, group);
217
198
  });
218
199
  },
219
- createGroup: async inputData => {
200
+ createGroup: async input => {
220
201
  await checkPermissions("w");
221
- const createdData = new CreateContentModelGroupModel().populate((0, _objectSpread2.default)((0, _objectSpread2.default)({}, inputData), {}, {
222
- slug: inputData.slug ? (0, _toSlug.toSlug)(inputData.slug) : "",
223
- description: inputData.description || ""
224
- }));
225
- await createdData.validate();
226
- const input = await createdData.toJSON();
202
+ const result = await (0, _validation.createGroupCreateValidation)().safeParseAsync(input);
203
+ if (!result.success) {
204
+ throw (0, _utils.createZodError)(result.error);
205
+ }
206
+ const data = result.data;
227
207
  const identity = getIdentity();
228
208
  const id = (0, _mdbid.default)();
229
- const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, input), {}, {
209
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, data), {}, {
230
210
  id,
231
211
  tenant: getTenant().id,
232
212
  locale: getLocale().code,
@@ -252,29 +232,34 @@ const createModelGroupsCrud = params => {
252
232
  });
253
233
  return group;
254
234
  } catch (ex) {
235
+ await onGroupCreateError.publish({
236
+ input,
237
+ group,
238
+ error: ex
239
+ });
255
240
  throw new _error.default(ex.message || "Could not save data model group.", ex.code || "ERROR_ON_CREATE", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
256
241
  group,
257
242
  input
258
243
  }));
259
244
  }
260
245
  },
261
- updateGroup: async (id, inputData) => {
246
+ updateGroup: async (id, input) => {
262
247
  const permission = await checkPermissions("w");
263
248
  const original = await groupsGet(id);
264
249
  (0, _ownership.checkOwnership)(context, permission, original);
265
- const input = new UpdateContentModelGroupModel().populate(inputData);
266
- await input.validate();
267
- const updatedDataJson = await input.toJSON({
268
- onlyDirty: true
269
- });
250
+ const result = await (0, _validation.createGroupUpdateValidation)().safeParseAsync(input);
251
+ if (!result.success) {
252
+ throw (0, _utils.createZodError)(result.error);
253
+ }
254
+ const data = result.data;
270
255
 
271
256
  /**
272
257
  * No need to continue if no values were changed
273
258
  */
274
- if (Object.keys(updatedDataJson).length === 0) {
259
+ if (Object.keys(data).length === 0) {
275
260
  return original;
276
261
  }
277
- const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), updatedDataJson), {}, {
262
+ const group = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), data), {}, {
278
263
  locale: getLocale().code,
279
264
  tenant: getTenant().id,
280
265
  savedOn: new Date().toISOString()
@@ -294,6 +279,12 @@ const createModelGroupsCrud = params => {
294
279
  });
295
280
  return updatedGroup;
296
281
  } catch (ex) {
282
+ await onGroupUpdateError.publish({
283
+ input,
284
+ original,
285
+ group,
286
+ error: ex
287
+ });
297
288
  throw new _error.default(ex.message, ex.code || "UPDATE_ERROR", {
298
289
  error: ex,
299
290
  original,
@@ -318,6 +309,10 @@ const createModelGroupsCrud = params => {
318
309
  group
319
310
  });
320
311
  } catch (ex) {
312
+ await onGroupDeleteError.publish({
313
+ group,
314
+ error: ex
315
+ });
321
316
  throw new _error.default(ex.message, ex.code || "DELETE_ERROR", (0, _objectSpread2.default)((0, _objectSpread2.default)({}, ex.data || {}), {}, {
322
317
  id
323
318
  }));
@@ -1 +1 @@
1
- {"version":3,"names":["CreateContentModelGroupModel","withFields","name","string","validation","create","slug","description","icon","UpdateContentModelGroupModel","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","baseCheckPermissions","rwd","groupsGet","load","find","g","NotFoundError","groupsList","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupBeforeDelete","onGroupAfterDelete","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","inputData","createdData","populate","toSlug","validate","input","toJSON","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","result","updateGroup","original","updatedDataJson","onlyDirty","keys","length","updatedGroup","update","error","deleteGroup","delete"],"sources":["contentModelGroup.crud.ts"],"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 OnGroupBeforeCreateTopicParams,\n OnGroupAfterCreateTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupAfterDeleteTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/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 \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport DataLoader from \"dataloader\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { validateGroupAccess } from \"~/utils/access\";\nimport { toSlug } from \"~/utils/toSlug\";\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 dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\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 baseCheckPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n // create\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n // update\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n // delete\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeGroupCreate: onGroupBeforeCreate,\n onAfterGroupCreate: onGroupAfterCreate,\n onBeforeGroupUpdate: onGroupBeforeUpdate,\n onAfterGroupUpdate: onGroupAfterUpdate,\n onBeforeGroupDelete: onGroupBeforeDelete,\n onAfterGroupDelete: onGroupAfterDelete,\n /**\n * Released in 5.34.0\n */\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n clearGroupsCache,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n checkOwnership(context, permission, group);\n 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 (!validateOwnership(context, permission, group)) {\n return false;\n }\n return 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 ? toSlug(inputData.slug) : \"\",\n description: inputData.description || \"\"\n });\n await createdData.validate();\n const input: CmsGroupCreateInput & { slug: string; description: string } =\n 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 onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.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 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 onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.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 checkOwnership(context, permission, group);\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.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"],"mappings":"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"}
1
+ {"version":3,"names":["createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","baseCheckPermissions","rwd","groupsGet","load","find","g","NotFoundError","groupsList","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","input","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","create","updateGroup","original","createGroupUpdateValidation","keys","length","updatedGroup","update","deleteGroup","delete"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["/**\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 OnGroupBeforeCreateTopicParams,\n OnGroupAfterCreateTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupUpdateErrorTopicParams,\n OnGroupDeleteErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/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 \"./contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"./contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"./contentModelGroup/beforeDelete\";\nimport DataLoader from \"dataloader\";\nimport { checkPermissions as baseCheckPermissions } from \"~/utils/permissions\";\nimport { checkOwnership, validateOwnership } from \"~/utils/ownership\";\nimport { validateGroupAccess } from \"~/utils/access\";\nimport {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError } from \"@webiny/utils\";\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 dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\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 baseCheckPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n /**\n * Create\n */\n const onGroupBeforeCreate =\n createTopic<OnGroupBeforeCreateTopicParams>(\"cms.onGroupBeforeCreate\");\n const onGroupAfterCreate = createTopic<OnGroupAfterCreateTopicParams>(\"cms.onGroupAfterCreate\");\n const onGroupCreateError = createTopic<OnGroupCreateErrorTopicParams>(\"cms.onGroupCreateError\");\n /**\n * Update\n */\n const onGroupBeforeUpdate =\n createTopic<OnGroupBeforeUpdateTopicParams>(\"cms.onGroupBeforeUpdate\");\n const onGroupAfterUpdate = createTopic<OnGroupAfterUpdateTopicParams>(\"cms.onGroupAfterUpdate\");\n const onGroupUpdateError = createTopic<OnGroupUpdateErrorTopicParams>(\"cms.onGroupUpdateError\");\n /**\n * Delete\n */\n const onGroupBeforeDelete =\n createTopic<OnGroupBeforeDeleteTopicParams>(\"cms.onGroupBeforeDelete\");\n const onGroupAfterDelete = createTopic<OnGroupAfterDeleteTopicParams>(\"cms.onGroupAfterDelete\");\n const onGroupDeleteError = createTopic<OnGroupDeleteErrorTopicParams>(\"cms.onGroupDeleteError\");\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onGroupBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onGroupBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onGroupBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n /**\n * Deprecated - will be removed in 5.36.0\n */\n onBeforeGroupCreate: onGroupBeforeCreate,\n onAfterGroupCreate: onGroupAfterCreate,\n onBeforeGroupUpdate: onGroupBeforeUpdate,\n onAfterGroupUpdate: onGroupAfterUpdate,\n onBeforeGroupDelete: onGroupBeforeDelete,\n onAfterGroupDelete: onGroupAfterDelete,\n /**\n * Released in 5.34.0\n */\n onGroupBeforeCreate,\n onGroupAfterCreate,\n onGroupCreateError,\n onGroupBeforeUpdate,\n onGroupAfterUpdate,\n onGroupUpdateError,\n onGroupBeforeDelete,\n onGroupAfterDelete,\n onGroupDeleteError,\n clearGroupsCache,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n checkOwnership(context, permission, group);\n 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 (!validateOwnership(context, permission, group)) {\n return false;\n }\n return validateGroupAccess(context, permission, group);\n });\n },\n createGroup: async input => {\n await checkPermissions(\"w\");\n\n const result = await createGroupCreateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...data,\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 onGroupBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onGroupAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n await onGroupCreateError.publish({\n input,\n group,\n error: ex\n });\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, input) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await groupsGet(id);\n\n checkOwnership(context, permission, original);\n\n const result = await createGroupUpdateValidation().safeParseAsync(input);\n\n if (!result.success) {\n throw createZodError(result.error);\n }\n const data = result.data;\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(data).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...data,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onGroupBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onGroupAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n await onGroupUpdateError.publish({\n input,\n original,\n group,\n error: ex\n });\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 checkOwnership(context, permission, group);\n\n try {\n await onGroupBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onGroupAfterDelete.publish({\n group\n });\n } catch (ex) {\n await onGroupDeleteError.publish({\n group,\n error: ex\n });\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"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CmsModelFieldConverterPlugin, ConvertParams } from "../plugins/CmsModelFieldConverterPlugin";
2
+ import { CmsEntryValues, CmsModelDynamicZoneField } from "../types";
3
+ export declare class CmsModelDynamicZoneFieldConverterPlugin extends CmsModelFieldConverterPlugin {
4
+ name: string;
5
+ getFieldType(): string;
6
+ private getTemplates;
7
+ convertToStorage(params: ConvertParams<CmsModelDynamicZoneField>): CmsEntryValues;
8
+ private processToStorage;
9
+ convertFromStorage(params: ConvertParams<CmsModelDynamicZoneField>): CmsEntryValues;
10
+ private processFromStorage;
11
+ }