@webiny/api-headless-cms 0.0.0-unstable.5e7233243f → 0.0.0-unstable.6e5425ee89
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.
- package/context.js +3 -22
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.d.ts +2 -2
- package/crud/contentEntry/afterDelete.js +2 -7
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.d.ts +2 -2
- package/crud/contentEntry/beforeCreate.js +2 -5
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.d.ts +2 -2
- package/crud/contentEntry/beforeUpdate.js +2 -5
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.js +4 -47
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +8 -35
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.js +8 -68
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry.crud.d.ts +0 -2
- package/crud/contentEntry.crud.js +201 -361
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +3 -3
- package/crud/contentModel/afterCreate.js +5 -7
- package/crud/contentModel/afterCreate.js.map +1 -1
- package/crud/contentModel/afterCreateFrom.d.ts +3 -3
- package/crud/contentModel/afterCreateFrom.js +5 -7
- package/crud/contentModel/afterCreateFrom.js.map +1 -1
- package/crud/contentModel/afterDelete.d.ts +3 -3
- package/crud/contentModel/afterDelete.js +5 -7
- package/crud/contentModel/afterDelete.js.map +1 -1
- package/crud/contentModel/afterUpdate.d.ts +3 -3
- package/crud/contentModel/afterUpdate.js +5 -7
- package/crud/contentModel/afterUpdate.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +4 -4
- package/crud/contentModel/beforeCreate.js +14 -42
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.d.ts +3 -3
- package/crud/contentModel/beforeDelete.js +6 -16
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +3 -3
- package/crud/contentModel/beforeUpdate.js +5 -10
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +0 -7
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldModels.js +0 -6
- package/crud/contentModel/createFieldModels.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +0 -2
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/fieldIdValidation.js +0 -5
- package/crud/contentModel/fieldIdValidation.js.map +1 -1
- package/crud/contentModel/idValidation.js +0 -5
- package/crud/contentModel/idValidation.js.map +1 -1
- package/crud/contentModel/models.js +1 -8
- package/crud/contentModel/models.js.map +1 -1
- package/crud/contentModel/systemFields.js.map +1 -1
- package/crud/contentModel/validateLayout.js +0 -8
- package/crud/contentModel/validateLayout.js.map +1 -1
- package/crud/contentModel/validateModel.js +1 -9
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +11 -67
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel.crud.js +84 -145
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +2 -2
- package/crud/contentModelGroup/beforeCreate.js +3 -15
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.d.ts +2 -2
- package/crud/contentModelGroup/beforeDelete.js +3 -11
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.d.ts +2 -2
- package/crud/contentModelGroup/beforeUpdate.js +2 -7
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup.crud.js +59 -76
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/index.js +3 -23
- package/crud/index.js.map +1 -1
- package/crud/settings.crud.js +3 -20
- package/crud/settings.crud.js.map +1 -1
- package/crud/system.crud.js +61 -84
- package/crud/system.crud.js.map +1 -1
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +1 -14
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +16 -71
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +0 -4
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.js +5 -9
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +4 -29
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/index.js +1 -8
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +6 -18
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +3 -43
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +2 -19
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +20 -17
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +7 -31
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +4 -44
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +4 -21
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +3 -17
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +3 -17
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +0 -10
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -2
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +0 -3
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +0 -6
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +5 -25
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +0 -3
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +0 -3
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +0 -3
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveGet.js +3 -15
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +0 -3
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +3 -15
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +0 -3
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.js +5 -19
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +1 -14
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +0 -12
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +0 -17
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/file.js +0 -8
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.js +0 -10
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.js +0 -11
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/longText.js +0 -10
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +0 -12
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +7 -37
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +21 -59
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText.js +0 -9
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +0 -11
- package/graphqlFields/text.js.map +1 -1
- package/index.js +0 -19
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +7 -7
- package/modelManager/DefaultCmsModelManager.js +1 -17
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +0 -4
- package/modelManager/index.js.map +1 -1
- package/package.json +27 -28
- package/parameters/context.js +0 -4
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +1 -12
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +0 -8
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +7 -15
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +1 -12
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGroupPlugin.js +1 -9
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +1 -6
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -2
- package/plugins/CmsModelPlugin.js +18 -49
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +1 -8
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.js +1 -10
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.js +0 -10
- package/plugins/index.js.map +1 -1
- package/storage/default.js +0 -3
- package/storage/default.js.map +1 -1
- package/storage/object.js +3 -25
- package/storage/object.js.map +1 -1
- package/types.d.ts +267 -126
- package/types.js +0 -64
- package/types.js.map +1 -1
- package/upgrades/5.33.0/index.js +8 -35
- package/upgrades/5.33.0/index.js.map +1 -1
- package/upgrades/index.js +0 -3
- package/upgrades/index.js.map +1 -1
- package/utils/access.js +11 -25
- package/utils/access.js.map +1 -1
- package/utils/converters/Converter.js +1 -14
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.d.ts +7 -0
- package/utils/converters/ConverterCollection.js +31 -30
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +3 -33
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeName.js +1 -9
- package/utils/createTypeName.js.map +1 -1
- package/utils/entryStorage.js +13 -33
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +0 -5
- package/utils/filterAsync.js.map +1 -1
- package/utils/filterModelFields.js +8 -18
- package/utils/filterModelFields.js.map +1 -1
- package/utils/getEntryTitle.js +0 -9
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.js +2 -6
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/ownership.js +0 -8
- package/utils/ownership.js.map +1 -1
- package/utils/permissions.js +7 -26
- package/utils/permissions.js.map +1 -1
- package/utils/pluralizedTypeName.js +1 -7
- package/utils/pluralizedTypeName.js.map +1 -1
- package/utils/renderFields.js +0 -8
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +0 -11
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +0 -8
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +7 -8
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +0 -7
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +1 -5
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +0 -7
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +0 -7
- package/validators/dateLte.js.map +1 -1
- package/validators/gte.js +0 -8
- package/validators/gte.js.map +1 -1
- package/validators/in.js +0 -8
- package/validators/in.js.map +1 -1
- package/validators/index.js +0 -15
- package/validators/index.js.map +1 -1
- package/validators/lte.js +0 -8
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +0 -8
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +0 -8
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +0 -9
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +0 -2
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +0 -8
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +0 -2
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +0 -2
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +0 -2
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +0 -2
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +0 -2
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +0 -5
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +0 -8
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +0 -8
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +1 -8
- package/validators/unique.js.map +1 -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","onBeforeModelCreate","createTopic","onAfterModelCreate","onBeforeModelCreateFrom","onAfterModelCreateFrom","onBeforeModelUpdate","onAfterModelUpdate","onBeforeModelDelete","onAfterModelDelete","assignBeforeModelCreate","assignAfterModelCreate","assignBeforeModelUpdate","assignAfterModelUpdate","assignAfterModelCreateFrom","assignBeforeModelDelete","assignAfterModelDelete","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","getEntryManager","getManagers","getEntryManagers"],"sources":["contentModel.crud.ts"],"sourcesContent":["import {\n CmsContext,\n CmsModel,\n CmsModelContext,\n CmsModelManager,\n CmsModelPermission,\n HeadlessCmsStorageOperations,\n BeforeModelCreateTopicParams,\n AfterModelCreateTopicParams,\n BeforeModelUpdateTopicParams,\n AfterModelUpdateTopicParams,\n BeforeModelDeleteTopicParams,\n AfterModelDeleteTopicParams,\n BeforeModelCreateFromTopicParams,\n AfterModelCreateFromTopicParams,\n CmsModelCreateInput,\n CmsModelUpdateInput,\n CmsModelCreateFromInput,\n 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 { assignBeforeModelCreate } from \"./contentModel/beforeCreate\";\nimport { assignBeforeModelUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignBeforeModelDelete } from \"./contentModel/beforeDelete\";\nimport { assignAfterModelCreate } from \"./contentModel/afterCreate\";\nimport { assignAfterModelUpdate } from \"./contentModel/afterUpdate\";\nimport { assignAfterModelDelete } from \"./contentModel/afterDelete\";\nimport { assignAfterModelCreateFrom } 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 const onBeforeModelCreate = createTopic<BeforeModelCreateTopicParams>();\n const onAfterModelCreate = createTopic<AfterModelCreateTopicParams>();\n const onBeforeModelCreateFrom = createTopic<BeforeModelCreateFromTopicParams>();\n const onAfterModelCreateFrom = createTopic<AfterModelCreateFromTopicParams>();\n const onBeforeModelUpdate = createTopic<BeforeModelUpdateTopicParams>();\n const onAfterModelUpdate = createTopic<AfterModelUpdateTopicParams>();\n const onBeforeModelDelete = createTopic<BeforeModelDeleteTopicParams>();\n const onAfterModelDelete = createTopic<AfterModelDeleteTopicParams>();\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeModelCreate({\n onBeforeModelCreate,\n onBeforeModelCreateFrom,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelCreate({\n context,\n onAfterModelCreate\n });\n assignBeforeModelUpdate({\n onBeforeModelUpdate,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelUpdate({\n context,\n onAfterModelUpdate\n });\n assignAfterModelCreateFrom({\n context,\n onAfterModelCreateFrom\n });\n assignBeforeModelDelete({\n onBeforeModelDelete,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelDelete({\n context,\n onAfterModelDelete\n });\n\n return {\n onBeforeModelCreate,\n onAfterModelCreate,\n onBeforeModelCreateFrom,\n onAfterModelCreateFrom,\n onBeforeModelUpdate,\n onAfterModelUpdate,\n onBeforeModelDelete,\n onAfterModelDelete,\n 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 onBeforeModelCreate.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 onAfterModelCreate.publish({\n input,\n model: createdModel\n });\n\n return createdModel;\n },\n /**\n * Method does not check for permissions or ownership.\n * @internal\n */\n async updateModelDirect(params) {\n const { model: initialModel, original } = params;\n\n const model: CmsModel = {\n ...initialModel,\n tenant: initialModel.tenant || getTenant().id,\n locale: initialModel.locale || getLocale().code,\n webinyVersion: context.WEBINY_VERSION\n };\n\n await onBeforeModelUpdate.publish({\n input: {} as 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 onAfterModelUpdate.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 onBeforeModelCreateFrom.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 onAfterModelCreateFrom.publish({\n input,\n original,\n model: createdModel\n });\n\n return createdModel;\n },\n async updateModel(modelId, inputData) {\n await checkModelPermissions(\"w\");\n\n // Get a model record; this will also perform ownership validation.\n const original = await getModel(modelId);\n\n const updatedData = new UpdateContentModelModel().populate(inputData);\n await updatedData.validate();\n\n const input: CmsModelUpdateInput = await updatedData.toJSON({ onlyDirty: true });\n if (Object.keys(input).length === 0) {\n /**\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 onBeforeModelUpdate.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 onAfterModelUpdate.publish({\n input,\n original,\n model: resultModel\n });\n\n return resultModel;\n },\n async deleteModel(modelId) {\n await checkModelPermissions(\"d\");\n\n const model = await getModel(modelId);\n\n await onBeforeModelDelete.publish({\n model\n });\n\n try {\n await storageOperations.models.delete({\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete the content model\",\n ex.code || \"CONTENT_MODEL_DELETE_ERROR\",\n {\n error: ex,\n modelId: model.modelId\n }\n );\n }\n\n await onAfterModelDelete.publish({\n model\n });\n\n managers.delete(model.modelId);\n },\n getModelManager,\n 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":["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":";;;;;;;;AAqBA;AACA;AACA;AACA;AAKA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMA,cAAc,GAAGC,eAAM,CAACC,MAAM,CAAC,QAAQ,CAAW;AAExD,MAAMC,uBAAuB,GAAIC,MAAuB,IAAsB;EAC1E,OAAOA,MAAM,CAACC,GAAG,CAACC,KAAK,IAAI;IAAA;IACvB,uBAAIA,KAAK,CAACC,QAAQ,4CAAd,gBAAgBH,MAAM,EAAE;MACxBE,KAAK,CAACC,QAAQ,CAACH,MAAM,GAAGD,uBAAuB,CAACG,KAAK,CAACC,QAAQ,CAACH,MAAM,CAAC;IAC1E;IACA,IAAI,CAACE,KAAK,CAACE,SAAS,EAAE;MAClBF,KAAK,CAACE,SAAS,GAAGF,KAAK,CAACG,OAAO;IACnC;IACA,OAAOH,KAAK;EAChB,CAAC,CAAC;AACN,CAAC;AAED,MAAMI,4BAA4B,GAAIC,KAAe,IAAsB;EACvE,IAAI,CAACA,KAAK,CAACC,aAAa,EAAE;IACtB,OAAOD,KAAK,CAACP,MAAM;EACvB;EAEA,MAAMS,OAAO,GAAGZ,eAAM,CAACC,MAAM,CAACS,KAAK,CAACC,aAAa,CAAC;EAClD,IAAI,CAACC,OAAO,EAAE;IACV,OAAOF,KAAK,CAACP,MAAM;EACvB;EACA;AACJ;AACA;AACA;EACI,IAAIO,KAAK,CAACC,aAAa,CAACE,KAAK,CAAC,WAAW,CAAC,EAAE;IACxC,OAAOX,uBAAuB,CAACQ,KAAK,CAACP,MAAM,CAAC;EAChD;EACA,IAAIH,eAAM,CAACc,OAAO,CAACF,OAAO,EAAEb,cAAc,CAAC,IAAI,CAAC,EAAE;IAC9C,OAAOW,KAAK,CAACP,MAAM;EACvB;EACA,OAAOD,uBAAuB,CAACQ,KAAK,CAACP,MAAM,CAAC;AAChD,CAAC;AASM,MAAMY,gBAAgB,GAAIC,MAA8B,IAAsB;EACjF,MAAM;IAAEC,SAAS;IAAEC,WAAW;IAAEC,SAAS;IAAEC,iBAAiB;IAAEC;EAAQ,CAAC,GAAGL,MAAM;EAEhF,MAAMM,OAAO,GAAG;IACZC,UAAU,EAAE,IAAIC,mBAAU,CAAC,YAAY;MACnC,MAAMC,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEX,SAAS,EAAE,CAACY,EAAE;UACtBC,MAAM,EAAEX,SAAS,EAAE,CAACY;QACxB;MACJ,CAAC,CAAC;MACF,OAAO,CACHN,MAAM,CAACrB,GAAG,CAACM,KAAK,IAAI;QAChB,mEACOA,KAAK;UACRP,MAAM,EAAEM,4BAA4B,CAACC,KAAK,CAAC;UAC3CkB,MAAM,EAAElB,KAAK,CAACkB,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;UACtCC,MAAM,EAAEpB,KAAK,CAACoB,MAAM,IAAIX,SAAS,EAAE,CAACY;QAAI;MAEhD,CAAC,CAAC,CACL;IACL,CAAC;EACL,CAAC;EAED,MAAMC,gBAAgB,GAAG,MAAY;IACjC,KAAK,MAAMC,MAAM,IAAIC,MAAM,CAACC,MAAM,CAACb,OAAO,CAAC,EAAE;MACzCW,MAAM,CAACG,QAAQ,EAAE;IACrB;EACJ,CAAC;EAED,MAAMC,QAAQ,GAAG,IAAIC,GAAG,EAA2B;EACnD,MAAMC,aAAa,GAAG,OAClBlB,OAAmB,EACnBX,KAAe,KACY;IAC3B,MAAM8B,OAAO,GAAG,MAAM,IAAAC,sDAA0B,EAACpB,OAAO,EAAEX,KAAK,CAAC;IAChE2B,QAAQ,CAACK,GAAG,CAAChC,KAAK,CAACiC,OAAO,EAAEH,OAAO,CAAC;IACpC,OAAOA,OAAO;EAClB,CAAC;EAED,MAAMI,qBAAqB,GAAIC,KAAa,IAAkC;IAC1E,OAAO,IAAAC,6BAAgB,EAACzB,OAAO,EAAE,kBAAkB,EAAE;MAAE0B,GAAG,EAAEF;IAAM,CAAC,CAAC;EACxE,CAAC;EAED,MAAMG,kBAAkB,GAAG,MAAkB;IACzC,MAAMpB,MAAM,GAAGX,SAAS,EAAE,CAACY,EAAE;IAC7B,MAAMC,MAAM,GAAGX,SAAS,EAAE,CAACY,IAAI;IAE/B,MAAMN,MAAM,GAAGJ,OAAO,CAAC4B,OAAO,CACzBC,MAAM,CAAiBC,8BAAc,CAACC,IAAI;IAC3C;AACZ;AACA;AACA,OAHY,CAICC,MAAM,CAACC,MAAM,IAAI;MACd,MAAM;QAAE1B,MAAM,EAAE2B,CAAC;QAAEzB,MAAM,EAAE0B;MAAE,CAAC,GAAGF,MAAM,CAACG,YAAY;MACpD,IAAIF,CAAC,IAAIA,CAAC,KAAK3B,MAAM,EAAE;QACnB,OAAO,KAAK;MAChB,CAAC,MAAM,IAAI4B,CAAC,IAAIA,CAAC,KAAK1B,MAAM,EAAE;QAC1B,OAAO,KAAK;MAChB;MACA,OAAO,IAAI;IACf,CAAC,CAAC,CACD1B,GAAG,CAAWkD,MAAM,IAAI;MACrB,mEACOA,MAAM,CAACG,YAAY;QACtB7B,MAAM;QACNE,MAAM;QACNnB,aAAa,EAAEU,OAAO,CAACqC;MAAc;IAE7C,CAAC,CAAC;IACN;AACR;AACA;IACQ,KAAK,MAAMhD,KAAK,IAAIe,MAAM,EAAE;MACxB,IAAAkC,wCAAmB,EAAC;QAChBjD,KAAK;QACLuC,OAAO,EAAE5B,OAAO,CAAC4B;MACrB,CAAC,CAAC;IACN;IACA,OAAOxB,MAAM;EACjB,CAAC;EAED,MAAMmC,SAAS,GAAG,MAAOjB,OAAe,IAAwB;IAC5D,MAAMkB,WAAW,GAAGb,kBAAkB,EAAE,CAACc,IAAI,CAACpD,KAAK,IAAIA,KAAK,CAACiC,OAAO,KAAKA,OAAO,CAAC;IAEjF,IAAIkB,WAAW,EAAE;MACb,OAAOA,WAAW;IACtB;IAEA,MAAMnD,KAAK,GAAG,MAAMU,iBAAiB,CAACK,MAAM,CAACsC,GAAG,CAAC;MAC7CnC,MAAM,EAAEX,SAAS,EAAE,CAACY,EAAE;MACtBC,MAAM,EAAEX,SAAS,EAAE,CAACY,IAAI;MACxBY;IACJ,CAAC,CAAC;IAEF,IAAI,CAACjC,KAAK,EAAE;MACR,MAAM,IAAIsD,6BAAa,CAAE,kBAAiBrB,OAAQ,kBAAiB,CAAC;IACxE;IAEA,mEACOjC,KAAK;MACRkB,MAAM,EAAElB,KAAK,CAACkB,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;MACtCC,MAAM,EAAEpB,KAAK,CAACoB,MAAM,IAAIX,SAAS,EAAE,CAACY;IAAI;EAEhD,CAAC;EAED,MAAMkC,UAAU,GAAG,YAAiC;IAChD,MAAMC,cAAc,GAAG,MAAM5C,OAAO,CAACC,UAAU,CAAC4C,IAAI,CAAC,YAAY,CAAC;IAElE,MAAMC,aAAa,GAAGpB,kBAAkB,EAAE;IAE1C,OAAOkB,cAAc,CAACG,MAAM,CAACD,aAAa,CAAC;EAC/C,CAAC;EAED,MAAM7C,UAAU,GAAG,YAAY;IAC3B,MAAM+C,UAAU,GAAG,MAAM1B,qBAAqB,CAAC,GAAG,CAAC;IACnD,MAAMnB,MAAM,GAAG,MAAMwC,UAAU,EAAE;IACjC,OAAO,IAAAM,wBAAW,EAAC9C,MAAM,EAAE,MAAMf,KAAK,IAAI;MACtC,IAAI,CAAC,IAAA8D,4BAAiB,EAACnD,OAAO,EAAEiD,UAAU,EAAE5D,KAAK,CAAC,EAAE;QAChD,OAAO,KAAK;MAChB;MACA,OAAO,IAAA+D,2BAAmB,EAACpD,OAAO,EAAEX,KAAK,CAAC;IAC9C,CAAC,CAAC;EACN,CAAC;EAED,MAAMgE,QAAQ,GAAG,MAAO/B,OAAe,IAAwB;IAC3D,MAAM2B,UAAU,GAAG,MAAM1B,qBAAqB,CAAC,GAAG,CAAC;IAEnD,MAAMlC,KAAK,GAAG,MAAMkD,SAAS,CAACjB,OAAO,CAAC;IAEtC,IAAAgC,yBAAc,EAACtD,OAAO,EAAEiD,UAAU,EAAE5D,KAAK,CAAC;IAC1C,MAAM,IAAAkE,wBAAgB,EAACvD,OAAO,EAAEX,KAAK,CAAC;IAEtC,OAAOA,KAAK;EAChB,CAAC;EAED,MAAMmE,eAAmD,GAAG,MACxDC,MAAM,IACqB;IAC3B,MAAMnC,OAAO,GAAG,OAAOmC,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGA,MAAM,CAACnC,OAAO;IACpE,IAAIN,QAAQ,CAAC0C,GAAG,CAACpC,OAAO,CAAC,EAAE;MACvB,OAAON,QAAQ,CAAC0B,GAAG,CAACpB,OAAO,CAAC;IAChC;IACA,MAAMlB,MAAM,GAAG,MAAMwC,UAAU,EAAE;IACjC,MAAMvD,KAAK,GAAGe,MAAM,CAACqC,IAAI,CAACkB,CAAC,IAAIA,CAAC,CAACrC,OAAO,KAAKA,OAAO,CAAC;IACrD,IAAI,CAACjC,KAAK,EAAE;MACR,MAAM,IAAIsD,6BAAa,CAAE,8BAA6BrB,OAAQ,IAAG,CAAC;IACtE;IACA,OAAO,MAAMJ,aAAa,CAAClB,OAAO,EAAEX,KAAK,CAAC;EAC9C,CAAC;;EAED;EACA,MAAMuE,mBAAmB,GACrB,IAAAC,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E,MAAMC,kBAAkB,GAAG,IAAAD,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F;EACA,MAAME,uBAAuB,GAAG,IAAAF,mBAAW,EACvC,6BAA6B,CAChC;EACD,MAAMG,sBAAsB,GAAG,IAAAH,mBAAW,EACtC,4BAA4B,CAC/B;EACD;EACA,MAAMI,mBAAmB,GACrB,IAAAJ,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E,MAAMK,kBAAkB,GAAG,IAAAL,mBAAW,EAAgC,wBAAwB,CAAC;EAC/F;EACA,MAAMM,mBAAmB,GACrB,IAAAN,mBAAW,EAAiC,yBAAyB,CAAC;EAC1E,MAAMO,kBAAkB,GAAG,IAAAP,mBAAW,EAAgC,wBAAwB,CAAC;EAE/F,MAAMQ,iBAAiB,GAAG,IAAAR,mBAAW,EAA0B,uBAAuB,CAAC;EACvF;AACJ;AACA;EACI,IAAAS,qCAAuB,EAAC;IACpBV,mBAAmB;IACnBG,uBAAuB;IACvBnC,OAAO,EAAE5B,OAAO,CAAC4B,OAAO;IACxB7B;EACJ,CAAC,CAAC;EACF,IAAAwE,mCAAsB,EAAC;IACnBvE,OAAO;IACP8D;EACJ,CAAC,CAAC;EACF,IAAAU,qCAAuB,EAAC;IACpBP,mBAAmB;IACnBrC,OAAO,EAAE5B,OAAO,CAAC4B,OAAO;IACxB7B;EACJ,CAAC,CAAC;EACF,IAAA0E,mCAAsB,EAAC;IACnBzE,OAAO;IACPkE;EACJ,CAAC,CAAC;EACF,IAAAQ,2CAA0B,EAAC;IACvB1E,OAAO;IACPgE;EACJ,CAAC,CAAC;EACF,IAAAW,qCAAuB,EAAC;IACpBR,mBAAmB;IACnBvC,OAAO,EAAE5B,OAAO,CAAC4B,OAAO;IACxB7B;EACJ,CAAC,CAAC;EACF,IAAA6E,mCAAsB,EAAC;IACnB5E,OAAO;IACPoE;EACJ,CAAC,CAAC;EAEF,OAAO;IACH;AACR;AACA;IACQS,mBAAmB,EAAEjB,mBAAmB;IACxCkB,kBAAkB,EAAEhB,kBAAkB;IACtCiB,uBAAuB,EAAEhB,uBAAuB;IAChDiB,sBAAsB,EAAEhB,sBAAsB;IAC9CiB,mBAAmB,EAAEhB,mBAAmB;IACxCiB,kBAAkB,EAAEhB,kBAAkB;IACtCiB,mBAAmB,EAAEhB,mBAAmB;IACxCiB,kBAAkB,EAAEhB,kBAAkB;IACtC;AACR;AACA;IACQR,mBAAmB;IACnBE,kBAAkB;IAClBC,uBAAuB;IACvBC,sBAAsB;IACtBC,mBAAmB;IACnBC,kBAAkB;IAClBC,mBAAmB;IACnBC,kBAAkB;IAClBC,iBAAiB;IACjB1D,gBAAgB;IAChB0C,QAAQ;IACRnD,UAAU;IACV,MAAMmF,WAAW,CAACC,SAAS,EAAE;MACzB,MAAM/D,qBAAqB,CAAC,GAAG,CAAC;MAEhC,MAAMgE,WAAW,GAAG,IAAIC,+BAAuB,EAAE,CAACC,QAAQ,CAACH,SAAS,CAAC;MACrE,MAAMC,WAAW,CAACG,QAAQ,EAAE;MAC5B,MAAMC,KAA0B,GAAG,MAAMJ,WAAW,CAACK,MAAM,EAAE;MAE7D5F,OAAO,CAAC6F,QAAQ,CAACC,oBAAoB,EAAE;MACvC,MAAMC,KAAK,GAAG,MAAM/F,OAAO,CAACgG,GAAG,CAACC,QAAQ,CAACN,KAAK,CAACI,KAAK,CAAC;MACrD/F,OAAO,CAAC6F,QAAQ,CAACK,mBAAmB,EAAE;MACtC,IAAI,CAACH,KAAK,EAAE;QACR,MAAM,IAAIpD,6BAAa,CAAE,sBAAqBgD,KAAK,CAACI,KAAM,IAAG,CAAC;MAClE;MAEA,MAAMjH,MAAM,GAAG,MAAM,IAAAqH,oCAAiB,EAACR,KAAK,CAAC7G,MAAM,CAAC;MAEpD,MAAMsH,QAAQ,GAAGvG,WAAW,EAAE;MAC9B,MAAMR,KAAe,GAAG;QACpBgH,IAAI,EAAEV,KAAK,CAACU,IAAI;QAChBC,WAAW,EAAEX,KAAK,CAACW,WAAW,IAAI,EAAE;QACpChF,OAAO,EAAEqE,KAAK,CAACrE,OAAO,IAAI,EAAE;QAC5BiF,YAAY,EAAE,IAAI;QAClB9F,MAAM,EAAEX,SAAS,EAAE,CAACY,IAAI;QACxBH,MAAM,EAAEX,SAAS,EAAE,CAACY,EAAE;QACtBuF,KAAK,EAAE;UACHvF,EAAE,EAAEuF,KAAK,CAACvF,EAAE;UACZ6F,IAAI,EAAEN,KAAK,CAACM;QAChB,CAAC;QACDG,SAAS,EAAE;UACPhG,EAAE,EAAE4F,QAAQ,CAAC5F,EAAE;UACfiG,WAAW,EAAEL,QAAQ,CAACK,WAAW;UACjC1E,IAAI,EAAEqE,QAAQ,CAACrE;QACnB,CAAC;QACD2E,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;QACnCC,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW,EAAE;QACjC9H,MAAM;QACNgI,YAAY,EAAE,EAAE;QAChBC,MAAM,EAAEpB,KAAK,CAACoB,MAAM,IAAI,EAAE;QAC1BzH,aAAa,EAAEU,OAAO,CAACqC;MAC3B,CAAC;MAED,MAAMuB,mBAAmB,CAACoD,OAAO,CAAC;QAC9BrB,KAAK;QACLtG;MACJ,CAAC,CAAC;MAEF,MAAM4H,YAAY,GAAG,MAAMlH,iBAAiB,CAACK,MAAM,CAAC8G,MAAM,CAAC;QACvD7H;MACJ,CAAC,CAAC;MAEFY,OAAO,CAACC,UAAU,CAACa,QAAQ,EAAE;MAE7B,MAAMG,aAAa,CAAClB,OAAO,EAAEX,KAAK,CAAC;MAEnC,MAAMyE,kBAAkB,CAACkD,OAAO,CAAC;QAC7BrB,KAAK;QACLtG,KAAK,EAAE4H;MACX,CAAC,CAAC;MAEF,OAAOA,YAAY;IACvB,CAAC;IACD;AACR;AACA;AACA;IACQ,MAAME,iBAAiB,CAACxH,MAAM,EAAE;MAC5B,MAAM;QAAEN,KAAK,EAAE+H,YAAY;QAAEC;MAAS,CAAC,GAAG1H,MAAM;MAEhD,MAAMN,KAAe,+DACd+H,YAAY;QACf7G,MAAM,EAAE6G,YAAY,CAAC7G,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;QAC7CC,MAAM,EAAE2G,YAAY,CAAC3G,MAAM,IAAIX,SAAS,EAAE,CAACY,IAAI;QAC/CpB,aAAa,EAAEU,OAAO,CAACqC;MAAc,EACxC;MAED,MAAM4B,mBAAmB,CAAC+C,OAAO,CAAC;QAC9BrB,KAAK,EAAE,CAAC,CAAwB;QAChC0B,QAAQ;QACRhI;MACJ,CAAC,CAAC;MAEF,MAAMiI,WAAW,GAAG,MAAMvH,iBAAiB,CAACK,MAAM,CAACmH,MAAM,CAAC;QACtDlI;MACJ,CAAC,CAAC;MAEF,MAAM6B,aAAa,CAAClB,OAAO,EAAEsH,WAAW,CAAC;MAEzCrH,OAAO,CAACC,UAAU,CAACa,QAAQ,EAAE;MAE7B,MAAMmD,kBAAkB,CAAC8C,OAAO,CAAC;QAC7BrB,KAAK,EAAE,CAAC,CAAwB;QAChC0B,QAAQ;QACRhI,KAAK,EAAEiI;MACX,CAAC,CAAC;MAEF,OAAOA,WAAW;IACtB,CAAC;IACD,MAAME,eAAe,CAAClG,OAAO,EAAEmG,IAAI,EAAE;MACjC,MAAMlG,qBAAqB,CAAC,GAAG,CAAC;MAChC;AACZ;AACA;MACY,MAAM8F,QAAQ,GAAG,MAAMhE,QAAQ,CAAC/B,OAAO,CAAC;MAExC,MAAMiE,WAAW,GAAG,IAAImC,mCAA2B,EAAE,CAACjC,QAAQ,CAAC;QAC3DY,IAAI,EAAEoB,IAAI,CAACpB,IAAI;QACf/E,OAAO,EAAEmG,IAAI,CAACnG,OAAO;QACrBgF,WAAW,EAAEmB,IAAI,CAACnB,WAAW,IAAIe,QAAQ,CAACf,WAAW;QACrDP,KAAK,EAAE0B,IAAI,CAAC1B,KAAK;QACjBtF,MAAM,EAAEgH,IAAI,CAAChH;MACjB,CAAC,CAAC;MAEF,MAAM8E,WAAW,CAACG,QAAQ,EAAE;MAC5B,MAAMC,KAA8B,GAAG,MAAMJ,WAAW,CAACK,MAAM,EAAE;MAEjE,MAAMnF,MAAM,GAAG,MAAMT,OAAO,CAAC2H,IAAI,CAAC7H,SAAS,CAAC6F,KAAK,CAAClF,MAAM,IAAI4G,QAAQ,CAAC5G,MAAM,CAAC;MAC5E,IAAI,CAACA,MAAM,EAAE;QACT,MAAM,IAAIkC,6BAAa,CAAE,uBAAsBgD,KAAK,CAAClF,MAAO,IAAG,CAAC;MACpE;MACA;AACZ;AACA;MACY,MAAMsF,KAAK,GAAG,MAAM/F,OAAO,CAACgG,GAAG,CAACjG,iBAAiB,CAAC6H,MAAM,CAAClF,GAAG,CAAC;QACzDlC,EAAE,EAAEmF,KAAK,CAACI,KAAK;QACfxF,MAAM,EAAE8G,QAAQ,CAAC9G,MAAM;QACvBE,MAAM,EAAEA,MAAM,CAACC;MACnB,CAAC,CAAC;MACF,IAAI,CAACqF,KAAK,EAAE;QACR,MAAM,IAAIpD,6BAAa,CAAE,sBAAqBgD,KAAK,CAACI,KAAM,IAAG,CAAC;MAClE;MAEA,MAAMK,QAAQ,GAAGvG,WAAW,EAAE;MAC9B,MAAMR,KAAe,+DACdgI,QAAQ;QACX5G,MAAM,EAAEA,MAAM,CAACC,IAAI;QACnBqF,KAAK,EAAE;UACHvF,EAAE,EAAEuF,KAAK,CAACvF,EAAE;UACZ6F,IAAI,EAAEN,KAAK,CAACM;QAChB,CAAC;QACDA,IAAI,EAAEV,KAAK,CAACU,IAAI;QAChB/E,OAAO,EAAEqE,KAAK,CAACrE,OAAO,IAAI,EAAE;QAC5BgF,WAAW,EAAEX,KAAK,CAACW,WAAW,IAAI,EAAE;QACpCE,SAAS,EAAE;UACPhG,EAAE,EAAE4F,QAAQ,CAAC5F,EAAE;UACfiG,WAAW,EAAEL,QAAQ,CAACK,WAAW;UACjC1E,IAAI,EAAEqE,QAAQ,CAACrE;QACnB,CAAC;QACD2E,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;QACnCC,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW,EAAE;QACjCE,YAAY,EAAE,EAAE;QAChBxH,aAAa,EAAEU,OAAO,CAACqC;MAAc,EACxC;MAED,MAAM0B,uBAAuB,CAACiD,OAAO,CAAC;QAClCrB,KAAK;QACLtG,KAAK;QACLgI;MACJ,CAAC,CAAC;MAEF,MAAMJ,YAAY,GAAG,MAAMlH,iBAAiB,CAACK,MAAM,CAAC8G,MAAM,CAAC;QACvD7H;MACJ,CAAC,CAAC;MAEFY,OAAO,CAACC,UAAU,CAACa,QAAQ,EAAE;MAE7B,MAAMG,aAAa,CAAClB,OAAO,EAAEX,KAAK,CAAC;MAEnC,MAAM2E,sBAAsB,CAACgD,OAAO,CAAC;QACjCrB,KAAK;QACL0B,QAAQ;QACRhI,KAAK,EAAE4H;MACX,CAAC,CAAC;MAEF,OAAOA,YAAY;IACvB,CAAC;IACD,MAAMY,WAAW,CAACvG,OAAO,EAAEgE,SAAS,EAAE;MAClC,MAAM/D,qBAAqB,CAAC,GAAG,CAAC;;MAEhC;MACA,MAAM8F,QAAQ,GAAG,MAAMhE,QAAQ,CAAC/B,OAAO,CAAC;MAExC,MAAMwG,WAAW,GAAG,IAAIC,+BAAuB,EAAE,CAACtC,QAAQ,CAACH,SAAS,CAAC;MACrE,MAAMwC,WAAW,CAACpC,QAAQ,EAAE;MAE5B,MAAMC,KAA0B,GAAG,MAAMmC,WAAW,CAAClC,MAAM,CAAC;QAAEoC,SAAS,EAAE;MAAK,CAAC,CAAC;MAChF,IAAInH,MAAM,CAACoH,IAAI,CAACtC,KAAK,CAAC,CAACuC,MAAM,KAAK,CAAC,EAAE;QACjC;AAChB;AACA;QACgB,OAAOb,QAAQ;MACnB;MACA,IAAItB,KAAwB,GAAG;QAC3BvF,EAAE,EAAE6G,QAAQ,CAACtB,KAAK,CAACvF,EAAE;QACrB6F,IAAI,EAAEgB,QAAQ,CAACtB,KAAK,CAACM;MACzB,CAAC;MACD,IAAIV,KAAK,CAACI,KAAK,EAAE;QACb/F,OAAO,CAAC6F,QAAQ,CAACC,oBAAoB,EAAE;QACvC,MAAMqC,SAAS,GAAG,MAAMnI,OAAO,CAACgG,GAAG,CAACC,QAAQ,CAACN,KAAK,CAACI,KAAK,CAAC;QACzD/F,OAAO,CAAC6F,QAAQ,CAACK,mBAAmB,EAAE;QACtC,IAAI,CAACiC,SAAS,EAAE;UACZ,MAAM,IAAIxF,6BAAa,CAAE,sBAAqBgD,KAAK,CAACI,KAAM,IAAG,CAAC;QAClE;QACAA,KAAK,GAAG;UACJvF,EAAE,EAAE2H,SAAS,CAAC3H,EAAE;UAChB6F,IAAI,EAAE8B,SAAS,CAAC9B;QACpB,CAAC;MACL;MACA,MAAMvH,MAAM,GAAG,MAAM,IAAAqH,oCAAiB,EAACb,SAAS,CAACxG,MAAM,CAAC;MACxD,MAAMO,KAAe,2FACdgI,QAAQ,GACR1B,KAAK;QACRI,KAAK;QACLxF,MAAM,EAAE8G,QAAQ,CAAC9G,MAAM,IAAIX,SAAS,EAAE,CAACY,EAAE;QACzCC,MAAM,EAAE4G,QAAQ,CAAC5G,MAAM,IAAIX,SAAS,EAAE,CAACY,IAAI;QAC3CpB,aAAa,EAAEU,OAAO,CAACqC,cAAc;QACrCvD,MAAM;QACN+H,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW;MAAE,EACpC;MAED,MAAM3C,mBAAmB,CAAC+C,OAAO,CAAC;QAC9BrB,KAAK;QACL0B,QAAQ;QACRhI;MACJ,CAAC,CAAC;MAEF,MAAMiI,WAAW,GAAG,MAAMvH,iBAAiB,CAACK,MAAM,CAACmH,MAAM,CAAC;QACtDlI;MACJ,CAAC,CAAC;MAEF,MAAM6B,aAAa,CAAClB,OAAO,EAAEsH,WAAW,CAAC;MAEzC,MAAMpD,kBAAkB,CAAC8C,OAAO,CAAC;QAC7BrB,KAAK;QACL0B,QAAQ;QACRhI,KAAK,EAAEiI;MACX,CAAC,CAAC;MAEF,OAAOA,WAAW;IACtB,CAAC;IACD,MAAMc,WAAW,CAAC9G,OAAO,EAAE;MACvB,MAAMC,qBAAqB,CAAC,GAAG,CAAC;MAEhC,MAAMlC,KAAK,GAAG,MAAMgE,QAAQ,CAAC/B,OAAO,CAAC;MAErC,MAAM6C,mBAAmB,CAAC6C,OAAO,CAAC;QAC9B3H;MACJ,CAAC,CAAC;MAEF,IAAI;QACA,MAAMU,iBAAiB,CAACK,MAAM,CAACiI,MAAM,CAAC;UAClChJ;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOiJ,EAAE,EAAE;QACT,MAAM,IAAIC,cAAW,CACjBD,EAAE,CAACE,OAAO,IAAI,oCAAoC,EAClDF,EAAE,CAAC5H,IAAI,IAAI,4BAA4B,EACvC;UACI+H,KAAK,EAAEH,EAAE;UACThH,OAAO,EAAEjC,KAAK,CAACiC;QACnB,CAAC,CACJ;MACL;MAEA,MAAM8C,kBAAkB,CAAC4C,OAAO,CAAC;QAC7B3H;MACJ,CAAC,CAAC;MAEF2B,QAAQ,CAACqH,MAAM,CAAChJ,KAAK,CAACiC,OAAO,CAAC;IAClC,CAAC;IACD,MAAMoH,eAAe,CAACpH,OAAO,EAAE;MAC3B;AACZ;AACA;AACA;MACY,MAAMC,qBAAqB,CAAC,GAAG,CAAC;MAEhC,MAAMlC,KAAK,GAAG,MAAMgE,QAAQ,CAAC/B,OAAO,CAAC;MAErC,MAAM+C,iBAAiB,CAAC2C,OAAO,CAAC;QAAE3H;MAAM,CAAC,CAAC;MAE1C,OAAO,IAAI;IACf,CAAC;IACDmE,eAAe;IACfmF,eAAe,EAAE,MAAMtJ,KAAK,IAAI;MAC5B,OAAOmE,eAAe,CAACnE,KAAK,CAAC;IACjC,CAAC;IACDuJ,WAAW,EAAE,MAAM5H,QAAQ;IAC3B6H,gBAAgB,EAAE,MAAM7H;EAC5B,CAAC;AACL,CAAC;AAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OnGroupBeforeCreateTopicParams, HeadlessCmsStorageOperations } from "../../types";
|
|
2
2
|
import { Topic } from "@webiny/pubsub/types";
|
|
3
3
|
import { PluginsContainer } from "@webiny/plugins";
|
|
4
4
|
interface AssignBeforeGroupCreateParams {
|
|
5
|
-
|
|
5
|
+
onGroupBeforeCreate: Topic<OnGroupBeforeCreateTopicParams>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
storageOperations: HeadlessCmsStorageOperations;
|
|
8
8
|
}
|
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.assignBeforeGroupCreate = void 0;
|
|
9
|
-
|
|
10
8
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
11
|
-
|
|
12
9
|
var _toSlug = require("../../utils/toSlug");
|
|
13
|
-
|
|
14
10
|
var _CmsGroupPlugin = require("../../plugins/CmsGroupPlugin");
|
|
15
|
-
|
|
16
11
|
var _utils = require("@webiny/utils");
|
|
17
|
-
|
|
18
12
|
const assignBeforeGroupCreate = params => {
|
|
19
13
|
const {
|
|
20
|
-
|
|
14
|
+
onGroupBeforeCreate,
|
|
21
15
|
plugins,
|
|
22
16
|
storageOperations
|
|
23
17
|
} = params;
|
|
24
|
-
|
|
18
|
+
onGroupBeforeCreate.subscribe(async params => {
|
|
25
19
|
const {
|
|
26
20
|
group
|
|
27
21
|
} = params;
|
|
28
|
-
|
|
29
22
|
if (group.slug && group.slug.trim()) {
|
|
30
23
|
const groups = await storageOperations.groups.list({
|
|
31
24
|
where: {
|
|
@@ -34,7 +27,6 @@ const assignBeforeGroupCreate = params => {
|
|
|
34
27
|
slug: group.slug
|
|
35
28
|
}
|
|
36
29
|
});
|
|
37
|
-
|
|
38
30
|
if (groups.length > 0) {
|
|
39
31
|
throw new _error.default(`Cms Group with the slug "${group.slug}" already exists.`, "SLUG_ALREADY_EXISTS");
|
|
40
32
|
}
|
|
@@ -47,20 +39,16 @@ const assignBeforeGroupCreate = params => {
|
|
|
47
39
|
slug
|
|
48
40
|
}
|
|
49
41
|
});
|
|
50
|
-
|
|
51
42
|
if (groups.length === 0) {
|
|
52
43
|
group.slug = slug;
|
|
53
44
|
} else {
|
|
54
45
|
group.slug = `${slug}-${(0, _utils.generateAlphaNumericId)(8)}`;
|
|
55
46
|
}
|
|
56
47
|
}
|
|
57
|
-
|
|
58
48
|
const groupPlugin = plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type).find(item => item.contentModelGroup.slug === group.slug);
|
|
59
|
-
|
|
60
49
|
if (groupPlugin) {
|
|
61
50
|
throw new Error(`Cannot create "${group.slug}" content model group because one is already registered via a plugin.`);
|
|
62
51
|
}
|
|
63
52
|
});
|
|
64
53
|
};
|
|
65
|
-
|
|
66
54
|
exports.assignBeforeGroupCreate = assignBeforeGroupCreate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeGroupCreate","params","
|
|
1
|
+
{"version":3,"names":["assignBeforeGroupCreate","params","onGroupBeforeCreate","plugins","storageOperations","subscribe","group","slug","trim","groups","list","where","tenant","locale","length","WebinyError","toSlug","name","generateAlphaNumericId","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","Error"],"sources":["beforeCreate.ts"],"sourcesContent":["import { OnGroupBeforeCreateTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { toSlug } from \"~/utils/toSlug\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\n\ninterface AssignBeforeGroupCreateParams {\n onGroupBeforeCreate: Topic<OnGroupBeforeCreateTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupCreate = (params: AssignBeforeGroupCreateParams) => {\n const { onGroupBeforeCreate, plugins, storageOperations } = params;\n\n onGroupBeforeCreate.subscribe(async params => {\n const { group } = params;\n\n if (group.slug && group.slug.trim()) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug: group.slug\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the slug \"${group.slug}\" already exists.`,\n \"SLUG_ALREADY_EXISTS\"\n );\n }\n } else {\n const slug = toSlug(group.name);\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug\n }\n });\n\n if (groups.length === 0) {\n group.slug = slug;\n } else {\n group.slug = `${slug}-${generateAlphaNumericId(8)}`;\n }\n }\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(\n `Cannot create \"${group.slug}\" content model group because one is already registered via a plugin.`\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA;AACA;AACA;AACA;AAOO,MAAMA,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,OAAO;IAAEC;EAAkB,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,IAAIK,KAAK,CAACC,IAAI,IAAID,KAAK,CAACC,IAAI,CAACC,IAAI,EAAE,EAAE;MACjC,MAAMC,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBC,MAAM,EAAEP,KAAK,CAACO,MAAM;UACpBN,IAAI,EAAED,KAAK,CAACC;QAChB;MACJ,CAAC,CAAC;MACF,IAAIE,MAAM,CAACK,MAAM,GAAG,CAAC,EAAE;QACnB,MAAM,IAAIC,cAAW,CAChB,4BAA2BT,KAAK,CAACC,IAAK,mBAAkB,EACzD,qBAAqB,CACxB;MACL;IACJ,CAAC,MAAM;MACH,MAAMA,IAAI,GAAG,IAAAS,cAAM,EAACV,KAAK,CAACW,IAAI,CAAC;MAC/B,MAAMR,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAM,CAACC,IAAI,CAAC;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEN,KAAK,CAACM,MAAM;UACpBC,MAAM,EAAEP,KAAK,CAACO,MAAM;UACpBN;QACJ;MACJ,CAAC,CAAC;MAEF,IAAIE,MAAM,CAACK,MAAM,KAAK,CAAC,EAAE;QACrBR,KAAK,CAACC,IAAI,GAAGA,IAAI;MACrB,CAAC,MAAM;QACHD,KAAK,CAACC,IAAI,GAAI,GAAEA,IAAK,IAAG,IAAAW,6BAAsB,EAAC,CAAC,CAAE,EAAC;MACvD;IACJ;IAEA,MAAMC,WAAW,GAAGhB,OAAO,CACtBiB,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAAClB,IAAI,KAAKD,KAAK,CAACC,IAAI,CAAC;IAE7D,IAAIY,WAAW,EAAE;MACb,MAAM,IAAIO,KAAK,CACV,kBAAiBpB,KAAK,CAACC,IAAK,uEAAsE,CACtG;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Topic } from "@webiny/pubsub/types";
|
|
2
|
-
import {
|
|
2
|
+
import { OnGroupBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from "../../types";
|
|
3
3
|
import { PluginsContainer } from "@webiny/plugins";
|
|
4
4
|
interface AssignBeforeGroupDeleteParams {
|
|
5
|
-
|
|
5
|
+
onGroupBeforeDelete: Topic<OnGroupBeforeDeleteTopicParams>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
storageOperations: HeadlessCmsStorageOperations;
|
|
8
8
|
}
|
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.assignBeforeGroupDelete = void 0;
|
|
9
|
-
|
|
10
8
|
var _CmsGroupPlugin = require("../../plugins/CmsGroupPlugin");
|
|
11
|
-
|
|
12
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
13
|
-
|
|
14
10
|
const assignBeforeGroupDelete = params => {
|
|
15
11
|
const {
|
|
16
|
-
|
|
12
|
+
onGroupBeforeDelete,
|
|
17
13
|
plugins,
|
|
18
14
|
storageOperations
|
|
19
15
|
} = params;
|
|
20
|
-
|
|
16
|
+
onGroupBeforeDelete.subscribe(async params => {
|
|
21
17
|
const {
|
|
22
18
|
group
|
|
23
19
|
} = params;
|
|
24
20
|
const groupPlugin = plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type).find(item => item.contentModelGroup.slug === group.slug);
|
|
25
|
-
|
|
26
21
|
if (groupPlugin) {
|
|
27
22
|
throw new Error(`Cms Groups defined via plugins cannot be deleted.`);
|
|
28
23
|
}
|
|
29
|
-
|
|
30
24
|
const models = await storageOperations.models.list({
|
|
31
25
|
where: {
|
|
32
26
|
tenant: group.tenant,
|
|
@@ -36,7 +30,6 @@ const assignBeforeGroupDelete = params => {
|
|
|
36
30
|
const items = models.filter(model => {
|
|
37
31
|
return model.group.id === group.id;
|
|
38
32
|
});
|
|
39
|
-
|
|
40
33
|
if (items.length > 0) {
|
|
41
34
|
throw new _error.default("Cannot delete this group because there are models that belong to it.", "BEFORE_DELETE_ERROR", {
|
|
42
35
|
group
|
|
@@ -44,5 +37,4 @@ const assignBeforeGroupDelete = params => {
|
|
|
44
37
|
}
|
|
45
38
|
});
|
|
46
39
|
};
|
|
47
|
-
|
|
48
40
|
exports.assignBeforeGroupDelete = assignBeforeGroupDelete;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeGroupDelete","params","
|
|
1
|
+
{"version":3,"names":["assignBeforeGroupDelete","params","onGroupBeforeDelete","plugins","storageOperations","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","models","list","where","tenant","locale","items","filter","model","id","length","WebinyError"],"sources":["beforeDelete.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { OnGroupBeforeDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ninterface AssignBeforeGroupDeleteParams {\n onGroupBeforeDelete: Topic<OnGroupBeforeDeleteTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupDelete = (params: AssignBeforeGroupDeleteParams) => {\n const { onGroupBeforeDelete, plugins, storageOperations } = params;\n\n onGroupBeforeDelete.subscribe(async params => {\n const { group } = params;\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(`Cms Groups defined via plugins cannot be deleted.`);\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: group.tenant,\n locale: group.locale\n }\n });\n const items = models.filter(model => {\n return model.group.id === group.id;\n });\n if (items.length > 0) {\n throw new WebinyError(\n \"Cannot delete this group because there are models that belong to it.\",\n \"BEFORE_DELETE_ERROR\",\n {\n group\n }\n );\n }\n });\n};\n"],"mappings":";;;;;;;AAGA;AACA;AAOO,MAAMA,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC,OAAO;IAAEC;EAAkB,CAAC,GAAGH,MAAM;EAElEC,mBAAmB,CAACG,SAAS,CAAC,MAAMJ,MAAM,IAAI;IAC1C,MAAM;MAAEK;IAAM,CAAC,GAAGL,MAAM;IAExB,MAAMM,WAAW,GAAGJ,OAAO,CACtBK,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACC,IAAI,KAAKR,KAAK,CAACQ,IAAI,CAAC;IAE7D,IAAIP,WAAW,EAAE;MACb,MAAM,IAAIQ,KAAK,CAAE,mDAAkD,CAAC;IACxE;IAEA,MAAMC,MAAM,GAAG,MAAMZ,iBAAiB,CAACY,MAAM,CAACC,IAAI,CAAC;MAC/CC,KAAK,EAAE;QACHC,MAAM,EAAEb,KAAK,CAACa,MAAM;QACpBC,MAAM,EAAEd,KAAK,CAACc;MAClB;IACJ,CAAC,CAAC;IACF,MAAMC,KAAK,GAAGL,MAAM,CAACM,MAAM,CAACC,KAAK,IAAI;MACjC,OAAOA,KAAK,CAACjB,KAAK,CAACkB,EAAE,KAAKlB,KAAK,CAACkB,EAAE;IACtC,CAAC,CAAC;IACF,IAAIH,KAAK,CAACI,MAAM,GAAG,CAAC,EAAE;MAClB,MAAM,IAAIC,cAAW,CACjB,sEAAsE,EACtE,qBAAqB,EACrB;QACIpB;MACJ,CAAC,CACJ;IACL;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Topic } from "@webiny/pubsub/types";
|
|
2
|
-
import {
|
|
2
|
+
import { OnGroupBeforeUpdateTopicParams } from "../../types";
|
|
3
3
|
import { PluginsContainer } from "@webiny/plugins";
|
|
4
4
|
interface AssignBeforeGroupUpdateParams {
|
|
5
|
-
|
|
5
|
+
onGroupBeforeUpdate: Topic<OnGroupBeforeUpdateTopicParams>;
|
|
6
6
|
plugins: PluginsContainer;
|
|
7
7
|
}
|
|
8
8
|
export declare const assignBeforeGroupUpdate: (params: AssignBeforeGroupUpdateParams) => void;
|
|
@@ -4,25 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.assignBeforeGroupUpdate = void 0;
|
|
7
|
-
|
|
8
7
|
var _CmsGroupPlugin = require("../../plugins/CmsGroupPlugin");
|
|
9
|
-
|
|
10
8
|
const assignBeforeGroupUpdate = params => {
|
|
11
9
|
const {
|
|
12
|
-
|
|
10
|
+
onGroupBeforeUpdate,
|
|
13
11
|
plugins
|
|
14
12
|
} = params;
|
|
15
|
-
|
|
13
|
+
onGroupBeforeUpdate.subscribe(({
|
|
16
14
|
group
|
|
17
15
|
}) => {
|
|
18
16
|
const groupPlugin = plugins.byType(_CmsGroupPlugin.CmsGroupPlugin.type).find(item => item.contentModelGroup.slug === group.slug);
|
|
19
|
-
|
|
20
17
|
if (!groupPlugin) {
|
|
21
18
|
return;
|
|
22
19
|
}
|
|
23
|
-
|
|
24
20
|
throw new Error(`Cms Groups defined via plugins cannot be updated.`);
|
|
25
21
|
});
|
|
26
22
|
};
|
|
27
|
-
|
|
28
23
|
exports.assignBeforeGroupUpdate = assignBeforeGroupUpdate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeGroupUpdate","params","
|
|
1
|
+
{"version":3,"names":["assignBeforeGroupUpdate","params","onGroupBeforeUpdate","plugins","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error"],"sources":["beforeUpdate.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { OnGroupBeforeUpdateTopicParams } from \"~/types\";\nimport { CmsGroupPlugin } from \"~/plugins/CmsGroupPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface AssignBeforeGroupUpdateParams {\n onGroupBeforeUpdate: Topic<OnGroupBeforeUpdateTopicParams>;\n plugins: PluginsContainer;\n}\nexport const assignBeforeGroupUpdate = (params: AssignBeforeGroupUpdateParams) => {\n const { onGroupBeforeUpdate, plugins } = params;\n\n onGroupBeforeUpdate.subscribe(({ group }) => {\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n if (!groupPlugin) {\n return;\n }\n throw new Error(`Cms Groups defined via plugins cannot be updated.`);\n });\n};\n"],"mappings":";;;;;;AAEA;AAOO,MAAMA,uBAAuB,GAAIC,MAAqC,IAAK;EAC9E,MAAM;IAAEC,mBAAmB;IAAEC;EAAQ,CAAC,GAAGF,MAAM;EAE/CC,mBAAmB,CAACE,SAAS,CAAC,CAAC;IAAEC;EAAM,CAAC,KAAK;IACzC,MAAMC,WAAW,GAAGH,OAAO,CACtBI,MAAM,CAAiBC,8BAAc,CAACC,IAAI,CAAC,CAC3CC,IAAI,CAACC,IAAI,IAAIA,IAAI,CAACC,iBAAiB,CAACC,IAAI,KAAKR,KAAK,CAACQ,IAAI,CAAC;IAC7D,IAAI,CAACP,WAAW,EAAE;MACd;IACJ;IACA,MAAM,IAAIQ,KAAK,CAAE,mDAAkD,CAAC;EACxE,CAAC,CAAC;AACN,CAAC;AAAC"}
|