@webiny/api-headless-cms 5.37.0 → 5.37.1-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.
@@ -1 +1 @@
1
- {"version":3,"names":["_dataloader","_interopRequireDefault","require","_error","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_afterCreate","_afterUpdate","_afterDelete","_afterCreateFrom","_CmsModelPlugin","_filterAsync","_validation","_utils","_defaultFields","_modelApiName","_excluded","ensureTypeTag","model","tags","some","tag","startsWith","push","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelsPermissions","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","map","_objectSpread2","default","singularApiName","ensureSingularApiName","pluralApiName","ensurePluralApiName","clearModelsCache","loader","Object","values","clearAll","managers","Map","updateManager","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","rwd","ensure","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","modelTenant","modelLocale","contentModel","webinyVersion","WEBINY_VERSION","modelsGet","pluginModel","find","get","NotFoundError","modelsList","databaseModels","load","pluginsModels","concat","benchmark","measure","filterAsync","ownsModel","owns","createdBy","throw","canAccessModel","getModel","ensureCanAccessModel","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","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","_removeUndefinedValue","removeUndefinedValues","data","defaultFields","_objectWithoutProperties2","assignModelDefaultFields","group","security","withoutAuthorization","cms","getGroup","identity","titleFieldId","descriptionFieldId","imageFieldId","description","name","displayName","createdOn","Date","toISOString","savedOn","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","keys","length","groupId","groupData","undefined","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","onBeforeModelCreate","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","userInput","getEntryManager","getManagers","getEntryManagers","exports"],"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\";\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 { filterAsync } from \"~/utils/filterAsync\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport { removeUndefinedValues } from \"@webiny/utils\";\nimport {\n ensurePluralApiName,\n ensureSingularApiName\n} from \"./contentModel/compatibility/modelApiName\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\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 modelsPermissions: ModelsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, modelsPermissions, context } =\n 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 * TODO: remove in v5.36.0\n * This is for backward compatibility while migrations are not yet executed.\n */\n singularApiName: ensureSingularApiName(model),\n pluralApiName: ensurePluralApiName(model)\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 = (rwd: string) => {\n return modelsPermissions.ensure({ rwd });\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(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) => {\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 return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n const models = await modelsList();\n return filterAsync(models, async model => {\n const ownsModel = await modelsPermissions.ensure(\n { owns: model.createdBy },\n { throw: false }\n );\n\n if (!ownsModel) {\n return false;\n }\n\n return modelsPermissions.canAccessModel({ model, locale: getLocale().code });\n });\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n await checkModelPermissions(\"r\");\n\n const model = await modelsGet(modelId);\n\n await modelsPermissions.ensure({ owns: model.createdBy });\n await modelsPermissions.ensureCanAccessModel({ model, locale: getLocale().code });\n\n return model;\n });\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 /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async 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 * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.security.withoutAuthorization(async () => {\n return context.cms.getGroup(data.group);\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 ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\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 lockedFields: [],\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 const updateModel: CmsModelContext[\"updateModel\"] = async (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 = removeUndefinedValues(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 const groupId = data.group;\n if (groupId) {\n const groupData = await context.security.withoutAuthorization(async () => {\n return context.cms.getGroup(groupId);\n });\n if (!groupData) {\n throw new NotFoundError(`There is no group \"${groupId}\".`);\n }\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\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 const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async 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 const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\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 ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(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 singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\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 const deleteModel: CmsModelContext[\"deleteModel\"] = async 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 const initializeModel: CmsModelContext[\"initializeModel\"] = async (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 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 return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\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":["_dataloader","_interopRequireDefault","require","_error","_handlerGraphql","_contentModelManagerFactory","_pubsub","_beforeCreate","_beforeUpdate","_beforeDelete","_afterCreate","_afterUpdate","_afterDelete","_afterCreateFrom","_CmsModelPlugin","_filterAsync","_validation","_utils","_defaultFields","_modelApiName","_excluded","ensureTypeTag","model","tags","some","tag","startsWith","push","createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelsPermissions","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","map","_objectSpread2","default","singularApiName","ensureSingularApiName","pluralApiName","ensurePluralApiName","clearModelsCache","loader","Object","values","clearAll","managers","Map","updateManager","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","rwd","ensure","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","modelTenant","modelLocale","contentModel","webinyVersion","WEBINY_VERSION","modelsGet","pluginModel","find","get","NotFoundError","modelsList","databaseModels","load","pluginsModels","concat","benchmark","measure","filterAsync","ownsModel","owns","createdBy","throw","canAccessModel","getModel","ensureCanAccessModel","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","createModel","input","result","createModelCreateValidation","safeParseAsync","success","createZodError","error","_removeUndefinedValue","removeUndefinedValues","data","defaultFields","_objectWithoutProperties2","assignModelDefaultFields","group","security","withoutAuthorization","cms","getGroup","identity","titleFieldId","descriptionFieldId","imageFieldId","description","name","displayName","createdOn","Date","toISOString","savedOn","lockedFields","publish","createdModel","create","ex","updateModel","original","createModelUpdateValidation","keys","length","groupId","groupData","undefined","resultModel","update","updateModelDirect","initialModel","createModelFrom","createModelCreateFromValidation","i18n","groups","icon","deleteModel","delete","WebinyError","message","initializeModel","onBeforeModelCreate","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","userInput","getEntryManager","getManagers","getEntryManagers","exports"],"sources":["contentModel.crud.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelGroup,\n CmsModelManager,\n CmsModelUpdateInput,\n HeadlessCmsStorageOperations,\n OnModelAfterCreateFromTopicParams,\n OnModelAfterCreateTopicParams,\n OnModelAfterDeleteTopicParams,\n OnModelAfterUpdateTopicParams,\n OnModelBeforeCreateFromTopicParams,\n OnModelBeforeCreateTopicParams,\n OnModelBeforeDeleteTopicParams,\n OnModelBeforeUpdateTopicParams,\n OnModelCreateErrorTopicParams,\n OnModelCreateFromErrorParams,\n OnModelDeleteErrorTopicParams,\n OnModelInitializeParams,\n OnModelUpdateErrorTopicParams\n} from \"~/types\";\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 { filterAsync } from \"~/utils/filterAsync\";\nimport {\n createModelCreateFromValidation,\n createModelCreateValidation,\n createModelUpdateValidation\n} from \"~/crud/contentModel/validation\";\nimport { createZodError, removeUndefinedValues } from \"@webiny/utils\";\nimport { assignModelDefaultFields } from \"~/crud/contentModel/defaultFields\";\nimport {\n ensurePluralApiName,\n ensureSingularApiName\n} from \"./contentModel/compatibility/modelApiName\";\nimport { ModelsPermissions } from \"~/utils/permissions/ModelsPermissions\";\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 modelsPermissions: ModelsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, modelsPermissions, context } =\n 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 * TODO: remove in v5.36.0\n * This is for backward compatibility while migrations are not yet executed.\n */\n singularApiName: ensureSingularApiName(model),\n pluralApiName: ensurePluralApiName(model)\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 = (rwd: string) => {\n return modelsPermissions.ensure({ rwd });\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(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) => {\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 return context.benchmark.measure(\"headlessCms.crud.models.listModels\", async () => {\n const models = await modelsList();\n return filterAsync(models, async model => {\n const ownsModel = await modelsPermissions.ensure(\n { owns: model.createdBy },\n { throw: false }\n );\n\n if (!ownsModel) {\n return false;\n }\n\n return modelsPermissions.canAccessModel({\n model\n });\n });\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n return context.benchmark.measure(\"headlessCms.crud.models.getModel\", async () => {\n await checkModelPermissions(\"r\");\n\n const model = await modelsGet(modelId);\n\n await modelsPermissions.ensure({ owns: model.createdBy });\n await modelsPermissions.ensureCanAccessModel({\n model\n });\n\n return model;\n });\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 /**\n * CRUD methods\n */\n const createModel: CmsModelContext[\"createModel\"] = async 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 * We need to extract the defaultFields because it is not for the CmsModel object.\n */\n const { defaultFields, ...data } = removeUndefinedValues(result.data);\n if (defaultFields) {\n assignModelDefaultFields(data);\n }\n\n const group = await context.security.withoutAuthorization(async () => {\n return context.cms.getGroup(data.group);\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 ...data,\n modelId: data.modelId || \"\",\n singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n titleFieldId: \"id\",\n descriptionFieldId: null,\n imageFieldId: null,\n description: data.description || \"\",\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 lockedFields: [],\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 const updateModel: CmsModelContext[\"updateModel\"] = async (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 = removeUndefinedValues(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 const groupId = data.group;\n if (groupId) {\n const groupData = await context.security.withoutAuthorization(async () => {\n return context.cms.getGroup(groupId);\n });\n if (!groupData) {\n throw new NotFoundError(`There is no group \"${groupId}\".`);\n }\n group = {\n id: groupData.id,\n name: groupData.name\n };\n }\n const model: CmsModel = {\n ...original,\n ...data,\n titleFieldId:\n data.titleFieldId === undefined\n ? original.titleFieldId\n : (data.titleFieldId as string),\n descriptionFieldId:\n data.descriptionFieldId === undefined\n ? original.descriptionFieldId\n : data.descriptionFieldId,\n imageFieldId:\n data.imageFieldId === undefined ? original.imageFieldId : data.imageFieldId,\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 const updateModelDirect: CmsModelContext[\"updateModelDirect\"] = async 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 const createModelFrom: CmsModelContext[\"createModelFrom\"] = async (modelId, input) => {\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 ...input,\n description: input.description || original.description\n });\n if (!result.success) {\n throw createZodError(result.error);\n }\n\n const data = removeUndefinedValues(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 singularApiName: data.singularApiName,\n pluralApiName: data.pluralApiName,\n locale: locale.code,\n group: {\n id: group.id,\n name: group.name\n },\n icon: data.icon,\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 const deleteModel: CmsModelContext[\"deleteModel\"] = async 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 const initializeModel: CmsModelContext[\"initializeModel\"] = async (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 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 return context.benchmark.measure(\"headlessCms.crud.models.createModel\", async () => {\n return createModel(input);\n });\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.updateModelDirect\",\n async () => {\n return updateModelDirect(params);\n }\n );\n },\n async createModelFrom(modelId, userInput) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.createModelFrom\",\n async () => {\n return createModelFrom(modelId, userInput);\n }\n );\n },\n async updateModel(modelId, input) {\n return context.benchmark.measure(\"headlessCms.crud.models.updateModel\", async () => {\n return updateModel(modelId, input);\n });\n },\n async deleteModel(modelId) {\n return context.benchmark.measure(\"headlessCms.crud.models.deleteModel\", async () => {\n return deleteModel(modelId);\n });\n },\n async initializeModel(modelId, data) {\n return context.benchmark.measure(\n \"headlessCms.crud.models.initializeModel\",\n async () => {\n return initializeModel(modelId, data);\n }\n );\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,4 +1,4 @@
1
- import { CmsGroupContext, CmsContext, HeadlessCmsStorageOperations } from "../types";
1
+ import { CmsContext, CmsGroupContext, HeadlessCmsStorageOperations } from "../types";
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";
@@ -145,8 +145,7 @@ const createModelGroupsCrud = params => {
145
145
  owns: group.createdBy
146
146
  });
147
147
  await modelGroupsPermissions.ensureCanAccessGroup({
148
- group,
149
- locale: getLocale().code
148
+ group
150
149
  });
151
150
  return group;
152
151
  };
@@ -177,8 +176,7 @@ const createModelGroupsCrud = params => {
177
176
  return false;
178
177
  }
179
178
  return await modelGroupsPermissions.canAccessGroup({
180
- group,
181
- locale: getLocale().code
179
+ group
182
180
  });
183
181
  });
184
182
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_dataloader","_interopRequireDefault","require","_error","_handlerGraphql","_CmsGroupPlugin","_pubsub","_beforeUpdate","_beforeCreate","_beforeDelete","_validation","_utils","_filterAsync","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelGroupsPermissions","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","_objectSpread2","default","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","getGroupViaDataLoader","load","find","g","NotFoundError","listGroupsViaDataLoader","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","ensure","rwd","owns","createdBy","ensureCanAccessGroup","response","filterAsync","ownsGroup","throw","canAccessGroup","createGroup","input","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","identity","mdbid","createdOn","Date","toISOString","savedOn","displayName","publish","create","updateGroup","original","createGroupUpdateValidation","keys","length","updatedGroup","update","deleteGroup","delete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","benchmark","measure","exports"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\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 { 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 {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError, mdbid } from \"@webiny/utils\";\nimport { ModelGroupsPermissions } from \"~/utils/permissions/ModelGroupsPermissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelGroupsPermissions: ModelGroupsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const {\n getTenant,\n getIdentity,\n getLocale,\n storageOperations,\n modelGroupsPermissions,\n context\n } = 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 getGroupViaDataLoader = 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 listGroupsViaDataLoader = 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 * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n const group = await getGroupViaDataLoader(id);\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\n await modelGroupsPermissions.ensureCanAccessGroup({ group, locale: getLocale().code });\n\n return group;\n };\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n const response = await listGroupsViaDataLoader({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return filterAsync(response, async group => {\n const ownsGroup = await modelGroupsPermissions.ensure(\n { owns: group.createdBy },\n { throw: false }\n );\n\n if (!ownsGroup) {\n return false;\n }\n\n return await modelGroupsPermissions.canAccessGroup({\n group,\n locale: getLocale().code\n });\n });\n };\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await modelGroupsPermissions.ensure({ rwd: \"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 const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n await modelGroupsPermissions.ensure({ rwd: \"w\" });\n\n const original = await getGroupViaDataLoader(id);\n\n await modelGroupsPermissions.ensure({ owns: original.createdBy });\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 const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"d\" });\n\n const group = await getGroupViaDataLoader(id);\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\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 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 return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dataloader","_interopRequireDefault","require","_error","_handlerGraphql","_CmsGroupPlugin","_pubsub","_beforeUpdate","_beforeCreate","_beforeDelete","_validation","_utils","_filterAsync","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","modelGroupsPermissions","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","_objectSpread2","default","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","getGroupViaDataLoader","load","find","g","NotFoundError","listGroupsViaDataLoader","ex","WebinyError","message","data","onGroupBeforeCreate","createTopic","onGroupAfterCreate","onGroupCreateError","onGroupBeforeUpdate","onGroupAfterUpdate","onGroupUpdateError","onGroupBeforeDelete","onGroupAfterDelete","onGroupDeleteError","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","getGroup","ensure","rwd","owns","createdBy","ensureCanAccessGroup","response","filterAsync","ownsGroup","throw","canAccessGroup","createGroup","input","result","createGroupCreateValidation","safeParseAsync","success","createZodError","error","identity","mdbid","createdOn","Date","toISOString","savedOn","displayName","publish","create","updateGroup","original","createGroupUpdateValidation","keys","length","updatedGroup","update","deleteGroup","delete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","benchmark","measure","exports"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["import DataLoader from \"dataloader\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsGroup,\n CmsGroupContext,\n CmsGroupListParams,\n HeadlessCmsStorageOperations,\n OnGroupAfterCreateTopicParams,\n OnGroupAfterDeleteTopicParams,\n OnGroupAfterUpdateTopicParams,\n OnGroupBeforeCreateTopicParams,\n OnGroupBeforeDeleteTopicParams,\n OnGroupBeforeUpdateTopicParams,\n OnGroupCreateErrorTopicParams,\n OnGroupDeleteErrorTopicParams,\n OnGroupUpdateErrorTopicParams\n} from \"~/types\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\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 {\n createGroupCreateValidation,\n createGroupUpdateValidation\n} from \"~/crud/contentModelGroup/validation\";\nimport { createZodError, mdbid } from \"@webiny/utils\";\nimport { ModelGroupsPermissions } from \"~/utils/permissions/ModelGroupsPermissions\";\nimport { filterAsync } from \"~/utils/filterAsync\";\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n modelGroupsPermissions: ModelGroupsPermissions;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\n\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const {\n getTenant,\n getIdentity,\n getLocale,\n storageOperations,\n modelGroupsPermissions,\n context\n } = 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 getGroupViaDataLoader = 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 listGroupsViaDataLoader = 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 * CRUD Methods\n */\n const getGroup: CmsGroupContext[\"getGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n const group = await getGroupViaDataLoader(id);\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\n await modelGroupsPermissions.ensureCanAccessGroup({\n group\n });\n\n return group;\n };\n const listGroups: CmsGroupContext[\"listGroups\"] = async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n\n await modelGroupsPermissions.ensure({ rwd: \"r\" });\n\n const response = await listGroupsViaDataLoader({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return filterAsync(response, async group => {\n const ownsGroup = await modelGroupsPermissions.ensure(\n { owns: group.createdBy },\n { throw: false }\n );\n\n if (!ownsGroup) {\n return false;\n }\n\n return await modelGroupsPermissions.canAccessGroup({\n group\n });\n });\n };\n const createGroup: CmsGroupContext[\"createGroup\"] = async input => {\n await modelGroupsPermissions.ensure({ rwd: \"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 const updateGroup: CmsGroupContext[\"updateGroup\"] = async (id, input) => {\n await modelGroupsPermissions.ensure({ rwd: \"w\" });\n\n const original = await getGroupViaDataLoader(id);\n\n await modelGroupsPermissions.ensure({ owns: original.createdBy });\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 const deleteGroup: CmsGroupContext[\"deleteGroup\"] = async id => {\n await modelGroupsPermissions.ensure({ rwd: \"d\" });\n\n const group = await getGroupViaDataLoader(id);\n\n await modelGroupsPermissions.ensure({ owns: group.createdBy });\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 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 return context.benchmark.measure(\"headlessCms.crud.groups.getGroup\", async () => {\n return getGroup(id);\n });\n },\n listGroups: async params => {\n return context.benchmark.measure(\"headlessCms.crud.groups.listGroups\", async () => {\n return listGroups(params);\n });\n },\n createGroup: async input => {\n return context.benchmark.measure(\"headlessCms.crud.groups.createGroup\", async () => {\n return createGroup(input);\n });\n },\n updateGroup: async (id, input) => {\n return context.benchmark.measure(\"headlessCms.crud.groups.updateGroup\", async () => {\n return updateGroup(id, input);\n });\n },\n deleteGroup: async id => {\n return context.benchmark.measure(\"headlessCms.crud.groups.deleteGroup\", async () => {\n return deleteGroup(id);\n });\n }\n };\n};\n"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -8,5 +8,6 @@ export declare const createHeadlessCmsContext: (params: ContentContextParams) =>
8
8
  export * from "./graphqlFields";
9
9
  export * from "./plugins";
10
10
  export * from "./utils/incrementEntryIdVersion";
11
+ export * from "./utils/access";
11
12
  export * from "./graphql/handleRequest";
12
13
  export { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };
package/index.js CHANGED
@@ -75,6 +75,18 @@ Object.keys(_incrementEntryIdVersion).forEach(function (key) {
75
75
  }
76
76
  });
77
77
  });
78
+ var _access = require("./utils/access");
79
+ Object.keys(_access).forEach(function (key) {
80
+ if (key === "default" || key === "__esModule") return;
81
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
82
+ if (key in exports && exports[key] === _access[key]) return;
83
+ Object.defineProperty(exports, key, {
84
+ enumerable: true,
85
+ get: function () {
86
+ return _access[key];
87
+ }
88
+ });
89
+ });
78
90
  var _handleRequest = require("./graphql/handleRequest");
79
91
  Object.keys(_handleRequest).forEach(function (key) {
80
92
  if (key === "default" || key === "__esModule") return;
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_graphql","require","_modelManager","_graphqlFields","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_validators","_default","_object","_dynamicZoneStorage","_parameters","_context","_entryStorage","_fieldConverters","_plugins","_incrementEntryIdVersion","_handleRequest","createHeadlessCmsGraphQL","params","createPathParameterPlugin","createHeaderParameterPlugin","createContextParameterPlugin","baseCreateGraphQL","createHeadlessCmsContext","createContextPlugin","createDefaultModelManager","createGraphQLFields","createFieldConverters","createValidators","createDefaultStorageTransform","createObjectStorageTransform","createDynamicZoneStorageTransform"],"sources":["index.ts"],"sourcesContent":["import { createGraphQL as baseCreateGraphQL, CreateGraphQLParams } from \"~/graphql\";\nimport { createDefaultModelManager } from \"~/modelManager\";\nimport { createGraphQLFields } from \"~/graphqlFields\";\nimport { createValidators } from \"~/validators\";\nimport { createDefaultStorageTransform } from \"~/storage/default\";\nimport { createObjectStorageTransform } from \"~/storage/object\";\nimport { createDynamicZoneStorageTransform } from \"~/graphqlFields/dynamicZone/dynamicZoneStorage\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters\";\nimport { createContextPlugin, CrudParams } from \"~/context\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage\";\nimport { createFieldConverters } from \"~/fieldConverters\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}) => {\n return [\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params)\n ];\n};\n\nexport type ContentContextParams = CrudParams;\nexport const createHeadlessCmsContext = (params: ContentContextParams) => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(params),\n createDefaultModelManager(),\n createGraphQLFields(),\n createFieldConverters(),\n createValidators(),\n createDefaultStorageTransform(),\n createObjectStorageTransform(),\n createDynamicZoneStorageTransform()\n ];\n};\nexport * from \"~/graphqlFields\";\nexport * from \"~/plugins\";\nexport * from \"~/utils/incrementEntryIdVersion\";\nexport * from \"./graphql/handleRequest\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"mappings":"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"}
1
+ {"version":3,"names":["_graphql","require","_modelManager","_graphqlFields","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_validators","_default","_object","_dynamicZoneStorage","_parameters","_context","_entryStorage","_fieldConverters","_plugins","_incrementEntryIdVersion","_access","_handleRequest","createHeadlessCmsGraphQL","params","createPathParameterPlugin","createHeaderParameterPlugin","createContextParameterPlugin","baseCreateGraphQL","createHeadlessCmsContext","createContextPlugin","createDefaultModelManager","createGraphQLFields","createFieldConverters","createValidators","createDefaultStorageTransform","createObjectStorageTransform","createDynamicZoneStorageTransform"],"sources":["index.ts"],"sourcesContent":["import { createGraphQL as baseCreateGraphQL, CreateGraphQLParams } from \"~/graphql\";\nimport { createDefaultModelManager } from \"~/modelManager\";\nimport { createGraphQLFields } from \"~/graphqlFields\";\nimport { createValidators } from \"~/validators\";\nimport { createDefaultStorageTransform } from \"~/storage/default\";\nimport { createObjectStorageTransform } from \"~/storage/object\";\nimport { createDynamicZoneStorageTransform } from \"~/graphqlFields/dynamicZone/dynamicZoneStorage\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters\";\nimport { createContextPlugin, CrudParams } from \"~/context\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage\";\nimport { createFieldConverters } from \"~/fieldConverters\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}) => {\n return [\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params)\n ];\n};\n\nexport type ContentContextParams = CrudParams;\nexport const createHeadlessCmsContext = (params: ContentContextParams) => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(params),\n createDefaultModelManager(),\n createGraphQLFields(),\n createFieldConverters(),\n createValidators(),\n createDefaultStorageTransform(),\n createObjectStorageTransform(),\n createDynamicZoneStorageTransform()\n ];\n};\nexport * from \"~/graphqlFields\";\nexport * from \"~/plugins\";\nexport * from \"~/utils/incrementEntryIdVersion\";\nexport * from \"~/utils/access\";\nexport * from \"./graphql/handleRequest\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "5.37.0",
3
+ "version": "5.37.1-beta.0",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "cms:base"
@@ -20,19 +20,19 @@
20
20
  "dependencies": {
21
21
  "@babel/runtime": "7.22.6",
22
22
  "@graphql-tools/schema": "7.1.5",
23
- "@webiny/api": "5.37.0",
24
- "@webiny/api-i18n": "5.37.0",
25
- "@webiny/api-security": "5.37.0",
26
- "@webiny/api-tenancy": "5.37.0",
27
- "@webiny/error": "5.37.0",
28
- "@webiny/handler": "5.37.0",
29
- "@webiny/handler-aws": "5.37.0",
30
- "@webiny/handler-db": "5.37.0",
31
- "@webiny/handler-graphql": "5.37.0",
32
- "@webiny/plugins": "5.37.0",
33
- "@webiny/pubsub": "5.37.0",
34
- "@webiny/utils": "5.37.0",
35
- "@webiny/validation": "5.37.0",
23
+ "@webiny/api": "5.37.1-beta.0",
24
+ "@webiny/api-i18n": "5.37.1-beta.0",
25
+ "@webiny/api-security": "5.37.1-beta.0",
26
+ "@webiny/api-tenancy": "5.37.1-beta.0",
27
+ "@webiny/error": "5.37.1-beta.0",
28
+ "@webiny/handler": "5.37.1-beta.0",
29
+ "@webiny/handler-aws": "5.37.1-beta.0",
30
+ "@webiny/handler-db": "5.37.1-beta.0",
31
+ "@webiny/handler-graphql": "5.37.1-beta.0",
32
+ "@webiny/plugins": "5.37.1-beta.0",
33
+ "@webiny/pubsub": "5.37.1-beta.0",
34
+ "@webiny/utils": "5.37.1-beta.0",
35
+ "@webiny/validation": "5.37.1-beta.0",
36
36
  "code-frame": "5.0.0",
37
37
  "dataloader": "2.2.1",
38
38
  "dot-prop": "6.0.1",
@@ -49,9 +49,9 @@
49
49
  "@babel/cli": "7.22.6",
50
50
  "@babel/core": "7.22.8",
51
51
  "@babel/preset-env": "7.22.7",
52
- "@webiny/api-wcp": "5.37.0",
53
- "@webiny/cli": "5.37.0",
54
- "@webiny/project-utils": "5.37.0",
52
+ "@webiny/api-wcp": "5.37.1-beta.0",
53
+ "@webiny/cli": "5.37.1-beta.0",
54
+ "@webiny/project-utils": "5.37.1-beta.0",
55
55
  "apollo-graphql": "0.9.7",
56
56
  "get-yarn-workspaces": "1.0.2",
57
57
  "graphql": "15.8.0",
@@ -71,5 +71,5 @@
71
71
  "build": "yarn webiny run build",
72
72
  "watch": "yarn webiny run watch"
73
73
  },
74
- "gitHead": "a4b14412ebac94298f74373e30024b55038748d1"
74
+ "gitHead": "a4e7b419fbf3f4475d14506c92d22d58ec5e5ef8"
75
75
  }
package/types.d.ts CHANGED
@@ -6,7 +6,17 @@ import { SecurityPermission } from "@webiny/api-security/types";
6
6
  import { DbContext } from "@webiny/handler-db/types";
7
7
  import { Topic } from "@webiny/pubsub/types";
8
8
  import { CmsModelConverterCallable } from "./utils/converters/ConverterCollection";
9
+ import { ModelGroupsPermissions } from "./utils/permissions/ModelGroupsPermissions";
10
+ import { ModelsPermissions } from "./utils/permissions/ModelsPermissions";
11
+ import { EntriesPermissions } from "./utils/permissions/EntriesPermissions";
12
+ import { SettingsPermissions } from "./utils/permissions/SettingsPermissions";
9
13
  export declare type ApiEndpoint = "manage" | "preview" | "read";
14
+ interface HeadlessCmsPermissions {
15
+ groups: ModelGroupsPermissions;
16
+ models: ModelsPermissions;
17
+ entries: EntriesPermissions;
18
+ settings: SettingsPermissions;
19
+ }
10
20
  export interface HeadlessCms extends CmsSettingsContext, CmsSystemContext, CmsGroupContext, CmsModelContext, CmsEntryContext {
11
21
  /**
12
22
  * API type
@@ -36,6 +46,12 @@ export interface HeadlessCms extends CmsSettingsContext, CmsSystemContext, CmsGr
36
46
  * The storage operations loaded for current context.
37
47
  */
38
48
  storageOperations: HeadlessCmsStorageOperations;
49
+ /**
50
+ * Permissions for settings, groups, models and entries.
51
+ *
52
+ * @internal
53
+ */
54
+ permissions: HeadlessCmsPermissions;
39
55
  }
40
56
  /**
41
57
  * @description This combines all contexts used in the CMS into a single one.