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