@webiny/api-headless-cms 0.0.0-unstable.99666aeb00 → 0.0.0-unstable.a9593f74dd
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 +31 -0
- package/constants.js +51 -2
- package/constants.js.map +1 -1
- package/context.js +50 -45
- package/context.js.map +1 -1
- package/crud/contentEntry/afterDelete.js +3 -1
- package/crud/contentEntry/afterDelete.js.map +1 -1
- package/crud/contentEntry/beforeCreate.js +3 -1
- package/crud/contentEntry/beforeCreate.js.map +1 -1
- package/crud/contentEntry/beforeUpdate.js +3 -1
- package/crud/contentEntry/beforeUpdate.js.map +1 -1
- package/crud/contentEntry/entryDataFactories/createEntryData.d.ts +20 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.js +228 -0
- package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.d.ts +21 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +114 -0
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.d.ts +13 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.js +61 -0
- package/crud/contentEntry/entryDataFactories/createPublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.d.ts +12 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js +57 -0
- package/crud/contentEntry/entryDataFactories/createRepublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.d.ts +12 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js +38 -0
- package/crud/contentEntry/entryDataFactories/createUnpublishEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.d.ts +20 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js +122 -0
- package/crud/contentEntry/entryDataFactories/createUpdateEntryData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/index.d.ts +8 -0
- package/crud/contentEntry/entryDataFactories/index.js +95 -0
- package/crud/contentEntry/entryDataFactories/index.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.d.ts +5 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js +36 -0
- package/crud/contentEntry/entryDataFactories/mapAndCleanUpdatedInputData.js.map +1 -0
- package/crud/contentEntry/entryDataFactories/statuses.d.ts +4 -0
- package/crud/contentEntry/entryDataFactories/statuses.js +15 -0
- package/crud/contentEntry/entryDataFactories/statuses.js.map +1 -0
- package/crud/contentEntry/entryDataValidation.d.ts +4 -2
- package/crud/contentEntry/entryDataValidation.js +223 -45
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/markLockedFields.js +17 -10
- package/crud/contentEntry/markLockedFields.js.map +1 -1
- package/crud/contentEntry/referenceFieldsMapping.d.ts +6 -0
- package/crud/contentEntry/referenceFieldsMapping.js +134 -111
- package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
- package/crud/contentEntry/searchableFields.js +5 -4
- package/crud/contentEntry/searchableFields.js.map +1 -1
- package/crud/contentEntry.crud.d.ts +1 -4
- package/crud/contentEntry.crud.js +295 -466
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/beforeCreate.d.ts +1 -1
- package/crud/contentModel/beforeCreate.js +11 -9
- package/crud/contentModel/beforeCreate.js.map +1 -1
- package/crud/contentModel/beforeDelete.js +3 -1
- package/crud/contentModel/beforeDelete.js.map +1 -1
- package/crud/contentModel/beforeUpdate.d.ts +1 -1
- package/crud/contentModel/beforeUpdate.js +3 -6
- package/crud/contentModel/beforeUpdate.js.map +1 -1
- package/crud/contentModel/compatibility/modelApiName.js +3 -1
- package/crud/contentModel/compatibility/modelApiName.js.map +1 -1
- package/crud/contentModel/contentModelManagerFactory.js +3 -1
- package/crud/contentModel/contentModelManagerFactory.js.map +1 -1
- package/crud/contentModel/createFieldStorageId.js +3 -1
- package/crud/contentModel/createFieldStorageId.js.map +1 -1
- package/crud/contentModel/defaultFields.js +3 -1
- package/crud/contentModel/defaultFields.js.map +1 -1
- package/crud/contentModel/ensureTypeTag.d.ts +5 -0
- package/crud/contentModel/ensureTypeTag.js +21 -0
- package/crud/contentModel/ensureTypeTag.js.map +1 -0
- package/crud/contentModel/fields/descriptionField.js +4 -2
- package/crud/contentModel/fields/descriptionField.js.map +1 -1
- package/crud/contentModel/fields/imageField.js +6 -8
- package/crud/contentModel/fields/imageField.js.map +1 -1
- package/crud/contentModel/fields/titleField.js +4 -2
- package/crud/contentModel/fields/titleField.js.map +1 -1
- package/crud/contentModel/listModelsFromDatabase.d.ts +10 -0
- package/crud/contentModel/listModelsFromDatabase.js +38 -0
- package/crud/contentModel/listModelsFromDatabase.js.map +1 -0
- package/crud/contentModel/validate/endingAllowed.js +3 -1
- package/crud/contentModel/validate/endingAllowed.js.map +1 -1
- package/crud/contentModel/validate/isModelEndingAllowed.js +4 -2
- package/crud/contentModel/validate/isModelEndingAllowed.js.map +1 -1
- package/crud/contentModel/validate/modelId.js +3 -1
- package/crud/contentModel/validate/modelId.js.map +1 -1
- package/crud/contentModel/validate/pluralApiName.js +3 -1
- package/crud/contentModel/validate/pluralApiName.js.map +1 -1
- package/crud/contentModel/validate/singularApiName.js +3 -1
- package/crud/contentModel/validate/singularApiName.js.map +1 -1
- package/crud/contentModel/validateModel.js +3 -1
- package/crud/contentModel/validateModel.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +7 -6
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +531 -210
- package/crud/contentModel/validation.js +71 -11
- package/crud/contentModel/validation.js.map +1 -1
- package/crud/contentModel.crud.js +137 -182
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/beforeCreate.d.ts +1 -1
- package/crud/contentModelGroup/beforeCreate.js +15 -1
- package/crud/contentModelGroup/beforeCreate.js.map +1 -1
- package/crud/contentModelGroup/beforeDelete.js +3 -1
- package/crud/contentModelGroup/beforeDelete.js.map +1 -1
- package/crud/contentModelGroup/beforeUpdate.js +3 -1
- package/crud/contentModelGroup/beforeUpdate.js.map +1 -1
- package/crud/contentModelGroup/listGroupsFromDatabase.d.ts +8 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.js +22 -0
- package/crud/contentModelGroup/listGroupsFromDatabase.js.map +1 -0
- package/crud/contentModelGroup/validation.d.ts +9 -6
- package/crud/contentModelGroup/validation.js +5 -2
- package/crud/contentModelGroup/validation.js.map +1 -1
- package/crud/contentModelGroup.crud.d.ts +1 -1
- package/crud/contentModelGroup.crud.js +113 -112
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/system.crud.js +8 -11
- package/crud/system.crud.js.map +1 -1
- package/export/crud/exporting.d.ts +3 -0
- package/export/crud/exporting.js +49 -0
- package/export/crud/exporting.js.map +1 -0
- package/export/crud/importing.d.ts +3 -0
- package/export/crud/importing.js +79 -0
- package/export/crud/importing.js.map +1 -0
- package/export/crud/imports/importData.d.ts +14 -0
- package/export/crud/imports/importData.js +52 -0
- package/export/crud/imports/importData.js.map +1 -0
- package/export/crud/imports/importGroups.d.ts +8 -0
- package/export/crud/imports/importGroups.js +104 -0
- package/export/crud/imports/importGroups.js.map +1 -0
- package/export/crud/imports/importModels.d.ts +8 -0
- package/export/crud/imports/importModels.js +136 -0
- package/export/crud/imports/importModels.js.map +1 -0
- package/export/crud/imports/validateGroups.d.ts +8 -0
- package/export/crud/imports/validateGroups.js +112 -0
- package/export/crud/imports/validateGroups.js.map +1 -0
- package/export/crud/imports/validateInput.d.ts +19 -0
- package/export/crud/imports/validateInput.js +55 -0
- package/export/crud/imports/validateInput.js.map +1 -0
- package/export/crud/imports/validateModels.d.ts +12 -0
- package/export/crud/imports/validateModels.js +203 -0
- package/export/crud/imports/validateModels.js.map +1 -0
- package/export/crud/index.d.ts +4 -0
- package/export/crud/index.js +15 -0
- package/export/crud/index.js.map +1 -0
- package/export/crud/sanitize.d.ts +4 -0
- package/export/crud/sanitize.js +35 -0
- package/export/crud/sanitize.js.map +1 -0
- package/export/graphql/index.d.ts +3 -0
- package/export/graphql/index.js +188 -0
- package/export/graphql/index.js.map +1 -0
- package/export/index.d.ts +2 -0
- package/export/index.js +29 -0
- package/export/index.js.map +1 -0
- package/export/types.d.ts +113 -0
- package/export/types.js +22 -0
- package/export/types.js.map +1 -0
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js +4 -7
- package/fieldConverters/CmsModelDefaultFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js +5 -8
- package/fieldConverters/CmsModelDynamicZoneFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js +47 -38
- package/fieldConverters/CmsModelObjectFieldConverterPlugin.js.map +1 -1
- package/fieldConverters/index.js +3 -1
- package/fieldConverters/index.js.map +1 -1
- package/graphql/buildSchemaPlugins.js +7 -1
- package/graphql/buildSchemaPlugins.js.map +1 -1
- package/graphql/checkEndpointAccess.js +3 -1
- package/graphql/checkEndpointAccess.js.map +1 -1
- package/graphql/createExecutableSchema.js +3 -1
- package/graphql/createExecutableSchema.js.map +1 -1
- package/graphql/createRequestBody.js +3 -1
- package/graphql/createRequestBody.js.map +1 -1
- package/graphql/formatErrorPayload.js +3 -1
- package/graphql/formatErrorPayload.js.map +1 -1
- package/graphql/generateSchema.js +3 -1
- package/graphql/generateSchema.js.map +1 -1
- package/graphql/getSchema.d.ts +0 -1
- package/graphql/getSchema.js +34 -18
- package/graphql/getSchema.js.map +1 -1
- package/graphql/graphQLHandlerFactory.js +3 -1
- package/graphql/graphQLHandlerFactory.js.map +1 -1
- package/graphql/handleRequest.js +3 -5
- package/graphql/handleRequest.js.map +1 -1
- package/graphql/index.d.ts +1 -1
- package/graphql/index.js +4 -2
- package/graphql/index.js.map +1 -1
- package/graphql/schema/baseContentSchema.js +9 -8
- package/graphql/schema/baseContentSchema.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +2 -3
- package/graphql/schema/baseSchema.js +64 -2
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +51 -18
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/contentModelGroups.js +5 -2
- package/graphql/schema/contentModelGroups.js.map +1 -1
- package/graphql/schema/contentModels.js +10 -10
- package/graphql/schema/contentModels.js.map +1 -1
- package/graphql/schema/createFieldResolvers.js +14 -12
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createFieldTypePluginRecords.js +3 -1
- package/graphql/schema/createFieldTypePluginRecords.js.map +1 -1
- package/graphql/schema/createManageResolvers.js +13 -10
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +37 -19
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.js +7 -6
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.js +7 -6
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.js +12 -5
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreate.d.ts +2 -1
- package/graphql/schema/resolvers/manage/resolveCreate.js +4 -2
- package/graphql/schema/resolvers/manage/resolveCreate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.d.ts +2 -1
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js +4 -2
- package/graphql/schema/resolvers/manage/resolveCreateFrom.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDelete.js +4 -2
- package/graphql/schema/resolvers/manage/resolveDelete.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js +4 -2
- package/graphql/schema/resolvers/manage/resolveDeleteMultiple.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGet.js +12 -5
- package/graphql/schema/resolvers/manage/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGetByIds.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGetRevisions.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js +3 -1
- package/graphql/schema/resolvers/manage/resolveGetUniqueFieldValues.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveList.js +3 -1
- package/graphql/schema/resolvers/manage/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveMove.js +7 -10
- package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js +3 -1
- package/graphql/schema/resolvers/manage/resolvePublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js +3 -1
- package/graphql/schema/resolvers/manage/resolveRepublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js +3 -1
- package/graphql/schema/resolvers/manage/resolveUnpublish.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.d.ts +2 -1
- package/graphql/schema/resolvers/manage/resolveUpdate.js +4 -2
- package/graphql/schema/resolvers/manage/resolveUpdate.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveValidate.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveValidate.js +20 -0
- package/graphql/schema/resolvers/manage/resolveValidate.js.map +1 -0
- package/graphql/schema/resolvers/preview/resolveGet.js +6 -5
- package/graphql/schema/resolvers/preview/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/preview/resolveList.js +3 -1
- package/graphql/schema/resolvers/preview/resolveList.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveGet.js +6 -5
- package/graphql/schema/resolvers/read/resolveGet.js.map +1 -1
- package/graphql/schema/resolvers/read/resolveList.js +3 -1
- package/graphql/schema/resolvers/read/resolveList.js.map +1 -1
- package/graphql/schema/schemaPlugins.js +3 -1
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/graphql/system.js +3 -1
- package/graphql/system.js.map +1 -1
- package/graphqlFields/boolean.js +3 -1
- package/graphqlFields/boolean.js.map +1 -1
- package/graphqlFields/datetime.js +5 -5
- package/graphqlFields/datetime.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.js +42 -19
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js +60 -12
- package/graphqlFields/dynamicZone/dynamicZoneStorage.js.map +1 -1
- package/graphqlFields/dynamicZone/index.js +3 -1
- package/graphqlFields/dynamicZone/index.js.map +1 -1
- package/graphqlFields/file.js +3 -1
- package/graphqlFields/file.js.map +1 -1
- package/graphqlFields/helpers.d.ts +0 -1
- package/graphqlFields/helpers.js +6 -18
- package/graphqlFields/helpers.js.map +1 -1
- package/graphqlFields/index.js +5 -2
- package/graphqlFields/index.js.map +1 -1
- package/graphqlFields/json.d.ts +2 -0
- package/graphqlFields/json.js +49 -0
- package/graphqlFields/json.js.map +1 -0
- package/graphqlFields/longText.js +14 -3
- package/graphqlFields/longText.js.map +1 -1
- package/graphqlFields/number.js +3 -1
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +24 -44
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/ref.js +28 -16
- package/graphqlFields/ref.js.map +1 -1
- package/graphqlFields/richText/RichTextPluginsProcessor.d.ts +6 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.js +34 -0
- package/graphqlFields/richText/RichTextPluginsProcessor.js.map +1 -0
- package/graphqlFields/richText/richTextResolver.d.ts +7 -0
- package/graphqlFields/richText/richTextResolver.js +39 -0
- package/graphqlFields/richText/richTextResolver.js.map +1 -0
- package/graphqlFields/richText.js +11 -3
- package/graphqlFields/richText.js.map +1 -1
- package/graphqlFields/text.js +3 -1
- package/graphqlFields/text.js.map +1 -1
- package/htmlRenderer/LexicalRenderer.d.ts +5 -0
- package/htmlRenderer/LexicalRenderer.js +28 -0
- package/htmlRenderer/LexicalRenderer.js.map +1 -0
- package/htmlRenderer/createLexicalHTMLRenderer.d.ts +2 -0
- package/htmlRenderer/createLexicalHTMLRenderer.js +31 -0
- package/htmlRenderer/createLexicalHTMLRenderer.js.map +1 -0
- package/index.d.ts +2 -1
- package/index.js +20 -5
- package/index.js.map +1 -1
- package/modelManager/DefaultCmsModelManager.js +3 -5
- package/modelManager/DefaultCmsModelManager.js.map +1 -1
- package/modelManager/index.js +3 -1
- package/modelManager/index.js.map +1 -1
- package/package.json +27 -26
- package/parameters/context.js +4 -2
- package/parameters/context.js.map +1 -1
- package/parameters/header.js +7 -6
- package/parameters/header.js.map +1 -1
- package/parameters/index.js +3 -1
- package/parameters/index.js.map +1 -1
- package/parameters/manual.js +9 -4
- package/parameters/manual.js.map +1 -1
- package/parameters/path.js +4 -3
- package/parameters/path.js.map +1 -1
- package/plugins/CmsGraphQLSchemaPlugin.js +5 -4
- package/plugins/CmsGraphQLSchemaPlugin.js.map +1 -1
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +4 -5
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +1 -1
- package/plugins/CmsGroupPlugin.d.ts +6 -3
- package/plugins/CmsGroupPlugin.js +8 -6
- package/plugins/CmsGroupPlugin.js.map +1 -1
- package/plugins/CmsModelFieldConverterPlugin.js +5 -4
- package/plugins/CmsModelFieldConverterPlugin.js.map +1 -1
- package/plugins/CmsModelPlugin.d.ts +6 -4
- package/plugins/CmsModelPlugin.js +56 -27
- package/plugins/CmsModelPlugin.js.map +1 -1
- package/plugins/CmsParametersPlugin.js +7 -4
- package/plugins/CmsParametersPlugin.js.map +1 -1
- package/plugins/CmsRichTextRendererPlugin.d.ts +24 -0
- package/plugins/CmsRichTextRendererPlugin.js +28 -0
- package/plugins/CmsRichTextRendererPlugin.js.map +1 -0
- package/plugins/StorageOperationsCmsModelPlugin.js +5 -6
- package/plugins/StorageOperationsCmsModelPlugin.js.map +1 -1
- package/plugins/StorageTransformPlugin.d.ts +2 -2
- package/plugins/StorageTransformPlugin.js +3 -4
- package/plugins/StorageTransformPlugin.js.map +1 -1
- package/plugins/index.d.ts +1 -0
- package/plugins/index.js +14 -1
- package/plugins/index.js.map +1 -1
- package/storage/default.js +3 -1
- package/storage/default.js.map +1 -1
- package/storage/index.d.ts +1 -0
- package/storage/index.js +15 -0
- package/storage/index.js.map +1 -0
- package/storage/json.d.ts +2 -0
- package/storage/json.js +27 -0
- package/storage/json.js.map +1 -0
- package/storage/object.js +8 -8
- package/storage/object.js.map +1 -1
- package/types.d.ts +300 -260
- package/types.js +9 -20
- package/types.js.map +1 -1
- package/utils/access.d.ts +9 -0
- package/utils/access.js +26 -0
- package/utils/access.js.map +1 -0
- package/utils/caching/Cache.d.ts +2 -0
- package/utils/caching/Cache.js +51 -0
- package/utils/caching/Cache.js.map +1 -0
- package/utils/caching/CacheKey.d.ts +2 -0
- package/utils/caching/CacheKey.js +40 -0
- package/utils/caching/CacheKey.js.map +1 -0
- package/utils/caching/index.d.ts +2 -0
- package/utils/caching/index.js +29 -0
- package/utils/caching/index.js.map +1 -0
- package/utils/caching/types.d.ts +11 -0
- package/utils/caching/types.js +7 -0
- package/utils/caching/types.js.map +1 -0
- package/utils/converters/Converter.js +4 -5
- package/utils/converters/Converter.js.map +1 -1
- package/utils/converters/ConverterCollection.js +13 -7
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.js +11 -4
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.js +6 -1
- package/utils/createTypeFromFields.js.map +1 -1
- package/utils/createTypeName.js +3 -1
- package/utils/createTypeName.js.map +1 -1
- package/utils/date.d.ts +10 -0
- package/utils/date.js +36 -0
- package/utils/date.js.map +1 -0
- package/utils/entryStorage.d.ts +4 -4
- package/utils/entryStorage.js +6 -4
- package/utils/entryStorage.js.map +1 -1
- package/utils/filterAsync.js +9 -8
- package/utils/filterAsync.js.map +1 -1
- package/utils/getBaseFieldType.js +3 -1
- package/utils/getBaseFieldType.js.map +1 -1
- package/utils/getEntryDescription.js +3 -1
- package/utils/getEntryDescription.js.map +1 -1
- package/utils/getEntryImage.js +3 -1
- package/utils/getEntryImage.js.map +1 -1
- package/utils/getEntryTitle.js +3 -1
- package/utils/getEntryTitle.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +13 -2
- package/utils/getSchemaFromFieldPlugins.js +22 -4
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/identity.d.ts +2 -0
- package/utils/identity.js +20 -0
- package/utils/identity.js.map +1 -0
- package/utils/incrementEntryIdVersion.js +3 -1
- package/utils/incrementEntryIdVersion.js.map +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +18 -0
- package/utils/index.js.map +1 -0
- package/utils/permissions/EntriesPermissions.js +3 -1
- package/utils/permissions/EntriesPermissions.js.map +1 -1
- package/utils/permissions/ModelGroupsPermissions.d.ts +3 -5
- package/utils/permissions/ModelGroupsPermissions.js +8 -6
- package/utils/permissions/ModelGroupsPermissions.js.map +1 -1
- package/utils/permissions/ModelsPermissions.d.ts +9 -7
- package/utils/permissions/ModelsPermissions.js +5 -6
- package/utils/permissions/ModelsPermissions.js.map +1 -1
- package/utils/renderFields.js +3 -1
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.js +5 -4
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.js +3 -1
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.js +12 -4
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.js +5 -2
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/toSlug.js +3 -1
- package/utils/toSlug.js.map +1 -1
- package/validators/dateGte.js +3 -1
- package/validators/dateGte.js.map +1 -1
- package/validators/dateLte.js +3 -1
- package/validators/dateLte.js.map +1 -1
- package/validators/gte.js +4 -3
- package/validators/gte.js.map +1 -1
- package/validators/in.js +4 -3
- package/validators/in.js.map +1 -1
- package/validators/index.js +4 -3
- package/validators/index.js.map +1 -1
- package/validators/lte.js +4 -3
- package/validators/lte.js.map +1 -1
- package/validators/maxLength.js +4 -3
- package/validators/maxLength.js.map +1 -1
- package/validators/minLength.js +4 -3
- package/validators/minLength.js.map +1 -1
- package/validators/pattern.js +5 -3
- package/validators/pattern.js.map +1 -1
- package/validators/patternPlugins/email.js +3 -1
- package/validators/patternPlugins/email.js.map +1 -1
- package/validators/patternPlugins/index.js +3 -1
- package/validators/patternPlugins/index.js.map +1 -1
- package/validators/patternPlugins/lowerCase.js +3 -1
- package/validators/patternPlugins/lowerCase.js.map +1 -1
- package/validators/patternPlugins/lowerCaseSpace.js +3 -1
- package/validators/patternPlugins/lowerCaseSpace.js.map +1 -1
- package/validators/patternPlugins/upperCase.js +3 -1
- package/validators/patternPlugins/upperCase.js.map +1 -1
- package/validators/patternPlugins/upperCaseSpace.js +3 -1
- package/validators/patternPlugins/upperCaseSpace.js.map +1 -1
- package/validators/patternPlugins/url.js +3 -1
- package/validators/patternPlugins/url.js.map +1 -1
- package/validators/required.js +3 -1
- package/validators/required.js.map +1 -1
- package/validators/timeGte.js +4 -3
- package/validators/timeGte.js.map +1 -1
- package/validators/timeLte.js +4 -3
- package/validators/timeLte.js.map +1 -1
- package/validators/unique.js +4 -2
- package/validators/unique.js.map +1 -1
- package/crud/contentModel/afterCreate.d.ts +0 -8
- package/crud/contentModel/afterCreate.js +0 -16
- package/crud/contentModel/afterCreate.js.map +0 -1
- package/crud/contentModel/afterCreateFrom.d.ts +0 -8
- package/crud/contentModel/afterCreateFrom.js +0 -16
- package/crud/contentModel/afterCreateFrom.js.map +0 -1
- package/crud/contentModel/afterDelete.d.ts +0 -8
- package/crud/contentModel/afterDelete.js +0 -16
- package/crud/contentModel/afterDelete.js.map +0 -1
- package/crud/contentModel/afterUpdate.d.ts +0 -8
- package/crud/contentModel/afterUpdate.js +0 -16
- package/crud/contentModel/afterUpdate.js.map +0 -1
- package/crud/contentModel/validateLayout.d.ts +0 -2
- package/crud/contentModel/validateLayout.js +0 -28
- package/crud/contentModel/validateLayout.js.map +0 -1
- package/crud/settings.crud.d.ts +0 -12
- package/crud/settings.crud.js +0 -62
- package/crud/settings.crud.js.map +0 -1
- package/graphql/schema/resolvers/commonFieldResolvers.d.ts +0 -7
- package/graphql/schema/resolvers/commonFieldResolvers.js +0 -13
- package/graphql/schema/resolvers/commonFieldResolvers.js.map +0 -1
- package/utils/permissions/SettingsPermissions.d.ts +0 -4
- package/utils/permissions/SettingsPermissions.js +0 -9
- package/utils/permissions/SettingsPermissions.js.map +0 -1
- package/validators/dynamicZone.d.ts +0 -2
- package/validators/dynamicZone.js +0 -20
- package/validators/dynamicZone.js.map +0 -1
|
@@ -4,179 +4,26 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.createContentEntryCrud =
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
-
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
7
|
+
exports.createContentEntryCrud = void 0;
|
|
10
8
|
var _utils = require("@webiny/utils");
|
|
11
9
|
var _error = _interopRequireDefault(require("@webiny/error"));
|
|
12
10
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
|
13
|
-
var _types = require("../types");
|
|
14
11
|
var _entryDataValidation = require("./contentEntry/entryDataValidation");
|
|
15
12
|
var _pubsub = require("@webiny/pubsub");
|
|
16
13
|
var _beforeCreate = require("./contentEntry/beforeCreate");
|
|
17
14
|
var _beforeUpdate = require("./contentEntry/beforeUpdate");
|
|
18
15
|
var _afterDelete = require("./contentEntry/afterDelete");
|
|
19
|
-
var _referenceFieldsMapping = require("./contentEntry/referenceFieldsMapping");
|
|
20
16
|
var _entryStorage = require("../utils/entryStorage");
|
|
21
17
|
var _searchableFields = require("./contentEntry/searchableFields");
|
|
22
18
|
var _filterAsync = require("../utils/filterAsync");
|
|
23
|
-
var _apiSecurity = require("@webiny/api-security
|
|
19
|
+
var _apiSecurity = require("@webiny/api-security");
|
|
24
20
|
var _constants = require("../constants");
|
|
25
|
-
|
|
26
|
-
exports.STATUS_DRAFT = STATUS_DRAFT;
|
|
27
|
-
const STATUS_PUBLISHED = _types.CONTENT_ENTRY_STATUS.PUBLISHED;
|
|
28
|
-
exports.STATUS_PUBLISHED = STATUS_PUBLISHED;
|
|
29
|
-
const STATUS_UNPUBLISHED = _types.CONTENT_ENTRY_STATUS.UNPUBLISHED;
|
|
30
|
-
exports.STATUS_UNPUBLISHED = STATUS_UNPUBLISHED;
|
|
31
|
-
/**
|
|
32
|
-
* Used for some fields to convert their values.
|
|
33
|
-
*/
|
|
34
|
-
const convertDefaultValue = (field, value) => {
|
|
35
|
-
switch (field.type) {
|
|
36
|
-
case "boolean":
|
|
37
|
-
return Boolean(value);
|
|
38
|
-
case "number":
|
|
39
|
-
return Number(value);
|
|
40
|
-
default:
|
|
41
|
-
return value;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const getDefaultValue = field => {
|
|
45
|
-
const {
|
|
46
|
-
settings,
|
|
47
|
-
multipleValues
|
|
48
|
-
} = field;
|
|
49
|
-
if (settings && settings.defaultValue !== undefined) {
|
|
50
|
-
return convertDefaultValue(field, settings.defaultValue);
|
|
51
|
-
}
|
|
52
|
-
const {
|
|
53
|
-
predefinedValues
|
|
54
|
-
} = field;
|
|
55
|
-
if (!predefinedValues || !predefinedValues.enabled || Array.isArray(predefinedValues.values) === false) {
|
|
56
|
-
return undefined;
|
|
57
|
-
}
|
|
58
|
-
if (!multipleValues) {
|
|
59
|
-
const selectedValue = predefinedValues.values.find(value => {
|
|
60
|
-
return !!value.selected;
|
|
61
|
-
});
|
|
62
|
-
if (selectedValue) {
|
|
63
|
-
return convertDefaultValue(field, selectedValue.value);
|
|
64
|
-
}
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
return predefinedValues.values.filter(({
|
|
68
|
-
selected
|
|
69
|
-
}) => !!selected).map(({
|
|
70
|
-
value
|
|
71
|
-
}) => {
|
|
72
|
-
return convertDefaultValue(field, value);
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* Cleans and adds default values to create input data.
|
|
77
|
-
*/
|
|
78
|
-
const mapAndCleanCreateInputData = (model, input) => {
|
|
79
|
-
return model.fields.reduce((acc, field) => {
|
|
80
|
-
/**
|
|
81
|
-
* This should never happen, but let's make it sure.
|
|
82
|
-
* The fix would be for the user to add the fieldId on the field definition.
|
|
83
|
-
*/
|
|
84
|
-
if (!field.fieldId) {
|
|
85
|
-
throw new _error.default("Field does not have an fieldId.", "MISSING_FIELD_ID", {
|
|
86
|
-
field
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
const value = input[field.fieldId];
|
|
90
|
-
/**
|
|
91
|
-
* We set the default value on create input if value is not defined.
|
|
92
|
-
*/
|
|
93
|
-
acc[field.fieldId] = value === undefined ? getDefaultValue(field) : value;
|
|
94
|
-
return acc;
|
|
95
|
-
}, {});
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* Cleans the update input entry data.
|
|
99
|
-
*/
|
|
100
|
-
const mapAndCleanUpdatedInputData = (model, input) => {
|
|
101
|
-
return model.fields.reduce((acc, field) => {
|
|
102
|
-
/**
|
|
103
|
-
* This should never happen, but let's make it sure.
|
|
104
|
-
* The fix would be for the user to add the fieldId on the field definition.
|
|
105
|
-
*/
|
|
106
|
-
if (!field.fieldId) {
|
|
107
|
-
throw new _error.default("Field does not have an fieldId.", "MISSING_FIELD_ID", {
|
|
108
|
-
field
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* We cannot set default value here because user might want to update only certain field values.
|
|
113
|
-
*/
|
|
114
|
-
const value = input[field.fieldId];
|
|
115
|
-
if (value === undefined) {
|
|
116
|
-
return acc;
|
|
117
|
-
}
|
|
118
|
-
acc[field.fieldId] = value;
|
|
119
|
-
return acc;
|
|
120
|
-
}, {});
|
|
121
|
-
};
|
|
122
|
-
/**
|
|
123
|
-
* This method takes original entry meta and new input.
|
|
124
|
-
* When new meta is merged onto the existing one, everything that has undefined or null value is removed.
|
|
125
|
-
*/
|
|
126
|
-
const createEntryMeta = (input, original) => {
|
|
127
|
-
const meta = (0, _merge.default)(original || {}, input || {});
|
|
128
|
-
return (0, _utils.removeUndefinedValues)((0, _utils.removeNullValues)(meta));
|
|
129
|
-
};
|
|
130
|
-
const createEntryId = input => {
|
|
131
|
-
let entryId = (0, _utils.mdbid)();
|
|
132
|
-
if (input.id) {
|
|
133
|
-
if (input.id.match(/^([a-zA-Z0-9])([a-zA-Z0-9\-]+)([a-zA-Z0-9])$/) === null) {
|
|
134
|
-
throw new _error.default("The provided ID is not valid. It must be a string which can be A-Z, a-z, 0-9, - and it cannot start or end with a -.", "INVALID_ID", {
|
|
135
|
-
id: input.id
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
entryId = input.id;
|
|
139
|
-
}
|
|
140
|
-
const version = 1;
|
|
141
|
-
return {
|
|
142
|
-
entryId,
|
|
143
|
-
version,
|
|
144
|
-
id: (0, _utils.createIdentifier)({
|
|
145
|
-
id: entryId,
|
|
146
|
-
version
|
|
147
|
-
})
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
const increaseEntryIdVersion = id => {
|
|
151
|
-
const {
|
|
152
|
-
id: entryId,
|
|
153
|
-
version
|
|
154
|
-
} = (0, _utils.parseIdentifier)(id);
|
|
155
|
-
if (!version) {
|
|
156
|
-
throw new _error.default("Cannot increase version on the ID without the version part.", "WRONG_ID", {
|
|
157
|
-
id
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
return {
|
|
161
|
-
entryId,
|
|
162
|
-
version: version + 1,
|
|
163
|
-
id: (0, _utils.createIdentifier)({
|
|
164
|
-
id: entryId,
|
|
165
|
-
version: version + 1
|
|
166
|
-
})
|
|
167
|
-
};
|
|
168
|
-
};
|
|
169
|
-
const allowedEntryStatus = ["draft", "published", "unpublished"];
|
|
170
|
-
const transformEntryStatus = status => {
|
|
171
|
-
return allowedEntryStatus.includes(status) ? status : "draft";
|
|
172
|
-
};
|
|
21
|
+
var _entryDataFactories = require("./contentEntry/entryDataFactories");
|
|
173
22
|
const createSort = sort => {
|
|
174
|
-
if (
|
|
175
|
-
return
|
|
176
|
-
} else if (sort.filter(s => !!s).length === 0) {
|
|
177
|
-
return ["createdOn_DESC"];
|
|
23
|
+
if (Array.isArray(sort) && sort.filter(Boolean).length > 0) {
|
|
24
|
+
return sort;
|
|
178
25
|
}
|
|
179
|
-
return
|
|
26
|
+
return ["revisionCreatedOn_DESC"];
|
|
180
27
|
};
|
|
181
28
|
const createContentEntryCrud = params => {
|
|
182
29
|
const {
|
|
@@ -184,18 +31,10 @@ const createContentEntryCrud = params => {
|
|
|
184
31
|
entriesPermissions,
|
|
185
32
|
modelsPermissions,
|
|
186
33
|
context,
|
|
187
|
-
getIdentity,
|
|
34
|
+
getIdentity: getSecurityIdentity,
|
|
188
35
|
getTenant,
|
|
189
36
|
getLocale
|
|
190
37
|
} = params;
|
|
191
|
-
const getCreatedBy = () => {
|
|
192
|
-
const identity = getIdentity();
|
|
193
|
-
return {
|
|
194
|
-
id: identity.id,
|
|
195
|
-
displayName: identity.displayName,
|
|
196
|
-
type: identity.type
|
|
197
|
-
};
|
|
198
|
-
};
|
|
199
38
|
|
|
200
39
|
/**
|
|
201
40
|
* Create
|
|
@@ -218,6 +57,13 @@ const createContentEntryCrud = params => {
|
|
|
218
57
|
const onEntryAfterUpdate = (0, _pubsub.createTopic)("cms.onEntryAfterUpdate");
|
|
219
58
|
const onEntryUpdateError = (0, _pubsub.createTopic)("cms.onEntryUpdateError");
|
|
220
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Move
|
|
62
|
+
*/
|
|
63
|
+
const onEntryBeforeMove = (0, _pubsub.createTopic)("cms.onEntryBeforeMove");
|
|
64
|
+
const onEntryAfterMove = (0, _pubsub.createTopic)("cms.onEntryAfterMove");
|
|
65
|
+
const onEntryMoveError = (0, _pubsub.createTopic)("cms.onEntryMoveError");
|
|
66
|
+
|
|
221
67
|
/**
|
|
222
68
|
* Publish
|
|
223
69
|
*/
|
|
@@ -289,34 +135,32 @@ const createContentEntryCrud = params => {
|
|
|
289
135
|
* A helper to delete the entire entry.
|
|
290
136
|
*/
|
|
291
137
|
const deleteEntryHelper = async params => {
|
|
292
|
-
|
|
293
|
-
|
|
138
|
+
const {
|
|
139
|
+
model,
|
|
140
|
+
entry
|
|
141
|
+
} = params;
|
|
142
|
+
try {
|
|
143
|
+
await onEntryBeforeDelete.publish({
|
|
144
|
+
entry,
|
|
145
|
+
model
|
|
146
|
+
});
|
|
147
|
+
await storageOperations.entries.delete(model, {
|
|
148
|
+
entry
|
|
149
|
+
});
|
|
150
|
+
await onEntryAfterDelete.publish({
|
|
151
|
+
entry,
|
|
152
|
+
model
|
|
153
|
+
});
|
|
154
|
+
} catch (ex) {
|
|
155
|
+
await onEntryDeleteError.publish({
|
|
156
|
+
entry,
|
|
294
157
|
model,
|
|
158
|
+
error: ex
|
|
159
|
+
});
|
|
160
|
+
throw new _error.default(ex.message || "Could not delete entry.", ex.code || "DELETE_ERROR", {
|
|
295
161
|
entry
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
await onEntryBeforeDelete.publish({
|
|
299
|
-
entry,
|
|
300
|
-
model
|
|
301
|
-
});
|
|
302
|
-
await storageOperations.entries.delete(model, {
|
|
303
|
-
entry
|
|
304
|
-
});
|
|
305
|
-
await onEntryAfterDelete.publish({
|
|
306
|
-
entry,
|
|
307
|
-
model
|
|
308
|
-
});
|
|
309
|
-
} catch (ex) {
|
|
310
|
-
await onEntryDeleteError.publish({
|
|
311
|
-
entry,
|
|
312
|
-
model,
|
|
313
|
-
error: ex
|
|
314
|
-
});
|
|
315
|
-
throw new _error.default(ex.message || "Could not delete entry.", ex.code || "DELETE_ERROR", {
|
|
316
|
-
entry
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
});
|
|
162
|
+
});
|
|
163
|
+
}
|
|
320
164
|
};
|
|
321
165
|
/**
|
|
322
166
|
* A helper to get entries by revision IDs
|
|
@@ -327,15 +171,14 @@ const createContentEntryCrud = params => {
|
|
|
327
171
|
rwd: "r"
|
|
328
172
|
});
|
|
329
173
|
await modelsPermissions.ensureCanAccessModel({
|
|
330
|
-
model
|
|
331
|
-
locale: getLocale().code
|
|
174
|
+
model
|
|
332
175
|
});
|
|
333
176
|
const entries = await storageOperations.entries.getByIds(model, {
|
|
334
177
|
ids
|
|
335
178
|
});
|
|
336
179
|
return (0, _filterAsync.filterAsync)(entries, async entry => {
|
|
337
180
|
return entriesPermissions.ensure({
|
|
338
|
-
owns: entry.
|
|
181
|
+
owns: entry.revisionCreatedBy
|
|
339
182
|
}, {
|
|
340
183
|
throw: false
|
|
341
184
|
});
|
|
@@ -361,15 +204,14 @@ const createContentEntryCrud = params => {
|
|
|
361
204
|
rwd: "r"
|
|
362
205
|
});
|
|
363
206
|
await modelsPermissions.ensureCanAccessModel({
|
|
364
|
-
model
|
|
365
|
-
locale: getLocale().code
|
|
207
|
+
model
|
|
366
208
|
});
|
|
367
209
|
const entries = await storageOperations.entries.getPublishedByIds(model, {
|
|
368
210
|
ids
|
|
369
211
|
});
|
|
370
212
|
return (0, _filterAsync.filterAsync)(entries, async entry => {
|
|
371
213
|
return entriesPermissions.ensure({
|
|
372
|
-
owns: entry.
|
|
214
|
+
owns: entry.revisionCreatedBy
|
|
373
215
|
}, {
|
|
374
216
|
throw: false
|
|
375
217
|
});
|
|
@@ -380,15 +222,14 @@ const createContentEntryCrud = params => {
|
|
|
380
222
|
rwd: "r"
|
|
381
223
|
});
|
|
382
224
|
await modelsPermissions.ensureCanAccessModel({
|
|
383
|
-
model
|
|
384
|
-
locale: getLocale().code
|
|
225
|
+
model
|
|
385
226
|
});
|
|
386
227
|
const entries = await storageOperations.entries.getLatestByIds(model, {
|
|
387
228
|
ids
|
|
388
229
|
});
|
|
389
230
|
return (0, _filterAsync.filterAsync)(entries, async entry => {
|
|
390
231
|
return entriesPermissions.ensure({
|
|
391
|
-
owns: entry.
|
|
232
|
+
owns: entry.revisionCreatedBy
|
|
392
233
|
}, {
|
|
393
234
|
throw: false
|
|
394
235
|
});
|
|
@@ -435,21 +276,22 @@ const createContentEntryCrud = params => {
|
|
|
435
276
|
});
|
|
436
277
|
}
|
|
437
278
|
await modelsPermissions.ensureCanAccessModel({
|
|
438
|
-
model
|
|
439
|
-
locale: getLocale().code
|
|
279
|
+
model
|
|
440
280
|
});
|
|
441
281
|
const {
|
|
442
282
|
where: initialWhere,
|
|
443
283
|
limit: initialLimit
|
|
444
284
|
} = params;
|
|
445
285
|
const limit = initialLimit && initialLimit > 0 ? initialLimit : 50;
|
|
446
|
-
const where =
|
|
286
|
+
const where = {
|
|
287
|
+
...initialWhere
|
|
288
|
+
};
|
|
447
289
|
/**
|
|
448
290
|
* Possibly only get records which are owned by current user.
|
|
449
291
|
* Or if searching for the owner set that value - in the case that user can see other entries than their own.
|
|
450
292
|
*/
|
|
451
293
|
if (await entriesPermissions.canAccessOnlyOwnRecords()) {
|
|
452
|
-
where.
|
|
294
|
+
where.createdBy = getSecurityIdentity().id;
|
|
453
295
|
}
|
|
454
296
|
|
|
455
297
|
/**
|
|
@@ -480,12 +322,13 @@ const createContentEntryCrud = params => {
|
|
|
480
322
|
totalCount,
|
|
481
323
|
cursor,
|
|
482
324
|
items
|
|
483
|
-
} = await storageOperations.entries.list(model,
|
|
325
|
+
} = await storageOperations.entries.list(model, {
|
|
326
|
+
...params,
|
|
484
327
|
sort: createSort(params.sort),
|
|
485
328
|
limit,
|
|
486
329
|
where,
|
|
487
330
|
fields
|
|
488
|
-
})
|
|
331
|
+
});
|
|
489
332
|
const meta = {
|
|
490
333
|
hasMoreItems,
|
|
491
334
|
totalCount,
|
|
@@ -509,62 +352,26 @@ const createContentEntryCrud = params => {
|
|
|
509
352
|
});
|
|
510
353
|
}
|
|
511
354
|
};
|
|
512
|
-
const createEntry = async (model,
|
|
513
|
-
var _inputData$wbyAco_loc;
|
|
355
|
+
const createEntry = async (model, rawInput, options) => {
|
|
514
356
|
await entriesPermissions.ensure({
|
|
515
357
|
rwd: "w"
|
|
516
358
|
});
|
|
517
359
|
await modelsPermissions.ensureCanAccessModel({
|
|
518
|
-
model
|
|
519
|
-
locale: getLocale().code
|
|
520
|
-
});
|
|
521
|
-
|
|
522
|
-
/**
|
|
523
|
-
* Make sure we only work with fields that are defined in the model.
|
|
524
|
-
*/
|
|
525
|
-
const initialInput = mapAndCleanCreateInputData(model, inputData);
|
|
526
|
-
await (0, _entryDataValidation.validateModelEntryData)({
|
|
527
|
-
context,
|
|
528
|
-
model,
|
|
529
|
-
data: initialInput
|
|
360
|
+
model
|
|
530
361
|
});
|
|
531
|
-
const
|
|
362
|
+
const {
|
|
363
|
+
entry,
|
|
364
|
+
input
|
|
365
|
+
} = await (0, _entryDataFactories.createEntryData)({
|
|
532
366
|
context,
|
|
533
367
|
model,
|
|
534
|
-
|
|
535
|
-
|
|
368
|
+
options,
|
|
369
|
+
rawInput,
|
|
370
|
+
getLocale,
|
|
371
|
+
getTenant,
|
|
372
|
+
getIdentity: getSecurityIdentity,
|
|
373
|
+
entriesPermissions
|
|
536
374
|
});
|
|
537
|
-
const locale = getLocale();
|
|
538
|
-
const owner = getCreatedBy();
|
|
539
|
-
const {
|
|
540
|
-
id,
|
|
541
|
-
entryId,
|
|
542
|
-
version
|
|
543
|
-
} = createEntryId(inputData);
|
|
544
|
-
/**
|
|
545
|
-
* There is a possibility that user sends an ID in the input, so we will use that one.
|
|
546
|
-
* There is no check if the ID is unique or not, that is up to the user.
|
|
547
|
-
*/
|
|
548
|
-
const entry = {
|
|
549
|
-
webinyVersion: context.WEBINY_VERSION,
|
|
550
|
-
tenant: getTenant().id,
|
|
551
|
-
entryId,
|
|
552
|
-
id,
|
|
553
|
-
modelId: model.modelId,
|
|
554
|
-
locale: locale.code,
|
|
555
|
-
createdOn: new Date().toISOString(),
|
|
556
|
-
savedOn: new Date().toISOString(),
|
|
557
|
-
createdBy: owner,
|
|
558
|
-
ownedBy: owner,
|
|
559
|
-
modifiedBy: null,
|
|
560
|
-
version,
|
|
561
|
-
locked: false,
|
|
562
|
-
status: STATUS_DRAFT,
|
|
563
|
-
values: input,
|
|
564
|
-
location: {
|
|
565
|
-
folderId: ((_inputData$wbyAco_loc = inputData.wbyAco_location) === null || _inputData$wbyAco_loc === void 0 ? void 0 : _inputData$wbyAco_loc.folderId) || _constants.ROOT_FOLDER
|
|
566
|
-
}
|
|
567
|
-
};
|
|
568
375
|
let storageEntry = null;
|
|
569
376
|
try {
|
|
570
377
|
await onEntryBeforeCreate.publish({
|
|
@@ -583,7 +390,7 @@ const createContentEntryCrud = params => {
|
|
|
583
390
|
model,
|
|
584
391
|
input
|
|
585
392
|
});
|
|
586
|
-
return
|
|
393
|
+
return entry;
|
|
587
394
|
} catch (ex) {
|
|
588
395
|
await onEntryCreateError.publish({
|
|
589
396
|
error: ex,
|
|
@@ -599,20 +406,14 @@ const createContentEntryCrud = params => {
|
|
|
599
406
|
});
|
|
600
407
|
}
|
|
601
408
|
};
|
|
602
|
-
const createEntryRevisionFrom = async (model, sourceId,
|
|
409
|
+
const createEntryRevisionFrom = async (model, sourceId, rawInput, options) => {
|
|
603
410
|
await entriesPermissions.ensure({
|
|
604
411
|
rwd: "w"
|
|
605
412
|
});
|
|
606
413
|
await modelsPermissions.ensureCanAccessModel({
|
|
607
|
-
model
|
|
608
|
-
locale: getLocale().code
|
|
414
|
+
model
|
|
609
415
|
});
|
|
610
416
|
|
|
611
|
-
/**
|
|
612
|
-
* Make sure we only work with fields that are defined in the model.
|
|
613
|
-
*/
|
|
614
|
-
const input = mapAndCleanUpdatedInputData(model, inputData);
|
|
615
|
-
|
|
616
417
|
/**
|
|
617
418
|
* Entries are identified by a common parent ID + Revision number.
|
|
618
419
|
*/
|
|
@@ -628,48 +429,31 @@ const createContentEntryCrud = params => {
|
|
|
628
429
|
if (!originalStorageEntry) {
|
|
629
430
|
throw new _handlerGraphql.NotFoundError(`Entry "${sourceId}" of model "${model.modelId}" was not found.`);
|
|
630
431
|
}
|
|
432
|
+
if (!latestStorageEntry) {
|
|
433
|
+
throw new _handlerGraphql.NotFoundError(`Latest entry "${uniqueId}" of model "${model.modelId}" was not found.`);
|
|
434
|
+
}
|
|
631
435
|
|
|
632
436
|
/**
|
|
633
437
|
* We need to convert data from DB to its original form before using it further.
|
|
634
438
|
*/
|
|
635
439
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
636
|
-
const initialValues = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry.values), input);
|
|
637
|
-
await (0, _entryDataValidation.validateModelEntryData)({
|
|
638
|
-
context,
|
|
639
|
-
model,
|
|
640
|
-
data: initialValues,
|
|
641
|
-
entry: originalEntry
|
|
642
|
-
});
|
|
643
|
-
const values = await (0, _referenceFieldsMapping.referenceFieldsMapping)({
|
|
644
|
-
context,
|
|
645
|
-
model,
|
|
646
|
-
input: initialValues,
|
|
647
|
-
validateEntries: false
|
|
648
|
-
});
|
|
649
440
|
await entriesPermissions.ensure({
|
|
650
441
|
owns: originalEntry.createdBy
|
|
651
442
|
});
|
|
652
|
-
const identity = getIdentity();
|
|
653
|
-
const latestId = latestStorageEntry ? latestStorageEntry.id : sourceId;
|
|
654
443
|
const {
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
} =
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
modifiedBy: null,
|
|
669
|
-
locked: false,
|
|
670
|
-
publishedOn: undefined,
|
|
671
|
-
status: STATUS_DRAFT,
|
|
672
|
-
values
|
|
444
|
+
entry,
|
|
445
|
+
input
|
|
446
|
+
} = await (0, _entryDataFactories.createEntryRevisionFromData)({
|
|
447
|
+
sourceId,
|
|
448
|
+
model,
|
|
449
|
+
rawInput,
|
|
450
|
+
options,
|
|
451
|
+
context,
|
|
452
|
+
getIdentity: getSecurityIdentity,
|
|
453
|
+
getTenant,
|
|
454
|
+
getLocale,
|
|
455
|
+
originalEntry,
|
|
456
|
+
latestStorageEntry
|
|
673
457
|
});
|
|
674
458
|
let storageEntry = null;
|
|
675
459
|
try {
|
|
@@ -691,7 +475,7 @@ const createContentEntryCrud = params => {
|
|
|
691
475
|
original: originalEntry,
|
|
692
476
|
storageEntry: result
|
|
693
477
|
});
|
|
694
|
-
return
|
|
478
|
+
return entry;
|
|
695
479
|
} catch (ex) {
|
|
696
480
|
await onEntryCreateRevisionError.publish({
|
|
697
481
|
entry,
|
|
@@ -709,21 +493,14 @@ const createContentEntryCrud = params => {
|
|
|
709
493
|
});
|
|
710
494
|
}
|
|
711
495
|
};
|
|
712
|
-
const updateEntry = async (model, id,
|
|
713
|
-
var _inputData$wbyAco_loc2;
|
|
496
|
+
const updateEntry = async (model, id, rawInput, metaInput, options) => {
|
|
714
497
|
await entriesPermissions.ensure({
|
|
715
498
|
rwd: "w"
|
|
716
499
|
});
|
|
717
500
|
await modelsPermissions.ensureCanAccessModel({
|
|
718
|
-
model
|
|
719
|
-
locale: getLocale().code
|
|
501
|
+
model
|
|
720
502
|
});
|
|
721
503
|
|
|
722
|
-
/**
|
|
723
|
-
* Make sure we only work with fields that are defined in the model.
|
|
724
|
-
*/
|
|
725
|
-
const input = mapAndCleanUpdatedInputData(model, inputData);
|
|
726
|
-
|
|
727
504
|
/**
|
|
728
505
|
* The entry we are going to update.
|
|
729
506
|
*/
|
|
@@ -737,42 +514,23 @@ const createContentEntryCrud = params => {
|
|
|
737
514
|
throw new _error.default(`Cannot update entry because it's locked.`, "CONTENT_ENTRY_UPDATE_ERROR");
|
|
738
515
|
}
|
|
739
516
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
740
|
-
await (0, _entryDataValidation.validateModelEntryData)({
|
|
741
|
-
context,
|
|
742
|
-
model,
|
|
743
|
-
data: input,
|
|
744
|
-
entry: originalEntry
|
|
745
|
-
});
|
|
746
517
|
await entriesPermissions.ensure({
|
|
747
|
-
owns: originalEntry.
|
|
518
|
+
owns: originalEntry.revisionCreatedBy
|
|
748
519
|
});
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
|
|
520
|
+
const {
|
|
521
|
+
entry,
|
|
522
|
+
input
|
|
523
|
+
} = await (0, _entryDataFactories.createUpdateEntryData)({
|
|
752
524
|
model,
|
|
753
|
-
|
|
754
|
-
|
|
525
|
+
rawInput,
|
|
526
|
+
options,
|
|
527
|
+
context,
|
|
528
|
+
getIdentity: getSecurityIdentity,
|
|
529
|
+
getTenant,
|
|
530
|
+
getLocale,
|
|
531
|
+
originalEntry,
|
|
532
|
+
metaInput
|
|
755
533
|
});
|
|
756
|
-
/**
|
|
757
|
-
* If users wants to remove a key from meta values, they need to send meta key with the null value.
|
|
758
|
-
*/
|
|
759
|
-
const meta = createEntryMeta(metaInput, originalEntry.meta);
|
|
760
|
-
/**
|
|
761
|
-
* We always send the full entry to the hooks and storage operations update.
|
|
762
|
-
*/
|
|
763
|
-
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
764
|
-
savedOn: new Date().toISOString(),
|
|
765
|
-
modifiedBy: getCreatedBy(),
|
|
766
|
-
values,
|
|
767
|
-
meta,
|
|
768
|
-
status: transformEntryStatus(originalEntry.status)
|
|
769
|
-
});
|
|
770
|
-
const folderId = (_inputData$wbyAco_loc2 = inputData.wbyAco_location) === null || _inputData$wbyAco_loc2 === void 0 ? void 0 : _inputData$wbyAco_loc2.folderId;
|
|
771
|
-
if (folderId) {
|
|
772
|
-
entry.location = {
|
|
773
|
-
folderId
|
|
774
|
-
};
|
|
775
|
-
}
|
|
776
534
|
let storageEntry = null;
|
|
777
535
|
try {
|
|
778
536
|
await onEntryBeforeUpdate.publish({
|
|
@@ -793,7 +551,7 @@ const createContentEntryCrud = params => {
|
|
|
793
551
|
input,
|
|
794
552
|
original: originalEntry
|
|
795
553
|
});
|
|
796
|
-
return
|
|
554
|
+
return entry;
|
|
797
555
|
} catch (ex) {
|
|
798
556
|
await onEntryUpdateError.publish({
|
|
799
557
|
entry,
|
|
@@ -810,44 +568,109 @@ const createContentEntryCrud = params => {
|
|
|
810
568
|
});
|
|
811
569
|
}
|
|
812
570
|
};
|
|
813
|
-
const
|
|
571
|
+
const validateEntry = async (model, id, inputData) => {
|
|
814
572
|
await entriesPermissions.ensure({
|
|
815
573
|
rwd: "w"
|
|
816
574
|
});
|
|
817
575
|
await modelsPermissions.ensureCanAccessModel({
|
|
576
|
+
model
|
|
577
|
+
});
|
|
578
|
+
const input = (0, _entryDataFactories.mapAndCleanUpdatedInputData)(model, inputData || {});
|
|
579
|
+
let originalEntry;
|
|
580
|
+
if (id) {
|
|
581
|
+
/**
|
|
582
|
+
* The entry we are going to update.
|
|
583
|
+
*/
|
|
584
|
+
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
585
|
+
id
|
|
586
|
+
});
|
|
587
|
+
if (!originalStorageEntry) {
|
|
588
|
+
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
589
|
+
}
|
|
590
|
+
originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
591
|
+
}
|
|
592
|
+
const result = await (0, _entryDataValidation.validateModelEntryData)({
|
|
593
|
+
context,
|
|
818
594
|
model,
|
|
819
|
-
|
|
595
|
+
data: input,
|
|
596
|
+
entry: originalEntry
|
|
597
|
+
});
|
|
598
|
+
return result.length > 0 ? result : [];
|
|
599
|
+
};
|
|
600
|
+
const moveEntry = async (model, id, folderId) => {
|
|
601
|
+
await entriesPermissions.ensure({
|
|
602
|
+
rwd: "w"
|
|
603
|
+
});
|
|
604
|
+
await modelsPermissions.ensureCanAccessModel({
|
|
605
|
+
model
|
|
820
606
|
});
|
|
821
|
-
|
|
822
607
|
/**
|
|
823
|
-
*
|
|
608
|
+
* The entry we are going to move to another folder.
|
|
824
609
|
*/
|
|
825
610
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
826
611
|
id
|
|
827
612
|
});
|
|
828
613
|
if (!originalStorageEntry) {
|
|
829
|
-
throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found
|
|
614
|
+
throw new _handlerGraphql.NotFoundError(`Entry "${id}" of model "${model.modelId}" was not found.`);
|
|
830
615
|
}
|
|
831
|
-
const
|
|
616
|
+
const entry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
832
617
|
/**
|
|
833
|
-
*
|
|
618
|
+
* No need to continue if the entry is already in the requested folder.
|
|
834
619
|
*/
|
|
835
|
-
if (
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
620
|
+
if (entry.location?.folderId === folderId) {
|
|
621
|
+
return entry;
|
|
622
|
+
}
|
|
623
|
+
try {
|
|
624
|
+
await onEntryBeforeMove.publish({
|
|
625
|
+
entry,
|
|
626
|
+
model,
|
|
627
|
+
folderId
|
|
628
|
+
});
|
|
629
|
+
await storageOperations.entries.move(model, id, folderId);
|
|
630
|
+
await onEntryAfterMove.publish({
|
|
631
|
+
entry,
|
|
632
|
+
model,
|
|
633
|
+
folderId
|
|
634
|
+
});
|
|
635
|
+
return entry;
|
|
636
|
+
} catch (ex) {
|
|
637
|
+
await onEntryMoveError.publish({
|
|
638
|
+
entry,
|
|
639
|
+
model,
|
|
640
|
+
folderId,
|
|
641
|
+
error: ex
|
|
642
|
+
});
|
|
643
|
+
throw _error.default.from(ex, {
|
|
644
|
+
message: `Could not move entry "${id}" of model "${model.modelId}".`,
|
|
645
|
+
code: "MOVE_ENTRY_ERROR"
|
|
839
646
|
});
|
|
840
647
|
}
|
|
841
|
-
|
|
648
|
+
};
|
|
649
|
+
const republishEntry = async (model, id) => {
|
|
650
|
+
await entriesPermissions.ensure({
|
|
651
|
+
rwd: "w"
|
|
652
|
+
});
|
|
653
|
+
await modelsPermissions.ensureCanAccessModel({
|
|
654
|
+
model
|
|
655
|
+
});
|
|
656
|
+
|
|
657
|
+
/**
|
|
658
|
+
* Fetch the entry from the storage.
|
|
659
|
+
*/
|
|
660
|
+
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
661
|
+
id
|
|
662
|
+
});
|
|
663
|
+
if (!originalStorageEntry) {
|
|
664
|
+
throw new _handlerGraphql.NotFoundError(`Entry "${id}" was not found!`);
|
|
665
|
+
}
|
|
666
|
+
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
667
|
+
const {
|
|
668
|
+
entry
|
|
669
|
+
} = await (0, _entryDataFactories.createRepublishEntryData)({
|
|
842
670
|
context,
|
|
843
671
|
model,
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
});
|
|
847
|
-
const entry = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, originalEntry), {}, {
|
|
848
|
-
savedOn: new Date().toISOString(),
|
|
849
|
-
webinyVersion: context.WEBINY_VERSION,
|
|
850
|
-
values
|
|
672
|
+
originalEntry,
|
|
673
|
+
getIdentity: getSecurityIdentity
|
|
851
674
|
});
|
|
852
675
|
const storageEntry = await (0, _entryStorage.entryToStorageTransform)(context, model, entry);
|
|
853
676
|
/**
|
|
@@ -878,9 +701,9 @@ const createContentEntryCrud = params => {
|
|
|
878
701
|
await onEntryAfterRepublish.publish({
|
|
879
702
|
entry,
|
|
880
703
|
model,
|
|
881
|
-
storageEntry
|
|
704
|
+
storageEntry: result
|
|
882
705
|
});
|
|
883
|
-
return
|
|
706
|
+
return entry;
|
|
884
707
|
} catch (ex) {
|
|
885
708
|
await onEntryRepublishError.publish({
|
|
886
709
|
entry,
|
|
@@ -897,8 +720,7 @@ const createContentEntryCrud = params => {
|
|
|
897
720
|
rwd: "d"
|
|
898
721
|
});
|
|
899
722
|
await modelsPermissions.ensureCanAccessModel({
|
|
900
|
-
model
|
|
901
|
-
locale: getLocale().code
|
|
723
|
+
model
|
|
902
724
|
});
|
|
903
725
|
const {
|
|
904
726
|
id: entryId,
|
|
@@ -910,7 +732,7 @@ const createContentEntryCrud = params => {
|
|
|
910
732
|
const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
911
733
|
id: entryId
|
|
912
734
|
});
|
|
913
|
-
const
|
|
735
|
+
const storagePreviousEntry = await storageOperations.entries.getPreviousRevision(model, {
|
|
914
736
|
entryId,
|
|
915
737
|
version: version
|
|
916
738
|
});
|
|
@@ -918,28 +740,46 @@ const createContentEntryCrud = params => {
|
|
|
918
740
|
throw new _handlerGraphql.NotFoundError(`Entry "${revisionId}" was not found!`);
|
|
919
741
|
}
|
|
920
742
|
await entriesPermissions.ensure({
|
|
921
|
-
owns: storageEntryToDelete.
|
|
743
|
+
owns: storageEntryToDelete.revisionCreatedBy
|
|
922
744
|
});
|
|
923
745
|
const latestEntryRevisionId = latestStorageEntry ? latestStorageEntry.id : null;
|
|
924
746
|
const entryToDelete = await (0, _entryStorage.entryFromStorageTransform)(context, model, storageEntryToDelete);
|
|
747
|
+
|
|
925
748
|
/**
|
|
926
|
-
* If targeted record is the latest entry record and there is no previous one, we need
|
|
927
|
-
*
|
|
749
|
+
* If targeted record is the latest entry record and there is no previous one, we need
|
|
750
|
+
* to run full delete with hooks. In this case, `deleteRevision` hooks are not fired.
|
|
928
751
|
*/
|
|
929
|
-
if (entryToDelete.id === latestEntryRevisionId && !
|
|
752
|
+
if (entryToDelete.id === latestEntryRevisionId && !storagePreviousEntry) {
|
|
930
753
|
return await deleteEntryHelper({
|
|
931
754
|
model,
|
|
932
755
|
entry: entryToDelete
|
|
933
756
|
});
|
|
934
757
|
}
|
|
935
758
|
/**
|
|
936
|
-
* If targeted record is latest entry revision, set the previous one as the new latest
|
|
759
|
+
* If targeted record is the latest entry revision, set the previous one as the new latest.
|
|
937
760
|
*/
|
|
938
761
|
let entryToSetAsLatest = null;
|
|
939
762
|
let storageEntryToSetAsLatest = null;
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
763
|
+
let updatedEntryToSetAsLatest = null;
|
|
764
|
+
let storageUpdatedEntryToSetAsLatest = null;
|
|
765
|
+
if (entryToDelete.id === latestEntryRevisionId && storagePreviousEntry) {
|
|
766
|
+
entryToSetAsLatest = await (0, _entryStorage.entryFromStorageTransform)(context, model, storagePreviousEntry);
|
|
767
|
+
storageEntryToSetAsLatest = storagePreviousEntry;
|
|
768
|
+
|
|
769
|
+
/**
|
|
770
|
+
* Since we're setting a different revision as the latest, we need to update entry-level meta
|
|
771
|
+
* fields. The values are taken from the latest revision we're about to delete. The update of the
|
|
772
|
+
* new latest revision is performed within storage operations.
|
|
773
|
+
*/
|
|
774
|
+
const pickedEntryLevelMetaFields = (0, _constants.pickEntryMetaFields)(entryToDelete, _constants.isEntryLevelEntryMetaField);
|
|
775
|
+
updatedEntryToSetAsLatest = {
|
|
776
|
+
...entryToSetAsLatest,
|
|
777
|
+
...pickedEntryLevelMetaFields
|
|
778
|
+
};
|
|
779
|
+
storageUpdatedEntryToSetAsLatest = {
|
|
780
|
+
...storageEntryToSetAsLatest,
|
|
781
|
+
...pickedEntryLevelMetaFields
|
|
782
|
+
};
|
|
943
783
|
}
|
|
944
784
|
try {
|
|
945
785
|
await onEntryRevisionBeforeDelete.publish({
|
|
@@ -949,8 +789,8 @@ const createContentEntryCrud = params => {
|
|
|
949
789
|
await storageOperations.entries.deleteRevision(model, {
|
|
950
790
|
entry: entryToDelete,
|
|
951
791
|
storageEntry: storageEntryToDelete,
|
|
952
|
-
latestEntry:
|
|
953
|
-
latestStorageEntry:
|
|
792
|
+
latestEntry: updatedEntryToSetAsLatest,
|
|
793
|
+
latestStorageEntry: storageUpdatedEntryToSetAsLatest
|
|
954
794
|
});
|
|
955
795
|
await onEntryRevisionAfterDelete.publish({
|
|
956
796
|
entry: entryToDelete,
|
|
@@ -966,8 +806,8 @@ const createContentEntryCrud = params => {
|
|
|
966
806
|
error: ex,
|
|
967
807
|
entry: entryToDelete,
|
|
968
808
|
storageEntry: storageEntryToDelete,
|
|
969
|
-
latestEntry:
|
|
970
|
-
latestStorageEntry:
|
|
809
|
+
latestEntry: updatedEntryToSetAsLatest,
|
|
810
|
+
latestStorageEntry: storageUpdatedEntryToSetAsLatest
|
|
971
811
|
});
|
|
972
812
|
}
|
|
973
813
|
};
|
|
@@ -993,8 +833,7 @@ const createContentEntryCrud = params => {
|
|
|
993
833
|
rwd: "d"
|
|
994
834
|
});
|
|
995
835
|
await modelsPermissions.ensureCanAccessModel({
|
|
996
|
-
model
|
|
997
|
-
locale: getLocale().code
|
|
836
|
+
model
|
|
998
837
|
});
|
|
999
838
|
const {
|
|
1000
839
|
items: entries
|
|
@@ -1052,8 +891,7 @@ const createContentEntryCrud = params => {
|
|
|
1052
891
|
rwd: "d"
|
|
1053
892
|
});
|
|
1054
893
|
await modelsPermissions.ensureCanAccessModel({
|
|
1055
|
-
model
|
|
1056
|
-
locale: getLocale().code
|
|
894
|
+
model
|
|
1057
895
|
});
|
|
1058
896
|
const {
|
|
1059
897
|
force
|
|
@@ -1100,8 +938,7 @@ const createContentEntryCrud = params => {
|
|
|
1100
938
|
pw: "p"
|
|
1101
939
|
});
|
|
1102
940
|
await modelsPermissions.ensureCanAccessModel({
|
|
1103
|
-
model
|
|
1104
|
-
locale: getLocale().code
|
|
941
|
+
model
|
|
1105
942
|
});
|
|
1106
943
|
const originalStorageEntry = await storageOperations.entries.getRevisionById(model, {
|
|
1107
944
|
id
|
|
@@ -1110,19 +947,31 @@ const createContentEntryCrud = params => {
|
|
|
1110
947
|
throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
|
|
1111
948
|
}
|
|
1112
949
|
await entriesPermissions.ensure({
|
|
1113
|
-
owns: originalStorageEntry.
|
|
950
|
+
owns: originalStorageEntry.revisionCreatedBy
|
|
1114
951
|
});
|
|
1115
952
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
953
|
+
|
|
954
|
+
// We need the latest entry to get the latest entry-level meta fields.
|
|
955
|
+
const latestStorageEntry = await storageOperations.entries.getLatestRevisionByEntryId(model, {
|
|
956
|
+
id: originalEntry.entryId
|
|
957
|
+
});
|
|
958
|
+
if (!latestStorageEntry) {
|
|
959
|
+
throw new _handlerGraphql.NotFoundError(`Entry "${id}" in the model "${model.modelId}" was not found.`);
|
|
960
|
+
}
|
|
961
|
+
const latestEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, latestStorageEntry);
|
|
962
|
+
const {
|
|
963
|
+
entry
|
|
964
|
+
} = await (0, _entryDataFactories.createPublishEntryData)({
|
|
965
|
+
context,
|
|
966
|
+
model,
|
|
967
|
+
originalEntry,
|
|
968
|
+
latestEntry,
|
|
969
|
+
getIdentity: getSecurityIdentity
|
|
1122
970
|
});
|
|
1123
971
|
let storageEntry = null;
|
|
1124
972
|
try {
|
|
1125
973
|
await onEntryBeforePublish.publish({
|
|
974
|
+
original: originalEntry,
|
|
1126
975
|
entry,
|
|
1127
976
|
model
|
|
1128
977
|
});
|
|
@@ -1132,13 +981,15 @@ const createContentEntryCrud = params => {
|
|
|
1132
981
|
storageEntry
|
|
1133
982
|
});
|
|
1134
983
|
await onEntryAfterPublish.publish({
|
|
984
|
+
original: originalEntry,
|
|
1135
985
|
entry,
|
|
1136
986
|
storageEntry: result,
|
|
1137
987
|
model
|
|
1138
988
|
});
|
|
1139
|
-
return
|
|
989
|
+
return entry;
|
|
1140
990
|
} catch (ex) {
|
|
1141
991
|
await onEntryPublishError.publish({
|
|
992
|
+
original: originalEntry,
|
|
1142
993
|
entry,
|
|
1143
994
|
model,
|
|
1144
995
|
error: ex
|
|
@@ -1171,11 +1022,16 @@ const createContentEntryCrud = params => {
|
|
|
1171
1022
|
});
|
|
1172
1023
|
}
|
|
1173
1024
|
await entriesPermissions.ensure({
|
|
1174
|
-
owns: originalStorageEntry.
|
|
1025
|
+
owns: originalStorageEntry.revisionCreatedBy
|
|
1175
1026
|
});
|
|
1176
1027
|
const originalEntry = await (0, _entryStorage.entryFromStorageTransform)(context, model, originalStorageEntry);
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1028
|
+
const {
|
|
1029
|
+
entry
|
|
1030
|
+
} = await (0, _entryDataFactories.createUnpublishEntryData)({
|
|
1031
|
+
context,
|
|
1032
|
+
model,
|
|
1033
|
+
originalEntry,
|
|
1034
|
+
getIdentity: getSecurityIdentity
|
|
1179
1035
|
});
|
|
1180
1036
|
let storageEntry = null;
|
|
1181
1037
|
try {
|
|
@@ -1193,7 +1049,7 @@ const createContentEntryCrud = params => {
|
|
|
1193
1049
|
storageEntry: result,
|
|
1194
1050
|
model
|
|
1195
1051
|
});
|
|
1196
|
-
return
|
|
1052
|
+
return entry;
|
|
1197
1053
|
} catch (ex) {
|
|
1198
1054
|
await onEntryUnpublishError.publish({
|
|
1199
1055
|
entry,
|
|
@@ -1213,20 +1069,21 @@ const createContentEntryCrud = params => {
|
|
|
1213
1069
|
rwd: "r"
|
|
1214
1070
|
});
|
|
1215
1071
|
await modelsPermissions.ensureCanAccessModel({
|
|
1216
|
-
model
|
|
1217
|
-
locale: getLocale().code
|
|
1072
|
+
model
|
|
1218
1073
|
});
|
|
1219
1074
|
const {
|
|
1220
1075
|
where: initialWhere,
|
|
1221
1076
|
fieldId
|
|
1222
1077
|
} = params;
|
|
1223
|
-
const where =
|
|
1078
|
+
const where = {
|
|
1079
|
+
...initialWhere
|
|
1080
|
+
};
|
|
1224
1081
|
/**
|
|
1225
1082
|
* Possibly only get records which are owned by current user.
|
|
1226
1083
|
* Or if searching for the owner set that value - in the case that user can see other entries than their own.
|
|
1227
1084
|
*/
|
|
1228
1085
|
if (await entriesPermissions.canAccessOnlyOwnRecords()) {
|
|
1229
|
-
where.
|
|
1086
|
+
where.createdBy = getSecurityIdentity().id;
|
|
1230
1087
|
}
|
|
1231
1088
|
|
|
1232
1089
|
/**
|
|
@@ -1274,72 +1131,30 @@ const createContentEntryCrud = params => {
|
|
|
1274
1131
|
}
|
|
1275
1132
|
};
|
|
1276
1133
|
return {
|
|
1277
|
-
/**
|
|
1278
|
-
* Deprecated - will be removed in 5.35.0
|
|
1279
|
-
*/
|
|
1280
|
-
onBeforeEntryCreate: onEntryBeforeCreate,
|
|
1281
|
-
onAfterEntryCreate: onEntryAfterCreate,
|
|
1282
|
-
onBeforeEntryCreateRevision: onEntryBeforeCreateRevision,
|
|
1283
|
-
onAfterEntryCreateRevision: onEntryRevisionAfterCreate,
|
|
1284
|
-
onBeforeEntryUpdate: onEntryBeforeUpdate,
|
|
1285
|
-
onAfterEntryUpdate: onEntryAfterUpdate,
|
|
1286
|
-
onBeforeEntryDelete: onEntryBeforeDelete,
|
|
1287
|
-
onAfterEntryDelete: onEntryAfterDelete,
|
|
1288
|
-
onBeforeEntryDeleteRevision: onEntryRevisionBeforeDelete,
|
|
1289
|
-
onAfterEntryDeleteRevision: onEntryRevisionAfterDelete,
|
|
1290
|
-
onBeforeEntryPublish: onEntryBeforePublish,
|
|
1291
|
-
onAfterEntryPublish: onEntryAfterPublish,
|
|
1292
|
-
onBeforeEntryUnpublish: onEntryBeforeUnpublish,
|
|
1293
|
-
onAfterEntryUnpublish: onEntryAfterUnpublish,
|
|
1294
|
-
onBeforeEntryGet: onEntryBeforeGet,
|
|
1295
|
-
onBeforeEntryList: onEntryBeforeList,
|
|
1296
|
-
/**
|
|
1297
|
-
* Released in 5.34.0
|
|
1298
|
-
*
|
|
1299
|
-
* Create
|
|
1300
|
-
*/
|
|
1301
1134
|
onEntryBeforeCreate,
|
|
1302
1135
|
onEntryAfterCreate,
|
|
1303
1136
|
onEntryCreateError,
|
|
1304
|
-
/**
|
|
1305
|
-
* Create revision
|
|
1306
|
-
*/
|
|
1307
1137
|
onEntryRevisionBeforeCreate: onEntryBeforeCreateRevision,
|
|
1308
1138
|
onEntryRevisionAfterCreate,
|
|
1309
1139
|
onEntryRevisionCreateError: onEntryCreateRevisionError,
|
|
1310
|
-
/**
|
|
1311
|
-
* Update
|
|
1312
|
-
*/
|
|
1313
1140
|
onEntryBeforeUpdate,
|
|
1314
1141
|
onEntryAfterUpdate,
|
|
1315
1142
|
onEntryUpdateError,
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1143
|
+
onEntryBeforeMove,
|
|
1144
|
+
onEntryAfterMove,
|
|
1145
|
+
onEntryMoveError,
|
|
1319
1146
|
onEntryBeforeDelete,
|
|
1320
1147
|
onEntryAfterDelete,
|
|
1321
1148
|
onEntryDeleteError,
|
|
1322
|
-
/**
|
|
1323
|
-
* Delete entry revision
|
|
1324
|
-
*/
|
|
1325
1149
|
onEntryRevisionBeforeDelete,
|
|
1326
1150
|
onEntryRevisionAfterDelete,
|
|
1327
1151
|
onEntryRevisionDeleteError,
|
|
1328
|
-
/**
|
|
1329
|
-
* Publish
|
|
1330
|
-
*/
|
|
1331
1152
|
onEntryBeforePublish,
|
|
1332
1153
|
onEntryAfterPublish,
|
|
1333
1154
|
onEntryPublishError,
|
|
1334
|
-
/**
|
|
1335
|
-
* Republish
|
|
1336
|
-
*/
|
|
1337
1155
|
onEntryBeforeRepublish,
|
|
1338
1156
|
onEntryAfterRepublish,
|
|
1339
1157
|
onEntryRepublishError,
|
|
1340
|
-
/**
|
|
1341
|
-
* Unpublish
|
|
1342
|
-
*/
|
|
1343
1158
|
onEntryBeforeUnpublish,
|
|
1344
1159
|
onEntryAfterUnpublish,
|
|
1345
1160
|
onEntryUnpublishError,
|
|
@@ -1399,38 +1214,50 @@ const createContentEntryCrud = params => {
|
|
|
1399
1214
|
});
|
|
1400
1215
|
},
|
|
1401
1216
|
async listLatestEntries(model, params) {
|
|
1402
|
-
const where =
|
|
1403
|
-
return this.listEntries(model,
|
|
1404
|
-
sort: ["createdOn_DESC"]
|
|
1405
|
-
|
|
1406
|
-
where:
|
|
1217
|
+
const where = params?.where || {};
|
|
1218
|
+
return this.listEntries(model, {
|
|
1219
|
+
sort: ["createdOn_DESC"],
|
|
1220
|
+
...(params || {}),
|
|
1221
|
+
where: {
|
|
1222
|
+
...where,
|
|
1407
1223
|
latest: true
|
|
1408
|
-
}
|
|
1409
|
-
})
|
|
1224
|
+
}
|
|
1225
|
+
});
|
|
1410
1226
|
},
|
|
1411
1227
|
async listPublishedEntries(model, params) {
|
|
1412
|
-
const where =
|
|
1413
|
-
return this.listEntries(model,
|
|
1414
|
-
sort: ["createdOn_DESC"]
|
|
1415
|
-
|
|
1416
|
-
where:
|
|
1228
|
+
const where = params?.where || {};
|
|
1229
|
+
return this.listEntries(model, {
|
|
1230
|
+
sort: ["createdOn_DESC"],
|
|
1231
|
+
...(params || {}),
|
|
1232
|
+
where: {
|
|
1233
|
+
...where,
|
|
1417
1234
|
published: true
|
|
1418
|
-
}
|
|
1419
|
-
})
|
|
1235
|
+
}
|
|
1236
|
+
});
|
|
1420
1237
|
},
|
|
1421
|
-
async createEntry(model, input) {
|
|
1238
|
+
async createEntry(model, input, options) {
|
|
1422
1239
|
return context.benchmark.measure("headlessCms.crud.entries.createEntry", async () => {
|
|
1423
|
-
return createEntry(model, input);
|
|
1240
|
+
return createEntry(model, input, options);
|
|
1424
1241
|
});
|
|
1425
1242
|
},
|
|
1426
|
-
async createEntryRevisionFrom(model, sourceId, input) {
|
|
1243
|
+
async createEntryRevisionFrom(model, sourceId, input, options) {
|
|
1427
1244
|
return context.benchmark.measure("headlessCms.crud.entries.createEntryRevisionFrom", async () => {
|
|
1428
|
-
return createEntryRevisionFrom(model, sourceId, input);
|
|
1245
|
+
return createEntryRevisionFrom(model, sourceId, input, options);
|
|
1429
1246
|
});
|
|
1430
1247
|
},
|
|
1431
|
-
async updateEntry(model, id, input, meta) {
|
|
1248
|
+
async updateEntry(model, id, input, meta, options) {
|
|
1432
1249
|
return context.benchmark.measure("headlessCms.crud.entries.updateEntry", async () => {
|
|
1433
|
-
return updateEntry(model, id, input, meta);
|
|
1250
|
+
return updateEntry(model, id, input, meta, options);
|
|
1251
|
+
});
|
|
1252
|
+
},
|
|
1253
|
+
async validateEntry(model, id, input) {
|
|
1254
|
+
return context.benchmark.measure("headlessCms.crud.entries.validateEntry", async () => {
|
|
1255
|
+
return validateEntry(model, id, input);
|
|
1256
|
+
});
|
|
1257
|
+
},
|
|
1258
|
+
async moveEntry(model, id, folderId) {
|
|
1259
|
+
return context.benchmark.measure("headlessCms.crud.entries.moveEntry", async () => {
|
|
1260
|
+
return moveEntry(model, id, folderId);
|
|
1434
1261
|
});
|
|
1435
1262
|
},
|
|
1436
1263
|
/**
|
|
@@ -1474,4 +1301,6 @@ const createContentEntryCrud = params => {
|
|
|
1474
1301
|
}
|
|
1475
1302
|
};
|
|
1476
1303
|
};
|
|
1477
|
-
exports.createContentEntryCrud = createContentEntryCrud;
|
|
1304
|
+
exports.createContentEntryCrud = createContentEntryCrud;
|
|
1305
|
+
|
|
1306
|
+
//# sourceMappingURL=contentEntry.crud.js.map
|