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