@webiny/api-headless-cms 5.29.0 → 5.30.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.
- package/context.d.ts +3 -0
- package/{content/contextSetup.js → context.js} +13 -8
- package/context.js.map +1 -0
- package/{content/plugins/crud → crud}/contentEntry/afterDelete.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry/afterDelete.js +0 -0
- package/{content/plugins/crud → crud}/contentEntry/afterDelete.js.map +0 -0
- package/{content/plugins/crud → crud}/contentEntry/beforeCreate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry/beforeCreate.js +0 -0
- package/{content/plugins/crud → crud}/contentEntry/beforeCreate.js.map +0 -0
- package/{content/plugins/crud → crud}/contentEntry/beforeUpdate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry/beforeUpdate.js +0 -0
- package/{content/plugins/crud → crud}/contentEntry/beforeUpdate.js.map +0 -0
- package/{content/plugins/crud → crud}/contentEntry/entryDataValidation.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry/entryDataValidation.js +7 -1
- package/crud/contentEntry/entryDataValidation.js.map +1 -0
- package/{content/plugins/crud → crud}/contentEntry/markLockedFields.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry/markLockedFields.js +1 -1
- package/crud/contentEntry/markLockedFields.js.map +1 -0
- package/{content/plugins/crud → crud}/contentEntry/referenceFieldsMapping.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry/referenceFieldsMapping.js +0 -0
- package/{content/plugins/crud → crud}/contentEntry/referenceFieldsMapping.js.map +0 -0
- package/{content/plugins/crud → crud}/contentEntry.crud.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentEntry.crud.js +68 -42
- package/crud/contentEntry.crud.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel/afterCreate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/afterCreate.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterCreate.js.map +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterCreateFrom.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/afterCreateFrom.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterCreateFrom.js.map +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterDelete.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/afterDelete.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterDelete.js.map +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterUpdate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/afterUpdate.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/afterUpdate.js.map +0 -0
- package/{content/plugins/crud → crud}/contentModel/beforeCreate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/beforeCreate.js +1 -1
- package/crud/contentModel/beforeCreate.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel/beforeDelete.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/beforeDelete.js +1 -1
- package/crud/contentModel/beforeDelete.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel/beforeUpdate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/beforeUpdate.js +0 -0
- package/crud/contentModel/beforeUpdate.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel/contentModelManagerFactory.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/contentModelManagerFactory.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/contentModelManagerFactory.js.map +0 -0
- package/crud/contentModel/createFieldModels.d.ts +2 -0
- package/{content/plugins/crud → crud}/contentModel/createFieldModels.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/createFieldModels.js.map +0 -0
- package/crud/contentModel/idValidation.d.ts +1 -0
- package/{content/plugins/crud → crud}/contentModel/idValidation.js +3 -3
- package/crud/contentModel/idValidation.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel/models.d.ts +0 -0
- package/{content/plugins/crud → crud}/contentModel/models.js +2 -2
- package/crud/contentModel/models.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel/validateLayout.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/validateLayout.js +0 -0
- package/{content/plugins/crud → crud}/contentModel/validateLayout.js.map +0 -0
- package/{content/plugins/crud → crud}/contentModel/validateModelFields.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel/validateModelFields.js +2 -2
- package/crud/contentModel/validateModelFields.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModel.crud.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModel.crud.js +14 -12
- package/crud/contentModel.crud.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModelGroup/beforeCreate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModelGroup/beforeCreate.js +5 -5
- package/crud/contentModelGroup/beforeCreate.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModelGroup/beforeDelete.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModelGroup/beforeDelete.js +1 -1
- package/crud/contentModelGroup/beforeDelete.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModelGroup/beforeUpdate.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModelGroup/beforeUpdate.js +1 -1
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -0
- package/{content/plugins/crud → crud}/contentModelGroup.crud.d.ts +1 -1
- package/{content/plugins/crud → crud}/contentModelGroup.crud.js +15 -13
- package/crud/contentModelGroup.crud.js.map +1 -0
- package/crud/index.d.ts +6 -0
- package/{content/plugins/crud → crud}/index.js +5 -17
- package/crud/index.js.map +1 -0
- package/{plugins/crud → crud}/settings.crud.d.ts +1 -1
- package/{plugins/crud → crud}/settings.crud.js +3 -7
- package/crud/settings.crud.js.map +1 -0
- package/{plugins/crud → crud}/system.crud.d.ts +1 -1
- package/{plugins/crud → crud}/system.crud.js +0 -0
- package/{plugins/crud → crud}/system.crud.js.map +0 -0
- package/{content/plugins → graphql}/buildSchemaPlugins.d.ts +2 -3
- package/graphql/buildSchemaPlugins.js +27 -0
- package/graphql/buildSchemaPlugins.js.map +1 -0
- package/graphql/graphQLHandlerFactory.d.ts +5 -0
- package/{content → graphql}/graphQLHandlerFactory.js +26 -18
- package/graphql/graphQLHandlerFactory.js.map +1 -0
- package/graphql/index.d.ts +5 -0
- package/graphql/index.js +57 -0
- package/graphql/index.js.map +1 -0
- package/graphql/schema/baseContentSchema.d.ts +3 -0
- package/{content/plugins/schema/baseSchema.js → graphql/schema/baseContentSchema.js} +3 -27
- package/graphql/schema/baseContentSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +3 -0
- package/{content/plugins → graphql}/schema/contentEntries.js +5 -58
- package/graphql/schema/contentEntries.js.map +1 -0
- package/graphql/schema/contentModelGroups.d.ts +3 -0
- package/{content/plugins → graphql}/schema/contentModelGroups.js +27 -11
- package/graphql/schema/contentModelGroups.js.map +1 -0
- package/graphql/schema/contentModels.d.ts +3 -0
- package/{content/plugins → graphql}/schema/contentModels.js +13 -7
- package/graphql/schema/contentModels.js.map +1 -0
- package/{content/plugins → graphql}/schema/createFieldResolvers.d.ts +1 -1
- package/{content/plugins → graphql}/schema/createFieldResolvers.js +1 -1
- package/graphql/schema/createFieldResolvers.js.map +1 -0
- package/{content/plugins → graphql}/schema/createManageResolvers.d.ts +1 -1
- package/{content/plugins → graphql}/schema/createManageResolvers.js +7 -3
- package/graphql/schema/createManageResolvers.js.map +1 -0
- package/{content/plugins → graphql}/schema/createManageSDL.d.ts +1 -1
- package/{content/plugins → graphql}/schema/createManageSDL.js +11 -7
- package/graphql/schema/createManageSDL.js.map +1 -0
- package/{content/plugins → graphql}/schema/createPreviewResolvers.d.ts +1 -1
- package/{content/plugins → graphql}/schema/createPreviewResolvers.js +2 -2
- package/graphql/schema/createPreviewResolvers.js.map +1 -0
- package/{content/plugins → graphql}/schema/createReadResolvers.d.ts +1 -1
- package/{content/plugins → graphql}/schema/createReadResolvers.js +2 -2
- package/graphql/schema/createReadResolvers.js.map +1 -0
- package/{content/plugins → graphql}/schema/createReadSDL.d.ts +1 -1
- package/{content/plugins → graphql}/schema/createReadSDL.js +6 -6
- package/graphql/schema/createReadSDL.js.map +1 -0
- package/graphql/schema/resolvers/commonFieldResolvers.d.ts +6 -0
- package/{content/plugins → graphql}/schema/resolvers/commonFieldResolvers.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/commonFieldResolvers.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreate.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreate.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreate.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreateFrom.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreateFrom.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveCreateFrom.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveDelete.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveDelete.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveDelete.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGet.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGet.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGet.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetByIds.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetByIds.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetByIds.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetRevisions.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetRevisions.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveGetRevisions.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveList.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveList.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveList.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolvePublish.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolvePublish.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolvePublish.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRepublish.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRepublish.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRepublish.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestChanges.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestChanges.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestChanges.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestReview.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestReview.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveRequestReview.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveUnpublish.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveUnpublish.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveUnpublish.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveUpdate.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveUpdate.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/manage/resolveUpdate.js.map +0 -0
- package/{content/plugins/schema/resolvers/read → graphql/schema/resolvers/preview}/resolveGet.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/preview/resolveGet.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/preview/resolveGet.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/preview/resolveList.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/preview/resolveList.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/preview/resolveList.js.map +0 -0
- package/{content/plugins/schema/resolvers/preview → graphql/schema/resolvers/read}/resolveGet.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/read/resolveGet.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/read/resolveGet.js.map +0 -0
- package/{content/plugins → graphql}/schema/resolvers/read/resolveList.d.ts +1 -1
- package/{content/plugins → graphql}/schema/resolvers/read/resolveList.js +0 -0
- package/{content/plugins → graphql}/schema/resolvers/read/resolveList.js.map +0 -0
- package/{content/plugins → graphql}/schema/schemaPlugins.d.ts +1 -1
- package/{content/plugins → graphql}/schema/schemaPlugins.js +18 -5
- package/graphql/schema/schemaPlugins.js.map +1 -0
- package/graphql/system.d.ts +6 -0
- package/graphql/system.js +119 -0
- package/graphql/system.js.map +1 -0
- package/graphqlFields/boolean.d.ts +2 -0
- package/graphqlFields/boolean.js +69 -0
- package/graphqlFields/boolean.js.map +1 -0
- package/graphqlFields/datetime.d.ts +2 -0
- package/{content/plugins/graphqlFields → graphqlFields}/datetime.js +42 -40
- package/graphqlFields/datetime.js.map +1 -0
- package/graphqlFields/file.d.ts +2 -0
- package/graphqlFields/file.js +50 -0
- package/graphqlFields/file.js.map +1 -0
- package/{content/plugins/graphqlFields → graphqlFields}/helpers.d.ts +1 -1
- package/{content/plugins/graphqlFields → graphqlFields}/helpers.js +0 -0
- package/{content/plugins/graphqlFields → graphqlFields}/helpers.js.map +0 -0
- package/graphqlFields/index.d.ts +2 -0
- package/graphqlFields/index.js +28 -0
- package/graphqlFields/index.js.map +1 -0
- package/graphqlFields/longText.d.ts +2 -0
- package/graphqlFields/longText.js +63 -0
- package/graphqlFields/longText.js.map +1 -0
- package/graphqlFields/number.d.ts +2 -0
- package/graphqlFields/number.js +75 -0
- package/graphqlFields/number.js.map +1 -0
- package/graphqlFields/object.d.ts +2 -0
- package/graphqlFields/object.js +225 -0
- package/graphqlFields/object.js.map +1 -0
- package/graphqlFields/ref.d.ts +2 -0
- package/graphqlFields/ref.js +279 -0
- package/graphqlFields/ref.js.map +1 -0
- package/graphqlFields/richText.d.ts +2 -0
- package/graphqlFields/richText.js +56 -0
- package/graphqlFields/richText.js.map +1 -0
- package/graphqlFields/text.d.ts +2 -0
- package/graphqlFields/text.js +73 -0
- package/graphqlFields/text.js.map +1 -0
- package/index.d.ts +10 -17
- package/index.js +73 -56
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.d.ts +14 -0
- package/{content/plugins/modelManager → modelManager}/DefaultCmsModelManager.js +0 -0
- package/{content/plugins/modelManager → modelManager}/DefaultCmsModelManager.js.map +0 -0
- package/modelManager/index.d.ts +2 -0
- package/{content/plugins/modelManager → modelManager}/index.js +3 -3
- package/modelManager/index.js.map +1 -0
- package/package.json +26 -27
- package/parameters/context.d.ts +2 -0
- package/parameters/context.js +22 -0
- package/parameters/context.js.map +1 -0
- package/parameters/header.d.ts +2 -0
- package/parameters/header.js +55 -0
- package/parameters/header.js.map +1 -0
- package/parameters/index.d.ts +4 -0
- package/parameters/index.js +57 -0
- package/parameters/index.js.map +1 -0
- package/parameters/manual.d.ts +6 -0
- package/{plugins/context.js → parameters/manual.js} +27 -27
- package/parameters/manual.js.map +1 -0
- package/parameters/path.d.ts +2 -0
- package/parameters/path.js +54 -0
- package/parameters/path.js.map +1 -0
- package/{content/plugins → plugins}/CmsGroupPlugin.d.ts +1 -1
- package/{content/plugins → plugins}/CmsGroupPlugin.js +0 -0
- package/{content/plugins → plugins}/CmsGroupPlugin.js.map +0 -0
- package/{content/plugins → plugins}/CmsModelPlugin.d.ts +1 -1
- package/{content/plugins → plugins}/CmsModelPlugin.js +0 -0
- package/{content/plugins → plugins}/CmsModelPlugin.js.map +0 -0
- package/{content/plugins → plugins}/CmsParametersPlugin.d.ts +8 -3
- package/{content/plugins → plugins}/CmsParametersPlugin.js +0 -0
- package/plugins/CmsParametersPlugin.js.map +1 -0
- package/{content/plugins/storage → plugins}/StorageTransformPlugin.d.ts +2 -1
- package/{content/plugins/storage → plugins}/StorageTransformPlugin.js +1 -0
- package/plugins/StorageTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +4 -0
- package/plugins/index.js +57 -0
- package/plugins/index.js.map +1 -0
- package/storage/default.d.ts +2 -0
- package/storage/default.js +27 -0
- package/storage/default.js.map +1 -0
- package/storage/object.d.ts +2 -0
- package/{content/plugins/storage → storage}/object.js +63 -64
- package/storage/object.js.map +1 -0
- package/types.d.ts +28 -3
- package/types.js.map +1 -1
- package/upgrades/index.d.ts +1 -0
- package/upgrades/index.js +10 -0
- package/upgrades/index.js.map +1 -0
- package/utils/access.d.ts +8 -0
- package/utils/access.js +90 -0
- package/utils/access.js.map +1 -0
- package/{content/plugins/utils → utils}/createTypeName.d.ts +0 -0
- package/{content/plugins/utils → utils}/createTypeName.js +0 -0
- package/{content/plugins/utils → utils}/createTypeName.js.map +0 -0
- package/{content/plugins/utils → utils}/entryStorage.d.ts +1 -1
- package/{content/plugins/utils → utils}/entryStorage.js +1 -1
- package/utils/entryStorage.js.map +1 -0
- package/utils/filterAsync.d.ts +1 -0
- package/utils/filterAsync.js +23 -0
- package/utils/filterAsync.js.map +1 -0
- package/{content/plugins/utils → utils}/getEntryTitle.d.ts +1 -1
- package/{content/plugins/utils → utils}/getEntryTitle.js +0 -0
- package/{content/plugins/utils → utils}/getEntryTitle.js.map +0 -0
- package/{content/plugins/utils → utils}/getSchemaFromFieldPlugins.d.ts +1 -1
- package/{content/plugins/utils → utils}/getSchemaFromFieldPlugins.js +0 -0
- package/{content/plugins/utils → utils}/getSchemaFromFieldPlugins.js.map +0 -0
- package/utils/ownership.d.ts +8 -0
- package/utils/ownership.js +39 -0
- package/utils/ownership.js.map +1 -0
- package/utils/permissions.d.ts +7 -0
- package/utils/permissions.js +110 -0
- package/utils/permissions.js.map +1 -0
- package/{content/plugins/utils → utils}/pluralizedTypeName.d.ts +0 -0
- package/{content/plugins/utils → utils}/pluralizedTypeName.js +0 -0
- package/{content/plugins/utils → utils}/pluralizedTypeName.js.map +0 -0
- package/{content/plugins/utils → utils}/renderFields.d.ts +1 -1
- package/{content/plugins/utils → utils}/renderFields.js +0 -0
- package/{content/plugins/utils → utils}/renderFields.js.map +0 -0
- package/{content/plugins/utils → utils}/renderGetFilterFields.d.ts +1 -1
- package/{content/plugins/utils → utils}/renderGetFilterFields.js +0 -0
- package/{content/plugins/utils → utils}/renderGetFilterFields.js.map +0 -0
- package/{content/plugins/utils → utils}/renderInputFields.d.ts +1 -1
- package/{content/plugins/utils → utils}/renderInputFields.js +0 -0
- package/{content/plugins/utils → utils}/renderInputFields.js.map +0 -0
- package/{content/plugins/utils → utils}/renderListFilterFields.d.ts +1 -1
- package/{content/plugins/utils → utils}/renderListFilterFields.js +0 -0
- package/{content/plugins/utils → utils}/renderListFilterFields.js.map +0 -0
- package/{content/plugins/utils → utils}/renderSortEnum.d.ts +1 -1
- package/{content/plugins/utils → utils}/renderSortEnum.js +0 -0
- package/{content/plugins/utils → utils}/renderSortEnum.js.map +0 -0
- package/utils/toSlug.d.ts +1 -0
- package/utils/toSlug.js +20 -0
- package/utils/toSlug.js.map +1 -0
- package/validators/dateGte.d.ts +2 -0
- package/{content/plugins/validators → validators}/dateGte.js +3 -3
- package/validators/dateGte.js.map +1 -0
- package/validators/dateLte.d.ts +2 -0
- package/{content/plugins/validators → validators}/dateLte.js +3 -3
- package/validators/dateLte.js.map +1 -0
- package/validators/gte.d.ts +2 -0
- package/validators/gte.js +36 -0
- package/validators/gte.js.map +1 -0
- package/validators/in.d.ts +2 -0
- package/validators/in.js +36 -0
- package/validators/in.js.map +1 -0
- package/validators/index.d.ts +1 -0
- package/validators/index.js +36 -0
- package/validators/index.js.map +1 -0
- package/validators/lte.d.ts +2 -0
- package/validators/lte.js +36 -0
- package/validators/lte.js.map +1 -0
- package/validators/maxLength.d.ts +2 -0
- package/validators/maxLength.js +36 -0
- package/validators/maxLength.js.map +1 -0
- package/validators/minLength.d.ts +2 -0
- package/validators/minLength.js +36 -0
- package/validators/minLength.js.map +1 -0
- package/validators/pattern.d.ts +2 -0
- package/validators/pattern.js +50 -0
- package/validators/pattern.js.map +1 -0
- package/validators/patternPlugins/email.d.ts +2 -0
- package/validators/patternPlugins/email.js +20 -0
- package/validators/patternPlugins/email.js.map +1 -0
- package/validators/patternPlugins/index.d.ts +2 -0
- package/validators/patternPlugins/index.js +24 -0
- package/validators/patternPlugins/index.js.map +1 -0
- package/validators/patternPlugins/lowerCase.d.ts +2 -0
- package/validators/patternPlugins/lowerCase.js +20 -0
- package/validators/patternPlugins/lowerCase.js.map +1 -0
- package/validators/patternPlugins/lowerCaseSpace.d.ts +2 -0
- package/validators/patternPlugins/lowerCaseSpace.js +20 -0
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -0
- package/validators/patternPlugins/upperCase.d.ts +2 -0
- package/validators/patternPlugins/upperCase.js +20 -0
- package/validators/patternPlugins/upperCase.js.map +1 -0
- package/validators/patternPlugins/upperCaseSpace.d.ts +2 -0
- package/validators/patternPlugins/upperCaseSpace.js +20 -0
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -0
- package/validators/patternPlugins/url.d.ts +2 -0
- package/validators/patternPlugins/url.js +20 -0
- package/validators/patternPlugins/url.js.map +1 -0
- package/validators/required.d.ts +2 -0
- package/validators/required.js +27 -0
- package/validators/required.js.map +1 -0
- package/validators/timeGte.d.ts +2 -0
- package/{content/plugins/validators → validators}/timeGte.js +3 -3
- package/validators/timeGte.js.map +1 -0
- package/validators/timeLte.d.ts +2 -0
- package/{content/plugins/validators → validators}/timeLte.js +3 -3
- package/validators/timeLte.js.map +1 -0
- package/{content/plugins/validators → validators}/unique.d.ts +2 -3
- package/{content/plugins/validators → validators}/unique.js +3 -3
- package/validators/unique.js.map +1 -0
- package/content/contextSetup.d.ts +0 -4
- package/content/contextSetup.js.map +0 -1
- package/content/graphQLHandlerFactory.d.ts +0 -5
- package/content/graphQLHandlerFactory.js.map +0 -1
- package/content/parameterPlugins.d.ts +0 -6
- package/content/parameterPlugins.js +0 -78
- package/content/parameterPlugins.js.map +0 -1
- package/content/plugins/CmsParametersPlugin.js.map +0 -1
- package/content/plugins/buildSchemaPlugins.js +0 -29
- package/content/plugins/buildSchemaPlugins.js.map +0 -1
- package/content/plugins/crud/contentEntry/entryDataValidation.js.map +0 -1
- package/content/plugins/crud/contentEntry/markLockedFields.js.map +0 -1
- package/content/plugins/crud/contentEntry.crud.js.map +0 -1
- package/content/plugins/crud/contentModel/beforeCreate.js.map +0 -1
- package/content/plugins/crud/contentModel/beforeDelete.js.map +0 -1
- package/content/plugins/crud/contentModel/beforeUpdate.js.map +0 -1
- package/content/plugins/crud/contentModel/createFieldModels.d.ts +0 -2
- package/content/plugins/crud/contentModel/idValidation.d.ts +0 -2
- package/content/plugins/crud/contentModel/idValidation.js.map +0 -1
- package/content/plugins/crud/contentModel/models.js.map +0 -1
- package/content/plugins/crud/contentModel/validateModelFields.js.map +0 -1
- package/content/plugins/crud/contentModel.crud.js.map +0 -1
- package/content/plugins/crud/contentModelGroup/beforeCreate.js.map +0 -1
- package/content/plugins/crud/contentModelGroup/beforeDelete.js.map +0 -1
- package/content/plugins/crud/contentModelGroup/beforeUpdate.js.map +0 -1
- package/content/plugins/crud/contentModelGroup.crud.js.map +0 -1
- package/content/plugins/crud/index.d.ts +0 -6
- package/content/plugins/crud/index.js.map +0 -1
- package/content/plugins/graphqlFields/boolean.d.ts +0 -3
- package/content/plugins/graphqlFields/boolean.js +0 -67
- package/content/plugins/graphqlFields/boolean.js.map +0 -1
- package/content/plugins/graphqlFields/datetime.d.ts +0 -3
- package/content/plugins/graphqlFields/datetime.js.map +0 -1
- package/content/plugins/graphqlFields/file.d.ts +0 -3
- package/content/plugins/graphqlFields/file.js +0 -48
- package/content/plugins/graphqlFields/file.js.map +0 -1
- package/content/plugins/graphqlFields/index.d.ts +0 -2
- package/content/plugins/graphqlFields/index.js +0 -30
- package/content/plugins/graphqlFields/index.js.map +0 -1
- package/content/plugins/graphqlFields/longText.d.ts +0 -3
- package/content/plugins/graphqlFields/longText.js +0 -61
- package/content/plugins/graphqlFields/longText.js.map +0 -1
- package/content/plugins/graphqlFields/number.d.ts +0 -3
- package/content/plugins/graphqlFields/number.js +0 -73
- package/content/plugins/graphqlFields/number.js.map +0 -1
- package/content/plugins/graphqlFields/object.d.ts +0 -3
- package/content/plugins/graphqlFields/object.js +0 -223
- package/content/plugins/graphqlFields/object.js.map +0 -1
- package/content/plugins/graphqlFields/ref.d.ts +0 -3
- package/content/plugins/graphqlFields/ref.js +0 -276
- package/content/plugins/graphqlFields/ref.js.map +0 -1
- package/content/plugins/graphqlFields/richText.d.ts +0 -3
- package/content/plugins/graphqlFields/richText.js +0 -54
- package/content/plugins/graphqlFields/richText.js.map +0 -1
- package/content/plugins/graphqlFields/text.d.ts +0 -3
- package/content/plugins/graphqlFields/text.js +0 -71
- package/content/plugins/graphqlFields/text.js.map +0 -1
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.d.ts +0 -8
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js +0 -55
- package/content/plugins/internalSecurity/InternalAuthenticationPlugin.js.map +0 -1
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.d.ts +0 -7
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js +0 -36
- package/content/plugins/internalSecurity/InternalAuthorizationPlugin.js.map +0 -1
- package/content/plugins/modelManager/DefaultCmsModelManager.d.ts +0 -14
- package/content/plugins/modelManager/index.d.ts +0 -3
- package/content/plugins/modelManager/index.js.map +0 -1
- package/content/plugins/schema/baseSchema.d.ts +0 -4
- package/content/plugins/schema/baseSchema.js.map +0 -1
- package/content/plugins/schema/contentEntries.d.ts +0 -4
- package/content/plugins/schema/contentEntries.js.map +0 -1
- package/content/plugins/schema/contentModelGroups.d.ts +0 -4
- package/content/plugins/schema/contentModelGroups.js.map +0 -1
- package/content/plugins/schema/contentModels.d.ts +0 -4
- package/content/plugins/schema/contentModels.js.map +0 -1
- package/content/plugins/schema/createFieldResolvers.js.map +0 -1
- package/content/plugins/schema/createManageResolvers.js.map +0 -1
- package/content/plugins/schema/createManageSDL.js.map +0 -1
- package/content/plugins/schema/createPreviewResolvers.js.map +0 -1
- package/content/plugins/schema/createReadResolvers.js.map +0 -1
- package/content/plugins/schema/createReadSDL.js.map +0 -1
- package/content/plugins/schema/resolvers/commonFieldResolvers.d.ts +0 -6
- package/content/plugins/schema/schemaPlugins.js.map +0 -1
- package/content/plugins/storage/StorageTransformPlugin.js.map +0 -1
- package/content/plugins/storage/default.d.ts +0 -3
- package/content/plugins/storage/default.js +0 -28
- package/content/plugins/storage/default.js.map +0 -1
- package/content/plugins/storage/object.d.ts +0 -3
- package/content/plugins/storage/object.js.map +0 -1
- package/content/plugins/utils/entryStorage.js.map +0 -1
- package/content/plugins/validators/dateGte.d.ts +0 -3
- package/content/plugins/validators/dateGte.js.map +0 -1
- package/content/plugins/validators/dateLte.d.ts +0 -3
- package/content/plugins/validators/dateLte.js.map +0 -1
- package/content/plugins/validators/gte.d.ts +0 -3
- package/content/plugins/validators/gte.js +0 -34
- package/content/plugins/validators/gte.js.map +0 -1
- package/content/plugins/validators/in.d.ts +0 -3
- package/content/plugins/validators/in.js +0 -34
- package/content/plugins/validators/in.js.map +0 -1
- package/content/plugins/validators/index.d.ts +0 -2
- package/content/plugins/validators/index.js +0 -38
- package/content/plugins/validators/index.js.map +0 -1
- package/content/plugins/validators/lte.d.ts +0 -3
- package/content/plugins/validators/lte.js +0 -34
- package/content/plugins/validators/lte.js.map +0 -1
- package/content/plugins/validators/maxLength.d.ts +0 -3
- package/content/plugins/validators/maxLength.js +0 -34
- package/content/plugins/validators/maxLength.js.map +0 -1
- package/content/plugins/validators/minLength.d.ts +0 -3
- package/content/plugins/validators/minLength.js +0 -34
- package/content/plugins/validators/minLength.js.map +0 -1
- package/content/plugins/validators/pattern.d.ts +0 -3
- package/content/plugins/validators/pattern.js +0 -47
- package/content/plugins/validators/pattern.js.map +0 -1
- package/content/plugins/validators/patternPlugins/email.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/email.js +0 -17
- package/content/plugins/validators/patternPlugins/email.js.map +0 -1
- package/content/plugins/validators/patternPlugins/index.d.ts +0 -2
- package/content/plugins/validators/patternPlugins/index.js +0 -23
- package/content/plugins/validators/patternPlugins/index.js.map +0 -1
- package/content/plugins/validators/patternPlugins/lowerCase.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/lowerCase.js +0 -17
- package/content/plugins/validators/patternPlugins/lowerCase.js.map +0 -1
- package/content/plugins/validators/patternPlugins/lowerCaseSpace.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/lowerCaseSpace.js +0 -17
- package/content/plugins/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
- package/content/plugins/validators/patternPlugins/upperCase.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/upperCase.js +0 -17
- package/content/plugins/validators/patternPlugins/upperCase.js.map +0 -1
- package/content/plugins/validators/patternPlugins/upperCaseSpace.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/upperCaseSpace.js +0 -17
- package/content/plugins/validators/patternPlugins/upperCaseSpace.js.map +0 -1
- package/content/plugins/validators/patternPlugins/url.d.ts +0 -3
- package/content/plugins/validators/patternPlugins/url.js +0 -17
- package/content/plugins/validators/patternPlugins/url.js.map +0 -1
- package/content/plugins/validators/required.d.ts +0 -3
- package/content/plugins/validators/required.js +0 -25
- package/content/plugins/validators/required.js.map +0 -1
- package/content/plugins/validators/timeGte.d.ts +0 -3
- package/content/plugins/validators/timeGte.js.map +0 -1
- package/content/plugins/validators/timeLte.d.ts +0 -3
- package/content/plugins/validators/timeLte.js.map +0 -1
- package/content/plugins/validators/unique.js.map +0 -1
- package/migrateCMSPermissions.d.ts +0 -17
- package/migrateCMSPermissions.js +0 -199
- package/migrateCMSPermissions.js.map +0 -1
- package/plugins/context.d.ts +0 -4
- package/plugins/context.js.map +0 -1
- package/plugins/crud/index.d.ts +0 -6
- package/plugins/crud/index.js +0 -108
- package/plugins/crud/index.js.map +0 -1
- package/plugins/crud/settings.crud.js.map +0 -1
- package/plugins/graphql/system.d.ts +0 -18
- package/plugins/graphql/system.js +0 -74
- package/plugins/graphql/system.js.map +0 -1
- package/plugins/graphql.d.ts +0 -2
- package/plugins/graphql.js +0 -86
- package/plugins/graphql.js.map +0 -1
- package/plugins/upgrades/index.d.ts +0 -2
- package/plugins/upgrades/index.js +0 -14
- package/plugins/upgrades/index.js.map +0 -1
- package/plugins/upgrades/v5.5.0/helpers.d.ts +0 -6
- package/plugins/upgrades/v5.5.0/helpers.js +0 -10
- package/plugins/upgrades/v5.5.0/helpers.js.map +0 -1
- package/plugins/upgrades/v5.5.0/index.d.ts +0 -4
- package/plugins/upgrades/v5.5.0/index.js +0 -134
- package/plugins/upgrades/v5.5.0/index.js.map +0 -1
- package/transformers.d.ts +0 -2
- package/transformers.js +0 -25
- package/transformers.js.map +0 -1
- package/utils.d.ts +0 -23
- package/utils.js +0 -251
- package/utils.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["validateValue","args","fieldValidators","value","validatorList","context","field","model","entry","fieldValidator","name","validations","length","validate","result","validator","message","ex","validatePredefinedValue","enabled","values","predefinedValues","Array","isArray","predefinedValue","runFieldMultipleValuesValidations","data","fieldId","valuesError","listValidation","valueError","validation","predefinedValueError","runFieldValueValidations","error","execValidation","multipleValues","validateModelEntryData","params","plugins","byType","reduce","acc","plugin","push","invalidFields","fields","WebinyError"],"sources":["entryDataValidation.ts"],"sourcesContent":["import {\n CmsModel,\n CmsModelField,\n CmsModelFieldValidation,\n CmsContext,\n CmsModelFieldValidatorPlugin,\n CmsModelFieldValidatorValidateParams,\n CmsEntry\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\n\ntype PluginValidationCallable = (params: CmsModelFieldValidatorValidateParams) => Promise<boolean>;\ntype PluginValidationList = Record<string, PluginValidationCallable[]>;\ntype InputData = Record<string, any>;\n\ninterface ValidateArgs {\n validatorList: PluginValidationList;\n field: CmsModelField;\n model: CmsModel;\n data: InputData;\n context: CmsContext;\n entry?: CmsEntry;\n}\n\nconst validateValue = async (\n args: ValidateArgs,\n fieldValidators: CmsModelFieldValidation[],\n value: any\n): Promise<string | null> => {\n if (!fieldValidators) {\n return null;\n }\n\n const { validatorList, context, field, model, entry } = args;\n try {\n for (const fieldValidator of fieldValidators) {\n const name = fieldValidator.name;\n const validations = validatorList[name];\n if (!validations || validations.length === 0) {\n return `There are no \"${name}\" validators defined.`;\n }\n for (const validate of validations) {\n const result = await validate({\n value,\n context,\n validator: fieldValidator,\n field,\n model,\n entry\n });\n if (!result) {\n return fieldValidator.message;\n }\n }\n }\n } catch (ex) {\n return ex.message;\n }\n\n return null;\n};\n\nconst validatePredefinedValue = (field: CmsModelField, value: any | any[]): string | null => {\n const { enabled = false, values: predefinedValues = [] } = field.predefinedValues || {};\n if (!enabled) {\n return null;\n } else if (Array.isArray(predefinedValues) === false || predefinedValues.length === 0) {\n return \"Missing predefined values to validate against.\";\n }\n for (const predefinedValue of predefinedValues) {\n if (predefinedValue.value == value) {\n return null;\n }\n }\n return \"Value sent does not match any of the available predefined values.\";\n};\n/**\n * When multiple values is selected we must run validations on the array containing the values\n * And then on each value in the array\n */\nconst runFieldMultipleValuesValidations = async (args: ValidateArgs): Promise<string | null> => {\n const { field, data } = args;\n const values = data[field.fieldId] || [];\n if (Array.isArray(values) === false) {\n return `Value of the field \"${field.fieldId}\" is not an array.`;\n }\n const valuesError = await validateValue(args, field.listValidation || [], values);\n if (valuesError) {\n return valuesError;\n }\n for (const value of values) {\n const valueError = await validateValue(args, field.validation || [], value);\n if (valueError) {\n return valueError;\n }\n const predefinedValueError = validatePredefinedValue(field, value);\n if (predefinedValueError) {\n return predefinedValueError;\n }\n }\n return null;\n};\n/**\n * Runs validation on given value.\n */\nconst runFieldValueValidations = async (args: ValidateArgs): Promise<string | null> => {\n const { data, field } = args;\n const value = data[field.fieldId];\n const error = await validateValue(args, field.validation || [], value);\n if (error) {\n return error;\n }\n return validatePredefinedValue(field, value);\n};\n\nconst execValidation = async (args: ValidateArgs): Promise<string | null> => {\n if (args.field.multipleValues) {\n return await runFieldMultipleValuesValidations(args);\n }\n return await runFieldValueValidations(args);\n};\n\nexport interface ValidateModelEntryDataParams {\n context: CmsContext;\n model: CmsModel;\n data: InputData;\n entry?: CmsEntry;\n}\nexport const validateModelEntryData = async (params: ValidateModelEntryDataParams) => {\n const { context, model, entry, data } = params;\n /**\n * To later simplify searching for the validations we map them to a name.\n * @see CmsModelFieldValidatorPlugin.validator.validate\n */\n const validatorList: PluginValidationList = context.plugins\n .byType<CmsModelFieldValidatorPlugin>(\"cms-model-field-validator\")\n .reduce((acc, plugin) => {\n const name = plugin.validator.name;\n if (!acc[name]) {\n acc[name] = [];\n }\n acc[name].push(plugin.validator.validate);\n\n return acc;\n }, {} as PluginValidationList);\n\n /**\n * Loop through model fields and validate the corresponding data.\n * Run validation only if the field has validation configured.\n */\n const invalidFields = [];\n for (const field of model.fields) {\n const error = await execValidation({\n model,\n validatorList,\n field,\n data,\n context,\n entry\n });\n if (!error) {\n continue;\n }\n invalidFields.push({\n fieldId: field.fieldId,\n error\n });\n }\n\n if (invalidFields.length > 0) {\n throw new WebinyError(\"Validation failed.\", \"VALIDATION_FAILED\", invalidFields);\n }\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["markLockedFields","params","model","context","plugins","byType","CmsModelPlugin","type","find","plugin","contentModel","modelId","cmsLockedFieldPlugins","existingLockedFields","lockedFields","field","fields","alreadyLocked","some","lockedField","fieldId","lockedFieldData","lockedFieldPlugins","filter","pl","fieldType","getLockedFieldData","data","push","multipleValues","length","newLockedFields","concat","cms","updateModelDirect","original","ex","WebinyError","markUnlockedFields"],"sources":["markLockedFields.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, CmsContext, CmsModelLockedFieldPlugin, LockedField } from \"~/types\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\n\ninterface MarkLockedFieldsParams {\n model: CmsModel;\n entry: CmsEntry;\n context: CmsContext;\n}\nexport const markLockedFields = async (params: MarkLockedFieldsParams): Promise<void> => {\n const { model, context } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n const cmsLockedFieldPlugins =\n context.plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n const existingLockedFields = model.lockedFields || [];\n const lockedFields: LockedField[] = [];\n for (const field of model.fields) {\n const alreadyLocked = existingLockedFields.some(\n lockedField => lockedField.fieldId === field.fieldId\n );\n if (alreadyLocked) {\n continue;\n }\n\n let lockedFieldData = {};\n\n const lockedFieldPlugins = cmsLockedFieldPlugins.filter(pl => pl.fieldType === field.type);\n for (const plugin of lockedFieldPlugins) {\n if (typeof plugin.getLockedFieldData !== \"function\") {\n continue;\n }\n const data = plugin.getLockedFieldData({\n field\n });\n lockedFieldData = { ...lockedFieldData, ...data };\n }\n\n lockedFields.push({\n fieldId: field.fieldId,\n multipleValues: !!field.multipleValues,\n type: field.type,\n ...lockedFieldData\n });\n }\n // no need to update anything if no locked fields were added\n if (lockedFields.length === 0) {\n return;\n }\n\n const newLockedFields = existingLockedFields.concat(lockedFields);\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: newLockedFields\n }\n });\n model.lockedFields = newLockedFields;\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with new locked fields.`,\n \"MODEL_LOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n\nexport interface MarkFieldsUnlockedParams {\n context: CmsContext;\n model: CmsModel;\n}\nexport const markUnlockedFields = async (params: MarkFieldsUnlockedParams) => {\n const { context, model } = params;\n /**\n * If the model is registered via a plugin, we don't need do process anything.\n */\n const plugins = context.plugins.byType<CmsModelPlugin>(CmsModelPlugin.type);\n if (plugins.find(plugin => plugin.contentModel.modelId === model.modelId)) {\n return;\n }\n\n try {\n await context.cms.updateModelDirect({\n original: model,\n model: {\n ...model,\n lockedFields: []\n }\n });\n model.lockedFields = [];\n } catch (ex) {\n throw new WebinyError(\n `Could not update model \"${model.modelId}\" with unlocked fields.`,\n \"MODEL_UNLOCKED_FIELDS_UPDATE_FAILED\",\n ex\n );\n }\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["STATUS_DRAFT","STATUS_PUBLISHED","STATUS_UNPUBLISHED","STATUS_CHANGES_REQUESTED","STATUS_REVIEW_REQUESTED","convertDefaultValue","field","value","type","Boolean","Number","getDefaultValue","settings","multipleValues","defaultValue","undefined","predefinedValues","enabled","Array","isArray","values","selectedValue","find","selected","filter","map","cleanInputData","model","input","fields","reduce","acc","fieldId","cleanUpdatedInputData","createEntryId","version","entryId","mdbid","id","createIdentifier","increaseEntryIdVersion","parseIdentifier","WebinyError","getSearchableFields","params","plugins","fieldPluginMap","byType","collection","fieldType","plugin","fullTextSearch","length","includes","createContentEntryCrud","storageOperations","context","getIdentity","getTenant","onBeforeEntryCreate","createTopic","onAfterEntryCreate","onBeforeEntryCreateRevision","onAfterEntryCreateRevision","onBeforeEntryUpdate","onAfterEntryUpdate","onBeforeEntryPublish","onAfterEntryPublish","onBeforeEntryUnpublish","onAfterEntryUnpublish","onBeforeEntryRequestChanges","onAfterEntryRequestChanges","onBeforeEntryRequestReview","onAfterEntryRequestReview","onBeforeEntryDelete","onAfterEntryDelete","onBeforeEntryDeleteRevision","onAfterEntryDeleteRevision","onBeforeEntryGet","onBeforeEntryList","assignBeforeEntryCreate","assignBeforeEntryUpdate","assignAfterEntryDelete","checkEntryPermissions","check","utils","checkPermissions","deleteEntry","entry","publish","entries","delete","ex","message","code","getEntriesByIds","ids","permission","rwd","checkModelAccess","getByIds","validateOwnership","getEntryById","where","NotFoundError","getPublishedEntriesByIds","getPublishedByIds","getLatestEntriesByIds","getLatestByIds","getEntryRevisions","getRevisions","getEntry","sort","items","cms","listEntries","limit","initialWhere","ownedBy","own","latest","published","hasMoreItems","totalCount","cursor","list","meta","listLatestEntries","listPublishedEntries","createEntry","inputData","initialInput","validateModelEntryData","data","referenceFieldsMapping","validateEntries","identity","security","locale","getLocale","owner","displayName","webinyVersion","WEBINY_VERSION","tenant","modelId","createdOn","Date","toISOString","savedOn","createdBy","locked","status","storageEntry","entryToStorageTransform","result","create","error","createEntryRevisionFrom","sourceId","uniqueId","originalStorageEntry","getRevisionById","latestStorageEntry","getLatestRevisionByEntryId","originalEntry","entryFromStorageTransform","initialValues","checkOwnership","latestId","nextVersion","publishedOn","original","createRevisionFrom","updateEntry","update","republishEntry","deleteEntryRevision","revisionId","storageEntryToDelete","previousStorageEntry","getPreviousRevision","latestEntryRevisionId","entryToDelete","entryToSetAsLatest","storageEntryToSetAsLatest","deleteRevision","latestEntry","publishEntry","pw","currentDate","requestEntryChanges","requestChanges","requestEntryReview","latestEntryRevision","allowedStatuses","requestReview","unpublishEntry","getPublishedRevisionByEntryId","unpublish"],"sources":["contentEntry.crud.ts"],"sourcesContent":["/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport {\n CmsEntryContext,\n CmsEntryPermission,\n CmsEntry,\n CmsModel,\n CmsContext,\n CmsStorageEntry,\n HeadlessCmsStorageOperations,\n BeforeEntryCreateTopicParams,\n AfterEntryCreateTopicParams,\n BeforeEntryUpdateTopicParams,\n AfterEntryUpdateTopicParams,\n AfterEntryDeleteTopicParams,\n BeforeEntryDeleteTopicParams,\n BeforeEntryCreateRevisionTopicParams,\n AfterEntryCreateRevisionTopicParams,\n BeforeEntryPublishTopicParams,\n AfterEntryPublishTopicParams,\n BeforeEntryUnpublishTopicParams,\n AfterEntryUnpublishTopicParams,\n BeforeEntryRequestChangesTopicParams,\n AfterEntryRequestChangesTopicParams,\n BeforeEntryRequestReviewTopicParams,\n AfterEntryRequestReviewTopicParams,\n BeforeEntryDeleteRevisionTopicParams,\n AfterEntryDeleteRevisionTopicParams,\n BeforeEntryGetTopicParams,\n BeforeEntryListTopicParams,\n CmsEntryListWhere,\n UpdateCmsEntryInput,\n CreateCmsEntryInput,\n CmsModelField,\n CreatedBy,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport * as utils from \"~/utils\";\nimport { validateModelEntryData } from \"./contentEntry/entryDataValidation\";\nimport WebinyError from \"@webiny/error\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeEntryCreate } from \"./contentEntry/beforeCreate\";\nimport { assignBeforeEntryUpdate } from \"./contentEntry/beforeUpdate\";\nimport { createIdentifier, parseIdentifier } from \"@webiny/utils\";\nimport {\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"~/content/plugins/utils/entryStorage\";\nimport { assignAfterEntryDelete } from \"~/content/plugins/crud/contentEntry/afterDelete\";\nimport { referenceFieldsMapping } from \"./contentEntry/referenceFieldsMapping\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\n\nexport const STATUS_DRAFT = \"draft\";\nexport const STATUS_PUBLISHED = \"published\";\nexport const STATUS_UNPUBLISHED = \"unpublished\";\nexport const STATUS_CHANGES_REQUESTED = \"changesRequested\";\nexport const STATUS_REVIEW_REQUESTED = \"reviewRequested\";\n\n/**\n * Used for some fields to convert their values.\n */\nconst convertDefaultValue = (field: CmsModelField, value: any): string | number | boolean => {\n switch (field.type) {\n case \"boolean\":\n return Boolean(value);\n case \"number\":\n return Number(value);\n default:\n return value;\n }\n};\nconst getDefaultValue = (field: CmsModelField): any => {\n const { settings, multipleValues } = field;\n if (settings && settings.defaultValue !== undefined) {\n return convertDefaultValue(field, settings.defaultValue);\n }\n const { predefinedValues } = field;\n if (\n !predefinedValues ||\n !predefinedValues.enabled ||\n Array.isArray(predefinedValues.values) === false\n ) {\n return undefined;\n }\n if (!multipleValues) {\n const selectedValue = predefinedValues.values.find(value => {\n return !!value.selected;\n });\n if (selectedValue) {\n return convertDefaultValue(field, selectedValue.value);\n }\n return undefined;\n }\n return predefinedValues.values\n .filter(({ selected }) => !!selected)\n .map(({ value }) => {\n return convertDefaultValue(field, value);\n });\n};\n/**\n * Cleans and adds default values to create input data.\n */\nconst cleanInputData = (model: CmsModel, input: CreateCmsEntryInput): CreateCmsEntryInput => {\n return model.fields.reduce((acc, field) => {\n const value = input[field.fieldId];\n /**\n * We set the default value on create input if value is not defined.\n */\n acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;\n return acc;\n }, {} as CreateCmsEntryInput);\n};\n/**\n * Cleans the update input entry data.\n */\nconst cleanUpdatedInputData = (\n model: CmsModel,\n input: UpdateCmsEntryInput\n): UpdateCmsEntryInput => {\n return model.fields.reduce((acc, field) => {\n /**\n * We cannot set default value here because user might want to updated only certain field values.\n */\n if (input[field.fieldId] === undefined) {\n return acc;\n }\n acc[field.fieldId] = input[field.fieldId];\n return acc;\n }, {} as CreateCmsEntryInput);\n};\n\ninterface DeleteEntryParams {\n model: CmsModel;\n entry: CmsEntry;\n}\n\ninterface EntryIdResult {\n /**\n * A generated id that will connect all the entry records.\n */\n entryId: string;\n /**\n * Version of the entry.\n */\n version: number;\n /**\n * Combination of entryId and version.\n */\n id: string;\n}\n\nconst createEntryId = (version: number): EntryIdResult => {\n const entryId = mdbid();\n return {\n entryId,\n version,\n id: createIdentifier({\n id: entryId,\n version\n })\n };\n};\n\nconst increaseEntryIdVersion = (id: string): EntryIdResult => {\n const { id: entryId, version } = parseIdentifier(id);\n if (!version) {\n throw new WebinyError(\n \"Cannot increase version on the ID without the version part.\",\n \"WRONG_ID\",\n {\n id\n }\n );\n }\n return {\n entryId,\n version: version + 1,\n id: createIdentifier({\n id: entryId,\n version: version + 1\n })\n };\n};\n\ninterface GetSearchableFieldsParams {\n plugins: PluginsContainer;\n model: CmsModel;\n fields?: string[];\n}\nconst getSearchableFields = (params: GetSearchableFieldsParams): string[] => {\n const { plugins, model, fields } = params;\n\n const fieldPluginMap = plugins\n .byType<CmsModelFieldToGraphQLPlugin>(\"cms-model-field-to-graphql\")\n .reduce((collection, field) => {\n collection[field.fieldType] = field;\n return collection;\n }, {} as Record<string, CmsModelFieldToGraphQLPlugin>);\n\n return model.fields\n .filter(field => {\n const plugin = fieldPluginMap[field.type];\n if (!plugin) {\n return false;\n } else if (!plugin.fullTextSearch) {\n return false;\n } else if (!fields || fields.length === 0) {\n return true;\n }\n return fields.includes(field.fieldId);\n })\n .map(field => field.fieldId);\n};\n\nexport interface CreateContentEntryCrudParams {\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n getTenant: () => Tenant;\n}\n\nexport const createContentEntryCrud = (params: CreateContentEntryCrudParams): CmsEntryContext => {\n const { storageOperations, context, getIdentity, getTenant } = params;\n\n const onBeforeEntryCreate = createTopic<BeforeEntryCreateTopicParams>();\n const onAfterEntryCreate = createTopic<AfterEntryCreateTopicParams>();\n const onBeforeEntryCreateRevision = createTopic<BeforeEntryCreateRevisionTopicParams>();\n const onAfterEntryCreateRevision = createTopic<AfterEntryCreateRevisionTopicParams>();\n const onBeforeEntryUpdate = createTopic<BeforeEntryUpdateTopicParams>();\n const onAfterEntryUpdate = createTopic<AfterEntryUpdateTopicParams>();\n const onBeforeEntryPublish = createTopic<BeforeEntryPublishTopicParams>();\n const onAfterEntryPublish = createTopic<AfterEntryPublishTopicParams>();\n const onBeforeEntryUnpublish = createTopic<BeforeEntryUnpublishTopicParams>();\n const onAfterEntryUnpublish = createTopic<AfterEntryUnpublishTopicParams>();\n const onBeforeEntryRequestChanges = createTopic<BeforeEntryRequestChangesTopicParams>();\n const onAfterEntryRequestChanges = createTopic<AfterEntryRequestChangesTopicParams>();\n const onBeforeEntryRequestReview = createTopic<BeforeEntryRequestReviewTopicParams>();\n const onAfterEntryRequestReview = createTopic<AfterEntryRequestReviewTopicParams>();\n const onBeforeEntryDelete = createTopic<BeforeEntryDeleteTopicParams>();\n const onAfterEntryDelete = createTopic<AfterEntryDeleteTopicParams>();\n const onBeforeEntryDeleteRevision = createTopic<BeforeEntryDeleteRevisionTopicParams>();\n const onAfterEntryDeleteRevision = createTopic<AfterEntryDeleteRevisionTopicParams>();\n const onBeforeEntryGet = createTopic<BeforeEntryGetTopicParams>();\n const onBeforeEntryList = createTopic<BeforeEntryListTopicParams>();\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeEntryCreate({\n context,\n onBeforeEntryCreate\n });\n assignBeforeEntryUpdate({\n context,\n onBeforeEntryUpdate\n });\n assignAfterEntryDelete({\n context,\n onAfterEntryDelete\n });\n\n const checkEntryPermissions = (check: {\n rwd?: string;\n pw?: string;\n }): Promise<CmsEntryPermission> => {\n return utils.checkPermissions(context, \"cms.contentEntry\", check);\n };\n\n /**\n * A helper to delete the entire entry.\n */\n const deleteEntry = async (params: DeleteEntryParams): Promise<void> => {\n const { model, entry } = params;\n try {\n await onBeforeEntryDelete.publish({\n entry,\n model\n });\n\n await storageOperations.entries.delete(model, {\n entry\n });\n\n await onAfterEntryDelete.publish({\n entry,\n model\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not delete entry.\",\n ex.code || \"DELETE_ERROR\",\n {\n entry\n }\n );\n }\n };\n /**\n * A helper to get entries by revision IDs\n */\n const getEntriesByIds = async (model: CmsModel, ids: string[]) => {\n const permission = await checkEntryPermissions({ rwd: \"r\" });\n await utils.checkModelAccess(context, model);\n\n const entries = await storageOperations.entries.getByIds(model, {\n ids\n });\n\n return entries.filter(entry => utils.validateOwnership(context, permission, entry));\n };\n\n return {\n onBeforeEntryCreate,\n onAfterEntryCreate,\n onBeforeEntryCreateRevision,\n onAfterEntryCreateRevision,\n onBeforeEntryUpdate,\n onAfterEntryUpdate,\n onBeforeEntryDelete,\n onAfterEntryDelete,\n onBeforeEntryDeleteRevision,\n onAfterEntryDeleteRevision,\n onBeforeEntryPublish,\n onAfterEntryPublish,\n onBeforeEntryUnpublish,\n onAfterEntryUnpublish,\n onBeforeEntryRequestChanges,\n onAfterEntryRequestChanges,\n onBeforeEntryRequestReview,\n onAfterEntryRequestReview,\n onBeforeEntryGet,\n onBeforeEntryList,\n /**\n * Get entries by exact revision IDs from the database.\n */\n getEntriesByIds: getEntriesByIds,\n /**\n * Get a single entry by revision ID from the database.\n */\n getEntryById: async (model, id) => {\n const where: CmsEntryListWhere = {\n id\n };\n await onBeforeEntryGet.publish({\n where,\n model\n });\n const [entry] = await getEntriesByIds(model, [id]);\n if (!entry) {\n throw new NotFoundError(`Entry by ID \"${id}\" not found.`);\n }\n return entry;\n },\n /**\n * Get published revisions by entry IDs.\n */\n getPublishedEntriesByIds: async (model: CmsModel, ids: string[]) => {\n const permission = await checkEntryPermissions({ rwd: \"r\" });\n await utils.checkModelAccess(context, model);\n\n const entries = await storageOperations.entries.getPublishedByIds(model, {\n ids\n });\n\n return entries.filter(entry => utils.validateOwnership(context, permission, entry));\n },\n /**\n * Get latest revisions by entry IDs.\n */\n getLatestEntriesByIds: async (model: CmsModel, ids: string[]) => {\n const permission = await checkEntryPermissions({ rwd: \"r\" });\n await utils.checkModelAccess(context, model);\n\n const entries = await storageOperations.entries.getLatestByIds(model, {\n ids\n });\n\n return entries.filter(entry => utils.validateOwnership(context, permission, entry));\n },\n\n getEntryRevisions: async (model, entryId) => {\n return storageOperations.entries.getRevisions(model, {\n id: entryId\n });\n },\n /**\n * TODO determine if this method is required at all.\n *\n * @internal\n */\n getEntry: async (model, params) => {\n await checkEntryPermissions({ rwd: \"r\" });\n\n const { where, sort } = params;\n\n await onBeforeEntryGet.publish({\n where,\n model\n });\n\n const [items] = await context.cms.listEntries(model, {\n where,\n sort,\n limit: 1\n });\n\n if (items.length === 0) {\n throw new NotFoundError(`Entry not found!`);\n }\n return items[0];\n },\n /**\n * @description Should not be used directly. Internal use only!\n *\n * @internal\n */\n listEntries: async (model: CmsModel, params) => {\n const permission = await checkEntryPermissions({ rwd: \"r\" });\n await utils.checkModelAccess(context, model);\n\n const { where: initialWhere } = params;\n /**\n * We always assign tenant and locale because we do not allow one model to have content through multiple tenants.\n */\n const where: CmsEntryListWhere = {\n ...initialWhere\n };\n /**\n * Possibly only get records which are owned by current user.\n * Or if searching for the owner set that value - in the case that user can see other entries than their own.\n */\n const ownedBy = permission.own ? getIdentity().id : where.ownedBy;\n if (ownedBy !== undefined) {\n where.ownedBy = ownedBy;\n }\n /**\n * Where must contain either latest or published keys.\n * We cannot list entries without one of those\n */\n if (where.latest && where.published) {\n throw new WebinyError(\n \"Cannot list entries that are both published and latest.\",\n \"LIST_ENTRIES_ERROR\",\n {\n where\n }\n );\n } else if (!where.latest && !where.published) {\n throw new WebinyError(\n \"Cannot list entries if we do not have latest or published defined.\",\n \"LIST_ENTRIES_ERROR\",\n {\n where\n }\n );\n }\n\n await onBeforeEntryList.publish({\n where,\n model\n });\n\n const fields = getSearchableFields({\n model,\n plugins: context.plugins,\n fields: params.fields || []\n });\n\n const { hasMoreItems, totalCount, cursor, items } =\n await storageOperations.entries.list(model, {\n ...params,\n where,\n fields\n });\n\n const meta = {\n hasMoreItems,\n totalCount,\n /**\n * Cursor should be null if there are no more items to load.\n * Just make sure of that, disregarding what is returned from the storageOperations.entries.list method.\n */\n cursor: hasMoreItems ? cursor : null\n };\n\n return [items, meta];\n },\n listLatestEntries: async function (model, params) {\n const where = params?.where || ({} as CmsEntryListWhere);\n\n return context.cms.listEntries(model, {\n sort: [\"createdOn_DESC\"],\n ...(params || {}),\n where: {\n ...where,\n latest: true\n }\n });\n },\n listPublishedEntries: async function (model, params) {\n const where = params?.where || ({} as CmsEntryListWhere);\n\n return context.cms.listEntries(model, {\n sort: [\"createdOn_DESC\"],\n ...(params || {}),\n where: {\n ...where,\n published: true\n }\n });\n },\n createEntry: async (model, inputData) => {\n await checkEntryPermissions({ rwd: \"w\" });\n await utils.checkModelAccess(context, model);\n\n /**\n * Make sure we only work with fields that are defined in the model.\n */\n const initialInput = cleanInputData(model, inputData);\n\n await validateModelEntryData({\n context,\n model,\n data: initialInput\n });\n\n const input = await referenceFieldsMapping({\n context,\n model,\n input: initialInput,\n validateEntries: true\n });\n\n const identity = context.security.getIdentity();\n const locale = context.cms.getLocale();\n\n const owner: CreatedBy = {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n\n const { id, entryId, version } = createEntryId(1);\n\n const entry: CmsEntry = {\n webinyVersion: context.WEBINY_VERSION,\n tenant: getTenant().id,\n entryId,\n id,\n modelId: model.modelId,\n locale: locale.code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: owner,\n ownedBy: owner,\n version,\n locked: false,\n status: STATUS_DRAFT,\n values: input\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n try {\n await onBeforeEntryCreate.publish({\n entry,\n input,\n model\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n const result = await storageOperations.entries.create(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryCreate.publish({\n entry,\n storageEntry: result,\n model,\n input\n });\n\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create content entry.\",\n ex.code || \"CREATE_ENTRY_ERROR\",\n ex.data || {\n error: ex,\n input,\n entry,\n storageEntry\n }\n );\n }\n },\n createEntryRevisionFrom: async (model, sourceId, inputData) => {\n const permission = await checkEntryPermissions({ rwd: \"w\" });\n await utils.checkModelAccess(context, model);\n\n /**\n * Make sure we only work with fields that are defined in the model.\n */\n const input = cleanUpdatedInputData(model, inputData);\n\n /**\n * Entries are identified by a common parent ID + Revision number.\n */\n const { id: uniqueId } = parseIdentifier(sourceId);\n\n const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {\n id: sourceId\n });\n const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(\n model,\n {\n id: uniqueId\n }\n );\n\n if (!originalStorageEntry) {\n throw new NotFoundError(\n `Entry \"${sourceId}\" of model \"${model.modelId}\" was not found.`\n );\n }\n\n /**\n * We need to convert data from DB to its original form before using it further.\n */\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n\n const initialValues = {\n ...originalEntry.values,\n ...input\n };\n\n await validateModelEntryData({\n context,\n model,\n data: initialValues,\n entry: originalEntry\n });\n\n const values = await referenceFieldsMapping({\n context,\n model,\n input: initialValues,\n validateEntries: false\n });\n\n utils.checkOwnership(context, permission, originalEntry);\n\n const identity = context.security.getIdentity();\n\n const latestId = latestStorageEntry ? latestStorageEntry.id : sourceId;\n const { id, version: nextVersion } = increaseEntryIdVersion(latestId);\n\n const entry: CmsEntry = {\n ...originalEntry,\n id,\n version: nextVersion,\n savedOn: new Date().toISOString(),\n createdOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n locked: false,\n publishedOn: undefined,\n status: STATUS_DRAFT,\n values\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n\n try {\n await onBeforeEntryCreateRevision.publish({\n input,\n entry,\n original: originalEntry,\n model\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n\n const result = await storageOperations.entries.createRevisionFrom(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryCreateRevision.publish({\n input,\n entry,\n model,\n original: originalEntry,\n storageEntry: result\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not create entry from existing one.\",\n ex.code || \"CREATE_FROM_REVISION_ERROR\",\n {\n error: ex,\n entry,\n storageEntry,\n originalEntry,\n originalStorageEntry\n }\n );\n }\n },\n updateEntry: async (model, id, inputData) => {\n const permission = await checkEntryPermissions({ rwd: \"w\" });\n await utils.checkModelAccess(context, model);\n\n /**\n * Make sure we only work with fields that are defined in the model.\n */\n const input = cleanUpdatedInputData(model, inputData);\n\n /**\n * The entry we are going to update.\n */\n const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {\n id\n });\n\n if (!originalStorageEntry) {\n throw new NotFoundError(`Entry \"${id}\" of model \"${model.modelId}\" was not found.`);\n }\n\n if (originalStorageEntry.locked) {\n throw new WebinyError(\n `Cannot update entry because it's locked.`,\n \"CONTENT_ENTRY_UPDATE_ERROR\"\n );\n }\n\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n\n await validateModelEntryData({\n context,\n model,\n data: input,\n entry: originalEntry\n });\n\n utils.checkOwnership(context, permission, originalEntry);\n\n const initialValues = {\n /**\n * Existing values from the database, transformed back to original, of course.\n */\n ...originalEntry.values,\n /**\n * Add new values.\n */\n ...input\n };\n\n const values = await referenceFieldsMapping({\n context,\n model,\n input: initialValues,\n validateEntries: false\n });\n\n /**\n * We always send the full entry to the hooks and storage operations update.\n */\n const entry: CmsEntry = {\n ...originalEntry,\n savedOn: new Date().toISOString(),\n values\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n\n try {\n await onBeforeEntryUpdate.publish({\n entry,\n model,\n input,\n original: originalEntry\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n\n const result = await storageOperations.entries.update(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryUpdate.publish({\n entry,\n storageEntry: result,\n model,\n input,\n original: originalEntry\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not update existing entry.\",\n ex.code || \"UPDATE_ERROR\",\n {\n error: ex,\n entry,\n storageEntry,\n originalEntry,\n input\n }\n );\n }\n },\n republishEntry: async (model, id) => {\n await checkEntryPermissions({ rwd: \"w\" });\n await utils.checkModelAccess(context, model);\n /**\n * Fetch the entry from the storage.\n */\n const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {\n id\n });\n if (!originalStorageEntry) {\n throw new NotFoundError(`Entry \"${id}\" was not found!`);\n }\n\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n /**\n * We can only process published entries.\n */\n if (originalEntry.status !== \"published\") {\n throw new WebinyError(\n \"Entry with given ID is not published!\",\n \"NOT_PUBLISHED_ERROR\",\n {\n id,\n original: originalEntry\n }\n );\n }\n\n const values = await referenceFieldsMapping({\n context,\n model,\n input: originalEntry.values,\n validateEntries: false\n });\n\n const entry: CmsEntry = {\n ...originalEntry,\n savedOn: new Date().toISOString(),\n webinyVersion: context.WEBINY_VERSION,\n values\n };\n\n const storageEntry = await entryToStorageTransform(context, model, entry);\n /**\n * First we need to update existing entry.\n */\n try {\n await storageOperations.entries.update(model, {\n entry,\n storageEntry\n });\n } catch (ex) {\n throw new WebinyError(\n \"Could not update existing entry with new data while re-publishing.\",\n \"REPUBLISH_UPDATE_ERROR\",\n {\n entry\n }\n );\n }\n /**\n * Then we move onto publishing it again.\n */\n try {\n return await storageOperations.entries.publish(model, {\n entry,\n storageEntry\n });\n } catch (ex) {\n throw new WebinyError(\n \"Could not publish existing entry while re-publishing.\",\n \"REPUBLISH_PUBLISH_ERROR\",\n {\n entry\n }\n );\n }\n },\n deleteEntryRevision: async (model, revisionId) => {\n const permission = await checkEntryPermissions({ rwd: \"d\" });\n await utils.checkModelAccess(context, model);\n\n const { id: entryId, version } = parseIdentifier(revisionId);\n\n const storageEntryToDelete = await storageOperations.entries.getRevisionById(model, {\n id: revisionId\n });\n const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(\n model,\n {\n id: entryId\n }\n );\n const previousStorageEntry = await storageOperations.entries.getPreviousRevision(\n model,\n {\n entryId,\n version: version as number\n }\n );\n\n if (!storageEntryToDelete) {\n throw new NotFoundError(`Entry \"${revisionId}\" was not found!`);\n }\n\n utils.checkOwnership(context, permission, storageEntryToDelete);\n\n const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;\n\n const entryToDelete = await entryFromStorageTransform(\n context,\n model,\n storageEntryToDelete\n );\n /**\n * If targeted record is the latest entry record and there is no previous one, we need to run full delete with hooks.\n * At this point deleteRevision hooks are not fired.\n */\n if (entryToDelete.id === latestEntryRevisionId && !previousStorageEntry) {\n return await deleteEntry({\n model,\n entry: entryToDelete\n });\n }\n /**\n * If targeted record is latest entry revision, set the previous one as the new latest\n */\n let entryToSetAsLatest: CmsEntry | null = null;\n let storageEntryToSetAsLatest: CmsStorageEntry | null = null;\n if (entryToDelete.id === latestEntryRevisionId && previousStorageEntry) {\n entryToSetAsLatest = await entryFromStorageTransform(\n context,\n model,\n previousStorageEntry\n );\n storageEntryToSetAsLatest = previousStorageEntry;\n }\n\n try {\n await onBeforeEntryDeleteRevision.publish({\n entry: entryToDelete,\n model\n });\n\n await storageOperations.entries.deleteRevision(model, {\n entry: entryToDelete,\n storageEntry: storageEntryToDelete,\n latestEntry: entryToSetAsLatest,\n latestStorageEntry: storageEntryToSetAsLatest\n });\n\n await onAfterEntryDeleteRevision.publish({\n entry: entryToDelete,\n model\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"DELETE_REVISION_ERROR\", {\n error: ex,\n entry: entryToDelete,\n storageEntry: storageEntryToDelete,\n latestEntry: entryToSetAsLatest,\n latestStorageEntry: storageEntryToSetAsLatest\n });\n }\n },\n deleteEntry: async (model, entryId) => {\n const permission = await checkEntryPermissions({ rwd: \"d\" });\n await utils.checkModelAccess(context, model);\n\n const storageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {\n id: entryId\n });\n\n if (!storageEntry) {\n throw new NotFoundError(`Entry \"${entryId}\" was not found!`);\n }\n\n utils.checkOwnership(context, permission, storageEntry);\n\n const entry = await entryFromStorageTransform(context, model, storageEntry);\n\n return await deleteEntry({\n model,\n entry\n });\n },\n publishEntry: async (model, id) => {\n const permission = await checkEntryPermissions({ pw: \"p\" });\n await utils.checkModelAccess(context, model);\n\n const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {\n id\n });\n\n if (!originalStorageEntry) {\n throw new NotFoundError(\n `Entry \"${id}\" in the model \"${model.modelId}\" was not found.`\n );\n }\n\n utils.checkOwnership(context, permission, originalStorageEntry);\n\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n\n const currentDate = new Date().toISOString();\n const entry: CmsEntry = {\n ...originalEntry,\n status: STATUS_PUBLISHED,\n locked: true,\n savedOn: currentDate,\n publishedOn: currentDate\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n\n try {\n await onBeforeEntryPublish.publish({\n entry,\n model\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n const result = await storageOperations.entries.publish(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryPublish.publish({\n entry,\n storageEntry: result,\n model\n });\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not publish entry.\",\n ex.code || \"PUBLISH_ERROR\",\n {\n error: ex,\n entry,\n storageEntry,\n originalEntry,\n originalStorageEntry\n }\n );\n }\n },\n requestEntryChanges: async (model, id) => {\n const permission = await checkEntryPermissions({ pw: \"c\" });\n\n const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {\n id\n });\n\n if (!originalStorageEntry) {\n throw new NotFoundError(`Entry \"${id}\" of model \"${model.modelId}\" was not found.`);\n }\n\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n\n if (originalEntry.status !== STATUS_REVIEW_REQUESTED) {\n throw new WebinyError(\n \"Cannot request changes on an entry that's not under review.\",\n \"ENTRY_NOT_UNDER_REVIEW\"\n );\n }\n\n const identity = context.security.getIdentity();\n if (originalEntry.ownedBy.id === identity.id) {\n throw new WebinyError(\n \"You cannot request changes on your own entry.\",\n \"CANNOT_REQUEST_CHANGES_ON_OWN_ENTRY\"\n );\n }\n\n utils.checkOwnership(context, permission, originalEntry);\n\n const entry: CmsEntry = {\n ...originalEntry,\n status: STATUS_CHANGES_REQUESTED\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n\n try {\n await onBeforeEntryRequestChanges.publish({\n entry,\n model\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n\n const result = await storageOperations.entries.requestChanges(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryRequestChanges.publish({\n entry,\n storageEntry: result,\n model\n });\n\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not request changes for the entry.\",\n ex.code || \"REQUEST_CHANGES_ERROR\",\n {\n entry,\n originalEntry\n }\n );\n }\n },\n requestEntryReview: async (model, id) => {\n const permission = await checkEntryPermissions({ pw: \"r\" });\n const { id: entryId } = parseIdentifier(id);\n\n const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {\n id\n });\n const latestEntryRevision = await storageOperations.entries.getLatestRevisionByEntryId(\n model,\n {\n id: entryId\n }\n );\n\n if (!originalStorageEntry) {\n throw new NotFoundError(`Entry \"${id}\" of model \"${model.modelId}\" was not found.`);\n } else if (!latestEntryRevision) {\n throw new NotFoundError(`Entry \"${id}\" does not have latest record`);\n }\n\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n\n const allowedStatuses = [STATUS_DRAFT, STATUS_CHANGES_REQUESTED];\n if (!allowedStatuses.includes(originalEntry.status)) {\n throw new WebinyError(\n \"Cannot request review - entry is not a draft nor was a change request issued.\",\n \"REQUEST_REVIEW_ERROR\",\n {\n entry: originalEntry\n }\n );\n }\n\n utils.checkOwnership(context, permission, originalEntry);\n\n const entry: CmsEntry = {\n ...originalEntry,\n status: STATUS_REVIEW_REQUESTED\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n\n try {\n await onBeforeEntryRequestReview.publish({\n entry,\n model\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n\n const result = await storageOperations.entries.requestReview(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryRequestReview.publish({\n entry,\n storageEntry: result,\n model\n });\n\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not request review on the entry.\",\n ex.code || \"REQUEST_REVIEW_ERROR\",\n {\n originalEntry,\n entry\n }\n );\n }\n },\n unpublishEntry: async (model, id) => {\n const permission = await checkEntryPermissions({ pw: \"u\" });\n\n const { id: entryId } = parseIdentifier(id);\n\n const originalStorageEntry =\n await storageOperations.entries.getPublishedRevisionByEntryId(model, {\n id: entryId\n });\n\n if (!originalStorageEntry) {\n throw new NotFoundError(`Entry \"${id}\" of model \"${model.modelId}\" was not found.`);\n }\n\n if (originalStorageEntry.id !== id) {\n throw new WebinyError(`Entry is not published.`, \"UNPUBLISH_ERROR\", {\n entry: originalStorageEntry\n });\n }\n\n utils.checkOwnership(context, permission, originalStorageEntry);\n\n const originalEntry = await entryFromStorageTransform(\n context,\n model,\n originalStorageEntry\n );\n\n const entry: CmsEntry = {\n ...originalEntry,\n status: STATUS_UNPUBLISHED\n };\n\n let storageEntry: CmsStorageEntry | null = null;\n\n try {\n await onBeforeEntryUnpublish.publish({\n entry,\n model\n });\n\n storageEntry = await entryToStorageTransform(context, model, entry);\n\n const result = await storageOperations.entries.unpublish(model, {\n entry,\n storageEntry\n });\n\n await onAfterEntryUnpublish.publish({\n entry,\n storageEntry: result,\n model\n });\n\n return result;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not unpublish entry.\",\n ex.code || \"UNPUBLISH_ERROR\",\n {\n originalEntry,\n originalStorageEntry,\n entry,\n storageEntry\n }\n );\n }\n }\n };\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["disallowedModelIdList","disallowedModelIdEndingList","checkModelIdUniqueness","modelIdList","modelId","includes","WebinyError","pluralizedModelIdCamelCase","pluralize","plural","singularizedModelIdCamelCase","singular","checkModelIdAllowed","checkModelIdEndingAllowed","ending","re","RegExp","matched","match","getModelId","model","name","camelCase","trim","createOnBeforeCb","plugins","storageOperations","params","modelPlugin","byType","CmsModelPlugin","type","find","item","contentModel","models","list","where","tenant","locale","map","m","assignBeforeModelCreate","onBeforeModelCreate","onBeforeModelCreateFrom","subscribe","input","cb","validateModelFields"],"sources":["beforeCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport camelCase from \"lodash/camelCase\";\nimport pluralize from \"pluralize\";\nimport {\n BeforeModelCreateFromTopicParams,\n BeforeModelCreateTopicParams,\n CmsModel,\n HeadlessCmsStorageOperations\n} from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\nimport { validateModelFields } from \"~/content/plugins/crud/contentModel/validateModelFields\";\n\nconst disallowedModelIdList: string[] = [\n \"contentModel\",\n \"contentModels\",\n \"contentModelGroup\",\n \"contentModelGroups\"\n];\n/**\n * This list is to disallow creating models that might interfere with GraphQL schema creation.\n * Add more if required.\n */\nconst disallowedModelIdEndingList: string[] = [\n \"Response\",\n \"List\",\n \"Meta\",\n \"Input\",\n \"Sorter\",\n \"RefType\"\n];\n\n/**\n * Checks for the uniqueness of provided modelId, against the provided list of models.\n * It also takes plural / singular forms of the provided modelId into account.\n */\nconst checkModelIdUniqueness = (modelIdList: string[], modelId: string) => {\n if (modelIdList.includes(modelId) === true) {\n throw new WebinyError(\n `Content model with modelId \"${modelId}\" already exists.`,\n \"MODEL_ID_EXISTS\",\n {\n modelId\n }\n );\n }\n /**\n * Additionally, check if the plural form of the received modelId exists too. This prevents users\n * from creating, for example, \"event\" and \"events\" models, which would break the GraphQL schema.\n * 1. First check if user wants to create the \"event\" model, but the \"events\" model already exists.\n */\n const pluralizedModelIdCamelCase = pluralize(modelId);\n if (modelIdList.includes(pluralizedModelIdCamelCase) === true) {\n throw new WebinyError(\n `Content model with modelId \"${modelId}\" does not exist, but a model with modelId \"${pluralizedModelIdCamelCase}\" does.`,\n \"MODEL_ID_PLURAL_ERROR\",\n {\n modelId,\n plural: pluralizedModelIdCamelCase\n }\n );\n }\n\n /**\n * 2. Then check if user wants to create the \"events\" model, but the \"event\" model already exists.\n */\n const singularizedModelIdCamelCase = pluralize.singular(modelId);\n if (modelIdList.includes(singularizedModelIdCamelCase) === true) {\n throw new WebinyError(\n `Content model with modelId \"${modelId}\" does not exist, but a model with modelId \"${singularizedModelIdCamelCase}\" does.`,\n \"MODEL_ID_SINGULAR_ERROR\",\n {\n modelId,\n singular: singularizedModelIdCamelCase\n }\n );\n }\n};\n\nconst checkModelIdAllowed = (modelId: string): void => {\n if (disallowedModelIdList.includes(modelId) === false) {\n return;\n }\n throw new WebinyError(`Provided model ID \"${modelId}\" is not allowed.`);\n};\n\nconst checkModelIdEndingAllowed = (modelId: string): void => {\n for (const ending of disallowedModelIdEndingList) {\n const re = new RegExp(`${ending}$`, \"i\");\n const matched = modelId.match(re);\n if (matched === null) {\n continue;\n }\n throw new WebinyError(\n `ModelId that ends with \"${ending}\" is not allowed.`,\n \"MODEL_ID_NOT_ALLOWED\",\n {\n modelId\n }\n );\n }\n};\n\nconst getModelId = (model: CmsModel): string => {\n const { modelId, name } = model;\n if (!!modelId) {\n return camelCase(modelId.trim());\n } else if (name) {\n return camelCase(name.trim());\n }\n throw new WebinyError(\n `There is no \"modelId\" or \"name\" passed into the create model method.`,\n \"MISSING_MODEL_DATA\",\n {\n model\n }\n );\n};\n\ninterface CreateOnBeforeCreateCbParams {\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nconst createOnBeforeCb = ({ plugins, storageOperations }: CreateOnBeforeCreateCbParams) => {\n return async (params: BeforeModelCreateTopicParams | BeforeModelCreateFromTopicParams) => {\n const { model } = params;\n\n const modelId = getModelId(model);\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find((item: CmsModelPlugin) => item.contentModel.modelId === modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n `Cannot create \"${model.modelId}\" content model because one is already registered via a plugin.`,\n \"CONTENT_MODEL_CREATE_ERROR\",\n {\n modelId: model.modelId\n }\n );\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: model.tenant,\n locale: model.locale\n }\n });\n const modelIdList = models.map(m => m.modelId);\n\n /**\n * We need to check for:\n * - is that exact modelId allowed\n * - is modelId unique\n * - is model ending allowed\n */\n checkModelIdAllowed(modelId);\n checkModelIdEndingAllowed(modelId);\n checkModelIdUniqueness(modelIdList, modelId);\n model.modelId = modelId;\n };\n};\n\ninterface AssignBeforeModelCreateParams {\n onBeforeModelCreate: Topic<BeforeModelCreateTopicParams>;\n onBeforeModelCreateFrom: Topic<BeforeModelCreateFromTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\n\n/**\n * We attach both on before create and createFrom events here.\n * Callables are identical.\n */\nexport const assignBeforeModelCreate = (params: AssignBeforeModelCreateParams) => {\n const { onBeforeModelCreate, onBeforeModelCreateFrom, storageOperations, plugins } = params;\n\n onBeforeModelCreate.subscribe(async ({ model, input }) => {\n /**\n * First we need to validate base data of the model.\n */\n const cb = createOnBeforeCb({\n storageOperations,\n plugins\n });\n await cb({\n model,\n input\n });\n /**\n * Then we move onto fields...\n */\n await validateModelFields({\n model,\n plugins\n });\n });\n\n onBeforeModelCreateFrom.subscribe(\n createOnBeforeCb({\n storageOperations,\n plugins\n })\n );\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeModelDelete","params","onBeforeModelDelete","storageOperations","plugins","subscribe","model","modelPlugin","byType","CmsModelPlugin","type","find","item","contentModel","modelId","WebinyError","entries","result","list","where","latest","limit","items","ex","error","length"],"sources":["beforeDelete.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { BeforeModelDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\n\ninterface AssignBeforeModelDeleteParams {\n onBeforeModelDelete: Topic<BeforeModelDeleteTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\nexport const assignBeforeModelDelete = (params: AssignBeforeModelDeleteParams) => {\n const { onBeforeModelDelete, storageOperations, plugins } = params;\n\n onBeforeModelDelete.subscribe(async params => {\n const { model } = params;\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find(item => item.contentModel.modelId === model.modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n \"Content models defined via plugins cannot be deleted.\",\n \"CONTENT_MODEL_DELETE_ERROR\",\n {\n modelId: model.modelId\n }\n );\n }\n\n let entries = [];\n try {\n const result = await storageOperations.entries.list(model, {\n where: {\n latest: true\n },\n limit: 1\n });\n entries = result.items;\n } catch (ex) {\n throw new WebinyError(\n \"Could not retrieve a list of content entries from the model.\",\n \"ENTRIES_ERROR\",\n {\n error: ex,\n model\n }\n );\n }\n if (entries.length > 0) {\n throw new WebinyError(\n `Cannot delete content model \"${model.modelId}\" because there are existing entries.`,\n \"CONTENT_MODEL_BEFORE_DELETE_HOOK_FAILED\"\n );\n }\n });\n};\n"],"mappings":";;;;;;;;;AAGA;;AACA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,mBAAF;IAAuBC,iBAAvB;IAA0CC;EAA1C,IAAsDH,MAA5D;EAEAC,mBAAmB,CAACG,SAApB,CAA8B,MAAMJ,MAAN,IAAgB;IAC1C,MAAM;MAAEK;IAAF,IAAYL,MAAlB;IAEA,MAAMM,WAAW,GAAGH,OAAO,CACtBI,MADe,CACQC,8BAAA,CAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,YAAL,CAAkBC,OAAlB,KAA8BR,KAAK,CAACQ,OAFlC,CAApB;;IAIA,IAAIP,WAAJ,EAAiB;MACb,MAAM,IAAIQ,cAAJ,CACF,uDADE,EAEF,4BAFE,EAGF;QACID,OAAO,EAAER,KAAK,CAACQ;MADnB,CAHE,CAAN;IAOH;;IAED,IAAIE,OAAO,GAAG,EAAd;;IACA,IAAI;MACA,MAAMC,MAAM,GAAG,MAAMd,iBAAiB,CAACa,OAAlB,CAA0BE,IAA1B,CAA+BZ,KAA/B,EAAsC;QACvDa,KAAK,EAAE;UACHC,MAAM,EAAE;QADL,CADgD;QAIvDC,KAAK,EAAE;MAJgD,CAAtC,CAArB;MAMAL,OAAO,GAAGC,MAAM,CAACK,KAAjB;IACH,CARD,CAQE,OAAOC,EAAP,EAAW;MACT,MAAM,IAAIR,cAAJ,CACF,8DADE,EAEF,eAFE,EAGF;QACIS,KAAK,EAAED,EADX;QAEIjB;MAFJ,CAHE,CAAN;IAQH;;IACD,IAAIU,OAAO,CAACS,MAAR,GAAiB,CAArB,EAAwB;MACpB,MAAM,IAAIV,cAAJ,CACD,gCAA+BT,KAAK,CAACQ,OAAQ,uCAD5C,EAEF,yCAFE,CAAN;IAIH;EACJ,CA1CD;AA2CH,CA9CM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeModelUpdate","params","onBeforeModelUpdate","plugins","subscribe","validateModelFields","model"],"sources":["beforeUpdate.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { BeforeModelUpdateTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { validateModelFields } from \"~/content/plugins/crud/contentModel/validateModelFields\";\n\ninterface AssignBeforeModelUpdateParams {\n onBeforeModelUpdate: Topic<BeforeModelUpdateTopicParams>;\n storageOperations: HeadlessCmsStorageOperations;\n plugins: PluginsContainer;\n}\n\nexport const assignBeforeModelUpdate = (params: AssignBeforeModelUpdateParams) => {\n const { onBeforeModelUpdate, plugins } = params;\n\n onBeforeModelUpdate.subscribe(async params => {\n await validateModelFields({\n model: params.model,\n plugins\n });\n });\n};\n"],"mappings":";;;;;;;AAGA;;AAQO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,mBAAF;IAAuBC;EAAvB,IAAmCF,MAAzC;EAEAC,mBAAmB,CAACE,SAApB,CAA8B,MAAMH,MAAN,IAAgB;IAC1C,MAAM,IAAAI,wCAAA,EAAoB;MACtBC,KAAK,EAAEL,MAAM,CAACK,KADQ;MAEtBH;IAFsB,CAApB,CAAN;EAIH,CALD;AAMH,CATM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["value","validation","validate","charAt","match","Error","trim","toLowerCase"],"sources":["idValidation.ts"],"sourcesContent":["import { validation } from \"@webiny/validation\";\n\nexport default async (value: string): Promise<void> => {\n await validation.validate(value, \"required,maxLength:100\");\n if (!value.charAt(0).match(/[a-zA-Z]/)) {\n throw new Error(`Provided ID ${value} is not valid - must not start with a number.`);\n }\n if (value.trim().toLowerCase() === \"id\") {\n throw new Error(`Provided ID ${value} is not valid - \"id\" is an auto-generated field.`);\n }\n};\n"],"mappings":";;;;;;;AAAA;;eAEe,MAAOA,KAAP,IAAwC;EACnD,MAAMC,sBAAA,CAAWC,QAAX,CAAoBF,KAApB,EAA2B,wBAA3B,CAAN;;EACA,IAAI,CAACA,KAAK,CAACG,MAAN,CAAa,CAAb,EAAgBC,KAAhB,CAAsB,UAAtB,CAAL,EAAwC;IACpC,MAAM,IAAIC,KAAJ,CAAW,eAAcL,KAAM,+CAA/B,CAAN;EACH;;EACD,IAAIA,KAAK,CAACM,IAAN,GAAaC,WAAb,OAA+B,IAAnC,EAAyC;IACrC,MAAM,IAAIF,KAAJ,CAAW,eAAcL,KAAM,kDAA/B,CAAN;EACH;AACJ,C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["requiredShortString","validation","create","shortString","RendererModel","withFields","name","string","ContentModelFieldModel","id","fieldId","flow","onSet","value","trim","setOnce","idValidation","label","helpText","placeholderText","type","multipleValues","boolean","predefinedValues","fields","instanceOf","enabled","values","list","selected","renderer","message","settings","object","listValidation","CreateContentModelModel","modelId","description","group","required","layout","CreateContentModelModelFrom","locale","UpdateContentModelModel","titleFieldId"],"sources":["models.ts"],"sourcesContent":["import { validation } from \"@webiny/validation\";\nimport flow from \"lodash/flow\";\n/**\n * Package commodo-fields-object does not have types\n */\n// @ts-ignore\nimport { object } from \"commodo-fields-object\";\n/**\n * Package commodo-fields does not have object.\n */\n// @ts-ignore\nimport { withFields, string, setOnce, onSet, boolean, fields } from \"@commodo/fields\";\nimport idValidation from \"./idValidation\";\n\nconst requiredShortString = validation.create(\"required,maxLength:255\");\nconst shortString = validation.create(\"maxLength:255\");\n\nconst RendererModel = withFields({\n name: string({ validation: requiredShortString })\n})();\n\nexport const ContentModelFieldModel = withFields({\n id: string({ validation: requiredShortString }),\n fieldId: flow(\n onSet((value?: string) => value && value.trim()),\n setOnce()\n )(string({ validation: idValidation })),\n label: string({ validation: requiredShortString }),\n helpText: string({ validation: shortString }),\n placeholderText: string({ validation: shortString }),\n type: setOnce()(string({ validation: requiredShortString })),\n multipleValues: boolean({ value: false }),\n predefinedValues: fields({\n value: {},\n instanceOf: withFields({\n enabled: boolean(),\n values: fields({\n value: [],\n list: true,\n instanceOf: withFields({\n label: string(),\n value: string(),\n selected: boolean()\n })()\n })\n })()\n }),\n renderer: fields({ instanceOf: RendererModel, validation: shortString }),\n validation: fields({\n list: true,\n value: [],\n instanceOf: withFields({\n name: string({ validation: requiredShortString }),\n message: string({ validation: shortString }),\n settings: object({ value: {} })\n })()\n }),\n listValidation: fields({\n list: true,\n value: [],\n instanceOf: withFields({\n name: string({ validation: requiredShortString }),\n message: string({ validation: shortString }),\n settings: object({ value: {} })\n })()\n }),\n settings: object({ value: {} })\n})();\n\nexport const CreateContentModelModel = withFields({\n name: string({ validation: requiredShortString }),\n modelId: string({ validation: shortString }),\n description: string({ validation: shortString }),\n group: string({ validation: requiredShortString }),\n fields: fields({ instanceOf: ContentModelFieldModel, value: [], list: true, required: true }),\n layout: object({ value: [], required: true })\n})();\n\nexport const CreateContentModelModelFrom = withFields({\n name: string({ validation: requiredShortString }),\n modelId: string({ validation: shortString }),\n description: string({ validation: shortString }),\n group: string({ validation: requiredShortString }),\n locale: string({ validation: shortString })\n})();\n\nexport const UpdateContentModelModel = withFields({\n name: string({ validation: shortString }),\n description: string({ validation: shortString }),\n group: string({ validation: shortString }),\n titleFieldId: string(),\n fields: fields({ instanceOf: ContentModelFieldModel, value: [], list: true, required: true }),\n layout: object({ value: [], required: true })\n})();\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["defaultTitleFieldId","allowedTitleFieldTypes","getContentModelTitleFieldId","fields","titleFieldId","titleField","find","field","type","multipleValues","fieldId","target","f","WebinyError","includes","join","extractInvalidField","model","err","sdl","source","body","line","lineNumber","locations","sdlLines","split","sdlLine","gqlType","i","match","invalidField","undefined","Array","isArray","fieldRegex","RegExp","matched","message","data","modelId","code","validateModelFields","params","plugins","modelPlugin","byType","CmsModelPlugin","item","contentModel","lockedFields","fieldTypePlugins","length","fieldType","Error","schema","createManageSDL","reduce","acc","pl","gql","cmsLockedFieldPlugins","lockedField","existingField","lockedFieldsByType","filter","plugin","checkLockedField"],"sources":["validateModelFields.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\nimport {\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin,\n CmsModelLockedFieldPlugin\n} from \"~/types\";\nimport { createManageSDL } from \"~/content/plugins/schema/createManageSDL\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { GraphQLError } from \"graphql\";\n\nconst defaultTitleFieldId = \"id\";\n\nconst allowedTitleFieldTypes = [\"text\", \"number\"];\n\nconst getContentModelTitleFieldId = (fields: CmsModelField[], titleFieldId?: string): string => {\n // if there is no title field defined either in input data or existing content model data\n // we will take first text field that has no multiple values enabled\n // or if initial titleFieldId is the default one also try to find first available text field\n if (!titleFieldId || titleFieldId === defaultTitleFieldId) {\n const titleField = fields.find(field => {\n return field.type === \"text\" && !field.multipleValues;\n });\n return titleField ? titleField.fieldId : defaultTitleFieldId;\n }\n // check existing titleFieldId for existence in the model\n // for correct type\n // and that it is not multiple values field\n const target = fields.find(f => f.fieldId === titleFieldId);\n if (!target) {\n throw new WebinyError(`Field does not exist in the model.`, \"VALIDATION_ERROR\", {\n fieldId: titleFieldId,\n fields\n });\n }\n\n if (allowedTitleFieldTypes.includes(target.type) === false) {\n throw new WebinyError(\n `Only ${allowedTitleFieldTypes.join(\n \", \"\n )} and id fields can be used as an entry title.`,\n \"ENTRY_TITLE_FIELD_TYPE\",\n {\n fieldId: target.fieldId,\n type: target.type\n }\n );\n }\n\n if (target.multipleValues) {\n throw new WebinyError(\n `Fields that accept multiple values cannot be used as the entry title.`,\n \"ENTRY_TITLE_FIELD_TYPE\",\n {\n fieldId: target.fieldId,\n type: target.type\n }\n );\n }\n\n return target.fieldId;\n};\n\nconst extractInvalidField = (model: CmsModel, err: GraphQLError) => {\n const sdl = err.source?.body || \"\";\n\n // Find the invalid type\n const { line: lineNumber } = err.locations\n ? err.locations[0]\n : {\n line: 0\n };\n const sdlLines = sdl.split(\"\\n\");\n let sdlLine;\n let gqlType;\n for (let i = lineNumber; i > 0; i--) {\n if (sdlLine && sdlLine.includes(\"type \")) {\n gqlType = sdlLine.match(/type\\s+(.*?)\\s+{/);\n break;\n }\n\n sdlLine = sdlLines[i];\n }\n\n let invalidField: string | undefined = undefined;\n if (Array.isArray(gqlType)) {\n const fieldRegex = new RegExp(`([^\\\\s+].*?):\\\\s+\\\\[?${gqlType[1]}!?\\\\]?`);\n\n const matched = sdl.match(fieldRegex);\n if (matched) {\n invalidField = matched[1];\n }\n }\n\n let message = `See more details in the browser console.`;\n if (invalidField) {\n message = `Please review the definition of \"${invalidField}\" field.`;\n }\n\n return {\n data: {\n modelId: model.modelId,\n sdl,\n invalidField\n },\n code: \"INVALID_MODEL_DEFINITION\",\n message: [`Model \"${model.modelId}\" was not saved!`, message].join(\"\\n\")\n };\n};\n\ninterface ValidateModelParams {\n model: CmsModel;\n plugins: PluginsContainer;\n}\n\nexport const validateModelFields = async (params: ValidateModelParams) => {\n const { model, plugins } = params;\n\n const modelPlugin = plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n .find(item => item.contentModel.modelId === model.modelId);\n\n if (modelPlugin) {\n throw new WebinyError(\n \"Content models defined via plugins cannot be updated.\",\n \"CONTENT_MODEL_UPDATE_ERROR\",\n {\n modelId: model.modelId\n }\n );\n }\n\n const { titleFieldId } = model;\n\n // There should be fields/locked fields in either model or data to be updated.\n const { fields = [], lockedFields = [] } = model;\n\n // Let's inspect the fields of the received content model. We prevent saving of a content model if it\n // contains a field for which a \"cms-model-field-to-graphql\" plugin does not exist on the backend.\n const fieldTypePlugins = plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n if (!fieldTypePlugins.find(item => item.fieldType === field.type)) {\n throw new Error(\n `Cannot update content model because of the unknown \"${field.type}\" field.`\n );\n }\n }\n\n if (fields.length) {\n // Make sure that this model can be safely converted to a GraphQL SDL\n const schema = createManageSDL({\n model,\n fieldTypePlugins: fieldTypePlugins.reduce(\n (acc, pl) => ({ ...acc, [pl.fieldType]: pl }),\n {}\n )\n });\n\n try {\n gql(schema);\n } catch (err) {\n throw new WebinyError(extractInvalidField(model, err));\n }\n }\n\n model.titleFieldId = getContentModelTitleFieldId(fields, titleFieldId);\n\n const cmsLockedFieldPlugins =\n plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n // We must not allow removal or changes in fields that are already in use in content entries.\n for (const lockedField of lockedFields) {\n const existingField = fields.find(item => item.fieldId === lockedField.fieldId);\n if (!existingField) {\n throw new WebinyError(\n `Cannot remove the field \"${lockedField.fieldId}\" because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\"\n );\n }\n\n if (lockedField.multipleValues !== existingField.multipleValues) {\n throw new WebinyError(\n `Cannot change \"multipleValues\" for the \"${lockedField.fieldId}\" field because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\"\n );\n }\n\n if (lockedField.type !== existingField.type) {\n throw new WebinyError(\n `Cannot change field type for the \"${lockedField.fieldId}\" field because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\"\n );\n }\n\n // Check `lockedField` invariant for specific field\n const lockedFieldsByType = cmsLockedFieldPlugins.filter(\n pl => pl.fieldType === lockedField.type\n );\n for (const plugin of lockedFieldsByType) {\n if (typeof plugin.checkLockedField !== \"function\") {\n continue;\n }\n plugin.checkLockedField({\n lockedField,\n field: existingField\n });\n }\n }\n};\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createModelsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","loaders","listModels","DataLoader","models","list","where","tenant","id","locale","code","map","model","clearModelsCache","loader","Object","values","clearAll","managers","Map","updateManager","manager","contentModelManagerFactory","set","modelId","checkModelPermissions","check","utils","checkPermissions","rwd","getModelsAsPlugins","plugins","byType","CmsModelPlugin","type","filter","plugin","t","l","contentModel","webinyVersion","WEBINY_VERSION","modelsGet","pluginModel","find","get","NotFoundError","modelsList","databaseModels","load","pluginsModels","concat","permission","filterAsync","validateOwnership","validateModelAccess","getModel","checkOwnership","checkModelAccess","getModelManager","target","has","m","onBeforeModelCreate","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","fields","createFieldModels","identity","name","description","titleFieldId","createdBy","displayName","createdOn","Date","toISOString","savedOn","lockedFields","layout","validateLayout","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} from \"~/types\";\nimport * as utils from \"~/utils\";\nimport DataLoader from \"dataloader\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { contentModelManagerFactory } from \"./contentModel/contentModelManagerFactory\";\nimport {\n CreateContentModelModel,\n CreateContentModelModelFrom,\n UpdateContentModelModel\n} from \"./contentModel/models\";\nimport { createFieldModels } from \"./contentModel/createFieldModels\";\nimport { validateLayout } from \"./contentModel/validateLayout\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsModelPlugin } from \"~/content/plugins/CmsModelPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeModelCreate } from \"./contentModel/beforeCreate\";\nimport { assignBeforeModelUpdate } from \"./contentModel/beforeUpdate\";\nimport { assignBeforeModelDelete } from \"./contentModel/beforeDelete\";\nimport { assignAfterModelCreate } from \"./contentModel/afterCreate\";\nimport { assignAfterModelUpdate } from \"./contentModel/afterUpdate\";\nimport { assignAfterModelDelete } from \"./contentModel/afterDelete\";\nimport { assignAfterModelCreateFrom } from \"~/content/plugins/crud/contentModel/afterCreateFrom\";\n\nexport interface CreateModelsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelsCrud = (params: CreateModelsCrudParams): CmsModelContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const loaders = {\n listModels: new DataLoader(async () => {\n const models = await storageOperations.models.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n return [\n models.map(model => {\n return {\n ...model,\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n })\n ];\n })\n };\n\n const 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 utils.checkPermissions(context, \"cms.contentModel\", { rwd: check });\n };\n\n const getModelsAsPlugins = (): CmsModel[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsModelPlugin>(CmsModelPlugin.type)\n /**\n * We need to filter out models that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModel;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map<CmsModel>(plugin => {\n return {\n ...plugin.contentModel,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const modelsGet = async (modelId: string): Promise<CmsModel> => {\n const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);\n\n if (pluginModel) {\n return pluginModel;\n }\n\n const model = await storageOperations.models.get({\n tenant: getTenant().id,\n locale: getLocale().code,\n modelId\n });\n\n if (!model) {\n throw new NotFoundError(`Content model \"${modelId}\" was not found!`);\n }\n\n return {\n ...model,\n tenant: model.tenant || getTenant().id,\n locale: model.locale || getLocale().code\n };\n };\n\n const modelsList = async (): Promise<CmsModel[]> => {\n const databaseModels = await loaders.listModels.load(\"listModels\");\n\n const pluginsModels = getModelsAsPlugins();\n\n return databaseModels.concat(pluginsModels);\n };\n\n const listModels = async () => {\n const permission = await checkModelPermissions(\"r\");\n const models = await modelsList();\n return utils.filterAsync(models, async model => {\n if (!utils.validateOwnership(context, permission, model)) {\n return false;\n }\n return utils.validateModelAccess(context, model);\n });\n };\n\n const getModel = async (modelId: string): Promise<CmsModel> => {\n const permission = await checkModelPermissions(\"r\");\n\n const model = await modelsGet(modelId);\n\n utils.checkOwnership(context, permission, model);\n await utils.checkModelAccess(context, model);\n\n return model;\n };\n\n const getModelManager: CmsModelContext[\"getModelManager\"] = async (\n target\n ): Promise<CmsModelManager> => {\n const modelId = typeof target === \"string\" ? target : target.modelId;\n if (managers.has(modelId)) {\n return managers.get(modelId) as CmsModelManager;\n }\n const models = await modelsList();\n const model = models.find(m => m.modelId === modelId);\n if (!model) {\n throw new NotFoundError(`There is no content model \"${modelId}\".`);\n }\n return await updateManager(context, model);\n };\n\n const onBeforeModelCreate = createTopic<BeforeModelCreateTopicParams>();\n const onAfterModelCreate = createTopic<AfterModelCreateTopicParams>();\n const onBeforeModelCreateFrom = createTopic<BeforeModelCreateFromTopicParams>();\n const onAfterModelCreateFrom = createTopic<AfterModelCreateFromTopicParams>();\n const onBeforeModelUpdate = createTopic<BeforeModelUpdateTopicParams>();\n const onAfterModelUpdate = createTopic<AfterModelUpdateTopicParams>();\n const onBeforeModelDelete = createTopic<BeforeModelDeleteTopicParams>();\n const onAfterModelDelete = createTopic<AfterModelDeleteTopicParams>();\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeModelCreate({\n onBeforeModelCreate,\n onBeforeModelCreateFrom,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelCreate({\n context,\n onAfterModelCreate\n });\n assignBeforeModelUpdate({\n onBeforeModelUpdate,\n plugins: context.plugins,\n storageOperations\n });\n assignAfterModelUpdate({\n context,\n onAfterModelUpdate\n });\n 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 validateLayout(model, fields);\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 validateLayout(model, fields);\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 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeGroupCreate","params","onBeforeCreate","plugins","storageOperations","subscribe","group","slug","trim","groups","list","where","tenant","locale","length","WebinyError","toSlug","name","shortid","generate","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","Error"],"sources":["beforeCreate.ts"],"sourcesContent":["import { BeforeGroupCreateTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { Topic } from \"@webiny/pubsub/types\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { toSlug } from \"~/utils\";\nimport WebinyError from \"@webiny/error\";\nimport shortid from \"shortid\";\n\ninterface AssignBeforeGroupCreateParams {\n onBeforeCreate: Topic<BeforeGroupCreateTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupCreate = (params: AssignBeforeGroupCreateParams) => {\n const { onBeforeCreate, plugins, storageOperations } = params;\n\n onBeforeCreate.subscribe(async params => {\n const { group } = params;\n\n if (group.slug && group.slug.trim()) {\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug: group.slug\n }\n });\n if (groups.length > 0) {\n throw new WebinyError(\n `Cms Group with the slug \"${group.slug}\" already exists.`,\n \"SLUG_ALREADY_EXISTS\"\n );\n }\n } else {\n const slug = toSlug(group.name);\n const groups = await storageOperations.groups.list({\n where: {\n tenant: group.tenant,\n locale: group.locale,\n slug\n }\n });\n\n if (groups.length === 0) {\n group.slug = slug;\n } else {\n group.slug = `${slug}-${shortid.generate()}`;\n }\n }\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(\n `Cannot create \"${group.slug}\" content model group because one is already registered via a plugin.`\n );\n }\n });\n};\n"],"mappings":";;;;;;;;;AAEA;;AAEA;;AACA;;AACA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,cAAF;IAAkBC,OAAlB;IAA2BC;EAA3B,IAAiDH,MAAvD;EAEAC,cAAc,CAACG,SAAf,CAAyB,MAAMJ,MAAN,IAAgB;IACrC,MAAM;MAAEK;IAAF,IAAYL,MAAlB;;IAEA,IAAIK,KAAK,CAACC,IAAN,IAAcD,KAAK,CAACC,IAAN,CAAWC,IAAX,EAAlB,EAAqC;MACjC,MAAMC,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAlB,CAAyBC,IAAzB,CAA8B;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEN,KAAK,CAACM,MADX;UAEHC,MAAM,EAAEP,KAAK,CAACO,MAFX;UAGHN,IAAI,EAAED,KAAK,CAACC;QAHT;MADwC,CAA9B,CAArB;;MAOA,IAAIE,MAAM,CAACK,MAAP,GAAgB,CAApB,EAAuB;QACnB,MAAM,IAAIC,cAAJ,CACD,4BAA2BT,KAAK,CAACC,IAAK,mBADrC,EAEF,qBAFE,CAAN;MAIH;IACJ,CAdD,MAcO;MACH,MAAMA,IAAI,GAAG,IAAAS,aAAA,EAAOV,KAAK,CAACW,IAAb,CAAb;MACA,MAAMR,MAAM,GAAG,MAAML,iBAAiB,CAACK,MAAlB,CAAyBC,IAAzB,CAA8B;QAC/CC,KAAK,EAAE;UACHC,MAAM,EAAEN,KAAK,CAACM,MADX;UAEHC,MAAM,EAAEP,KAAK,CAACO,MAFX;UAGHN;QAHG;MADwC,CAA9B,CAArB;;MAQA,IAAIE,MAAM,CAACK,MAAP,KAAkB,CAAtB,EAAyB;QACrBR,KAAK,CAACC,IAAN,GAAaA,IAAb;MACH,CAFD,MAEO;QACHD,KAAK,CAACC,IAAN,GAAc,GAAEA,IAAK,IAAGW,gBAAA,CAAQC,QAAR,EAAmB,EAA3C;MACH;IACJ;;IAED,MAAMC,WAAW,GAAGjB,OAAO,CACtBkB,MADe,CACQC,8BAAA,CAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBnB,IAAvB,KAAgCD,KAAK,CAACC,IAFpC,CAApB;;IAIA,IAAIa,WAAJ,EAAiB;MACb,MAAM,IAAIO,KAAJ,CACD,kBAAiBrB,KAAK,CAACC,IAAK,uEAD3B,CAAN;IAGH;EACJ,CA3CD;AA4CH,CA/CM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeGroupDelete","params","onBeforeDelete","plugins","storageOperations","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error","models","list","where","tenant","locale","items","filter","model","id","length","WebinyError"],"sources":["beforeDelete.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { BeforeGroupDeleteTopicParams, HeadlessCmsStorageOperations } from \"~/types\";\nimport { PluginsContainer } from \"@webiny/plugins\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport WebinyError from \"@webiny/error\";\n\ninterface AssignBeforeGroupDeleteParams {\n onBeforeDelete: Topic<BeforeGroupDeleteTopicParams>;\n plugins: PluginsContainer;\n storageOperations: HeadlessCmsStorageOperations;\n}\nexport const assignBeforeGroupDelete = (params: AssignBeforeGroupDeleteParams) => {\n const { onBeforeDelete, plugins, storageOperations } = params;\n\n onBeforeDelete.subscribe(async params => {\n const { group } = params;\n\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n\n if (groupPlugin) {\n throw new Error(`Cms Groups defined via plugins cannot be deleted.`);\n }\n\n const models = await storageOperations.models.list({\n where: {\n tenant: group.tenant,\n locale: group.locale\n }\n });\n const items = models.filter(model => {\n return model.group.id === group.id;\n });\n if (items.length > 0) {\n throw new WebinyError(\n \"Cannot delete this group because there are models that belong to it.\",\n \"BEFORE_DELETE_ERROR\",\n {\n group\n }\n );\n }\n });\n};\n"],"mappings":";;;;;;;;;AAGA;;AACA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,cAAF;IAAkBC,OAAlB;IAA2BC;EAA3B,IAAiDH,MAAvD;EAEAC,cAAc,CAACG,SAAf,CAAyB,MAAMJ,MAAN,IAAgB;IACrC,MAAM;MAAEK;IAAF,IAAYL,MAAlB;IAEA,MAAMM,WAAW,GAAGJ,OAAO,CACtBK,MADe,CACQC,8BAAA,CAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBC,IAAvB,KAAgCR,KAAK,CAACQ,IAFpC,CAApB;;IAIA,IAAIP,WAAJ,EAAiB;MACb,MAAM,IAAIQ,KAAJ,CAAW,mDAAX,CAAN;IACH;;IAED,MAAMC,MAAM,GAAG,MAAMZ,iBAAiB,CAACY,MAAlB,CAAyBC,IAAzB,CAA8B;MAC/CC,KAAK,EAAE;QACHC,MAAM,EAAEb,KAAK,CAACa,MADX;QAEHC,MAAM,EAAEd,KAAK,CAACc;MAFX;IADwC,CAA9B,CAArB;IAMA,MAAMC,KAAK,GAAGL,MAAM,CAACM,MAAP,CAAcC,KAAK,IAAI;MACjC,OAAOA,KAAK,CAACjB,KAAN,CAAYkB,EAAZ,KAAmBlB,KAAK,CAACkB,EAAhC;IACH,CAFa,CAAd;;IAGA,IAAIH,KAAK,CAACI,MAAN,GAAe,CAAnB,EAAsB;MAClB,MAAM,IAAIC,cAAJ,CACF,sEADE,EAEF,qBAFE,EAGF;QACIpB;MADJ,CAHE,CAAN;IAOH;EACJ,CA7BD;AA8BH,CAjCM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["assignBeforeGroupUpdate","params","onBeforeUpdate","plugins","subscribe","group","groupPlugin","byType","CmsGroupPlugin","type","find","item","contentModelGroup","slug","Error"],"sources":["beforeUpdate.ts"],"sourcesContent":["import { Topic } from \"@webiny/pubsub/types\";\nimport { BeforeGroupUpdateTopicParams } from \"~/types\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport { PluginsContainer } from \"@webiny/plugins\";\n\ninterface AssignBeforeGroupUpdateParams {\n onBeforeUpdate: Topic<BeforeGroupUpdateTopicParams>;\n plugins: PluginsContainer;\n}\nexport const assignBeforeGroupUpdate = (params: AssignBeforeGroupUpdateParams) => {\n const { onBeforeUpdate, plugins } = params;\n\n onBeforeUpdate.subscribe(({ group }) => {\n const groupPlugin = plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n .find(item => item.contentModelGroup.slug === group.slug);\n if (!groupPlugin) {\n return;\n }\n throw new Error(`Cms Groups defined via plugins cannot be updated.`);\n });\n};\n"],"mappings":";;;;;;;AAEA;;AAOO,MAAMA,uBAAuB,GAAIC,MAAD,IAA2C;EAC9E,MAAM;IAAEC,cAAF;IAAkBC;EAAlB,IAA8BF,MAApC;EAEAC,cAAc,CAACE,SAAf,CAAyB,CAAC;IAAEC;EAAF,CAAD,KAAe;IACpC,MAAMC,WAAW,GAAGH,OAAO,CACtBI,MADe,CACQC,8BAAA,CAAeC,IADvB,EAEfC,IAFe,CAEVC,IAAI,IAAIA,IAAI,CAACC,iBAAL,CAAuBC,IAAvB,KAAgCR,KAAK,CAACQ,IAFpC,CAApB;;IAGA,IAAI,CAACP,WAAL,EAAkB;MACd;IACH;;IACD,MAAM,IAAIQ,KAAJ,CAAW,mDAAX,CAAN;EACH,CARD;AASH,CAZM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["CreateContentModelGroupModel","withFields","name","string","validation","create","slug","description","icon","UpdateContentModelGroupModel","createModelGroupsCrud","params","getTenant","getIdentity","getLocale","storageOperations","context","dataLoaders","listGroups","DataLoader","tenant","id","locale","code","pluginsGroups","getGroupsAsPlugins","map","group","groups","list","where","concat","clearGroupsCache","loader","Object","values","clearAll","plugins","byType","CmsGroupPlugin","type","filter","plugin","t","l","contentModelGroup","webinyVersion","WEBINY_VERSION","checkPermissions","check","utils","rwd","groupsGet","load","find","g","NotFoundError","groupsList","ex","WebinyError","message","data","onBeforeCreate","createTopic","onAfterCreate","onBeforeUpdate","onAfterUpdate","onBeforeDelete","onAfterDelete","assignBeforeGroupCreate","assignBeforeGroupUpdate","assignBeforeGroupDelete","onBeforeGroupCreate","onAfterGroupCreate","onBeforeGroupUpdate","onAfterGroupUpdate","onBeforeGroupDelete","onAfterGroupDelete","getGroup","permission","checkOwnership","validateGroupAccess","response","validateOwnership","createGroup","inputData","createdData","populate","toSlug","validate","input","toJSON","identity","mdbid","createdOn","Date","toISOString","savedOn","createdBy","displayName","publish","result","updateGroup","original","updatedDataJson","onlyDirty","keys","length","updatedGroup","update","error","deleteGroup","delete"],"sources":["contentModelGroup.crud.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { withFields, string } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\n/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\nimport {\n CmsGroupContext,\n CmsGroupListParams,\n CmsGroupPermission,\n CmsGroup,\n CmsContext,\n HeadlessCmsStorageOperations,\n CmsGroupCreateInput,\n BeforeGroupCreateTopicParams,\n AfterGroupCreateTopicParams,\n BeforeGroupUpdateTopicParams,\n AfterGroupUpdateTopicParams,\n BeforeGroupDeleteTopicParams,\n AfterGroupDeleteTopicParams\n} from \"~/types\";\nimport * as utils from \"~/utils\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport WebinyError from \"@webiny/error\";\nimport { CmsGroupPlugin } from \"~/content/plugins/CmsGroupPlugin\";\nimport { Tenant } from \"@webiny/api-tenancy/types\";\nimport { I18NLocale } from \"@webiny/api-i18n/types\";\nimport { SecurityIdentity } from \"@webiny/api-security/types\";\nimport { createTopic } from \"@webiny/pubsub\";\nimport { assignBeforeGroupUpdate } from \"~/content/plugins/crud/contentModelGroup/beforeUpdate\";\nimport { assignBeforeGroupCreate } from \"~/content/plugins/crud/contentModelGroup/beforeCreate\";\nimport { assignBeforeGroupDelete } from \"~/content/plugins/crud/contentModelGroup/beforeDelete\";\nimport DataLoader from \"dataloader\";\n\nconst CreateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"required,maxLength:100\") }),\n slug: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"required,maxLength:255\") })\n})();\n\nconst UpdateContentModelGroupModel = withFields({\n name: string({ validation: validation.create(\"maxLength:100\") }),\n description: string({ validation: validation.create(\"maxLength:255\") }),\n icon: string({ validation: validation.create(\"maxLength:255\") })\n})();\n\nexport interface CreateModelGroupsCrudParams {\n getTenant: () => Tenant;\n getLocale: () => I18NLocale;\n storageOperations: HeadlessCmsStorageOperations;\n context: CmsContext;\n getIdentity: () => SecurityIdentity;\n}\nexport const createModelGroupsCrud = (params: CreateModelGroupsCrudParams): CmsGroupContext => {\n const { getTenant, getIdentity, getLocale, storageOperations, context } = params;\n\n const dataLoaders = {\n listGroups: new DataLoader(async () => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n const pluginsGroups = getGroupsAsPlugins().map(group => {\n return {\n ...group,\n tenant: group.tenant || tenant,\n locale: group.locale || locale\n };\n });\n\n const groups = await storageOperations.groups.list({\n where: {\n tenant: getTenant().id,\n locale: getLocale().code\n }\n });\n\n return [groups.concat(pluginsGroups)];\n })\n };\n\n const clearGroupsCache = (): void => {\n for (const loader of Object.values(dataLoaders)) {\n loader.clearAll();\n }\n };\n\n const getGroupsAsPlugins = (): CmsGroup[] => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n\n return (\n context.plugins\n .byType<CmsGroupPlugin>(CmsGroupPlugin.type)\n /**\n * We need to filter out groups that are not for this tenant or locale.\n * If it does not have tenant or locale define, it is for every locale and tenant\n */\n .filter(plugin => {\n const { tenant: t, locale: l } = plugin.contentModelGroup;\n if (t && t !== tenant) {\n return false;\n } else if (l && l !== locale) {\n return false;\n }\n return true;\n })\n .map(plugin => {\n return {\n ...plugin.contentModelGroup,\n tenant,\n locale,\n webinyVersion: context.WEBINY_VERSION\n };\n })\n );\n };\n\n const checkPermissions = (check: string): Promise<CmsGroupPermission> => {\n return utils.checkPermissions(context, \"cms.contentModelGroup\", { rwd: check });\n };\n\n const groupsGet = async (id: string) => {\n const groups = await dataLoaders.listGroups.load(\"listGroups\");\n\n const group = groups.find(g => g.id === id);\n\n if (!group) {\n throw new NotFoundError(`Cms Group \"${id}\" was not found!`);\n }\n return group;\n };\n\n const groupsList = async (params: CmsGroupListParams) => {\n const { where } = params || {};\n\n try {\n return await dataLoaders.listGroups.load(\"listGroups\");\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"LIST_ERROR\", {\n ...(ex.data || {}),\n where\n });\n }\n };\n\n const onBeforeCreate = createTopic<BeforeGroupCreateTopicParams>();\n const onAfterCreate = createTopic<AfterGroupCreateTopicParams>();\n const onBeforeUpdate = createTopic<BeforeGroupUpdateTopicParams>();\n const onAfterUpdate = createTopic<AfterGroupUpdateTopicParams>();\n const onBeforeDelete = createTopic<BeforeGroupDeleteTopicParams>();\n const onAfterDelete = createTopic<AfterGroupDeleteTopicParams>();\n\n /**\n * We need to assign some default behaviors.\n */\n assignBeforeGroupCreate({\n onBeforeCreate,\n plugins: context.plugins,\n storageOperations\n });\n assignBeforeGroupUpdate({\n onBeforeUpdate,\n plugins: context.plugins\n });\n assignBeforeGroupDelete({\n onBeforeDelete,\n plugins: context.plugins,\n storageOperations\n });\n\n return {\n onBeforeGroupCreate: onBeforeCreate,\n onAfterGroupCreate: onAfterCreate,\n onBeforeGroupUpdate: onBeforeUpdate,\n onAfterGroupUpdate: onAfterUpdate,\n onBeforeGroupDelete: onBeforeDelete,\n onAfterGroupDelete: onAfterDelete,\n clearGroupsCache,\n getGroup: async id => {\n const permission = await checkPermissions(\"r\");\n\n const group = await groupsGet(id);\n utils.checkOwnership(context, permission, group);\n utils.validateGroupAccess(context, permission, group);\n\n return group;\n },\n listGroups: async params => {\n const { where } = params || {};\n\n const { tenant, locale } = where || {};\n const permission = await checkPermissions(\"r\");\n\n const response = await groupsList({\n ...(params || {}),\n where: {\n ...(where || {}),\n tenant: tenant || getTenant().id,\n locale: locale || getLocale().code\n }\n });\n\n return response.filter(group => {\n if (!utils.validateOwnership(context, permission, group)) {\n return false;\n }\n return utils.validateGroupAccess(context, permission, group);\n });\n },\n createGroup: async inputData => {\n await checkPermissions(\"w\");\n\n const createdData = new CreateContentModelGroupModel().populate({\n ...inputData,\n slug: inputData.slug ? utils.toSlug(inputData.slug) : \"\",\n description: inputData.description || \"\"\n });\n await createdData.validate();\n const input: CmsGroupCreateInput & { slug: string; description: string } =\n await createdData.toJSON();\n\n const identity = getIdentity();\n\n const id = mdbid();\n const group: CmsGroup = {\n ...input,\n id,\n tenant: getTenant().id,\n locale: getLocale().code,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n },\n webinyVersion: context.WEBINY_VERSION\n };\n try {\n await onBeforeCreate.publish({\n group\n });\n\n const result = await storageOperations.groups.create({\n group\n });\n\n clearGroupsCache();\n\n await onAfterCreate.publish({\n group: result\n });\n\n return group;\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not save data model group.\",\n ex.code || \"ERROR_ON_CREATE\",\n {\n ...(ex.data || {}),\n group,\n input\n }\n );\n }\n },\n updateGroup: async (id, inputData) => {\n const permission = await checkPermissions(\"w\");\n\n const original = await groupsGet(id);\n\n utils.checkOwnership(context, permission, original);\n\n const input = new UpdateContentModelGroupModel().populate(inputData);\n await input.validate();\n\n const updatedDataJson: Partial<CmsGroup> = await input.toJSON({\n onlyDirty: true\n });\n\n /**\n * No need to continue if no values were changed\n */\n if (Object.keys(updatedDataJson).length === 0) {\n return original;\n }\n\n const group: CmsGroup = {\n ...original,\n ...updatedDataJson,\n locale: getLocale().code,\n tenant: getTenant().id,\n savedOn: new Date().toISOString()\n };\n\n try {\n await onBeforeUpdate.publish({\n original,\n group\n });\n\n const updatedGroup = await storageOperations.groups.update({\n group\n });\n clearGroupsCache();\n\n await onAfterUpdate.publish({\n original,\n group: updatedGroup\n });\n\n return updatedGroup;\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"UPDATE_ERROR\", {\n error: ex,\n original,\n group,\n input\n });\n }\n },\n deleteGroup: async id => {\n const permission = await checkPermissions(\"d\");\n\n const group = await groupsGet(id);\n\n utils.checkOwnership(context, permission, group);\n\n try {\n await onBeforeDelete.publish({\n group\n });\n\n await storageOperations.groups.delete({ group });\n clearGroupsCache();\n\n await onAfterDelete.publish({\n group\n });\n } catch (ex) {\n throw new WebinyError(ex.message, ex.code || \"DELETE_ERROR\", {\n ...(ex.data || {}),\n id\n });\n }\n\n return true;\n }\n };\n};\n"],"mappings":";;;;;;;;;;;AAIA;;AACA;;AAKA;;AAgBA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,4BAA4B,GAAG,IAAAC,kBAAA,EAAW;EAC5CC,IAAI,EAAE,IAAAC,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,wBAAlB;EAAd,CAAP,CADsC;EAE5CC,IAAI,EAAE,IAAAH,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,eAAlB;EAAd,CAAP,CAFsC;EAG5CE,WAAW,EAAE,IAAAJ,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,eAAlB;EAAd,CAAP,CAH+B;EAI5CG,IAAI,EAAE,IAAAL,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,wBAAlB;EAAd,CAAP;AAJsC,CAAX,GAArC;AAOA,MAAMI,4BAA4B,GAAG,IAAAR,kBAAA,EAAW;EAC5CC,IAAI,EAAE,IAAAC,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,eAAlB;EAAd,CAAP,CADsC;EAE5CE,WAAW,EAAE,IAAAJ,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,eAAlB;EAAd,CAAP,CAF+B;EAG5CG,IAAI,EAAE,IAAAL,cAAA,EAAO;IAAEC,UAAU,EAAEA,sBAAA,CAAWC,MAAX,CAAkB,eAAlB;EAAd,CAAP;AAHsC,CAAX,GAArC;;AAaO,MAAMK,qBAAqB,GAAIC,MAAD,IAA0D;EAC3F,MAAM;IAAEC,SAAF;IAAaC,WAAb;IAA0BC,SAA1B;IAAqCC,iBAArC;IAAwDC;EAAxD,IAAoEL,MAA1E;EAEA,MAAMM,WAAW,GAAG;IAChBC,UAAU,EAAE,IAAIC,mBAAJ,CAAe,YAAY;MACnC,MAAMC,MAAM,GAAGR,SAAS,GAAGS,EAA3B;MACA,MAAMC,MAAM,GAAGR,SAAS,GAAGS,IAA3B;MAEA,MAAMC,aAAa,GAAGC,kBAAkB,GAAGC,GAArB,CAAyBC,KAAK,IAAI;QACpD,uCACOA,KADP;UAEIP,MAAM,EAAEO,KAAK,CAACP,MAAN,IAAgBA,MAF5B;UAGIE,MAAM,EAAEK,KAAK,CAACL,MAAN,IAAgBA;QAH5B;MAKH,CANqB,CAAtB;MAQA,MAAMM,MAAM,GAAG,MAAMb,iBAAiB,CAACa,MAAlB,CAAyBC,IAAzB,CAA8B;QAC/CC,KAAK,EAAE;UACHV,MAAM,EAAER,SAAS,GAAGS,EADjB;UAEHC,MAAM,EAAER,SAAS,GAAGS;QAFjB;MADwC,CAA9B,CAArB;MAOA,OAAO,CAACK,MAAM,CAACG,MAAP,CAAcP,aAAd,CAAD,CAAP;IACH,CApBW;EADI,CAApB;;EAwBA,MAAMQ,gBAAgB,GAAG,MAAY;IACjC,KAAK,MAAMC,MAAX,IAAqBC,MAAM,CAACC,MAAP,CAAclB,WAAd,CAArB,EAAiD;MAC7CgB,MAAM,CAACG,QAAP;IACH;EACJ,CAJD;;EAMA,MAAMX,kBAAkB,GAAG,MAAkB;IACzC,MAAML,MAAM,GAAGR,SAAS,GAAGS,EAA3B;IACA,MAAMC,MAAM,GAAGR,SAAS,GAAGS,IAA3B;IAEA,OACIP,OAAO,CAACqB,OAAR,CACKC,MADL,CAC4BC,8BAAA,CAAeC,IAD3C;IAEI;AAChB;AACA;AACA;IALY,CAMKC,MANL,CAMYC,MAAM,IAAI;MACd,MAAM;QAAEtB,MAAM,EAAEuB,CAAV;QAAarB,MAAM,EAAEsB;MAArB,IAA2BF,MAAM,CAACG,iBAAxC;;MACA,IAAIF,CAAC,IAAIA,CAAC,KAAKvB,MAAf,EAAuB;QACnB,OAAO,KAAP;MACH,CAFD,MAEO,IAAIwB,CAAC,IAAIA,CAAC,KAAKtB,MAAf,EAAuB;QAC1B,OAAO,KAAP;MACH;;MACD,OAAO,IAAP;IACH,CAdL,EAeKI,GAfL,CAeSgB,MAAM,IAAI;MACX,uCACOA,MAAM,CAACG,iBADd;QAEIzB,MAFJ;QAGIE,MAHJ;QAIIwB,aAAa,EAAE9B,OAAO,CAAC+B;MAJ3B;IAMH,CAtBL,CADJ;EAyBH,CA7BD;;EA+BA,MAAMC,gBAAgB,GAAIC,KAAD,IAAgD;IACrE,OAAOC,KAAK,CAACF,gBAAN,CAAuBhC,OAAvB,EAAgC,uBAAhC,EAAyD;MAAEmC,GAAG,EAAEF;IAAP,CAAzD,CAAP;EACH,CAFD;;EAIA,MAAMG,SAAS,GAAG,MAAO/B,EAAP,IAAsB;IACpC,MAAMO,MAAM,GAAG,MAAMX,WAAW,CAACC,UAAZ,CAAuBmC,IAAvB,CAA4B,YAA5B,CAArB;IAEA,MAAM1B,KAAK,GAAGC,MAAM,CAAC0B,IAAP,CAAYC,CAAC,IAAIA,CAAC,CAAClC,EAAF,KAASA,EAA1B,CAAd;;IAEA,IAAI,CAACM,KAAL,EAAY;MACR,MAAM,IAAI6B,6BAAJ,CAAmB,cAAanC,EAAG,kBAAnC,CAAN;IACH;;IACD,OAAOM,KAAP;EACH,CATD;;EAWA,MAAM8B,UAAU,GAAG,MAAO9C,MAAP,IAAsC;IACrD,MAAM;MAAEmB;IAAF,IAAYnB,MAAM,IAAI,EAA5B;;IAEA,IAAI;MACA,OAAO,MAAMM,WAAW,CAACC,UAAZ,CAAuBmC,IAAvB,CAA4B,YAA5B,CAAb;IACH,CAFD,CAEE,OAAOK,EAAP,EAAW;MACT,MAAM,IAAIC,cAAJ,CAAgBD,EAAE,CAACE,OAAnB,EAA4BF,EAAE,CAACnC,IAAH,IAAW,YAAvC,kCACEmC,EAAE,CAACG,IAAH,IAAW,EADb;QAEF/B;MAFE,GAAN;IAIH;EACJ,CAXD;;EAaA,MAAMgC,cAAc,GAAG,IAAAC,mBAAA,GAAvB;EACA,MAAMC,aAAa,GAAG,IAAAD,mBAAA,GAAtB;EACA,MAAME,cAAc,GAAG,IAAAF,mBAAA,GAAvB;EACA,MAAMG,aAAa,GAAG,IAAAH,mBAAA,GAAtB;EACA,MAAMI,cAAc,GAAG,IAAAJ,mBAAA,GAAvB;EACA,MAAMK,aAAa,GAAG,IAAAL,mBAAA,GAAtB;EAEA;AACJ;AACA;;EACI,IAAAM,qCAAA,EAAwB;IACpBP,cADoB;IAEpBzB,OAAO,EAAErB,OAAO,CAACqB,OAFG;IAGpBtB;EAHoB,CAAxB;EAKA,IAAAuD,qCAAA,EAAwB;IACpBL,cADoB;IAEpB5B,OAAO,EAAErB,OAAO,CAACqB;EAFG,CAAxB;EAIA,IAAAkC,qCAAA,EAAwB;IACpBJ,cADoB;IAEpB9B,OAAO,EAAErB,OAAO,CAACqB,OAFG;IAGpBtB;EAHoB,CAAxB;EAMA,OAAO;IACHyD,mBAAmB,EAAEV,cADlB;IAEHW,kBAAkB,EAAET,aAFjB;IAGHU,mBAAmB,EAAET,cAHlB;IAIHU,kBAAkB,EAAET,aAJjB;IAKHU,mBAAmB,EAAET,cALlB;IAMHU,kBAAkB,EAAET,aANjB;IAOHpC,gBAPG;IAQH8C,QAAQ,EAAE,MAAMzD,EAAN,IAAY;MAClB,MAAM0D,UAAU,GAAG,MAAM/B,gBAAgB,CAAC,GAAD,CAAzC;MAEA,MAAMrB,KAAK,GAAG,MAAMyB,SAAS,CAAC/B,EAAD,CAA7B;MACA6B,KAAK,CAAC8B,cAAN,CAAqBhE,OAArB,EAA8B+D,UAA9B,EAA0CpD,KAA1C;MACAuB,KAAK,CAAC+B,mBAAN,CAA0BjE,OAA1B,EAAmC+D,UAAnC,EAA+CpD,KAA/C;MAEA,OAAOA,KAAP;IACH,CAhBE;IAiBHT,UAAU,EAAE,MAAMP,MAAN,IAAgB;MACxB,MAAM;QAAEmB;MAAF,IAAYnB,MAAM,IAAI,EAA5B;MAEA,MAAM;QAAES,MAAF;QAAUE;MAAV,IAAqBQ,KAAK,IAAI,EAApC;MACA,MAAMiD,UAAU,GAAG,MAAM/B,gBAAgB,CAAC,GAAD,CAAzC;MAEA,MAAMkC,QAAQ,GAAG,MAAMzB,UAAU,iCACzB9C,MAAM,IAAI,EADe;QAE7BmB,KAAK,kCACGA,KAAK,IAAI,EADZ;UAEDV,MAAM,EAAEA,MAAM,IAAIR,SAAS,GAAGS,EAF7B;UAGDC,MAAM,EAAEA,MAAM,IAAIR,SAAS,GAAGS;QAH7B;MAFwB,GAAjC;MASA,OAAO2D,QAAQ,CAACzC,MAAT,CAAgBd,KAAK,IAAI;QAC5B,IAAI,CAACuB,KAAK,CAACiC,iBAAN,CAAwBnE,OAAxB,EAAiC+D,UAAjC,EAA6CpD,KAA7C,CAAL,EAA0D;UACtD,OAAO,KAAP;QACH;;QACD,OAAOuB,KAAK,CAAC+B,mBAAN,CAA0BjE,OAA1B,EAAmC+D,UAAnC,EAA+CpD,KAA/C,CAAP;MACH,CALM,CAAP;IAMH,CAtCE;IAuCHyD,WAAW,EAAE,MAAMC,SAAN,IAAmB;MAC5B,MAAMrC,gBAAgB,CAAC,GAAD,CAAtB;MAEA,MAAMsC,WAAW,GAAG,IAAItF,4BAAJ,GAAmCuF,QAAnC,iCACbF,SADa;QAEhB/E,IAAI,EAAE+E,SAAS,CAAC/E,IAAV,GAAiB4C,KAAK,CAACsC,MAAN,CAAaH,SAAS,CAAC/E,IAAvB,CAAjB,GAAgD,EAFtC;QAGhBC,WAAW,EAAE8E,SAAS,CAAC9E,WAAV,IAAyB;MAHtB,GAApB;MAKA,MAAM+E,WAAW,CAACG,QAAZ,EAAN;MACA,MAAMC,KAAkE,GACpE,MAAMJ,WAAW,CAACK,MAAZ,EADV;MAGA,MAAMC,QAAQ,GAAG/E,WAAW,EAA5B;MAEA,MAAMQ,EAAE,GAAG,IAAAwE,cAAA,GAAX;;MACA,MAAMlE,KAAe,mCACd+D,KADc;QAEjBrE,EAFiB;QAGjBD,MAAM,EAAER,SAAS,GAAGS,EAHH;QAIjBC,MAAM,EAAER,SAAS,GAAGS,IAJH;QAKjBuE,SAAS,EAAE,IAAIC,IAAJ,GAAWC,WAAX,EALM;QAMjBC,OAAO,EAAE,IAAIF,IAAJ,GAAWC,WAAX,EANQ;QAOjBE,SAAS,EAAE;UACP7E,EAAE,EAAEuE,QAAQ,CAACvE,EADN;UAEP8E,WAAW,EAAEP,QAAQ,CAACO,WAFf;UAGP3D,IAAI,EAAEoD,QAAQ,CAACpD;QAHR,CAPM;QAYjBM,aAAa,EAAE9B,OAAO,CAAC+B;MAZN,EAArB;;MAcA,IAAI;QACA,MAAMe,cAAc,CAACsC,OAAf,CAAuB;UACzBzE;QADyB,CAAvB,CAAN;QAIA,MAAM0E,MAAM,GAAG,MAAMtF,iBAAiB,CAACa,MAAlB,CAAyBvB,MAAzB,CAAgC;UACjDsB;QADiD,CAAhC,CAArB;QAIAK,gBAAgB;QAEhB,MAAMgC,aAAa,CAACoC,OAAd,CAAsB;UACxBzE,KAAK,EAAE0E;QADiB,CAAtB,CAAN;QAIA,OAAO1E,KAAP;MACH,CAhBD,CAgBE,OAAO+B,EAAP,EAAW;QACT,MAAM,IAAIC,cAAJ,CACFD,EAAE,CAACE,OAAH,IAAc,kCADZ,EAEFF,EAAE,CAACnC,IAAH,IAAW,iBAFT,kCAIMmC,EAAE,CAACG,IAAH,IAAW,EAJjB;UAKElC,KALF;UAME+D;QANF,GAAN;MASH;IACJ,CA/FE;IAgGHY,WAAW,EAAE,OAAOjF,EAAP,EAAWgE,SAAX,KAAyB;MAClC,MAAMN,UAAU,GAAG,MAAM/B,gBAAgB,CAAC,GAAD,CAAzC;MAEA,MAAMuD,QAAQ,GAAG,MAAMnD,SAAS,CAAC/B,EAAD,CAAhC;MAEA6B,KAAK,CAAC8B,cAAN,CAAqBhE,OAArB,EAA8B+D,UAA9B,EAA0CwB,QAA1C;MAEA,MAAMb,KAAK,GAAG,IAAIjF,4BAAJ,GAAmC8E,QAAnC,CAA4CF,SAA5C,CAAd;MACA,MAAMK,KAAK,CAACD,QAAN,EAAN;MAEA,MAAMe,eAAkC,GAAG,MAAMd,KAAK,CAACC,MAAN,CAAa;QAC1Dc,SAAS,EAAE;MAD+C,CAAb,CAAjD;MAIA;AACZ;AACA;;MACY,IAAIvE,MAAM,CAACwE,IAAP,CAAYF,eAAZ,EAA6BG,MAA7B,KAAwC,CAA5C,EAA+C;QAC3C,OAAOJ,QAAP;MACH;;MAED,MAAM5E,KAAe,iDACd4E,QADc,GAEdC,eAFc;QAGjBlF,MAAM,EAAER,SAAS,GAAGS,IAHH;QAIjBH,MAAM,EAAER,SAAS,GAAGS,EAJH;QAKjB4E,OAAO,EAAE,IAAIF,IAAJ,GAAWC,WAAX;MALQ,EAArB;;MAQA,IAAI;QACA,MAAM/B,cAAc,CAACmC,OAAf,CAAuB;UACzBG,QADyB;UAEzB5E;QAFyB,CAAvB,CAAN;QAKA,MAAMiF,YAAY,GAAG,MAAM7F,iBAAiB,CAACa,MAAlB,CAAyBiF,MAAzB,CAAgC;UACvDlF;QADuD,CAAhC,CAA3B;QAGAK,gBAAgB;QAEhB,MAAMkC,aAAa,CAACkC,OAAd,CAAsB;UACxBG,QADwB;UAExB5E,KAAK,EAAEiF;QAFiB,CAAtB,CAAN;QAKA,OAAOA,YAAP;MACH,CAjBD,CAiBE,OAAOlD,EAAP,EAAW;QACT,MAAM,IAAIC,cAAJ,CAAgBD,EAAE,CAACE,OAAnB,EAA4BF,EAAE,CAACnC,IAAH,IAAW,cAAvC,EAAuD;UACzDuF,KAAK,EAAEpD,EADkD;UAEzD6C,QAFyD;UAGzD5E,KAHyD;UAIzD+D;QAJyD,CAAvD,CAAN;MAMH;IACJ,CAtJE;IAuJHqB,WAAW,EAAE,MAAM1F,EAAN,IAAY;MACrB,MAAM0D,UAAU,GAAG,MAAM/B,gBAAgB,CAAC,GAAD,CAAzC;MAEA,MAAMrB,KAAK,GAAG,MAAMyB,SAAS,CAAC/B,EAAD,CAA7B;MAEA6B,KAAK,CAAC8B,cAAN,CAAqBhE,OAArB,EAA8B+D,UAA9B,EAA0CpD,KAA1C;;MAEA,IAAI;QACA,MAAMwC,cAAc,CAACiC,OAAf,CAAuB;UACzBzE;QADyB,CAAvB,CAAN;QAIA,MAAMZ,iBAAiB,CAACa,MAAlB,CAAyBoF,MAAzB,CAAgC;UAAErF;QAAF,CAAhC,CAAN;QACAK,gBAAgB;QAEhB,MAAMoC,aAAa,CAACgC,OAAd,CAAsB;UACxBzE;QADwB,CAAtB,CAAN;MAGH,CAXD,CAWE,OAAO+B,EAAP,EAAW;QACT,MAAM,IAAIC,cAAJ,CAAgBD,EAAE,CAACE,OAAnB,EAA4BF,EAAE,CAACnC,IAAH,IAAW,cAAvC,kCACEmC,EAAE,CAACG,IAAH,IAAW,EADb;UAEFxC;QAFE,GAAN;MAIH;;MAED,OAAO,IAAP;IACH;EAjLE,CAAP;AAmLH,CAxSM"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ContextPlugin } from "@webiny/handler";
|
|
2
|
-
import { CmsContext, HeadlessCmsStorageOperations } from "../../../types";
|
|
3
|
-
export interface CreateContentCrudsParams {
|
|
4
|
-
storageOperations: HeadlessCmsStorageOperations;
|
|
5
|
-
}
|
|
6
|
-
export declare const createContentCruds: (params: CreateContentCrudsParams) => ContextPlugin<CmsContext>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["debug","process","env","DEBUG","createContentCruds","params","storageOperations","ContextPlugin","context","http","request","method","cms","console","log","getLocale","getIdentity","security","getTenant","tenancy","getCurrentTenant","beforeInit","createSystemCrud","createSettingsCrud","createModelGroupsCrud","createModelsCrud","createContentEntryCrud","init"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/handler\";\nimport { CmsContext, HeadlessCmsStorageOperations } from \"~/types\";\nimport { createModelGroupsCrud } from \"~/content/plugins/crud/contentModelGroup.crud\";\nimport { createModelsCrud } from \"~/content/plugins/crud/contentModel.crud\";\nimport { createContentEntryCrud } from \"~/content/plugins/crud/contentEntry.crud\";\nimport { createSystemCrud } from \"~/plugins/crud/system.crud\";\nimport { createSettingsCrud } from \"~/plugins/crud/settings.crud\";\n\nconst debug = process.env.DEBUG === \"true\";\n\nexport interface CreateContentCrudsParams {\n storageOperations: HeadlessCmsStorageOperations;\n}\n\nexport const createContentCruds = (params: CreateContentCrudsParams) => {\n const { storageOperations } = params;\n return new ContextPlugin<CmsContext>(async context => {\n if (context.http?.request?.method === \"OPTIONS\") {\n return;\n }\n\n /**\n * This should never happen in the actual project.\n * It is to make sure that we load setup context before the CRUD init in our internal code.\n */\n if (!context.cms) {\n debug &&\n console.log(\n `Missing initial \"cms\" on the context. Make sure that you set it up before creating Content CRUDs.`\n );\n return;\n }\n\n const getLocale = () => {\n return context.cms.getLocale();\n };\n\n const getIdentity = () => {\n return context.security.getIdentity();\n };\n\n const getTenant = () => {\n return context.tenancy.getCurrentTenant();\n };\n\n if (storageOperations.beforeInit) {\n await storageOperations.beforeInit(context);\n }\n\n context.cms = {\n ...context.cms,\n storageOperations,\n ...createSystemCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createSettingsCrud({\n context,\n getTenant,\n getLocale,\n storageOperations\n }),\n ...createModelGroupsCrud({\n context,\n getTenant,\n getLocale,\n getIdentity,\n storageOperations\n }),\n ...createModelsCrud({\n context,\n getLocale,\n getTenant,\n getIdentity,\n storageOperations\n }),\n ...createContentEntryCrud({\n context,\n getIdentity,\n getTenant,\n storageOperations\n })\n };\n\n if (!storageOperations.init) {\n return;\n }\n await storageOperations.init(context);\n });\n};\n"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,KAAK,GAAGC,OAAO,CAACC,GAAR,CAAYC,KAAZ,KAAsB,MAApC;;AAMO,MAAMC,kBAAkB,GAAIC,MAAD,IAAsC;EACpE,MAAM;IAAEC;EAAF,IAAwBD,MAA9B;EACA,OAAO,IAAIE,sBAAJ,CAA8B,MAAMC,OAAN,IAAiB;IAAA;;IAClD,IAAI,kBAAAA,OAAO,CAACC,IAAR,yFAAcC,OAAd,gFAAuBC,MAAvB,MAAkC,SAAtC,EAAiD;MAC7C;IACH;IAED;AACR;AACA;AACA;;;IACQ,IAAI,CAACH,OAAO,CAACI,GAAb,EAAkB;MACdZ,KAAK,IACDa,OAAO,CAACC,GAAR,CACK,mGADL,CADJ;MAIA;IACH;;IAED,MAAMC,SAAS,GAAG,MAAM;MACpB,OAAOP,OAAO,CAACI,GAAR,CAAYG,SAAZ,EAAP;IACH,CAFD;;IAIA,MAAMC,WAAW,GAAG,MAAM;MACtB,OAAOR,OAAO,CAACS,QAAR,CAAiBD,WAAjB,EAAP;IACH,CAFD;;IAIA,MAAME,SAAS,GAAG,MAAM;MACpB,OAAOV,OAAO,CAACW,OAAR,CAAgBC,gBAAhB,EAAP;IACH,CAFD;;IAIA,IAAId,iBAAiB,CAACe,UAAtB,EAAkC;MAC9B,MAAMf,iBAAiB,CAACe,UAAlB,CAA6Bb,OAA7B,CAAN;IACH;;IAEDA,OAAO,CAACI,GAAR,2FACOJ,OAAO,CAACI,GADf;MAEIN;IAFJ,GAGO,IAAAgB,wBAAA,EAAiB;MAChBd,OADgB;MAEhBU,SAFgB;MAGhBH,SAHgB;MAIhBC,WAJgB;MAKhBV;IALgB,CAAjB,CAHP,GAUO,IAAAiB,4BAAA,EAAmB;MAClBf,OADkB;MAElBU,SAFkB;MAGlBH,SAHkB;MAIlBT;IAJkB,CAAnB,CAVP,GAgBO,IAAAkB,wCAAA,EAAsB;MACrBhB,OADqB;MAErBU,SAFqB;MAGrBH,SAHqB;MAIrBC,WAJqB;MAKrBV;IALqB,CAAtB,CAhBP,GAuBO,IAAAmB,8BAAA,EAAiB;MAChBjB,OADgB;MAEhBO,SAFgB;MAGhBG,SAHgB;MAIhBF,WAJgB;MAKhBV;IALgB,CAAjB,CAvBP,GA8BO,IAAAoB,oCAAA,EAAuB;MACtBlB,OADsB;MAEtBQ,WAFsB;MAGtBE,SAHsB;MAItBZ;IAJsB,CAAvB,CA9BP;;IAsCA,IAAI,CAACA,iBAAiB,CAACqB,IAAvB,EAA6B;MACzB;IACH;;IACD,MAAMrB,iBAAiB,CAACqB,IAAlB,CAAuBnB,OAAvB,CAAN;EACH,CA3EM,CAAP;AA4EH,CA9EM"}
|