@webiny/api-headless-cms 0.0.0-ee-vpcs.549378cf03
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/LICENSE +21 -0
- package/README.md +73 -0
- package/context.d.ts +3 -0
- package/context.js +60 -0
- package/context.js.map +1 -0
- package/crud/contentEntry/afterDelete.d.ts +8 -0
- package/crud/contentEntry/afterDelete.js +41 -0
- package/crud/contentEntry/afterDelete.js.map +1 -0
- package/crud/contentEntry/beforeCreate.d.ts +8 -0
- package/crud/contentEntry/beforeCreate.js +28 -0
- package/crud/contentEntry/beforeCreate.js.map +1 -0
- package/crud/contentEntry/beforeUpdate.d.ts +8 -0
- package/crud/contentEntry/beforeUpdate.js +28 -0
- package/crud/contentEntry/beforeUpdate.js.map +1 -0
- package/crud/contentEntry/entryDataValidation.d.ts +10 -0
- package/crud/contentEntry/entryDataValidation.js +200 -0
- package/crud/contentEntry/entryDataValidation.js.map +1 -0
- package/crud/contentEntry/markLockedFields.d.ts +13 -0
- package/crud/contentEntry/markLockedFields.js +116 -0
- package/crud/contentEntry/markLockedFields.js.map +1 -0
- package/crud/contentEntry/referenceFieldsMapping.d.ts +13 -0
- package/crud/contentEntry/referenceFieldsMapping.js +292 -0
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -0
- package/crud/contentEntry/searchableFields.d.ts +9 -0
- package/crud/contentEntry/searchableFields.js +83 -0
- package/crud/contentEntry/searchableFields.js.map +1 -0
- package/crud/contentEntry.crud.d.ts +13 -0
- package/crud/contentEntry.crud.js +1277 -0
- package/crud/contentEntry.crud.js.map +1 -0
- package/crud/contentModel/afterCreate.d.ts +8 -0
- package/crud/contentModel/afterCreate.js +18 -0
- package/crud/contentModel/afterCreate.js.map +1 -0
- package/crud/contentModel/afterCreateFrom.d.ts +8 -0
- package/crud/contentModel/afterCreateFrom.js +18 -0
- package/crud/contentModel/afterCreateFrom.js.map +1 -0
- package/crud/contentModel/afterDelete.d.ts +8 -0
- package/crud/contentModel/afterDelete.js +18 -0
- package/crud/contentModel/afterDelete.js.map +1 -0
- package/crud/contentModel/afterUpdate.d.ts +8 -0
- package/crud/contentModel/afterUpdate.js +18 -0
- package/crud/contentModel/afterUpdate.js.map +1 -0
- package/crud/contentModel/beforeCreate.d.ts +15 -0
- package/crud/contentModel/beforeCreate.js +194 -0
- package/crud/contentModel/beforeCreate.js.map +1 -0
- package/crud/contentModel/beforeDelete.d.ts +10 -0
- package/crud/contentModel/beforeDelete.js +60 -0
- package/crud/contentModel/beforeDelete.js.map +1 -0
- package/crud/contentModel/beforeUpdate.d.ts +10 -0
- package/crud/contentModel/beforeUpdate.js +37 -0
- package/crud/contentModel/beforeUpdate.js.map +1 -0
- package/crud/contentModel/contentModelManagerFactory.d.ts +2 -0
- package/crud/contentModel/contentModelManagerFactory.js +29 -0
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -0
- package/crud/contentModel/createFieldModels.d.ts +2 -0
- package/crud/contentModel/createFieldModels.js +26 -0
- package/crud/contentModel/createFieldModels.js.map +1 -0
- package/crud/contentModel/createFieldStorageId.d.ts +2 -0
- package/crud/contentModel/createFieldStorageId.js +20 -0
- package/crud/contentModel/createFieldStorageId.js.map +1 -0
- package/crud/contentModel/fieldIdValidation.d.ts +1 -0
- package/crud/contentModel/fieldIdValidation.js +25 -0
- package/crud/contentModel/fieldIdValidation.js.map +1 -0
- package/crud/contentModel/idValidation.d.ts +1 -0
- package/crud/contentModel/idValidation.js +22 -0
- package/crud/contentModel/idValidation.js.map +1 -0
- package/crud/contentModel/models.d.ts +4 -0
- package/crud/contentModel/models.js +192 -0
- package/crud/contentModel/models.js.map +1 -0
- package/crud/contentModel/systemFields.d.ts +1 -0
- package/crud/contentModel/systemFields.js +8 -0
- package/crud/contentModel/systemFields.js.map +1 -0
- package/crud/contentModel/validateLayout.d.ts +2 -0
- package/crud/contentModel/validateLayout.js +36 -0
- package/crud/contentModel/validateLayout.js.map +1 -0
- package/crud/contentModel/validateModel.d.ts +9 -0
- package/crud/contentModel/validateModel.js +32 -0
- package/crud/contentModel/validateModel.js.map +1 -0
- package/crud/contentModel/validateModelFields.d.ts +9 -0
- package/crud/contentModel/validateModelFields.js +371 -0
- package/crud/contentModel/validateModelFields.js.map +1 -0
- package/crud/contentModel.crud.d.ts +12 -0
- package/crud/contentModel.crud.js +650 -0
- package/crud/contentModel.crud.js.map +1 -0
- package/crud/contentModelGroup/beforeCreate.d.ts +10 -0
- package/crud/contentModelGroup/beforeCreate.js +66 -0
- package/crud/contentModelGroup/beforeCreate.js.map +1 -0
- package/crud/contentModelGroup/beforeDelete.d.ts +10 -0
- package/crud/contentModelGroup/beforeDelete.js +48 -0
- package/crud/contentModelGroup/beforeDelete.js.map +1 -0
- package/crud/contentModelGroup/beforeUpdate.d.ts +9 -0
- package/crud/contentModelGroup/beforeUpdate.js +28 -0
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -0
- package/crud/contentModelGroup.crud.d.ts +12 -0
- package/crud/contentModelGroup.crud.js +396 -0
- package/crud/contentModelGroup.crud.js.map +1 -0
- package/crud/index.d.ts +6 -0
- package/crud/index.js +85 -0
- package/crud/index.js.map +1 -0
- package/crud/settings.crud.d.ts +10 -0
- package/crud/settings.crud.js +83 -0
- package/crud/settings.crud.js.map +1 -0
- package/crud/system.crud.d.ts +13 -0
- package/crud/system.crud.js +221 -0
- package/crud/system.crud.js.map +1 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.d.ts +7 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +66 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +239 -0
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.d.ts +11 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +304 -0
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -0
- package/fieldConverters/index.d.ts +4 -0
- package/fieldConverters/index.js +18 -0
- package/fieldConverters/index.js.map +1 -0
- package/graphql/buildSchemaPlugins.d.ts +6 -0
- package/graphql/buildSchemaPlugins.js +27 -0
- package/graphql/buildSchemaPlugins.js.map +1 -0
- package/graphql/graphQLHandlerFactory.d.ts +5 -0
- package/graphql/graphQLHandlerFactory.js +202 -0
- 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/graphql/schema/baseContentSchema.js +76 -0
- package/graphql/schema/baseContentSchema.js.map +1 -0
- package/graphql/schema/contentEntries.d.ts +3 -0
- package/graphql/schema/contentEntries.js +351 -0
- package/graphql/schema/contentEntries.js.map +1 -0
- package/graphql/schema/contentModelGroups.d.ts +3 -0
- package/graphql/schema/contentModelGroups.js +172 -0
- package/graphql/schema/contentModelGroups.js.map +1 -0
- package/graphql/schema/contentModels.d.ts +3 -0
- package/graphql/schema/contentModels.js +300 -0
- package/graphql/schema/contentModels.js.map +1 -0
- package/graphql/schema/createFieldResolvers.d.ts +20 -0
- package/graphql/schema/createFieldResolvers.js +121 -0
- package/graphql/schema/createFieldResolvers.js.map +1 -0
- package/graphql/schema/createManageResolvers.d.ts +12 -0
- package/graphql/schema/createManageResolvers.js +137 -0
- package/graphql/schema/createManageResolvers.js.map +1 -0
- package/graphql/schema/createManageSDL.d.ts +10 -0
- package/graphql/schema/createManageSDL.js +161 -0
- package/graphql/schema/createManageSDL.js.map +1 -0
- package/graphql/schema/createPreviewResolvers.d.ts +12 -0
- package/graphql/schema/createPreviewResolvers.js +58 -0
- package/graphql/schema/createPreviewResolvers.js.map +1 -0
- package/graphql/schema/createReadResolvers.d.ts +12 -0
- package/graphql/schema/createReadResolvers.js +58 -0
- package/graphql/schema/createReadResolvers.js.map +1 -0
- package/graphql/schema/createReadSDL.d.ts +10 -0
- package/graphql/schema/createReadSDL.js +104 -0
- package/graphql/schema/createReadSDL.js.map +1 -0
- package/graphql/schema/resolvers/commonFieldResolvers.d.ts +6 -0
- package/graphql/schema/resolvers/commonFieldResolvers.js +14 -0
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveCreate.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveCreate.js +21 -0
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +21 -0
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveDelete.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveDelete.js +32 -0
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGet.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveGet.js +79 -0
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +21 -0
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +21 -0
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveList.d.ts +4 -0
- package/graphql/schema/resolvers/manage/resolveList.js +21 -0
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolvePublish.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolvePublish.js +21 -0
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.js +21 -0
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.d.ts +7 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +21 -0
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.js +21 -0
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -0
- package/graphql/schema/resolvers/preview/resolveGet.d.ts +4 -0
- package/graphql/schema/resolvers/preview/resolveGet.js +34 -0
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/preview/resolveList.d.ts +4 -0
- package/graphql/schema/resolvers/preview/resolveList.js +21 -0
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -0
- package/graphql/schema/resolvers/read/resolveGet.d.ts +4 -0
- package/graphql/schema/resolvers/read/resolveGet.js +34 -0
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -0
- package/graphql/schema/resolvers/read/resolveList.d.ts +4 -0
- package/graphql/schema/resolvers/read/resolveList.js +21 -0
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -0
- package/graphql/schema/schemaPlugins.d.ts +3 -0
- package/graphql/schema/schemaPlugins.js +111 -0
- 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/graphqlFields/datetime.js +95 -0
- package/graphqlFields/datetime.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +2 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js +234 -0
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.d.ts +3 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +79 -0
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -0
- package/graphqlFields/dynamicZone/index.d.ts +2 -0
- package/graphqlFields/dynamicZone/index.js +21 -0
- package/graphqlFields/dynamicZone/index.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/graphqlFields/helpers.d.ts +6 -0
- package/graphqlFields/helpers.js +49 -0
- package/graphqlFields/helpers.js.map +1 -0
- package/graphqlFields/index.d.ts +2 -0
- package/graphqlFields/index.js +30 -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 +79 -0
- package/graphqlFields/number.js.map +1 -0
- package/graphqlFields/object.d.ts +2 -0
- package/graphqlFields/object.js +275 -0
- package/graphqlFields/object.js.map +1 -0
- package/graphqlFields/ref.d.ts +2 -0
- package/graphqlFields/ref.js +257 -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 -0
- package/index.js +111 -0
- package/index.js.map +1 -0
- package/modelManager/DefaultCmsModelManager.d.ts +14 -0
- package/modelManager/DefaultCmsModelManager.js +64 -0
- package/modelManager/DefaultCmsModelManager.js.map +1 -0
- package/modelManager/index.d.ts +2 -0
- package/modelManager/index.js +20 -0
- package/modelManager/index.js.map +1 -0
- package/package.json +81 -0
- 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/parameters/manual.js +44 -0
- package/parameters/manual.js.map +1 -0
- package/parameters/path.d.ts +2 -0
- package/parameters/path.js +51 -0
- package/parameters/path.js.map +1 -0
- package/plugins/CmsGroupPlugin.d.ts +13 -0
- package/plugins/CmsGroupPlugin.js +30 -0
- package/plugins/CmsGroupPlugin.js.map +1 -0
- package/plugins/CmsModelFieldConverterPlugin.d.ts +14 -0
- package/plugins/CmsModelFieldConverterPlugin.js +17 -0
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -0
- package/plugins/CmsModelPlugin.d.ts +45 -0
- package/plugins/CmsModelPlugin.js +194 -0
- package/plugins/CmsModelPlugin.js.map +1 -0
- package/plugins/CmsParametersPlugin.d.ts +20 -0
- package/plugins/CmsParametersPlugin.js +28 -0
- package/plugins/CmsParametersPlugin.js.map +1 -0
- package/plugins/StorageTransformPlugin.d.ts +31 -0
- package/plugins/StorageTransformPlugin.js +37 -0
- package/plugins/StorageTransformPlugin.js.map +1 -0
- package/plugins/index.d.ts +5 -0
- package/plugins/index.js +70 -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/storage/object.js +127 -0
- package/storage/object.js.map +1 -0
- package/types.d.ts +2600 -0
- package/types.js +459 -0
- package/types.js.map +1 -0
- package/upgrades/5.33.0/index.d.ts +3 -0
- package/upgrades/5.33.0/index.js +182 -0
- package/upgrades/5.33.0/index.js.map +1 -0
- package/upgrades/index.d.ts +1 -0
- package/upgrades/index.js +12 -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/utils/converters/Converter.d.ts +27 -0
- package/utils/converters/Converter.js +71 -0
- package/utils/converters/Converter.js.map +1 -0
- package/utils/converters/ConverterCollection.d.ts +31 -0
- package/utils/converters/ConverterCollection.js +143 -0
- package/utils/converters/ConverterCollection.js.map +1 -0
- package/utils/converters/valueKeyStorageConverter.d.ts +18 -0
- package/utils/converters/valueKeyStorageConverter.js +148 -0
- package/utils/converters/valueKeyStorageConverter.js.map +1 -0
- package/utils/createTypeFromFields.d.ts +15 -0
- package/utils/createTypeFromFields.js +75 -0
- package/utils/createTypeFromFields.js.map +1 -0
- package/utils/createTypeName.d.ts +3 -0
- package/utils/createTypeName.js +30 -0
- package/utils/createTypeName.js.map +1 -0
- package/utils/entryStorage.d.ts +17 -0
- package/utils/entryStorage.js +120 -0
- 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/utils/filterModelFields.d.ts +16 -0
- package/utils/filterModelFields.js +77 -0
- package/utils/filterModelFields.js.map +1 -0
- package/utils/getBaseFieldType.d.ts +4 -0
- package/utils/getBaseFieldType.js +12 -0
- package/utils/getBaseFieldType.js.map +1 -0
- package/utils/getEntryTitle.d.ts +2 -0
- package/utils/getEntryTitle.js +43 -0
- package/utils/getEntryTitle.js.map +1 -0
- package/utils/getSchemaFromFieldPlugins.d.ts +12 -0
- package/utils/getSchemaFromFieldPlugins.js +35 -0
- package/utils/getSchemaFromFieldPlugins.js.map +1 -0
- package/utils/ownership.d.ts +8 -0
- package/utils/ownership.js +41 -0
- package/utils/ownership.js.map +1 -0
- package/utils/permissions.d.ts +7 -0
- package/utils/permissions.js +106 -0
- package/utils/permissions.js.map +1 -0
- package/utils/pluralizedTypeName.d.ts +1 -0
- package/utils/pluralizedTypeName.js +26 -0
- package/utils/pluralizedTypeName.js.map +1 -0
- package/utils/renderFields.d.ts +15 -0
- package/utils/renderFields.js +55 -0
- package/utils/renderFields.js.map +1 -0
- package/utils/renderGetFilterFields.d.ts +10 -0
- package/utils/renderGetFilterFields.js +61 -0
- package/utils/renderGetFilterFields.js.map +1 -0
- package/utils/renderInputFields.d.ts +14 -0
- package/utils/renderInputFields.js +55 -0
- package/utils/renderInputFields.js.map +1 -0
- package/utils/renderListFilterFields.d.ts +11 -0
- package/utils/renderListFilterFields.js +62 -0
- package/utils/renderListFilterFields.js.map +1 -0
- package/utils/renderSortEnum.d.ts +9 -0
- package/utils/renderSortEnum.js +34 -0
- package/utils/renderSortEnum.js.map +1 -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/validators/dateGte.js +37 -0
- package/validators/dateGte.js.map +1 -0
- package/validators/dateLte.d.ts +2 -0
- package/validators/dateLte.js +37 -0
- package/validators/dateLte.js.map +1 -0
- package/validators/dynamicZone.d.ts +2 -0
- package/validators/dynamicZone.js +24 -0
- package/validators/dynamicZone.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 +38 -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/validators/timeGte.js +34 -0
- package/validators/timeGte.js.map +1 -0
- package/validators/timeLte.d.ts +2 -0
- package/validators/timeLte.js +34 -0
- package/validators/timeLte.js.map +1 -0
- package/validators/unique.d.ts +6 -0
- package/validators/unique.js +63 -0
- package/validators/unique.js.map +1 -0
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createModelsCrud = void 0;
|
|
9
|
+
|
|
10
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
11
|
+
|
|
12
|
+
var _dataloader = _interopRequireDefault(require("dataloader"));
|
|
13
|
+
|
|
14
|
+
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
15
|
+
|
|
16
|
+
var _contentModelManagerFactory = require("./contentModel/contentModelManagerFactory");
|
|
17
|
+
|
|
18
|
+
var _models = require("./contentModel/models");
|
|
19
|
+
|
|
20
|
+
var _createFieldModels = require("./contentModel/createFieldModels");
|
|
21
|
+
|
|
22
|
+
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
23
|
+
|
|
24
|
+
var _pubsub = require("@webiny/pubsub");
|
|
25
|
+
|
|
26
|
+
var _beforeCreate = require("./contentModel/beforeCreate");
|
|
27
|
+
|
|
28
|
+
var _beforeUpdate = require("./contentModel/beforeUpdate");
|
|
29
|
+
|
|
30
|
+
var _beforeDelete = require("./contentModel/beforeDelete");
|
|
31
|
+
|
|
32
|
+
var _afterCreate = require("./contentModel/afterCreate");
|
|
33
|
+
|
|
34
|
+
var _afterUpdate = require("./contentModel/afterUpdate");
|
|
35
|
+
|
|
36
|
+
var _afterDelete = require("./contentModel/afterDelete");
|
|
37
|
+
|
|
38
|
+
var _afterCreateFrom = require("./contentModel/afterCreateFrom");
|
|
39
|
+
|
|
40
|
+
var _CmsModelPlugin = require("../plugins/CmsModelPlugin");
|
|
41
|
+
|
|
42
|
+
var _permissions = require("../utils/permissions");
|
|
43
|
+
|
|
44
|
+
var _filterAsync = require("../utils/filterAsync");
|
|
45
|
+
|
|
46
|
+
var _ownership = require("../utils/ownership");
|
|
47
|
+
|
|
48
|
+
var _access = require("../utils/access");
|
|
49
|
+
|
|
50
|
+
var _validateModelFields = require("./contentModel/validateModelFields");
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Given a model, return an array of tags ensuring the `type` tag is set.
|
|
54
|
+
*/
|
|
55
|
+
const ensureTypeTag = model => {
|
|
56
|
+
// Let's make sure we have a `type` tag assigned.
|
|
57
|
+
// If `type` tag is not set, set it to a default one (`model`).
|
|
58
|
+
const tags = model.tags || [];
|
|
59
|
+
|
|
60
|
+
if (!tags.some(tag => tag.startsWith("type:"))) {
|
|
61
|
+
tags.push("type:model");
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return tags;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const createModelsCrud = params => {
|
|
68
|
+
const {
|
|
69
|
+
getTenant,
|
|
70
|
+
getIdentity,
|
|
71
|
+
getLocale,
|
|
72
|
+
storageOperations,
|
|
73
|
+
context
|
|
74
|
+
} = params;
|
|
75
|
+
const loaders = {
|
|
76
|
+
listModels: new _dataloader.default(async () => {
|
|
77
|
+
const models = await storageOperations.models.list({
|
|
78
|
+
where: {
|
|
79
|
+
tenant: getTenant().id,
|
|
80
|
+
locale: getLocale().code
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return [models.map(model => {
|
|
84
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
85
|
+
tags: ensureTypeTag(model),
|
|
86
|
+
tenant: model.tenant || getTenant().id,
|
|
87
|
+
locale: model.locale || getLocale().code
|
|
88
|
+
});
|
|
89
|
+
})];
|
|
90
|
+
})
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const clearModelsCache = () => {
|
|
94
|
+
for (const loader of Object.values(loaders)) {
|
|
95
|
+
loader.clearAll();
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const managers = new Map();
|
|
100
|
+
|
|
101
|
+
const updateManager = async (context, model) => {
|
|
102
|
+
const manager = await (0, _contentModelManagerFactory.contentModelManagerFactory)(context, model);
|
|
103
|
+
managers.set(model.modelId, manager);
|
|
104
|
+
return manager;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const checkModelPermissions = check => {
|
|
108
|
+
return (0, _permissions.checkPermissions)(context, "cms.contentModel", {
|
|
109
|
+
rwd: check
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const getModelsAsPlugins = () => {
|
|
114
|
+
const tenant = getTenant().id;
|
|
115
|
+
const locale = getLocale().code;
|
|
116
|
+
const models = context.plugins.byType(_CmsModelPlugin.CmsModelPlugin.type)
|
|
117
|
+
/**
|
|
118
|
+
* We need to filter out models that are not for this tenant or locale.
|
|
119
|
+
* If it does not have tenant or locale define, it is for every locale and tenant
|
|
120
|
+
*/
|
|
121
|
+
.filter(plugin => {
|
|
122
|
+
const {
|
|
123
|
+
tenant: modelTenant,
|
|
124
|
+
locale: modelLocale
|
|
125
|
+
} = plugin.contentModel;
|
|
126
|
+
|
|
127
|
+
if (modelTenant && modelTenant !== tenant) {
|
|
128
|
+
return false;
|
|
129
|
+
} else if (modelLocale && modelLocale !== locale) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return true;
|
|
134
|
+
}).map(plugin => {
|
|
135
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, plugin.contentModel), {}, {
|
|
136
|
+
tags: ensureTypeTag(plugin.contentModel),
|
|
137
|
+
tenant,
|
|
138
|
+
locale,
|
|
139
|
+
webinyVersion: context.WEBINY_VERSION
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
/**
|
|
143
|
+
* Only point where we can truly validate the user model is in the runtime.
|
|
144
|
+
*/
|
|
145
|
+
|
|
146
|
+
for (const model of models) {
|
|
147
|
+
(0, _validateModelFields.validateModelFields)({
|
|
148
|
+
model,
|
|
149
|
+
plugins: context.plugins
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return models;
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const modelsGet = async modelId => {
|
|
157
|
+
const pluginModel = getModelsAsPlugins().find(model => model.modelId === modelId);
|
|
158
|
+
|
|
159
|
+
if (pluginModel) {
|
|
160
|
+
return pluginModel;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
const model = await storageOperations.models.get({
|
|
164
|
+
tenant: getTenant().id,
|
|
165
|
+
locale: getLocale().code,
|
|
166
|
+
modelId
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
if (!model) {
|
|
170
|
+
throw new _handlerGraphql.NotFoundError(`Content model "${modelId}" was not found!`);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, model), {}, {
|
|
174
|
+
tags: ensureTypeTag(model),
|
|
175
|
+
tenant: model.tenant || getTenant().id,
|
|
176
|
+
locale: model.locale || getLocale().code
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
const modelsList = async () => {
|
|
181
|
+
const databaseModels = await loaders.listModels.load("listModels");
|
|
182
|
+
const pluginsModels = getModelsAsPlugins();
|
|
183
|
+
return databaseModels.concat(pluginsModels);
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
const listModels = async () => {
|
|
187
|
+
const permission = await checkModelPermissions("r");
|
|
188
|
+
const models = await modelsList();
|
|
189
|
+
return (0, _filterAsync.filterAsync)(models, async model => {
|
|
190
|
+
if (!(0, _ownership.validateOwnership)(context, permission, model)) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return (0, _access.validateModelAccess)(context, model);
|
|
195
|
+
});
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const getModel = async modelId => {
|
|
199
|
+
const permission = await checkModelPermissions("r");
|
|
200
|
+
const model = await modelsGet(modelId);
|
|
201
|
+
(0, _ownership.checkOwnership)(context, permission, model);
|
|
202
|
+
await (0, _access.checkModelAccess)(context, model);
|
|
203
|
+
return model;
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
const getModelManager = async target => {
|
|
207
|
+
const modelId = typeof target === "string" ? target : target.modelId;
|
|
208
|
+
|
|
209
|
+
if (managers.has(modelId)) {
|
|
210
|
+
return managers.get(modelId);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
const models = await modelsList();
|
|
214
|
+
const model = models.find(m => m.modelId === modelId);
|
|
215
|
+
|
|
216
|
+
if (!model) {
|
|
217
|
+
throw new _handlerGraphql.NotFoundError(`There is no content model "${modelId}".`);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
return await updateManager(context, model);
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Create
|
|
224
|
+
*/
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
const onModelBeforeCreate = (0, _pubsub.createTopic)("cms.onModelBeforeCreate");
|
|
228
|
+
const onModelAfterCreate = (0, _pubsub.createTopic)("cms.onModelAfterCreate");
|
|
229
|
+
const onModelCreateError = (0, _pubsub.createTopic)("cms.onModelCreateError");
|
|
230
|
+
/**
|
|
231
|
+
* Create from / clone
|
|
232
|
+
*/
|
|
233
|
+
|
|
234
|
+
const onModelBeforeCreateFrom = (0, _pubsub.createTopic)("cms.onModelBeforeCreateFrom");
|
|
235
|
+
const onModelAfterCreateFrom = (0, _pubsub.createTopic)("cms.onModelAfterCreateFrom");
|
|
236
|
+
const onModelCreateFromError = (0, _pubsub.createTopic)("cms.onModelCreateFromError");
|
|
237
|
+
/**
|
|
238
|
+
* Update
|
|
239
|
+
*/
|
|
240
|
+
|
|
241
|
+
const onModelBeforeUpdate = (0, _pubsub.createTopic)("cms.onModelBeforeUpdate");
|
|
242
|
+
const onModelAfterUpdate = (0, _pubsub.createTopic)("cms.onModelAfterUpdate");
|
|
243
|
+
const onModelUpdateError = (0, _pubsub.createTopic)("cms.onModelUpdateError");
|
|
244
|
+
/**
|
|
245
|
+
* Delete
|
|
246
|
+
*/
|
|
247
|
+
|
|
248
|
+
const onModelBeforeDelete = (0, _pubsub.createTopic)("cms.onModelBeforeDelete");
|
|
249
|
+
const onModelAfterDelete = (0, _pubsub.createTopic)("cms.onModelAfterDelete");
|
|
250
|
+
const onModelDeleteError = (0, _pubsub.createTopic)("cms.onModelDeleteError");
|
|
251
|
+
/**
|
|
252
|
+
* Initialize
|
|
253
|
+
*/
|
|
254
|
+
|
|
255
|
+
const onModelInitialize = (0, _pubsub.createTopic)("cms.onModelInitialize");
|
|
256
|
+
/**
|
|
257
|
+
* We need to assign some default behaviors.
|
|
258
|
+
*/
|
|
259
|
+
|
|
260
|
+
(0, _beforeCreate.assignModelBeforeCreate)({
|
|
261
|
+
onModelBeforeCreate,
|
|
262
|
+
onModelBeforeCreateFrom,
|
|
263
|
+
plugins: context.plugins,
|
|
264
|
+
storageOperations
|
|
265
|
+
});
|
|
266
|
+
(0, _afterCreate.assignModelAfterCreate)({
|
|
267
|
+
context,
|
|
268
|
+
onModelAfterCreate
|
|
269
|
+
});
|
|
270
|
+
(0, _beforeUpdate.assignModelBeforeUpdate)({
|
|
271
|
+
onModelBeforeUpdate,
|
|
272
|
+
plugins: context.plugins,
|
|
273
|
+
storageOperations
|
|
274
|
+
});
|
|
275
|
+
(0, _afterUpdate.assignModelAfterUpdate)({
|
|
276
|
+
context,
|
|
277
|
+
onModelAfterUpdate
|
|
278
|
+
});
|
|
279
|
+
(0, _afterCreateFrom.assignModelAfterCreateFrom)({
|
|
280
|
+
context,
|
|
281
|
+
onModelAfterCreateFrom
|
|
282
|
+
});
|
|
283
|
+
(0, _beforeDelete.assignModelBeforeDelete)({
|
|
284
|
+
onModelBeforeDelete,
|
|
285
|
+
plugins: context.plugins,
|
|
286
|
+
storageOperations
|
|
287
|
+
});
|
|
288
|
+
(0, _afterDelete.assignModelAfterDelete)({
|
|
289
|
+
context,
|
|
290
|
+
onModelAfterDelete
|
|
291
|
+
});
|
|
292
|
+
return {
|
|
293
|
+
/**
|
|
294
|
+
* Deprecated - will be removed in 5.36.0
|
|
295
|
+
*/
|
|
296
|
+
onBeforeModelCreate: onModelBeforeCreate,
|
|
297
|
+
onAfterModelCreate: onModelAfterCreate,
|
|
298
|
+
onBeforeModelCreateFrom: onModelBeforeCreateFrom,
|
|
299
|
+
onAfterModelCreateFrom: onModelAfterCreateFrom,
|
|
300
|
+
onBeforeModelUpdate: onModelBeforeUpdate,
|
|
301
|
+
onAfterModelUpdate: onModelAfterUpdate,
|
|
302
|
+
onBeforeModelDelete: onModelBeforeDelete,
|
|
303
|
+
onAfterModelDelete: onModelAfterDelete,
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Released in 5.34.0
|
|
307
|
+
*/
|
|
308
|
+
onModelBeforeCreate,
|
|
309
|
+
onModelAfterCreate,
|
|
310
|
+
onModelCreateError,
|
|
311
|
+
onModelBeforeCreateFrom,
|
|
312
|
+
onModelAfterCreateFrom,
|
|
313
|
+
onModelCreateFromError,
|
|
314
|
+
onModelBeforeUpdate,
|
|
315
|
+
onModelAfterUpdate,
|
|
316
|
+
onModelUpdateError,
|
|
317
|
+
onModelBeforeDelete,
|
|
318
|
+
onModelAfterDelete,
|
|
319
|
+
onModelDeleteError,
|
|
320
|
+
onModelInitialize,
|
|
321
|
+
clearModelsCache,
|
|
322
|
+
getModel,
|
|
323
|
+
listModels,
|
|
324
|
+
|
|
325
|
+
async createModel(inputData) {
|
|
326
|
+
await checkModelPermissions("w");
|
|
327
|
+
const createdData = new _models.CreateContentModelModel().populate(inputData);
|
|
328
|
+
await createdData.validate();
|
|
329
|
+
const input = await createdData.toJSON();
|
|
330
|
+
context.security.disableAuthorization();
|
|
331
|
+
const group = await context.cms.getGroup(input.group);
|
|
332
|
+
context.security.enableAuthorization();
|
|
333
|
+
|
|
334
|
+
if (!group) {
|
|
335
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
const fields = await (0, _createFieldModels.createFieldModels)(input.fields);
|
|
339
|
+
const identity = getIdentity();
|
|
340
|
+
const model = {
|
|
341
|
+
name: input.name,
|
|
342
|
+
description: input.description || "",
|
|
343
|
+
modelId: input.modelId || "",
|
|
344
|
+
titleFieldId: "id",
|
|
345
|
+
locale: getLocale().code,
|
|
346
|
+
tenant: getTenant().id,
|
|
347
|
+
group: {
|
|
348
|
+
id: group.id,
|
|
349
|
+
name: group.name
|
|
350
|
+
},
|
|
351
|
+
createdBy: {
|
|
352
|
+
id: identity.id,
|
|
353
|
+
displayName: identity.displayName,
|
|
354
|
+
type: identity.type
|
|
355
|
+
},
|
|
356
|
+
createdOn: new Date().toISOString(),
|
|
357
|
+
savedOn: new Date().toISOString(),
|
|
358
|
+
fields,
|
|
359
|
+
lockedFields: [],
|
|
360
|
+
layout: input.layout || [],
|
|
361
|
+
tags: [...(input.tags || [])],
|
|
362
|
+
webinyVersion: context.WEBINY_VERSION
|
|
363
|
+
};
|
|
364
|
+
model.tags = ensureTypeTag(model);
|
|
365
|
+
|
|
366
|
+
try {
|
|
367
|
+
await onModelBeforeCreate.publish({
|
|
368
|
+
input,
|
|
369
|
+
model
|
|
370
|
+
});
|
|
371
|
+
const createdModel = await storageOperations.models.create({
|
|
372
|
+
model
|
|
373
|
+
});
|
|
374
|
+
loaders.listModels.clearAll();
|
|
375
|
+
await updateManager(context, model);
|
|
376
|
+
await onModelAfterCreate.publish({
|
|
377
|
+
input,
|
|
378
|
+
model: createdModel
|
|
379
|
+
});
|
|
380
|
+
return createdModel;
|
|
381
|
+
} catch (ex) {
|
|
382
|
+
await onModelCreateError.publish({
|
|
383
|
+
input,
|
|
384
|
+
model,
|
|
385
|
+
error: ex
|
|
386
|
+
});
|
|
387
|
+
throw ex;
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Method does not check for permissions or ownership.
|
|
393
|
+
* @internal
|
|
394
|
+
*/
|
|
395
|
+
async updateModelDirect(params) {
|
|
396
|
+
const {
|
|
397
|
+
model: initialModel,
|
|
398
|
+
original
|
|
399
|
+
} = params;
|
|
400
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, initialModel), {}, {
|
|
401
|
+
tenant: initialModel.tenant || getTenant().id,
|
|
402
|
+
locale: initialModel.locale || getLocale().code,
|
|
403
|
+
webinyVersion: context.WEBINY_VERSION
|
|
404
|
+
});
|
|
405
|
+
|
|
406
|
+
try {
|
|
407
|
+
await onModelBeforeUpdate.publish({
|
|
408
|
+
input: {},
|
|
409
|
+
original,
|
|
410
|
+
model
|
|
411
|
+
});
|
|
412
|
+
const resultModel = await storageOperations.models.update({
|
|
413
|
+
model
|
|
414
|
+
});
|
|
415
|
+
await updateManager(context, resultModel);
|
|
416
|
+
loaders.listModels.clearAll();
|
|
417
|
+
await onModelAfterUpdate.publish({
|
|
418
|
+
input: {},
|
|
419
|
+
original,
|
|
420
|
+
model: resultModel
|
|
421
|
+
});
|
|
422
|
+
return resultModel;
|
|
423
|
+
} catch (ex) {
|
|
424
|
+
await onModelUpdateError.publish({
|
|
425
|
+
input: {},
|
|
426
|
+
original,
|
|
427
|
+
model,
|
|
428
|
+
error: ex
|
|
429
|
+
});
|
|
430
|
+
throw ex;
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
|
|
434
|
+
async createModelFrom(modelId, data) {
|
|
435
|
+
await checkModelPermissions("w");
|
|
436
|
+
/**
|
|
437
|
+
* Get a model record; this will also perform ownership validation.
|
|
438
|
+
*/
|
|
439
|
+
|
|
440
|
+
const original = await getModel(modelId);
|
|
441
|
+
const createdData = new _models.CreateContentModelModelFrom().populate({
|
|
442
|
+
name: data.name,
|
|
443
|
+
modelId: data.modelId,
|
|
444
|
+
description: data.description || original.description,
|
|
445
|
+
group: data.group,
|
|
446
|
+
locale: data.locale
|
|
447
|
+
});
|
|
448
|
+
await createdData.validate();
|
|
449
|
+
const input = await createdData.toJSON();
|
|
450
|
+
const locale = await context.i18n.getLocale(input.locale || original.locale);
|
|
451
|
+
|
|
452
|
+
if (!locale) {
|
|
453
|
+
throw new _handlerGraphql.NotFoundError(`There is no locale "${input.locale}".`);
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Use storage operations directly because we cannot get group from different locale via context methods.
|
|
457
|
+
*/
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
const group = await context.cms.storageOperations.groups.get({
|
|
461
|
+
id: input.group,
|
|
462
|
+
tenant: original.tenant,
|
|
463
|
+
locale: locale.code
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
if (!group) {
|
|
467
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
const identity = getIdentity();
|
|
471
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), {}, {
|
|
472
|
+
locale: locale.code,
|
|
473
|
+
group: {
|
|
474
|
+
id: group.id,
|
|
475
|
+
name: group.name
|
|
476
|
+
},
|
|
477
|
+
name: input.name,
|
|
478
|
+
modelId: input.modelId || "",
|
|
479
|
+
description: input.description || "",
|
|
480
|
+
createdBy: {
|
|
481
|
+
id: identity.id,
|
|
482
|
+
displayName: identity.displayName,
|
|
483
|
+
type: identity.type
|
|
484
|
+
},
|
|
485
|
+
createdOn: new Date().toISOString(),
|
|
486
|
+
savedOn: new Date().toISOString(),
|
|
487
|
+
lockedFields: [],
|
|
488
|
+
webinyVersion: context.WEBINY_VERSION
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
try {
|
|
492
|
+
await onModelBeforeCreateFrom.publish({
|
|
493
|
+
input,
|
|
494
|
+
model,
|
|
495
|
+
original
|
|
496
|
+
});
|
|
497
|
+
const createdModel = await storageOperations.models.create({
|
|
498
|
+
model
|
|
499
|
+
});
|
|
500
|
+
loaders.listModels.clearAll();
|
|
501
|
+
await updateManager(context, model);
|
|
502
|
+
await onModelAfterCreateFrom.publish({
|
|
503
|
+
input,
|
|
504
|
+
original,
|
|
505
|
+
model: createdModel
|
|
506
|
+
});
|
|
507
|
+
return createdModel;
|
|
508
|
+
} catch (ex) {
|
|
509
|
+
await onModelCreateFromError.publish({
|
|
510
|
+
input,
|
|
511
|
+
original,
|
|
512
|
+
model,
|
|
513
|
+
error: ex
|
|
514
|
+
});
|
|
515
|
+
throw ex;
|
|
516
|
+
}
|
|
517
|
+
},
|
|
518
|
+
|
|
519
|
+
async updateModel(modelId, inputData) {
|
|
520
|
+
await checkModelPermissions("w"); // Get a model record; this will also perform ownership validation.
|
|
521
|
+
|
|
522
|
+
const original = await getModel(modelId);
|
|
523
|
+
const updatedData = new _models.UpdateContentModelModel().populate(inputData);
|
|
524
|
+
await updatedData.validate();
|
|
525
|
+
const input = await updatedData.toJSON({
|
|
526
|
+
onlyDirty: true
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
if (Object.keys(input).length === 0) {
|
|
530
|
+
/**
|
|
531
|
+
* We need to return the original if nothing is to be updated.
|
|
532
|
+
*/
|
|
533
|
+
return original;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
let group = {
|
|
537
|
+
id: original.group.id,
|
|
538
|
+
name: original.group.name
|
|
539
|
+
};
|
|
540
|
+
|
|
541
|
+
if (input.group) {
|
|
542
|
+
context.security.disableAuthorization();
|
|
543
|
+
const groupData = await context.cms.getGroup(input.group);
|
|
544
|
+
context.security.enableAuthorization();
|
|
545
|
+
|
|
546
|
+
if (!groupData) {
|
|
547
|
+
throw new _handlerGraphql.NotFoundError(`There is no group "${input.group}".`);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
group = {
|
|
551
|
+
id: groupData.id,
|
|
552
|
+
name: groupData.name
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
const fields = await (0, _createFieldModels.createFieldModels)(inputData.fields);
|
|
557
|
+
const model = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, original), input), {}, {
|
|
558
|
+
group,
|
|
559
|
+
tenant: original.tenant || getTenant().id,
|
|
560
|
+
locale: original.locale || getLocale().code,
|
|
561
|
+
webinyVersion: context.WEBINY_VERSION,
|
|
562
|
+
fields,
|
|
563
|
+
savedOn: new Date().toISOString()
|
|
564
|
+
});
|
|
565
|
+
model.tags = ensureTypeTag(model);
|
|
566
|
+
|
|
567
|
+
try {
|
|
568
|
+
await onModelBeforeUpdate.publish({
|
|
569
|
+
input,
|
|
570
|
+
original,
|
|
571
|
+
model
|
|
572
|
+
});
|
|
573
|
+
const resultModel = await storageOperations.models.update({
|
|
574
|
+
model
|
|
575
|
+
});
|
|
576
|
+
await updateManager(context, resultModel);
|
|
577
|
+
await onModelAfterUpdate.publish({
|
|
578
|
+
input,
|
|
579
|
+
original,
|
|
580
|
+
model: resultModel
|
|
581
|
+
});
|
|
582
|
+
return resultModel;
|
|
583
|
+
} catch (ex) {
|
|
584
|
+
await onModelUpdateError.publish({
|
|
585
|
+
input,
|
|
586
|
+
model,
|
|
587
|
+
original,
|
|
588
|
+
error: ex
|
|
589
|
+
});
|
|
590
|
+
throw ex;
|
|
591
|
+
}
|
|
592
|
+
},
|
|
593
|
+
|
|
594
|
+
async deleteModel(modelId) {
|
|
595
|
+
await checkModelPermissions("d");
|
|
596
|
+
const model = await getModel(modelId);
|
|
597
|
+
|
|
598
|
+
try {
|
|
599
|
+
await onModelBeforeDelete.publish({
|
|
600
|
+
model
|
|
601
|
+
});
|
|
602
|
+
|
|
603
|
+
try {
|
|
604
|
+
await storageOperations.models.delete({
|
|
605
|
+
model
|
|
606
|
+
});
|
|
607
|
+
} catch (ex) {
|
|
608
|
+
throw new _error.default(ex.message || "Could not delete the content model", ex.code || "CONTENT_MODEL_DELETE_ERROR", {
|
|
609
|
+
error: ex,
|
|
610
|
+
modelId: model.modelId
|
|
611
|
+
});
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
await onModelAfterDelete.publish({
|
|
615
|
+
model
|
|
616
|
+
});
|
|
617
|
+
managers.delete(model.modelId);
|
|
618
|
+
} catch (ex) {
|
|
619
|
+
await onModelDeleteError.publish({
|
|
620
|
+
model,
|
|
621
|
+
error: ex
|
|
622
|
+
});
|
|
623
|
+
throw ex;
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
|
|
627
|
+
async initializeModel(modelId, data) {
|
|
628
|
+
/**
|
|
629
|
+
* We require that users have write permissions to initialize models.
|
|
630
|
+
* Maybe introduce another permission for it?
|
|
631
|
+
*/
|
|
632
|
+
await checkModelPermissions("w");
|
|
633
|
+
const model = await getModel(modelId);
|
|
634
|
+
await onModelInitialize.publish({
|
|
635
|
+
model,
|
|
636
|
+
data
|
|
637
|
+
});
|
|
638
|
+
return true;
|
|
639
|
+
},
|
|
640
|
+
|
|
641
|
+
getModelManager,
|
|
642
|
+
getEntryManager: async model => {
|
|
643
|
+
return getModelManager(model);
|
|
644
|
+
},
|
|
645
|
+
getManagers: () => managers,
|
|
646
|
+
getEntryManagers: () => managers
|
|
647
|
+
};
|
|
648
|
+
};
|
|
649
|
+
|
|
650
|
+
exports.createModelsCrud = createModelsCrud;
|