@webiny/api-headless-cms 6.1.0 → 6.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/context.d.ts +2 -5
- package/context.js +16 -7
- package/context.js.map +1 -1
- package/crud/AccessControl/AccessControl.d.ts +18 -28
- package/crud/AccessControl/AccessControl.js.map +1 -1
- package/crud/contentEntry/entryDataFactories/createEntryData.js +17 -6
- package/crud/contentEntry/entryDataFactories/createEntryData.js.map +1 -1
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js +9 -3
- package/crud/contentEntry/entryDataFactories/createEntryRevisionFromData.js.map +1 -1
- package/crud/contentEntry/entryDataValidation.d.ts +1 -1
- package/crud/contentEntry/entryDataValidation.js +16 -13
- package/crud/contentEntry/entryDataValidation.js.map +1 -1
- package/crud/contentEntry/searchableFields.d.ts +2 -3
- package/crud/contentEntry/searchableFields.js +10 -18
- package/crud/contentEntry/searchableFields.js.map +1 -1
- package/crud/contentModel.crud.js +2 -1
- package/crud/contentModel.crud.js.map +1 -1
- package/domain/contentModel/validation/modelFields.js +15 -20
- package/domain/contentModel/validation/modelFields.js.map +1 -1
- package/exports/api/cms/graphql.d.ts +1 -0
- package/exports/api/cms/graphql.js +3 -0
- package/exports/api/cms/graphql.js.map +1 -0
- package/exports/api/cms/storage.d.ts +3 -0
- package/exports/api/cms/storage.js +5 -0
- package/exports/api/cms/storage.js.map +1 -0
- package/exports/api/cms/validation.d.ts +4 -0
- package/exports/api/cms/validation.js +6 -0
- package/exports/api/cms/validation.js.map +1 -0
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.d.ts +3 -3
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.js +3 -3
- package/features/contentEntry/CreateEntry/CreateEntryUseCase.js.map +1 -1
- package/features/contentEntry/CreateEntry/events.d.ts +2 -2
- package/features/contentEntry/CreateEntry/events.js +1 -1
- package/features/contentEntry/CreateEntry/events.js.map +1 -1
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.d.ts +3 -3
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js +3 -3
- package/features/contentEntry/CreateEntryRevisionFrom/CreateEntryRevisionFromUseCase.js.map +1 -1
- package/features/contentEntry/CreateEntryRevisionFrom/events.d.ts +2 -2
- package/features/contentEntry/CreateEntryRevisionFrom/events.js +1 -1
- package/features/contentEntry/CreateEntryRevisionFrom/events.js.map +1 -1
- package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.d.ts +1 -1
- package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js +1 -1
- package/features/contentEntry/DeleteEntry/DeleteEntryUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.d.ts +2 -2
- package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js +2 -2
- package/features/contentEntry/DeleteEntry/MoveEntryToBinUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntry/events.d.ts +2 -2
- package/features/contentEntry/DeleteEntry/events.js +1 -1
- package/features/contentEntry/DeleteEntry/events.js.map +1 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.d.ts +1 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js +1 -1
- package/features/contentEntry/DeleteEntryRevision/DeleteEntryRevisionUseCase.js.map +1 -1
- package/features/contentEntry/DeleteEntryRevision/events.d.ts +2 -2
- package/features/contentEntry/DeleteEntryRevision/events.js +1 -1
- package/features/contentEntry/DeleteEntryRevision/events.js.map +1 -1
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.d.ts +1 -1
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js +1 -1
- package/features/contentEntry/DeleteMultipleEntries/DeleteMultipleEntriesUseCase.js.map +1 -1
- package/features/contentEntry/DeleteMultipleEntries/events.d.ts +2 -2
- package/features/contentEntry/DeleteMultipleEntries/events.js +1 -1
- package/features/contentEntry/DeleteMultipleEntries/events.js.map +1 -1
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js +6 -11
- package/features/contentEntry/GetUniqueFieldValues/GetUniqueFieldValuesUseCase.js.map +1 -1
- package/features/contentEntry/ListEntries/ListEntriesUseCase.d.ts +1 -1
- package/features/contentEntry/ListEntries/ListEntriesUseCase.js +1 -1
- package/features/contentEntry/ListEntries/ListEntriesUseCase.js.map +1 -1
- package/features/contentEntry/MoveEntry/MoveEntryUseCase.d.ts +1 -1
- package/features/contentEntry/MoveEntry/MoveEntryUseCase.js +1 -1
- package/features/contentEntry/MoveEntry/MoveEntryUseCase.js.map +1 -1
- package/features/contentEntry/MoveEntry/events.d.ts +2 -2
- package/features/contentEntry/MoveEntry/events.js +1 -1
- package/features/contentEntry/MoveEntry/events.js.map +1 -1
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.d.ts +2 -2
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.js +2 -2
- package/features/contentEntry/PublishEntry/PublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/PublishEntry/events.d.ts +2 -2
- package/features/contentEntry/PublishEntry/events.js +1 -1
- package/features/contentEntry/PublishEntry/events.js.map +1 -1
- package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.d.ts +2 -2
- package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js +2 -2
- package/features/contentEntry/RepublishEntry/RepublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/RepublishEntry/events.d.ts +2 -2
- package/features/contentEntry/RepublishEntry/events.js +1 -1
- package/features/contentEntry/RepublishEntry/events.js.map +1 -1
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.d.ts +2 -2
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js +2 -2
- package/features/contentEntry/RestoreEntryFromBin/RestoreEntryFromBinUseCase.js.map +1 -1
- package/features/contentEntry/RestoreEntryFromBin/events.d.ts +2 -2
- package/features/contentEntry/RestoreEntryFromBin/events.js +1 -1
- package/features/contentEntry/RestoreEntryFromBin/events.js.map +1 -1
- package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.d.ts +2 -2
- package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js +2 -2
- package/features/contentEntry/UnpublishEntry/UnpublishEntryUseCase.js.map +1 -1
- package/features/contentEntry/UnpublishEntry/events.d.ts +2 -2
- package/features/contentEntry/UnpublishEntry/events.js +1 -1
- package/features/contentEntry/UnpublishEntry/events.js.map +1 -1
- package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.d.ts +3 -3
- package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js +3 -3
- package/features/contentEntry/UpdateEntry/UpdateEntryUseCase.js.map +1 -1
- package/features/contentEntry/UpdateEntry/events.d.ts +2 -2
- package/features/contentEntry/UpdateEntry/events.js +1 -1
- package/features/contentEntry/UpdateEntry/events.js.map +1 -1
- package/features/contentModel/CreateModel/CreateModelRepository.d.ts +1 -1
- package/features/contentModel/CreateModel/CreateModelRepository.js +1 -1
- package/features/contentModel/CreateModel/CreateModelRepository.js.map +1 -1
- package/features/contentModel/CreateModel/CreateModelUseCase.d.ts +3 -3
- package/features/contentModel/CreateModel/CreateModelUseCase.js +3 -3
- package/features/contentModel/CreateModel/CreateModelUseCase.js.map +1 -1
- package/features/contentModel/CreateModel/events.d.ts +2 -2
- package/features/contentModel/CreateModel/events.js +1 -1
- package/features/contentModel/CreateModel/events.js.map +1 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.d.ts +1 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js +1 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromRepository.js.map +1 -1
- package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.d.ts +3 -3
- package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js +4 -3
- package/features/contentModel/CreateModelFrom/CreateModelFromUseCase.js.map +1 -1
- package/features/contentModel/CreateModelFrom/events.d.ts +2 -2
- package/features/contentModel/CreateModelFrom/events.js +1 -1
- package/features/contentModel/CreateModelFrom/events.js.map +1 -1
- package/features/contentModel/DeleteModel/DeleteModelUseCase.d.ts +1 -1
- package/features/contentModel/DeleteModel/DeleteModelUseCase.js +1 -1
- package/features/contentModel/DeleteModel/DeleteModelUseCase.js.map +1 -1
- package/features/contentModel/DeleteModel/events.d.ts +2 -2
- package/features/contentModel/DeleteModel/events.js +1 -1
- package/features/contentModel/DeleteModel/events.js.map +1 -1
- package/features/contentModel/ModelToAstConverter/ModelToAstConverter.d.ts +3 -3
- package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js +6 -6
- package/features/contentModel/ModelToAstConverter/ModelToAstConverter.js.map +1 -1
- package/features/contentModel/UpdateModel/UpdateModelUseCase.d.ts +2 -2
- package/features/contentModel/UpdateModel/UpdateModelUseCase.js +2 -2
- package/features/contentModel/UpdateModel/UpdateModelUseCase.js.map +1 -1
- package/features/contentModel/UpdateModel/events.d.ts +2 -2
- package/features/contentModel/UpdateModel/events.js +1 -1
- package/features/contentModel/UpdateModel/events.js.map +1 -1
- package/features/contentModel/shared/ModelsFetcher.d.ts +1 -1
- package/features/contentModel/shared/ModelsFetcher.js +1 -1
- package/features/contentModel/shared/ModelsFetcher.js.map +1 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupRepository.d.ts +1 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js +1 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupRepository.js.map +1 -1
- package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.d.ts +3 -3
- package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js +3 -3
- package/features/contentModelGroup/CreateGroup/CreateGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/CreateGroup/events.d.ts +2 -2
- package/features/contentModelGroup/CreateGroup/events.js +1 -1
- package/features/contentModelGroup/CreateGroup/events.js.map +1 -1
- package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.d.ts +1 -1
- package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js +1 -1
- package/features/contentModelGroup/DeleteGroup/DeleteGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/DeleteGroup/events.d.ts +2 -2
- package/features/contentModelGroup/DeleteGroup/events.js +1 -1
- package/features/contentModelGroup/DeleteGroup/events.js.map +1 -1
- package/features/contentModelGroup/GetGroup/GetGroupRepository.d.ts +2 -2
- package/features/contentModelGroup/GetGroup/GetGroupRepository.js +2 -2
- package/features/contentModelGroup/GetGroup/GetGroupRepository.js.map +1 -1
- package/features/contentModelGroup/ListGroups/ListGroupsRepository.d.ts +2 -2
- package/features/contentModelGroup/ListGroups/ListGroupsRepository.js +2 -2
- package/features/contentModelGroup/ListGroups/ListGroupsRepository.js.map +1 -1
- package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.d.ts +2 -2
- package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js +2 -2
- package/features/contentModelGroup/UpdateGroup/UpdateGroupUseCase.js.map +1 -1
- package/features/contentModelGroup/UpdateGroup/events.d.ts +2 -2
- package/features/contentModelGroup/UpdateGroup/events.js +1 -1
- package/features/contentModelGroup/UpdateGroup/events.js.map +1 -1
- package/features/contentModelGroup/shared/PluginGroupsProvider.d.ts +2 -2
- package/features/contentModelGroup/shared/PluginGroupsProvider.js +2 -2
- package/features/contentModelGroup/shared/PluginGroupsProvider.js.map +1 -1
- package/features/graphql/feature.d.ts +1 -0
- package/features/graphql/feature.js +34 -0
- package/features/graphql/feature.js.map +1 -0
- package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.d.ts +13 -0
- package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js +27 -0
- package/features/graphql/fields/CmsModelFieldToGraphQLRegistry.js.map +1 -0
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.d.ts +97 -0
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js +4 -0
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQL.js.map +1 -0
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.d.ts +10 -0
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js +4 -0
- package/features/graphql/fields/abstractions/CmsModelFieldToGraphQLRegistry.js.map +1 -0
- package/features/graphql/fields/base/BooleanToGraphQL.d.ts +26 -0
- package/features/graphql/fields/base/BooleanToGraphQL.js +68 -0
- package/features/graphql/fields/base/BooleanToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/DateTimeToGraphQL.d.ts +26 -0
- package/features/graphql/fields/base/DateTimeToGraphQL.js +97 -0
- package/features/graphql/fields/base/DateTimeToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/DynamicZoneToGraphQL.d.ts +30 -0
- package/features/graphql/fields/base/DynamicZoneToGraphQL.js +280 -0
- package/features/graphql/fields/base/DynamicZoneToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/FileToGraphQL.d.ts +22 -0
- package/features/graphql/fields/base/FileToGraphQL.js +39 -0
- package/features/graphql/fields/base/FileToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/JsonToGraphQL.d.ts +24 -0
- package/features/graphql/fields/base/JsonToGraphQL.js +52 -0
- package/features/graphql/fields/base/JsonToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/LongTextToGraphQL.d.ts +24 -0
- package/features/graphql/fields/base/LongTextToGraphQL.js +57 -0
- package/features/graphql/fields/base/LongTextToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/NumberToGraphQL.d.ts +26 -0
- package/features/graphql/fields/base/NumberToGraphQL.js +78 -0
- package/features/graphql/fields/base/NumberToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/ObjectToGraphQL.d.ts +31 -0
- package/features/graphql/fields/base/ObjectToGraphQL.js +264 -0
- package/features/graphql/fields/base/ObjectToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/RefToGraphQL.d.ts +29 -0
- package/features/graphql/fields/base/RefToGraphQL.js +261 -0
- package/features/graphql/fields/base/RefToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/RichTextToGraphQL.d.ts +25 -0
- package/features/graphql/fields/base/RichTextToGraphQL.js +58 -0
- package/features/graphql/fields/base/RichTextToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/SearchableJsonToGraphQL.d.ts +26 -0
- package/features/graphql/fields/base/SearchableJsonToGraphQL.js +62 -0
- package/features/graphql/fields/base/SearchableJsonToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/TextToGraphQL.d.ts +26 -0
- package/features/graphql/fields/base/TextToGraphQL.js +74 -0
- package/features/graphql/fields/base/TextToGraphQL.js.map +1 -0
- package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.d.ts +16 -0
- package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js +37 -0
- package/features/graphql/fields/base/dynamicZone/createTypeDefsForTemplates.js.map +1 -0
- package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.d.ts +3 -0
- package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js +14 -0
- package/features/graphql/fields/base/dynamicZone/normalizeDynamicZoneInput.js.map +1 -0
- package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.d.ts +1 -1
- package/{graphqlFields → features/graphql/fields/base}/richText/richTextResolver.js +2 -2
- package/features/graphql/fields/base/richText/richTextResolver.js.map +1 -0
- package/{graphqlFields/helpers.d.ts → features/graphql/fields/base/utils/createGraphQLInputField.d.ts} +1 -1
- package/features/graphql/fields/base/utils/createGraphQLInputField.js +17 -0
- package/features/graphql/fields/base/utils/createGraphQLInputField.js.map +1 -0
- package/features/graphql/index.d.ts +4 -0
- package/features/graphql/index.js +6 -0
- package/features/graphql/index.js.map +1 -0
- package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.d.ts +13 -0
- package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js +4 -0
- package/features/graphql/sort/abstractions/CmsGraphQLSchemaSorter.js.map +1 -0
- package/features/installer/CmsInstaller.d.ts +1 -1
- package/features/installer/CmsInstaller.js +1 -1
- package/features/installer/CmsInstaller.js.map +1 -1
- package/features/shared/abstractions.d.ts +9 -2
- package/features/shared/abstractions.js +1 -0
- package/features/shared/abstractions.js.map +1 -1
- package/features/storage/StorageTransformRegistry.d.ts +13 -0
- package/features/storage/StorageTransformRegistry.js +27 -0
- package/features/storage/StorageTransformRegistry.js.map +1 -0
- package/features/storage/abstractions/StorageTransform.d.ts +26 -0
- package/features/storage/abstractions/StorageTransform.js +4 -0
- package/features/storage/abstractions/StorageTransform.js.map +1 -0
- package/features/storage/abstractions/StorageTransformRegistry.d.ts +10 -0
- package/features/storage/abstractions/StorageTransformRegistry.js +4 -0
- package/features/storage/abstractions/StorageTransformRegistry.js.map +1 -0
- package/features/storage/feature.d.ts +1 -0
- package/features/storage/feature.js +24 -0
- package/features/storage/feature.js.map +1 -0
- package/features/storage/fields/DateStorageTransform.d.ts +10 -0
- package/features/storage/fields/DateStorageTransform.js +110 -0
- package/features/storage/fields/DateStorageTransform.js.map +1 -0
- package/features/storage/fields/DefaultStorageTransform.d.ts +10 -0
- package/features/storage/fields/DefaultStorageTransform.js +20 -0
- package/features/storage/fields/DefaultStorageTransform.js.map +1 -0
- package/features/storage/fields/DynamicZoneStorageTransform.d.ts +10 -0
- package/features/storage/fields/DynamicZoneStorageTransform.js +142 -0
- package/features/storage/fields/DynamicZoneStorageTransform.js.map +1 -0
- package/features/storage/fields/JsonStorageTransform.d.ts +13 -0
- package/features/storage/fields/JsonStorageTransform.js +31 -0
- package/features/storage/fields/JsonStorageTransform.js.map +1 -0
- package/features/storage/fields/LongTextStorageTransform.d.ts +18 -0
- package/features/storage/fields/LongTextStorageTransform.js +55 -0
- package/features/storage/fields/LongTextStorageTransform.js.map +1 -0
- package/features/storage/fields/ObjectStorageTransform.d.ts +10 -0
- package/features/storage/fields/ObjectStorageTransform.js +99 -0
- package/features/storage/fields/ObjectStorageTransform.js.map +1 -0
- package/features/storage/fields/RichTextStorageTransform.d.ts +13 -0
- package/features/storage/fields/RichTextStorageTransform.js +39 -0
- package/features/storage/fields/RichTextStorageTransform.js.map +1 -0
- package/features/storage/index.d.ts +3 -0
- package/features/storage/index.js +5 -0
- package/features/storage/index.js.map +1 -0
- package/features/validation/CmsModelFieldPatternValidatorRegistry.d.ts +12 -0
- package/features/validation/CmsModelFieldPatternValidatorRegistry.js +21 -0
- package/features/validation/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
- package/features/validation/CmsModelFieldValidatorRegistry.d.ts +12 -0
- package/features/validation/CmsModelFieldValidatorRegistry.js +23 -0
- package/features/validation/CmsModelFieldValidatorRegistry.js.map +1 -0
- package/features/validation/abstractions/CmsModelFieldPatternValidator.d.ts +13 -0
- package/features/validation/abstractions/CmsModelFieldPatternValidator.js +4 -0
- package/features/validation/abstractions/CmsModelFieldPatternValidator.js.map +1 -0
- package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.d.ts +9 -0
- package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js +4 -0
- package/features/validation/abstractions/CmsModelFieldPatternValidatorRegistry.js.map +1 -0
- package/features/validation/abstractions/CmsModelFieldValidator.d.ts +11 -0
- package/features/validation/abstractions/CmsModelFieldValidator.js +4 -0
- package/features/validation/abstractions/CmsModelFieldValidator.js.map +1 -0
- package/features/validation/abstractions/CmsModelFieldValidatorRegistry.d.ts +9 -0
- package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js +4 -0
- package/features/validation/abstractions/CmsModelFieldValidatorRegistry.js.map +1 -0
- package/features/validation/feature.d.ts +1 -0
- package/features/validation/feature.js +48 -0
- package/features/validation/feature.js.map +1 -0
- package/features/validation/index.d.ts +5 -0
- package/features/validation/index.js +7 -0
- package/features/validation/index.js.map +1 -0
- package/features/validation/validators/DateGteValidator.d.ts +10 -0
- package/features/validation/validators/DateGteValidator.js +26 -0
- package/features/validation/validators/DateGteValidator.js.map +1 -0
- package/features/validation/validators/DateLteValidator.d.ts +10 -0
- package/features/validation/validators/DateLteValidator.js +26 -0
- package/features/validation/validators/DateLteValidator.js.map +1 -0
- package/features/validation/validators/GteValidator.d.ts +10 -0
- package/features/validation/validators/GteValidator.js +21 -0
- package/features/validation/validators/GteValidator.js.map +1 -0
- package/features/validation/validators/InValidator.d.ts +10 -0
- package/features/validation/validators/InValidator.js +21 -0
- package/features/validation/validators/InValidator.js.map +1 -0
- package/features/validation/validators/LteValidator.d.ts +10 -0
- package/features/validation/validators/LteValidator.js +21 -0
- package/features/validation/validators/LteValidator.js.map +1 -0
- package/features/validation/validators/MaxLengthValidator.d.ts +10 -0
- package/features/validation/validators/MaxLengthValidator.js +21 -0
- package/features/validation/validators/MaxLengthValidator.js.map +1 -0
- package/features/validation/validators/MinLengthValidator.d.ts +10 -0
- package/features/validation/validators/MinLengthValidator.js +21 -0
- package/features/validation/validators/MinLengthValidator.js.map +1 -0
- package/features/validation/validators/PatternValidator.d.ts +13 -0
- package/features/validation/validators/PatternValidator.js +38 -0
- package/features/validation/validators/PatternValidator.js.map +1 -0
- package/features/validation/validators/RequiredValidator.d.ts +10 -0
- package/features/validation/validators/RequiredValidator.js +16 -0
- package/features/validation/validators/RequiredValidator.js.map +1 -0
- package/features/validation/validators/TimeGteValidator.d.ts +10 -0
- package/features/validation/validators/TimeGteValidator.js +21 -0
- package/features/validation/validators/TimeGteValidator.js.map +1 -0
- package/features/validation/validators/TimeLteValidator.d.ts +10 -0
- package/features/validation/validators/TimeLteValidator.js +21 -0
- package/features/validation/validators/TimeLteValidator.js.map +1 -0
- package/features/validation/validators/UniqueValidator.d.ts +10 -0
- package/features/validation/validators/UniqueValidator.js +47 -0
- package/features/validation/validators/UniqueValidator.js.map +1 -0
- package/features/validation/validators/patterns/EmailPattern.d.ts +12 -0
- package/features/validation/validators/patterns/EmailPattern.js +14 -0
- package/features/validation/validators/patterns/EmailPattern.js.map +1 -0
- package/features/validation/validators/patterns/LowerCasePattern.d.ts +12 -0
- package/features/validation/validators/patterns/LowerCasePattern.js +14 -0
- package/features/validation/validators/patterns/LowerCasePattern.js.map +1 -0
- package/features/validation/validators/patterns/LowerCaseSpacePattern.d.ts +12 -0
- package/features/validation/validators/patterns/LowerCaseSpacePattern.js +14 -0
- package/features/validation/validators/patterns/LowerCaseSpacePattern.js.map +1 -0
- package/features/validation/validators/patterns/UpperCasePattern.d.ts +12 -0
- package/features/validation/validators/patterns/UpperCasePattern.js +14 -0
- package/features/validation/validators/patterns/UpperCasePattern.js.map +1 -0
- package/features/validation/validators/patterns/UpperCaseSpacePattern.d.ts +12 -0
- package/features/validation/validators/patterns/UpperCaseSpacePattern.js +14 -0
- package/features/validation/validators/patterns/UpperCaseSpacePattern.js.map +1 -0
- package/features/validation/validators/patterns/UrlPattern.d.ts +12 -0
- package/features/validation/validators/patterns/UrlPattern.js +14 -0
- package/features/validation/validators/patterns/UrlPattern.js.map +1 -0
- package/graphql/getSchema/generateCacheKey.js +1 -1
- package/graphql/getSchema/generateCacheKey.js.map +1 -1
- package/graphql/schema/baseSchema.d.ts +2 -1
- package/graphql/schema/baseSchema.js +11 -9
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/createFieldResolvers.d.ts +3 -2
- package/graphql/schema/createFieldResolvers.js +5 -4
- package/graphql/schema/createFieldResolvers.js.map +1 -1
- package/graphql/schema/createManageResolvers.d.ts +3 -2
- package/graphql/schema/createManageResolvers.js +3 -3
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.d.ts +4 -4
- package/graphql/schema/createManageSDL.js +8 -8
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createPreviewResolvers.d.ts +3 -2
- package/graphql/schema/createPreviewResolvers.js +4 -4
- package/graphql/schema/createPreviewResolvers.js.map +1 -1
- package/graphql/schema/createReadResolvers.d.ts +3 -2
- package/graphql/schema/createReadResolvers.js +4 -4
- package/graphql/schema/createReadResolvers.js.map +1 -1
- package/graphql/schema/createReadSDL.d.ts +4 -4
- package/graphql/schema/createReadSDL.js +7 -7
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/createSingularResolvers.d.ts +3 -2
- package/graphql/schema/createSingularResolvers.js +3 -3
- package/graphql/schema/createSingularResolvers.js.map +1 -1
- package/graphql/schema/createSingularSDL.d.ts +3 -2
- package/graphql/schema/createSingularSDL.js +3 -3
- package/graphql/schema/createSingularSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js +6 -7
- package/graphql/schema/resolvers/manage/normalizeGraphQlInput.js.map +1 -1
- package/graphql/schema/schemaPlugins.js +14 -17
- package/graphql/schema/schemaPlugins.js.map +1 -1
- package/index.d.ts +1 -4
- package/index.js +2 -6
- package/index.js.map +1 -1
- package/package.json +25 -25
- package/plugins/index.d.ts +0 -2
- package/plugins/index.js +0 -2
- package/plugins/index.js.map +1 -1
- package/types/modelField.d.ts +1 -1
- package/types/modelField.js.map +1 -1
- package/types/plugins.d.ts +1 -305
- package/types/plugins.js.map +1 -1
- package/types/types.d.ts +4 -44
- package/types/types.js +0 -4
- package/types/types.js.map +1 -1
- package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.d.ts +3 -2
- package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js +3 -3
- package/utils/contentModelAst/CmsModelFieldToAstConverterFromPlugins.js.map +1 -1
- package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.d.ts +4 -3
- package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js +3 -3
- package/utils/contentModelAst/CmsModelFieldToAstFromPlugin.js.map +1 -1
- package/utils/converters/ConverterCollection.d.ts +2 -0
- package/utils/converters/ConverterCollection.js +3 -2
- package/utils/converters/ConverterCollection.js.map +1 -1
- package/utils/converters/valueKeyFromStorageConverter.d.ts +2 -0
- package/utils/converters/valueKeyFromStorageConverter.js +4 -2
- package/utils/converters/valueKeyFromStorageConverter.js.map +1 -1
- package/utils/converters/valueKeyStorageConverter.d.ts +2 -3
- package/utils/converters/valueKeyStorageConverter.js +7 -3
- package/utils/converters/valueKeyStorageConverter.js.map +1 -1
- package/utils/converters/valueKeyToStorageConverter.d.ts +2 -0
- package/utils/converters/valueKeyToStorageConverter.js +4 -2
- package/utils/converters/valueKeyToStorageConverter.js.map +1 -1
- package/utils/createTypeFromFields.d.ts +3 -2
- package/utils/createTypeFromFields.js +3 -3
- package/utils/createTypeFromFields.js.map +1 -1
- package/utils/entryStorage.d.ts +8 -15
- package/utils/entryStorage.js +31 -59
- package/utils/entryStorage.js.map +1 -1
- package/utils/getBaseFieldType.js +3 -0
- package/utils/getBaseFieldType.js.map +1 -1
- package/utils/getSchemaFromFieldPlugins.d.ts +3 -2
- package/utils/getSchemaFromFieldPlugins.js +5 -9
- package/utils/getSchemaFromFieldPlugins.js.map +1 -1
- package/utils/renderFields.d.ts +4 -3
- package/utils/renderFields.js +14 -9
- package/utils/renderFields.js.map +1 -1
- package/utils/renderGetFilterFields.d.ts +3 -2
- package/utils/renderGetFilterFields.js +2 -2
- package/utils/renderGetFilterFields.js.map +1 -1
- package/utils/renderInputFields.d.ts +4 -3
- package/utils/renderInputFields.js +5 -11
- package/utils/renderInputFields.js.map +1 -1
- package/utils/renderListFilterFields.d.ts +3 -2
- package/utils/renderListFilterFields.js +5 -3
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +4 -4
- package/utils/renderSortEnum.js +11 -11
- package/utils/renderSortEnum.js.map +1 -1
- package/graphql/schema/createFieldTypePluginRecords.d.ts +0 -3
- package/graphql/schema/createFieldTypePluginRecords.js +0 -8
- package/graphql/schema/createFieldTypePluginRecords.js.map +0 -1
- package/graphqlFields/boolean.d.ts +0 -2
- package/graphqlFields/boolean.js +0 -52
- package/graphqlFields/boolean.js.map +0 -1
- package/graphqlFields/datetime.d.ts +0 -2
- package/graphqlFields/datetime.js +0 -71
- package/graphqlFields/datetime.js.map +0 -1
- package/graphqlFields/dynamicZone/dynamicZoneField.d.ts +0 -2
- package/graphqlFields/dynamicZone/dynamicZoneField.js +0 -313
- package/graphqlFields/dynamicZone/dynamicZoneField.js.map +0 -1
- package/graphqlFields/dynamicZone/index.d.ts +0 -1
- package/graphqlFields/dynamicZone/index.js +0 -3
- package/graphqlFields/dynamicZone/index.js.map +0 -1
- package/graphqlFields/file.d.ts +0 -2
- package/graphqlFields/file.js +0 -37
- package/graphqlFields/file.js.map +0 -1
- package/graphqlFields/helpers.js +0 -20
- package/graphqlFields/helpers.js.map +0 -1
- package/graphqlFields/index.d.ts +0 -2
- package/graphqlFields/index.js +0 -15
- package/graphqlFields/index.js.map +0 -1
- package/graphqlFields/json.d.ts +0 -2
- package/graphqlFields/json.js +0 -42
- package/graphqlFields/json.js.map +0 -1
- package/graphqlFields/longText.d.ts +0 -2
- package/graphqlFields/longText.js +0 -57
- package/graphqlFields/longText.js.map +0 -1
- package/graphqlFields/number.d.ts +0 -2
- package/graphqlFields/number.js +0 -63
- package/graphqlFields/number.js.map +0 -1
- package/graphqlFields/object.d.ts +0 -2
- package/graphqlFields/object.js +0 -245
- package/graphqlFields/object.js.map +0 -1
- package/graphqlFields/ref.d.ts +0 -2
- package/graphqlFields/ref.js +0 -286
- package/graphqlFields/ref.js.map +0 -1
- package/graphqlFields/richText/richTextResolver.js.map +0 -1
- package/graphqlFields/richText.d.ts +0 -2
- package/graphqlFields/richText.js +0 -48
- package/graphqlFields/richText.js.map +0 -1
- package/graphqlFields/searchableJson.d.ts +0 -2
- package/graphqlFields/searchableJson.js +0 -53
- package/graphqlFields/searchableJson.js.map +0 -1
- package/graphqlFields/text.d.ts +0 -2
- package/graphqlFields/text.js +0 -59
- package/graphqlFields/text.js.map +0 -1
- package/plugins/CmsGraphQLSchemaSorterPlugin.d.ts +0 -20
- package/plugins/CmsGraphQLSchemaSorterPlugin.js +0 -19
- package/plugins/CmsGraphQLSchemaSorterPlugin.js.map +0 -1
- package/plugins/StorageTransformPlugin.d.ts +0 -35
- package/plugins/StorageTransformPlugin.js +0 -26
- package/plugins/StorageTransformPlugin.js.map +0 -1
- package/storage/date.d.ts +0 -3
- package/storage/date.js +0 -110
- package/storage/date.js.map +0 -1
- package/storage/default.d.ts +0 -2
- package/storage/default.js +0 -19
- package/storage/default.js.map +0 -1
- package/storage/dynamicZone.d.ts +0 -2
- package/storage/dynamicZone.js +0 -149
- package/storage/dynamicZone.js.map +0 -1
- package/storage/index.d.ts +0 -1
- package/storage/index.js +0 -13
- package/storage/index.js.map +0 -1
- package/storage/json.d.ts +0 -2
- package/storage/json.js +0 -49
- package/storage/json.js.map +0 -1
- package/storage/object.d.ts +0 -2
- package/storage/object.js +0 -104
- package/storage/object.js.map +0 -1
- package/validators/dateGte.d.ts +0 -2
- package/validators/dateGte.js +0 -25
- package/validators/dateGte.js.map +0 -1
- package/validators/dateLte.d.ts +0 -2
- package/validators/dateLte.js +0 -25
- package/validators/dateLte.js.map +0 -1
- package/validators/gte.d.ts +0 -2
- package/validators/gte.js +0 -22
- package/validators/gte.js.map +0 -1
- package/validators/in.d.ts +0 -2
- package/validators/in.js +0 -22
- package/validators/in.js.map +0 -1
- package/validators/index.d.ts +0 -1
- package/validators/index.js +0 -16
- package/validators/index.js.map +0 -1
- package/validators/lte.d.ts +0 -2
- package/validators/lte.js +0 -22
- package/validators/lte.js.map +0 -1
- package/validators/maxLength.d.ts +0 -2
- package/validators/maxLength.js +0 -22
- package/validators/maxLength.js.map +0 -1
- package/validators/minLength.d.ts +0 -2
- package/validators/minLength.js +0 -22
- package/validators/minLength.js.map +0 -1
- package/validators/pattern.d.ts +0 -2
- package/validators/pattern.js +0 -36
- package/validators/pattern.js.map +0 -1
- package/validators/patternPlugins/email.d.ts +0 -2
- package/validators/patternPlugins/email.js +0 -13
- package/validators/patternPlugins/email.js.map +0 -1
- package/validators/patternPlugins/index.d.ts +0 -2
- package/validators/patternPlugins/index.js +0 -11
- package/validators/patternPlugins/index.js.map +0 -1
- package/validators/patternPlugins/lowerCase.d.ts +0 -2
- package/validators/patternPlugins/lowerCase.js +0 -13
- package/validators/patternPlugins/lowerCase.js.map +0 -1
- package/validators/patternPlugins/lowerCaseSpace.d.ts +0 -2
- package/validators/patternPlugins/lowerCaseSpace.js +0 -13
- package/validators/patternPlugins/lowerCaseSpace.js.map +0 -1
- package/validators/patternPlugins/upperCase.d.ts +0 -2
- package/validators/patternPlugins/upperCase.js +0 -13
- package/validators/patternPlugins/upperCase.js.map +0 -1
- package/validators/patternPlugins/upperCaseSpace.d.ts +0 -2
- package/validators/patternPlugins/upperCaseSpace.js +0 -13
- package/validators/patternPlugins/upperCaseSpace.js.map +0 -1
- package/validators/patternPlugins/url.d.ts +0 -2
- package/validators/patternPlugins/url.js +0 -13
- package/validators/patternPlugins/url.js.map +0 -1
- package/validators/required.d.ts +0 -2
- package/validators/required.js +0 -17
- package/validators/required.js.map +0 -1
- package/validators/timeGte.d.ts +0 -2
- package/validators/timeGte.js +0 -20
- package/validators/timeGte.js.map +0 -1
- package/validators/timeLte.d.ts +0 -2
- package/validators/timeLte.js +0 -20
- package/validators/timeLte.js.map +0 -1
- package/validators/unique.d.ts +0 -6
- package/validators/unique.js +0 -57
- package/validators/unique.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","IdentityContext","EventPublisher","RepublishEntryUseCase","UseCaseAbstraction","RepublishEntryRepository","AccessControl","GetRevisionByIdUseCase","EntryBeforeRepublishEvent","EntryAfterRepublishEvent","EntryRepublishErrorEvent","EntryNotAuthorizedError","EntryNotFoundError","createRepublishEntryData","CmsContext","RepublishEntryUseCaseImpl","constructor","repository","accessControl","getRevisionById","identityContext","eventPublisher","cmsContext","execute","model","id","canAccess","canAccessEntry","rwd","pw","fail","fromModel","result","isFail","originalEntry","value","entry","context","getIdentity","publish","repositoryResult","error","publishedEntry","ok","abstraction","implementation","dependencies"],"sources":["RepublishEntryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { EventPublisher } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","IdentityContext","EventPublisher","RepublishEntryUseCase","UseCaseAbstraction","RepublishEntryRepository","AccessControl","GetRevisionByIdUseCase","EntryBeforeRepublishEvent","EntryAfterRepublishEvent","EntryRepublishErrorEvent","EntryNotAuthorizedError","EntryNotFoundError","createRepublishEntryData","CmsContext","RepublishEntryUseCaseImpl","constructor","repository","accessControl","getRevisionById","identityContext","eventPublisher","cmsContext","execute","model","id","canAccess","canAccessEntry","rwd","pw","fail","fromModel","result","isFail","originalEntry","value","entry","context","getIdentity","publish","repositoryResult","error","publishedEntry","ok","abstraction","implementation","dependencies"],"sources":["RepublishEntryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { RepublishEntryUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { RepublishEntryRepository } from \"./abstractions.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { GetRevisionByIdUseCase } from \"~/features/contentEntry/GetRevisionById/index.js\";\nimport type { CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport {\n EntryBeforeRepublishEvent,\n EntryAfterRepublishEvent,\n EntryRepublishErrorEvent\n} from \"./events.js\";\nimport { EntryNotAuthorizedError } from \"~/domain/contentEntry/errors.js\";\nimport { EntryNotFoundError } from \"~/domain/contentEntry/errors.js\";\nimport { createRepublishEntryData } from \"~/crud/contentEntry/entryDataFactories/index.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\n\n/**\n * RepublishEntryUseCase - Orchestrates republishing an entry.\n *\n * Responsibilities:\n * - Apply access control (both write and publish permissions)\n * - Get the entry to republish\n * - Prepare entry data with updated timestamps\n * - Publish domain events\n * - Delegate to repository for storage operations (update + publish)\n */\nclass RepublishEntryUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private repository: RepublishEntryRepository.Interface,\n private accessControl: AccessControl.Interface,\n private getRevisionById: GetRevisionByIdUseCase.Interface,\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private cmsContext: CmsContext.Interface\n ) {}\n\n public async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>> {\n // Check access control (write and publish)\n const canAccess = await this.accessControl.canAccessEntry({ model, rwd: \"w\", pw: \"p\" });\n if (!canAccess) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Get the entry to republish\n const result = await this.getRevisionById.execute<T>(model, id);\n\n if (result.isFail()) {\n return Result.fail(new EntryNotFoundError(id));\n }\n\n const originalEntry = result.value;\n\n // Check access control on the specific entry\n const canAccessEntry = await this.accessControl.canAccessEntry({\n model,\n entry: originalEntry,\n rwd: \"w\",\n pw: \"p\"\n });\n\n if (!canAccessEntry) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Prepare entry data for republishing\n const { entry } = await createRepublishEntryData<T>({\n context: this.cmsContext,\n model,\n originalEntry,\n getIdentity: () => this.identityContext.getIdentity()\n });\n\n try {\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeRepublishEvent({\n entry,\n model\n })\n );\n\n // Delegate to repository (update + publish)\n const repositoryResult = await this.repository.execute<T>(model, entry);\n\n if (repositoryResult.isFail()) {\n await this.eventPublisher.publish(\n new EntryRepublishErrorEvent({\n entry,\n model,\n error: repositoryResult.error\n })\n );\n return Result.fail(repositoryResult.error);\n }\n\n const publishedEntry = repositoryResult.value;\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterRepublishEvent({\n entry: publishedEntry,\n model\n })\n );\n\n return Result.ok(entry);\n } catch (error) {\n await this.eventPublisher.publish(\n new EntryRepublishErrorEvent({\n entry,\n model,\n error: error as Error\n })\n );\n return Result.fail(error as any);\n }\n }\n}\n\nexport const RepublishEntryUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: RepublishEntryUseCaseImpl,\n dependencies: [\n RepublishEntryRepository,\n AccessControl,\n GetRevisionByIdUseCase,\n IdentityContext,\n EventPublisher,\n CmsContext\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
2
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
1
|
+
import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
3
|
import type { EntryAfterRepublishEventPayload, EntryBeforeRepublishEventPayload, EntryRepublishErrorEventPayload } from "./abstractions.js";
|
|
4
4
|
/**
|
|
5
5
|
* Before republish entry event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeRepublishEvent","eventType","getHandlerAbstraction","EntryBeforeRepublishEventHandler","EntryAfterRepublishEvent","EntryAfterRepublishEventHandler","EntryRepublishErrorEvent","EntryRepublishErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeRepublishEvent","eventType","getHandlerAbstraction","EntryBeforeRepublishEventHandler","EntryAfterRepublishEvent","EntryAfterRepublishEventHandler","EntryRepublishErrorEvent","EntryRepublishErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type {\n EntryAfterRepublishEventPayload,\n EntryBeforeRepublishEventPayload,\n EntryRepublishErrorEventPayload\n} from \"./abstractions.js\";\n\n/**\n * Before republish entry event\n */\nexport class EntryBeforeRepublishEvent extends DomainEvent<EntryBeforeRepublishEventPayload> {\n eventType = \"Cms/Entry/BeforeRepublish\" as const;\n\n getHandlerAbstraction() {\n return EntryBeforeRepublishEventHandler;\n }\n}\n\n/** Hook into entry lifecycle before an entry is republished. */\nexport const EntryBeforeRepublishEventHandler = createAbstraction<\n IEventHandler<EntryBeforeRepublishEvent>\n>(\"EntryBeforeRepublishEventHandler\");\n\nexport namespace EntryBeforeRepublishEventHandler {\n export type Interface = IEventHandler<EntryBeforeRepublishEvent>;\n export type Event = EntryBeforeRepublishEvent;\n}\n\n/**\n * After republish entry event\n */\nexport class EntryAfterRepublishEvent extends DomainEvent<EntryAfterRepublishEventPayload> {\n eventType = \"Cms/Entry/AfterRepublish\" as const;\n\n getHandlerAbstraction() {\n return EntryAfterRepublishEventHandler;\n }\n}\n\n/** Hook into entry lifecycle after an entry is republished. */\nexport const EntryAfterRepublishEventHandler = createAbstraction<\n IEventHandler<EntryAfterRepublishEvent>\n>(\"EntryAfterRepublishEventHandler\");\n\nexport namespace EntryAfterRepublishEventHandler {\n export type Interface = IEventHandler<EntryAfterRepublishEvent>;\n export type Event = EntryAfterRepublishEvent;\n}\n\n/**\n * Republish entry error event\n */\nexport class EntryRepublishErrorEvent extends DomainEvent<EntryRepublishErrorEventPayload> {\n eventType = \"Cms/Entry/RepublishError\" as const;\n\n getHandlerAbstraction() {\n return EntryRepublishErrorEventHandler;\n }\n}\n\nexport const EntryRepublishErrorEventHandler = createAbstraction<\n IEventHandler<EntryRepublishErrorEvent>\n>(\"EntryRepublishErrorEventHandler\");\n\nexport namespace EntryRepublishErrorEventHandler {\n export type Interface = IEventHandler<EntryRepublishErrorEvent>;\n export type Event = EntryRepublishErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,WAAW,QAAQ,mDAAmD;AAO/E;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,SAASD,WAAW,CAAmC;EACzFE,SAAS,GAAG,2BAA2B;EAEvCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMA,gCAAgC,GAAGL,iBAAiB,CAE/D,kCAAkC,CAAC;AAOrC;AACA;AACA;AACA,OAAO,MAAMM,wBAAwB,SAASL,WAAW,CAAkC;EACvFE,SAAS,GAAG,0BAA0B;EAEtCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,+BAA+B;EAC1C;AACJ;;AAEA;AACA,OAAO,MAAMA,+BAA+B,GAAGP,iBAAiB,CAE9D,iCAAiC,CAAC;AAOpC;AACA;AACA;AACA,OAAO,MAAMQ,wBAAwB,SAASP,WAAW,CAAkC;EACvFE,SAAS,GAAG,0BAA0B;EAEtCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,+BAA+B;EAC1C;AACJ;AAEA,OAAO,MAAMA,+BAA+B,GAAGT,iBAAiB,CAE9D,iCAAiC,CAAC","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
3
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
4
4
|
import { RestoreEntryFromBinUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
5
5
|
import { RestoreEntryFromBinRepository } from "./abstractions.js";
|
|
6
6
|
import { AccessControl } from "../../../features/shared/abstractions.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { createImplementation } from "@webiny/feature/api";
|
|
3
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
4
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
3
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
5
5
|
import { RestoreEntryFromBinUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
6
6
|
import { RestoreEntryFromBinRepository } from "./abstractions.js";
|
|
7
7
|
import { AccessControl } from "../../shared/abstractions.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","IdentityContext","EventPublisher","RestoreEntryFromBinUseCase","UseCaseAbstraction","RestoreEntryFromBinRepository","AccessControl","GetLatestDeletedRevisionByEntryIdUseCase","EntryBeforeRestoreFromBinEvent","EntryAfterRestoreFromBinEvent","EntryRestoreFromBinErrorEvent","EntryNotAuthorizedError","EntryNotFoundError","getDate","getIdentity","RestoreEntryFromBinUseCaseImpl","constructor","repository","accessControl","getDeletedEntry","identityContext","eventPublisher","execute","model","id","canAccess","canAccessEntry","rwd","fail","fromModel","getResult","isFail","originalEntry","value","entry","currentDateTime","Date","toISOString","currentIdentity","entryToRestore","wbyDeleted","location","folderId","binOriginalFolderId","undefined","restoredOn","restoredBy","revisionRestoredOn","revisionRestoredBy","publish","result","error","restoredEntry","ok","abstraction","implementation","dependencies"],"sources":["RestoreEntryFromBinUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { EventPublisher } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","IdentityContext","EventPublisher","RestoreEntryFromBinUseCase","UseCaseAbstraction","RestoreEntryFromBinRepository","AccessControl","GetLatestDeletedRevisionByEntryIdUseCase","EntryBeforeRestoreFromBinEvent","EntryAfterRestoreFromBinEvent","EntryRestoreFromBinErrorEvent","EntryNotAuthorizedError","EntryNotFoundError","getDate","getIdentity","RestoreEntryFromBinUseCaseImpl","constructor","repository","accessControl","getDeletedEntry","identityContext","eventPublisher","execute","model","id","canAccess","canAccessEntry","rwd","fail","fromModel","getResult","isFail","originalEntry","value","entry","currentDateTime","Date","toISOString","currentIdentity","entryToRestore","wbyDeleted","location","folderId","binOriginalFolderId","undefined","restoredOn","restoredBy","revisionRestoredOn","revisionRestoredBy","publish","result","error","restoredEntry","ok","abstraction","implementation","dependencies"],"sources":["RestoreEntryFromBinUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { RestoreEntryFromBinUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { RestoreEntryFromBinRepository } from \"./abstractions.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { GetLatestDeletedRevisionByEntryIdUseCase } from \"~/features/contentEntry/GetLatestRevisionByEntryId/index.js\";\nimport type { CmsEntry, CmsEntryValues, CmsModel } from \"~/types/index.js\";\nimport {\n EntryBeforeRestoreFromBinEvent,\n EntryAfterRestoreFromBinEvent,\n EntryRestoreFromBinErrorEvent\n} from \"./events.js\";\nimport { EntryNotAuthorizedError } from \"~/domain/contentEntry/errors.js\";\nimport { EntryNotFoundError } from \"~/domain/contentEntry/errors.js\";\nimport { getDate } from \"~/utils/date.js\";\nimport { getIdentity } from \"~/utils/identity.js\";\n\n/**\n * RestoreEntryFromBinUseCase - Orchestrates restoring a soft-deleted entry from the bin.\n *\n * Responsibilities:\n * - Apply access control\n * - Get the deleted entry to restore by ID\n * - Clear deletion flags (wbyDeleted = false)\n * - Restore entry to its original folder\n * - Update restoration metadata\n * - Publish domain events\n * - Delegate to repository for storage operations\n */\nclass RestoreEntryFromBinUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private repository: RestoreEntryFromBinRepository.Interface,\n private accessControl: AccessControl.Interface,\n private getDeletedEntry: GetLatestDeletedRevisionByEntryIdUseCase.Interface,\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n public async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>> {\n // Check access control\n const canAccess = await this.accessControl.canAccessEntry({ model, rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Get the deleted entry to restore by ID\n const getResult = await this.getDeletedEntry.execute<T>(model, { id });\n\n if (getResult.isFail()) {\n return Result.fail(new EntryNotFoundError(id));\n }\n\n const originalEntry = getResult.value;\n\n // Check access control on the specific entry\n const canAccessEntry = await this.accessControl.canAccessEntry({\n model,\n entry: originalEntry,\n rwd: \"w\"\n });\n\n if (!canAccessEntry) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Create the restored entry data\n const currentDateTime = new Date().toISOString();\n const currentIdentity = this.identityContext.getIdentity();\n\n const entryToRestore: CmsEntry<T> = {\n ...originalEntry,\n wbyDeleted: false,\n\n // Entry location fields - restore to original folder\n location: {\n folderId: originalEntry.binOriginalFolderId\n },\n binOriginalFolderId: undefined,\n\n // Entry-level meta fields\n restoredOn: getDate(currentDateTime, null),\n restoredBy: getIdentity(currentIdentity, null),\n\n // Revision-level meta fields\n revisionRestoredOn: getDate(currentDateTime, null),\n revisionRestoredBy: getIdentity(currentIdentity, null)\n };\n\n try {\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeRestoreFromBinEvent({\n entry: entryToRestore,\n model\n })\n );\n\n // Delegate to repository\n const result = await this.repository.execute<T>(model, entryToRestore);\n\n if (result.isFail()) {\n await this.eventPublisher.publish(\n new EntryRestoreFromBinErrorEvent({\n entry: entryToRestore,\n model,\n error: result.error\n })\n );\n return Result.fail(result.error);\n }\n\n const restoredEntry = result.value;\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterRestoreFromBinEvent({\n entry: restoredEntry,\n model\n })\n );\n\n return Result.ok(restoredEntry);\n } catch (error) {\n await this.eventPublisher.publish(\n new EntryRestoreFromBinErrorEvent({\n entry: entryToRestore,\n model,\n error: error as Error\n })\n );\n return Result.fail(error as any);\n }\n }\n}\n\nexport const RestoreEntryFromBinUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: RestoreEntryFromBinUseCaseImpl,\n dependencies: [\n RestoreEntryFromBinRepository,\n AccessControl,\n GetLatestDeletedRevisionByEntryIdUseCase,\n IdentityContext,\n EventPublisher\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
2
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
1
|
+
import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
3
|
import type { EntryAfterRestoreFromBinEventPayload, EntryBeforeRestoreFromBinEventPayload, EntryRestoreFromBinErrorEventPayload } from "./abstractions.js";
|
|
4
4
|
/**
|
|
5
5
|
* Before restore entry from bin event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeRestoreFromBinEvent","eventType","getHandlerAbstraction","EntryBeforeRestoreFromBinEventHandler","EntryAfterRestoreFromBinEvent","EntryAfterRestoreFromBinEventHandler","EntryRestoreFromBinErrorEvent","EntryRestoreFromBinErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeRestoreFromBinEvent","eventType","getHandlerAbstraction","EntryBeforeRestoreFromBinEventHandler","EntryAfterRestoreFromBinEvent","EntryAfterRestoreFromBinEventHandler","EntryRestoreFromBinErrorEvent","EntryRestoreFromBinErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type {\n EntryAfterRestoreFromBinEventPayload,\n EntryBeforeRestoreFromBinEventPayload,\n EntryRestoreFromBinErrorEventPayload\n} from \"./abstractions.js\";\n\n/**\n * Before restore entry from bin event\n */\nexport class EntryBeforeRestoreFromBinEvent extends DomainEvent<EntryBeforeRestoreFromBinEventPayload> {\n eventType = \"Cms/Entry/BeforeRestoreFromBin\" as const;\n\n getHandlerAbstraction() {\n return EntryBeforeRestoreFromBinEventHandler;\n }\n}\n\n/** Hook into entry lifecycle before an entry is restored from bin. */\nexport const EntryBeforeRestoreFromBinEventHandler = createAbstraction<\n IEventHandler<EntryBeforeRestoreFromBinEvent>\n>(\"EntryBeforeRestoreFromBinEventHandler\");\n\nexport namespace EntryBeforeRestoreFromBinEventHandler {\n export type Interface = IEventHandler<EntryBeforeRestoreFromBinEvent>;\n export type Event = EntryBeforeRestoreFromBinEvent;\n}\n\n/**\n * After restore entry from bin event\n */\nexport class EntryAfterRestoreFromBinEvent extends DomainEvent<EntryAfterRestoreFromBinEventPayload> {\n eventType = \"Cms/Entry/AfterRestoreFromBin\" as const;\n\n getHandlerAbstraction() {\n return EntryAfterRestoreFromBinEventHandler;\n }\n}\n\n/** Hook into entry lifecycle after an entry is restored from bin. */\nexport const EntryAfterRestoreFromBinEventHandler = createAbstraction<\n IEventHandler<EntryAfterRestoreFromBinEvent>\n>(\"EntryAfterRestoreFromBinEventHandler\");\n\nexport namespace EntryAfterRestoreFromBinEventHandler {\n export type Interface = IEventHandler<EntryAfterRestoreFromBinEvent>;\n export type Event = EntryAfterRestoreFromBinEvent;\n}\n\n/**\n * Restore entry from bin error event\n */\nexport class EntryRestoreFromBinErrorEvent extends DomainEvent<EntryRestoreFromBinErrorEventPayload> {\n eventType = \"Cms/Entry/RestoreFromBinError\" as const;\n\n getHandlerAbstraction() {\n return EntryRestoreFromBinErrorEventHandler;\n }\n}\n\nexport const EntryRestoreFromBinErrorEventHandler = createAbstraction<\n IEventHandler<EntryRestoreFromBinErrorEvent>\n>(\"EntryRestoreFromBinErrorEventHandler\");\n\nexport namespace EntryRestoreFromBinErrorEventHandler {\n export type Interface = IEventHandler<EntryRestoreFromBinErrorEvent>;\n export type Event = EntryRestoreFromBinErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,WAAW,QAAQ,mDAAmD;AAO/E;AACA;AACA;AACA,OAAO,MAAMC,8BAA8B,SAASD,WAAW,CAAwC;EACnGE,SAAS,GAAG,gCAAgC;EAE5CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,qCAAqC;EAChD;AACJ;;AAEA;AACA,OAAO,MAAMA,qCAAqC,GAAGL,iBAAiB,CAEpE,uCAAuC,CAAC;AAO1C;AACA;AACA;AACA,OAAO,MAAMM,6BAA6B,SAASL,WAAW,CAAuC;EACjGE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,oCAAoC;EAC/C;AACJ;;AAEA;AACA,OAAO,MAAMA,oCAAoC,GAAGP,iBAAiB,CAEnE,sCAAsC,CAAC;AAOzC;AACA;AACA;AACA,OAAO,MAAMQ,6BAA6B,SAASP,WAAW,CAAuC;EACjGE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,oCAAoC;EAC/C;AACJ;AAEA,OAAO,MAAMA,oCAAoC,GAAGT,iBAAiB,CAEnE,sCAAsC,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
2
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
1
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
3
|
import { Result } from "@webiny/feature/api";
|
|
4
4
|
import { UnpublishEntryUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
5
5
|
import { UnpublishEntryRepository } from "./abstractions.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
2
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
1
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
3
|
import { Result } from "@webiny/feature/api";
|
|
4
4
|
import { createImplementation } from "@webiny/feature/api";
|
|
5
5
|
import { parseIdentifier } from "@webiny/utils";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventPublisher","IdentityContext","Result","createImplementation","parseIdentifier","UnpublishEntryUseCase","UseCaseAbstraction","UnpublishEntryRepository","EntryBeforeUnpublishEvent","EntryAfterUnpublishEvent","EntryUnpublishErrorEvent","AccessControl","GetPublishedRevisionByEntryIdUseCase","EntryNotAuthorizedError","EntryNotFoundError","EntryValidationError","createUnpublishEntryData","UnpublishEntryUseCaseImpl","constructor","eventPublisher","repository","accessControl","identityContext","getPublishedRevisionByEntryId","execute","model","id","canAccess","canAccessEntry","pw","fail","fromModel","entryId","publishedResult","isFail","error","originalEntry","value","entry","getIdentity","publish","unpublishResult","storageEntry","ok","abstraction","implementation","dependencies"],"sources":["UnpublishEntryUseCase.ts"],"sourcesContent":["import { EventPublisher } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["EventPublisher","IdentityContext","Result","createImplementation","parseIdentifier","UnpublishEntryUseCase","UseCaseAbstraction","UnpublishEntryRepository","EntryBeforeUnpublishEvent","EntryAfterUnpublishEvent","EntryUnpublishErrorEvent","AccessControl","GetPublishedRevisionByEntryIdUseCase","EntryNotAuthorizedError","EntryNotFoundError","EntryValidationError","createUnpublishEntryData","UnpublishEntryUseCaseImpl","constructor","eventPublisher","repository","accessControl","identityContext","getPublishedRevisionByEntryId","execute","model","id","canAccess","canAccessEntry","pw","fail","fromModel","entryId","publishedResult","isFail","error","originalEntry","value","entry","getIdentity","publish","unpublishResult","storageEntry","ok","abstraction","implementation","dependencies"],"sources":["UnpublishEntryUseCase.ts"],"sourcesContent":["import { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { UnpublishEntryUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UnpublishEntryRepository } from \"./abstractions.js\";\nimport { EntryBeforeUnpublishEvent } from \"./events.js\";\nimport { EntryAfterUnpublishEvent } from \"./events.js\";\nimport { EntryUnpublishErrorEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { GetPublishedRevisionByEntryIdUseCase } from \"~/features/contentEntry/GetPublishedRevisionByEntryId/index.js\";\nimport type { CmsEntry, CmsEntryValues } from \"~/types/index.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { EntryNotAuthorizedError } from \"~/domain/contentEntry/errors.js\";\nimport { EntryNotFoundError } from \"~/domain/contentEntry/errors.js\";\nimport { EntryValidationError } from \"~/domain/contentEntry/errors.js\";\nimport { createUnpublishEntryData } from \"~/crud/contentEntry/entryDataFactories/index.js\";\n\n/**\n * UnpublishEntryUseCase - Orchestrates entry unpublishing.\n *\n * Responsibilities:\n * - Fetch published revision by entry ID\n * - Validate entry is published (matches requested ID)\n * - Transform to unpublish data\n * - Apply access control\n * - Publish domain events\n * - Delegate persistence to repository\n */\nclass UnpublishEntryUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: UnpublishEntryRepository.Interface,\n private accessControl: AccessControl.Interface,\n private identityContext: IdentityContext.Interface,\n private getPublishedRevisionByEntryId: GetPublishedRevisionByEntryIdUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string\n ): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>> {\n // Check initial access control\n const canAccess = await this.accessControl.canAccessEntry({ model, pw: \"u\" });\n if (!canAccess) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Parse entry ID from revision ID\n const { id: entryId } = parseIdentifier(id);\n\n // Get published revision\n const publishedResult = await this.getPublishedRevisionByEntryId.execute<T>(model, entryId);\n\n if (publishedResult.isFail()) {\n return Result.fail(publishedResult.error);\n }\n\n const originalEntry = publishedResult.value;\n\n if (!originalEntry) {\n return Result.fail(new EntryNotFoundError(id));\n }\n\n // Validate that the entry is actually published (published revision ID must match requested ID)\n if (originalEntry.id !== id) {\n return Result.fail(new EntryValidationError(`Entry is not published!`));\n }\n\n // Apply access control on the specific entry\n const canAccessEntry = await this.accessControl.canAccessEntry({\n model,\n entry: originalEntry,\n pw: \"u\"\n });\n\n if (!canAccessEntry) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Transform to unpublish data\n const { entry } = await createUnpublishEntryData<T>({\n originalEntry,\n getIdentity: () => this.identityContext.getIdentity()\n });\n\n try {\n // Publish before event\n await this.eventPublisher.publish(new EntryBeforeUnpublishEvent({ entry, model }));\n\n // Persist unpublish\n const unpublishResult = await this.repository.execute<T>(model, entry);\n if (unpublishResult.isFail()) {\n await this.eventPublisher.publish(\n new EntryUnpublishErrorEvent({ entry, model, error: unpublishResult.error })\n );\n return Result.fail(unpublishResult.error);\n }\n\n const storageEntry = unpublishResult.value;\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterUnpublishEvent({\n entry,\n storageEntry,\n model\n })\n );\n\n return Result.ok(entry);\n } catch (error) {\n await this.eventPublisher.publish(\n new EntryUnpublishErrorEvent({ entry, model, error: error as Error })\n );\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const UnpublishEntryUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UnpublishEntryUseCaseImpl,\n dependencies: [\n EventPublisher,\n UnpublishEntryRepository,\n AccessControl,\n IdentityContext,\n GetPublishedRevisionByEntryIdUseCase\n ]\n});\n"],"mappings":"AAAA,SAASA,cAAc,QAAQ,mDAAmD;AAClF,SAASC,eAAe,QAAQ,6DAA6D;AAC7F,SAASC,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,QAAQ,qBAAqB;AAC1D,SAASC,eAAe,QAAQ,eAAe;AAC/C,SAASC,qBAAqB,IAAIC,kBAAkB;AACpD,SAASC,wBAAwB;AACjC,SAASC,yBAAyB;AAClC,SAASC,wBAAwB;AACjC,SAASC,wBAAwB;AACjC,SAASC,aAAa;AACtB,SAASC,oCAAoC;AAG7C,SAASC,uBAAuB;AAChC,SAASC,kBAAkB;AAC3B,SAASC,oBAAoB;AAC7B,SAASC,wBAAwB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,yBAAyB,CAAyC;EAC7DC,WAAWA,CACNC,cAAwC,EACxCC,UAA8C,EAC9CC,aAAsC,EACtCC,eAA0C,EAC1CC,6BAA6E,EACvF;IAAA,KALUJ,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA8C,GAA9CA,UAA8C;IAAA,KAC9CC,aAAsC,GAAtCA,aAAsC;IAAA,KACtCC,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,6BAA6E,GAA7EA,6BAA6E;EACtF;EAEH,MAAMC,OAAOA,CACTC,KAAe,EACfC,EAAU,EAC4C;IACtD;IACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACN,aAAa,CAACO,cAAc,CAAC;MAAEH,KAAK;MAAEI,EAAE,EAAE;IAAI,CAAC,CAAC;IAC7E,IAAI,CAACF,SAAS,EAAE;MACZ,OAAOzB,MAAM,CAAC4B,IAAI,CAACjB,uBAAuB,CAACkB,SAAS,CAACN,KAAK,CAAC,CAAC;IAChE;;IAEA;IACA,MAAM;MAAEC,EAAE,EAAEM;IAAQ,CAAC,GAAG5B,eAAe,CAACsB,EAAE,CAAC;;IAE3C;IACA,MAAMO,eAAe,GAAG,MAAM,IAAI,CAACV,6BAA6B,CAACC,OAAO,CAAIC,KAAK,EAAEO,OAAO,CAAC;IAE3F,IAAIC,eAAe,CAACC,MAAM,CAAC,CAAC,EAAE;MAC1B,OAAOhC,MAAM,CAAC4B,IAAI,CAACG,eAAe,CAACE,KAAK,CAAC;IAC7C;IAEA,MAAMC,aAAa,GAAGH,eAAe,CAACI,KAAK;IAE3C,IAAI,CAACD,aAAa,EAAE;MAChB,OAAOlC,MAAM,CAAC4B,IAAI,CAAC,IAAIhB,kBAAkB,CAACY,EAAE,CAAC,CAAC;IAClD;;IAEA;IACA,IAAIU,aAAa,CAACV,EAAE,KAAKA,EAAE,EAAE;MACzB,OAAOxB,MAAM,CAAC4B,IAAI,CAAC,IAAIf,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAC3E;;IAEA;IACA,MAAMa,cAAc,GAAG,MAAM,IAAI,CAACP,aAAa,CAACO,cAAc,CAAC;MAC3DH,KAAK;MACLa,KAAK,EAAEF,aAAa;MACpBP,EAAE,EAAE;IACR,CAAC,CAAC;IAEF,IAAI,CAACD,cAAc,EAAE;MACjB,OAAO1B,MAAM,CAAC4B,IAAI,CAACjB,uBAAuB,CAACkB,SAAS,CAACN,KAAK,CAAC,CAAC;IAChE;;IAEA;IACA,MAAM;MAAEa;IAAM,CAAC,GAAG,MAAMtB,wBAAwB,CAAI;MAChDoB,aAAa;MACbG,WAAW,EAAEA,CAAA,KAAM,IAAI,CAACjB,eAAe,CAACiB,WAAW,CAAC;IACxD,CAAC,CAAC;IAEF,IAAI;MACA;MACA,MAAM,IAAI,CAACpB,cAAc,CAACqB,OAAO,CAAC,IAAIhC,yBAAyB,CAAC;QAAE8B,KAAK;QAAEb;MAAM,CAAC,CAAC,CAAC;;MAElF;MACA,MAAMgB,eAAe,GAAG,MAAM,IAAI,CAACrB,UAAU,CAACI,OAAO,CAAIC,KAAK,EAAEa,KAAK,CAAC;MACtE,IAAIG,eAAe,CAACP,MAAM,CAAC,CAAC,EAAE;QAC1B,MAAM,IAAI,CAACf,cAAc,CAACqB,OAAO,CAC7B,IAAI9B,wBAAwB,CAAC;UAAE4B,KAAK;UAAEb,KAAK;UAAEU,KAAK,EAAEM,eAAe,CAACN;QAAM,CAAC,CAC/E,CAAC;QACD,OAAOjC,MAAM,CAAC4B,IAAI,CAACW,eAAe,CAACN,KAAK,CAAC;MAC7C;MAEA,MAAMO,YAAY,GAAGD,eAAe,CAACJ,KAAK;;MAE1C;MACA,MAAM,IAAI,CAAClB,cAAc,CAACqB,OAAO,CAC7B,IAAI/B,wBAAwB,CAAC;QACzB6B,KAAK;QACLI,YAAY;QACZjB;MACJ,CAAC,CACL,CAAC;MAED,OAAOvB,MAAM,CAACyC,EAAE,CAACL,KAAK,CAAC;IAC3B,CAAC,CAAC,OAAOH,KAAK,EAAE;MACZ,MAAM,IAAI,CAAChB,cAAc,CAACqB,OAAO,CAC7B,IAAI9B,wBAAwB,CAAC;QAAE4B,KAAK;QAAEb,KAAK;QAAEU,KAAK,EAAEA;MAAe,CAAC,CACxE,CAAC;MACD,OAAOjC,MAAM,CAAC4B,IAAI,CAACK,KAAiC,CAAC;IACzD;EACJ;AACJ;AAEA,OAAO,MAAM9B,qBAAqB,GAAGF,oBAAoB,CAAC;EACtDyC,WAAW,EAAEtC,kBAAkB;EAC/BuC,cAAc,EAAE5B,yBAAyB;EACzC6B,YAAY,EAAE,CACV9C,cAAc,EACdO,wBAAwB,EACxBI,aAAa,EACbV,eAAe,EACfW,oCAAoC;AAE5C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
2
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
3
|
import type { CmsEntry } from "../../../types/index.js";
|
|
4
4
|
import type { CmsModel } from "../../../types/index.js";
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeUnpublishEvent","eventType","getHandlerAbstraction","EntryBeforeUnpublishEventHandler","EntryAfterUnpublishEvent","EntryAfterUnpublishEventHandler","EntryUnpublishErrorEvent","EntryUnpublishErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeUnpublishEvent","eventType","getHandlerAbstraction","EntryBeforeUnpublishEventHandler","EntryAfterUnpublishEvent","EntryAfterUnpublishEventHandler","EntryUnpublishErrorEvent","EntryUnpublishErrorEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { CmsEntry } from \"~/types/index.js\";\nimport type { CmsModel } from \"~/types/index.js\";\n\n/**\n * Event payloads\n */\nexport interface EntryBeforeUnpublishEventPayload {\n entry: CmsEntry;\n model: CmsModel;\n}\n\nexport interface EntryAfterUnpublishEventPayload {\n entry: CmsEntry;\n storageEntry: any;\n model: CmsModel;\n}\n\nexport interface EntryUnpublishErrorEventPayload {\n entry: CmsEntry;\n model: CmsModel;\n error: Error;\n}\n\n/**\n * EntryBeforeUnpublishEvent - Published before unpublishing an entry\n */\nexport class EntryBeforeUnpublishEvent extends DomainEvent<EntryBeforeUnpublishEventPayload> {\n eventType = \"Cms/Entry/BeforeUnpublish\" as const;\n\n getHandlerAbstraction() {\n return EntryBeforeUnpublishEventHandler;\n }\n}\n\n/** Hook into entry lifecycle before an entry is unpublished. */\nexport const EntryBeforeUnpublishEventHandler = createAbstraction<\n IEventHandler<EntryBeforeUnpublishEvent>\n>(\"EntryBeforeUnpublishEventHandler\");\n\nexport namespace EntryBeforeUnpublishEventHandler {\n export type Interface = IEventHandler<EntryBeforeUnpublishEvent>;\n export type Event = EntryBeforeUnpublishEvent;\n}\n\n/**\n * EntryAfterUnpublishEvent - Published after unpublishing an entry\n */\nexport class EntryAfterUnpublishEvent extends DomainEvent<EntryAfterUnpublishEventPayload> {\n eventType = \"Cms/Entry/AfterUnpublish\" as const;\n\n getHandlerAbstraction() {\n return EntryAfterUnpublishEventHandler;\n }\n}\n\n/** Hook into entry lifecycle after an entry is unpublished. */\nexport const EntryAfterUnpublishEventHandler = createAbstraction<\n IEventHandler<EntryAfterUnpublishEvent>\n>(\"EntryAfterUnpublishEventHandler\");\n\nexport namespace EntryAfterUnpublishEventHandler {\n export type Interface = IEventHandler<EntryAfterUnpublishEvent>;\n export type Event = EntryAfterUnpublishEvent;\n}\n\n/**\n * EntryUnpublishErrorEvent - Published when unpublish fails\n */\nexport class EntryUnpublishErrorEvent extends DomainEvent<EntryUnpublishErrorEventPayload> {\n eventType = \"Cms/Entry/UnpublishError\" as const;\n\n getHandlerAbstraction() {\n return EntryUnpublishErrorEventHandler;\n }\n}\n\nexport const EntryUnpublishErrorEventHandler = createAbstraction<\n IEventHandler<EntryUnpublishErrorEvent>\n>(\"EntryUnpublishErrorEventHandler\");\n\nexport namespace EntryUnpublishErrorEventHandler {\n export type Interface = IEventHandler<EntryUnpublishErrorEvent>;\n export type Event = EntryUnpublishErrorEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,mDAAmD;;AAK/E;AACA;AACA;;AAkBA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,SAASD,WAAW,CAAmC;EACzFE,SAAS,GAAG,2BAA2B;EAEvCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,gCAAgC;EAC3C;AACJ;;AAEA;AACA,OAAO,MAAMA,gCAAgC,GAAGL,iBAAiB,CAE/D,kCAAkC,CAAC;AAOrC;AACA;AACA;AACA,OAAO,MAAMM,wBAAwB,SAASL,WAAW,CAAkC;EACvFE,SAAS,GAAG,0BAA0B;EAEtCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,+BAA+B;EAC1C;AACJ;;AAEA;AACA,OAAO,MAAMA,+BAA+B,GAAGP,iBAAiB,CAE9D,iCAAiC,CAAC;AAOpC;AACA;AACA;AACA,OAAO,MAAMQ,wBAAwB,SAASP,WAAW,CAAkC;EACvFE,SAAS,GAAG,0BAA0B;EAEtCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOK,+BAA+B;EAC1C;AACJ;AAEA,OAAO,MAAMA,+BAA+B,GAAGT,iBAAiB,CAE9D,iCAAiC,CAAC","ignoreList":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { UpdateEntryUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
3
3
|
import { UpdateEntryRepository } from "./abstractions.js";
|
|
4
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
5
5
|
import { AccessControl } from "../../../features/shared/abstractions.js";
|
|
6
6
|
import { CmsContext } from "../../../features/shared/abstractions.js";
|
|
7
|
-
import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
8
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
7
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
8
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
9
9
|
import { GetRevisionByIdUseCase } from "../../../features/contentEntry/GetRevisionById/abstractions.js";
|
|
10
10
|
import type { CmsEntry, CmsEntryValues, CmsModel, UpdateCmsEntryInput, UpdateCmsEntryOptionsInput } from "../../../types/index.js";
|
|
11
11
|
import type { GenericRecord } from "@webiny/api/types.js";
|
|
@@ -2,12 +2,12 @@ import { Result } from "@webiny/feature/api";
|
|
|
2
2
|
import { createImplementation } from "@webiny/feature/api";
|
|
3
3
|
import { UpdateEntryUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
4
4
|
import { UpdateEntryRepository } from "./abstractions.js";
|
|
5
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
5
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
6
6
|
import { EntryBeforeUpdateEvent, EntryAfterUpdateEvent } from "./events.js";
|
|
7
7
|
import { AccessControl } from "../../shared/abstractions.js";
|
|
8
8
|
import { CmsContext } from "../../shared/abstractions.js";
|
|
9
|
-
import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
10
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
9
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
10
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
11
11
|
import { GetRevisionByIdUseCase } from "../GetRevisionById/abstractions.js";
|
|
12
12
|
import { EntryNotAuthorizedError } from "../../../domain/contentEntry/errors.js";
|
|
13
13
|
import { EntryLockedError } from "../../../domain/contentEntry/errors.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","createImplementation","UpdateEntryUseCase","UseCaseAbstraction","UpdateEntryRepository","EventPublisher","EntryBeforeUpdateEvent","EntryAfterUpdateEvent","AccessControl","CmsContext","TenantContext","IdentityContext","GetRevisionByIdUseCase","EntryNotAuthorizedError","EntryLockedError","createUpdateEntryData","UpdateEntryUseCaseImpl","constructor","eventPublisher","repository","accessControl","cmsContext","tenantContext","identityContext","getRevisionByIdUseCase","execute","model","id","rawInput","metaInput","options","canAccess","canAccessEntry","rwd","fail","fromModel","result","isFail","error","originalEntry","value","locked","entry","input","context","getIdentity","getTenant","publish","original","updateResult","ok","abstraction","implementation","dependencies"],"sources":["UpdateEntryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { UpdateEntryUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UpdateEntryRepository } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["Result","createImplementation","UpdateEntryUseCase","UseCaseAbstraction","UpdateEntryRepository","EventPublisher","EntryBeforeUpdateEvent","EntryAfterUpdateEvent","AccessControl","CmsContext","TenantContext","IdentityContext","GetRevisionByIdUseCase","EntryNotAuthorizedError","EntryLockedError","createUpdateEntryData","UpdateEntryUseCaseImpl","constructor","eventPublisher","repository","accessControl","cmsContext","tenantContext","identityContext","getRevisionByIdUseCase","execute","model","id","rawInput","metaInput","options","canAccess","canAccessEntry","rwd","fail","fromModel","result","isFail","error","originalEntry","value","locked","entry","input","context","getIdentity","getTenant","publish","original","updateResult","ok","abstraction","implementation","dependencies"],"sources":["UpdateEntryUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { createImplementation } from \"@webiny/feature/api\";\nimport { UpdateEntryUseCase as UseCaseAbstraction } from \"./abstractions.js\";\nimport { UpdateEntryRepository } from \"./abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { EntryBeforeUpdateEvent, EntryAfterUpdateEvent } from \"./events.js\";\nimport { AccessControl } from \"~/features/shared/abstractions.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetRevisionByIdUseCase } from \"~/features/contentEntry/GetRevisionById/abstractions.js\";\nimport type {\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n UpdateCmsEntryInput,\n UpdateCmsEntryOptionsInput\n} from \"~/types/index.js\";\nimport type { GenericRecord } from \"@webiny/api/types.js\";\nimport { EntryNotAuthorizedError } from \"~/domain/contentEntry/errors.js\";\nimport { EntryLockedError } from \"~/domain/contentEntry/errors.js\";\nimport { createUpdateEntryData } from \"~/crud/contentEntry/entryDataFactories/createUpdateEntryData.js\";\n\n/**\n * UpdateEntryUseCase - Orchestrates entry updates.\n *\n * Responsibilities:\n * - Fetch original entry\n * - Validate entry is not locked\n * - Transform raw input to updated domain entry\n * - Apply access control\n * - Publish domain events\n * - Delegate persistence to repository\n */\nclass UpdateEntryUseCaseImpl implements UseCaseAbstraction.Interface {\n public constructor(\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateEntryRepository.Interface,\n private accessControl: AccessControl.Interface,\n private cmsContext: CmsContext.Interface,\n private tenantContext: TenantContext.Interface,\n private identityContext: IdentityContext.Interface,\n private getRevisionByIdUseCase: GetRevisionByIdUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n id: string,\n rawInput: UpdateCmsEntryInput<T>,\n metaInput?: GenericRecord,\n options?: UpdateCmsEntryOptionsInput\n ): Promise<Result<CmsEntry<T>, UseCaseAbstraction.Error>> {\n // Check initial access control\n const canAccess = await this.accessControl.canAccessEntry({ model, rwd: \"w\" });\n if (!canAccess) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n try {\n const result = await this.getRevisionByIdUseCase.execute<T>(model, id);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const originalEntry = result.value;\n\n // Check if entry is locked\n if (originalEntry.locked) {\n return Result.fail(new EntryLockedError());\n }\n\n // Transform raw input to updated domain entry\n const { entry, input } = await createUpdateEntryData<T>({\n model,\n rawInput,\n options,\n context: this.cmsContext,\n getIdentity: () => this.identityContext.getIdentity(),\n getTenant: () => this.tenantContext.getTenant(),\n originalEntry,\n metaInput\n });\n\n // Apply access control on the updated entry\n const canAccessEntry = await this.accessControl.canAccessEntry({\n model,\n entry,\n rwd: \"w\"\n });\n\n if (!canAccessEntry) {\n return Result.fail(EntryNotAuthorizedError.fromModel(model));\n }\n\n // Publish before event\n await this.eventPublisher.publish(\n new EntryBeforeUpdateEvent({ entry, original: originalEntry, input, model })\n );\n\n // Persist updated entry\n const updateResult = await this.repository.execute(model, entry);\n if (updateResult.isFail()) {\n return Result.fail(updateResult.error);\n }\n\n // Publish after event\n await this.eventPublisher.publish(\n new EntryAfterUpdateEvent({\n entry,\n original: originalEntry,\n input,\n model\n })\n );\n\n return Result.ok(entry);\n } catch (error) {\n // Handle errors from createUpdateEntryData or other operations\n return Result.fail(error as UseCaseAbstraction.Error);\n }\n }\n}\n\nexport const UpdateEntryUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateEntryUseCaseImpl,\n dependencies: [\n EventPublisher,\n UpdateEntryRepository,\n AccessControl,\n CmsContext,\n TenantContext,\n IdentityContext,\n GetRevisionByIdUseCase\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { IEventHandler } from "@webiny/api-core/features/
|
|
2
|
-
import { DomainEvent } from "@webiny/api-core/features/
|
|
1
|
+
import type { IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
3
|
import type { CmsEntry, CmsModel, UpdateCmsEntryInput } from "../../../types/index.js";
|
|
4
4
|
/**
|
|
5
5
|
* Event payloads
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeUpdateEvent","eventType","getHandlerAbstraction","EntryBeforeUpdateEventHandler","EntryAfterUpdateEvent","EntryAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","EntryBeforeUpdateEvent","eventType","getHandlerAbstraction","EntryBeforeUpdateEventHandler","EntryAfterUpdateEvent","EntryAfterUpdateEventHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { CmsEntry, CmsModel, UpdateCmsEntryInput } from \"~/types/index.js\";\n\n/**\n * Event payloads\n */\nexport interface EntryBeforeUpdateEventPayload {\n entry: CmsEntry;\n original: CmsEntry;\n input: UpdateCmsEntryInput;\n model: CmsModel;\n}\n\nexport interface EntryAfterUpdateEventPayload {\n entry: CmsEntry;\n original: CmsEntry;\n input: UpdateCmsEntryInput;\n model: CmsModel;\n}\n\n/**\n * EntryBeforeUpdateEvent - Published before updating an entry\n */\nexport class EntryBeforeUpdateEvent extends DomainEvent<EntryBeforeUpdateEventPayload> {\n eventType = \"Cms/Entry/BeforeUpdate\" as const;\n\n getHandlerAbstraction() {\n return EntryBeforeUpdateEventHandler;\n }\n}\n\n/** Hook into entry lifecycle before an entry is updated. */\nexport const EntryBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<EntryBeforeUpdateEvent>\n>(\"EntryBeforeUpdateEventHandler\");\n\nexport namespace EntryBeforeUpdateEventHandler {\n export type Interface = IEventHandler<EntryBeforeUpdateEvent>;\n export type Event = EntryBeforeUpdateEvent;\n}\n\n/**\n * EntryAfterUpdateEvent - Published after updating an entry\n */\nexport class EntryAfterUpdateEvent extends DomainEvent<EntryAfterUpdateEventPayload> {\n eventType = \"Cms/Entry/AfterUpdate\" as const;\n\n getHandlerAbstraction() {\n return EntryAfterUpdateEventHandler;\n }\n}\n\n/** Hook into entry lifecycle after an entry is updated. */\nexport const EntryAfterUpdateEventHandler = createAbstraction<IEventHandler<EntryAfterUpdateEvent>>(\n \"EntryAfterUpdateEventHandler\"\n);\n\nexport namespace EntryAfterUpdateEventHandler {\n export type Interface = IEventHandler<EntryAfterUpdateEvent>;\n export type Event = EntryAfterUpdateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,WAAW,QAAQ,mDAAmD;;AAG/E;AACA;AACA;;AAeA;AACA;AACA;AACA,OAAO,MAAMC,sBAAsB,SAASD,WAAW,CAAgC;EACnFE,SAAS,GAAG,wBAAwB;EAEpCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,6BAA6B;EACxC;AACJ;;AAEA;AACA,OAAO,MAAMA,6BAA6B,GAAGL,iBAAiB,CAE5D,+BAA+B,CAAC;AAOlC;AACA;AACA;AACA,OAAO,MAAMM,qBAAqB,SAASL,WAAW,CAA+B;EACjFE,SAAS,GAAG,uBAAuB;EAEnCC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,4BAA4B;EACvC;AACJ;;AAEA;AACA,OAAO,MAAMA,4BAA4B,GAAGP,iBAAiB,CACzD,8BACJ,CAAC","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { ModelCache } from "../../../features/contentModel/shared/abstractions.j
|
|
|
4
4
|
import { PluginModelsProvider } from "../../../features/contentModel/shared/abstractions.js";
|
|
5
5
|
import { ListModelsUseCase } from "../../../features/contentModel/ListModels/index.js";
|
|
6
6
|
import { StorageOperations } from "../../../features/shared/abstractions.js";
|
|
7
|
-
import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
7
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
8
8
|
import { CmsContext } from "../../../features/shared/abstractions.js";
|
|
9
9
|
import type { CmsModel } from "../../../types/index.js";
|
|
10
10
|
/**
|
|
@@ -8,7 +8,7 @@ import { ModelAlreadyExistsError } from "../../../domain/contentModel/errors.js"
|
|
|
8
8
|
import { ModelPersistenceError } from "../../../domain/contentModel/errors.js";
|
|
9
9
|
import { ModelValidationError } from "../../../domain/contentModel/errors.js";
|
|
10
10
|
import { StorageOperations } from "../../shared/abstractions.js";
|
|
11
|
-
import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
11
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
12
12
|
import { CmsContext } from "../../shared/abstractions.js";
|
|
13
13
|
import { validateExistingModelId, validateModelIdAllowed } from "../../../crud/contentModel/validate/modelId.js";
|
|
14
14
|
import { validateEndingAllowed } from "../../../crud/contentModel/validate/endingAllowed.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["camelCase","Result","CreateModelRepository","RepositoryAbstraction","ModelCache","PluginModelsProvider","ListModelsUseCase","ModelAlreadyExistsError","ModelPersistenceError","ModelValidationError","StorageOperations","TenantContext","CmsContext","validateExistingModelId","validateModelIdAllowed","validateEndingAllowed","ensureTypeTag","validateSingularApiName","validatePluralApiName","validateModelFields","getModelId","model","modelId","name","value","trim","isModelIdValid","toLowerCase","CreateModelRepositoryImpl","constructor","modelCache","pluginModelsProvider","listModelsUseCase","storageOperations","tenantContext","cmsContext","execute","tenant","getTenant","error","fail","message","data","pluginModels","list","id","pluginModelConflict","find","pm","modelsResult","isFail","models","existingModel","context","tags","create","clear","ok","console","stack","createImplementation","implementation","dependencies"],"sources":["CreateModelRepository.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { CreateModelRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ModelCache } from \"~/features/contentModel/shared/abstractions.js\";\nimport { PluginModelsProvider } from \"~/features/contentModel/shared/abstractions.js\";\nimport { ListModelsUseCase } from \"~/features/contentModel/ListModels/index.js\";\nimport { ModelAlreadyExistsError } from \"~/domain/contentModel/errors.js\";\nimport { ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\nimport { ModelValidationError } from \"~/domain/contentModel/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/TenantContext\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport {\n validateExistingModelId,\n validateModelIdAllowed\n} from \"~/crud/contentModel/validate/modelId.js\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport { validateSingularApiName } from \"~/domain/contentModel/validation/singularApiName.js\";\nimport { validatePluralApiName } from \"~/domain/contentModel/validation/pluralApiName.js\";\nimport { validateModelFields } from \"~/domain/contentModel/validation/modelFields.js\";\n\n/**\n * Generate modelId from model following the exact logic from beforeCreate.ts\n */\nconst getModelId = (model: { modelId?: string; name?: string }): string => {\n const { modelId, name } = model;\n const value = modelId ? modelId.trim() : null;\n if (value) {\n const isModelIdValid = camelCase(value).toLowerCase() === value.toLowerCase();\n if (isModelIdValid) {\n return value;\n }\n return camelCase(value);\n } else if (name) {\n return camelCase(name.trim());\n }\n throw new ModelValidationError(\n `There is no \"modelId\" or \"name\" passed into the create model method.`\n );\n};\n\n/**\n * CreateModelRepository - Validates domain rules and persists a new model.\n *\n * Responsibilities:\n * - Generate modelId from input\n * - Validate modelId is allowed (not in disallowed list)\n * - Validate API name endings\n * - Validate modelId uniqueness (database + plugins)\n * - Validate API name uniqueness (database + plugins)\n * - Validate plugin conflicts\n * - Validate model fields\n * - Persist to storage\n * - Clear ModelCache after successful create\n */\nclass CreateModelRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private modelCache: ModelCache.Interface,\n private pluginModelsProvider: PluginModelsProvider.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private storageOperations: StorageOperations.Interface,\n private tenantContext: TenantContext.Interface,\n private cmsContext: CmsContext.Interface\n ) {}\n\n async execute(model: CmsModel): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // TODO: this will eventually become part of the Model domain object.\n const modelId = getModelId(model);\n model.modelId = modelId;\n\n // Validate modelId is allowed (not in disallowed list)\n try {\n validateModelIdAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({\n message: error.message,\n data: error.data\n })\n );\n }\n\n // Validate API name endings\n try {\n validateEndingAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({\n message: error.message,\n data: error.data\n })\n );\n }\n\n // Check for plugin model conflicts\n const pluginModels = await this.pluginModelsProvider.list(tenant.id);\n const pluginModelConflict = pluginModels.find(pm => {\n return pm.modelId === model.modelId;\n });\n\n if (pluginModelConflict) {\n return Result.fail(\n new ModelAlreadyExistsError({\n modelId,\n message: `Model \"${modelId}\" is already registered via a plugin.`\n })\n );\n }\n\n // Get all models for further validation\n const modelsResult = await this.listModelsUseCase.execute();\n\n if (modelsResult.isFail()) {\n return Result.fail(new ModelPersistenceError(modelsResult.error));\n }\n\n const models = modelsResult.value;\n\n try {\n /**\n * We need to check for the existence of:\n * - modelId\n * - singularApiName\n * - pluralApiName\n */\n for (const existingModel of models) {\n validateExistingModelId({\n existingModel,\n model\n });\n validateSingularApiName({\n existingModel,\n model\n });\n validatePluralApiName({\n existingModel,\n model\n });\n }\n\n await validateModelFields({\n models,\n model,\n context: this.cmsContext\n });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n // TODO: ideally, this will eventually be handled by the Model domain object\n model.tags = ensureTypeTag(model);\n\n // Persist to storage\n await this.storageOperations.models.create({ model });\n\n // Clear cache\n this.modelCache.clear();\n\n return Result.ok();\n } catch (error) {\n console.error(error, error.stack);\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n}\n\nexport const CreateModelRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateModelRepositoryImpl,\n dependencies: [\n ModelCache,\n PluginModelsProvider,\n ListModelsUseCase,\n StorageOperations,\n TenantContext,\n CmsContext\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["camelCase","Result","CreateModelRepository","RepositoryAbstraction","ModelCache","PluginModelsProvider","ListModelsUseCase","ModelAlreadyExistsError","ModelPersistenceError","ModelValidationError","StorageOperations","TenantContext","CmsContext","validateExistingModelId","validateModelIdAllowed","validateEndingAllowed","ensureTypeTag","validateSingularApiName","validatePluralApiName","validateModelFields","getModelId","model","modelId","name","value","trim","isModelIdValid","toLowerCase","CreateModelRepositoryImpl","constructor","modelCache","pluginModelsProvider","listModelsUseCase","storageOperations","tenantContext","cmsContext","execute","tenant","getTenant","error","fail","message","data","pluginModels","list","id","pluginModelConflict","find","pm","modelsResult","isFail","models","existingModel","context","tags","create","clear","ok","console","stack","createImplementation","implementation","dependencies"],"sources":["CreateModelRepository.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase.js\";\nimport { Result } from \"@webiny/feature/api\";\nimport { CreateModelRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { ModelCache } from \"~/features/contentModel/shared/abstractions.js\";\nimport { PluginModelsProvider } from \"~/features/contentModel/shared/abstractions.js\";\nimport { ListModelsUseCase } from \"~/features/contentModel/ListModels/index.js\";\nimport { ModelAlreadyExistsError } from \"~/domain/contentModel/errors.js\";\nimport { ModelPersistenceError } from \"~/domain/contentModel/errors.js\";\nimport { ModelValidationError } from \"~/domain/contentModel/errors.js\";\nimport { StorageOperations } from \"~/features/shared/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { CmsContext } from \"~/features/shared/abstractions.js\";\nimport {\n validateExistingModelId,\n validateModelIdAllowed\n} from \"~/crud/contentModel/validate/modelId.js\";\nimport { validateEndingAllowed } from \"~/crud/contentModel/validate/endingAllowed.js\";\nimport type { CmsModel } from \"~/types/index.js\";\nimport { ensureTypeTag } from \"~/domain/contentModel/ensureTypeTag.js\";\nimport { validateSingularApiName } from \"~/domain/contentModel/validation/singularApiName.js\";\nimport { validatePluralApiName } from \"~/domain/contentModel/validation/pluralApiName.js\";\nimport { validateModelFields } from \"~/domain/contentModel/validation/modelFields.js\";\n\n/**\n * Generate modelId from model following the exact logic from beforeCreate.ts\n */\nconst getModelId = (model: { modelId?: string; name?: string }): string => {\n const { modelId, name } = model;\n const value = modelId ? modelId.trim() : null;\n if (value) {\n const isModelIdValid = camelCase(value).toLowerCase() === value.toLowerCase();\n if (isModelIdValid) {\n return value;\n }\n return camelCase(value);\n } else if (name) {\n return camelCase(name.trim());\n }\n throw new ModelValidationError(\n `There is no \"modelId\" or \"name\" passed into the create model method.`\n );\n};\n\n/**\n * CreateModelRepository - Validates domain rules and persists a new model.\n *\n * Responsibilities:\n * - Generate modelId from input\n * - Validate modelId is allowed (not in disallowed list)\n * - Validate API name endings\n * - Validate modelId uniqueness (database + plugins)\n * - Validate API name uniqueness (database + plugins)\n * - Validate plugin conflicts\n * - Validate model fields\n * - Persist to storage\n * - Clear ModelCache after successful create\n */\nclass CreateModelRepositoryImpl implements RepositoryAbstraction.Interface {\n public constructor(\n private modelCache: ModelCache.Interface,\n private pluginModelsProvider: PluginModelsProvider.Interface,\n private listModelsUseCase: ListModelsUseCase.Interface,\n private storageOperations: StorageOperations.Interface,\n private tenantContext: TenantContext.Interface,\n private cmsContext: CmsContext.Interface\n ) {}\n\n async execute(model: CmsModel): Promise<Result<void, RepositoryAbstraction.Error>> {\n try {\n const tenant = this.tenantContext.getTenant();\n\n // TODO: this will eventually become part of the Model domain object.\n const modelId = getModelId(model);\n model.modelId = modelId;\n\n // Validate modelId is allowed (not in disallowed list)\n try {\n validateModelIdAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({\n message: error.message,\n data: error.data\n })\n );\n }\n\n // Validate API name endings\n try {\n validateEndingAllowed({ model });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({\n message: error.message,\n data: error.data\n })\n );\n }\n\n // Check for plugin model conflicts\n const pluginModels = await this.pluginModelsProvider.list(tenant.id);\n const pluginModelConflict = pluginModels.find(pm => {\n return pm.modelId === model.modelId;\n });\n\n if (pluginModelConflict) {\n return Result.fail(\n new ModelAlreadyExistsError({\n modelId,\n message: `Model \"${modelId}\" is already registered via a plugin.`\n })\n );\n }\n\n // Get all models for further validation\n const modelsResult = await this.listModelsUseCase.execute();\n\n if (modelsResult.isFail()) {\n return Result.fail(new ModelPersistenceError(modelsResult.error));\n }\n\n const models = modelsResult.value;\n\n try {\n /**\n * We need to check for the existence of:\n * - modelId\n * - singularApiName\n * - pluralApiName\n */\n for (const existingModel of models) {\n validateExistingModelId({\n existingModel,\n model\n });\n validateSingularApiName({\n existingModel,\n model\n });\n validatePluralApiName({\n existingModel,\n model\n });\n }\n\n await validateModelFields({\n models,\n model,\n context: this.cmsContext\n });\n } catch (error) {\n return Result.fail(\n new ModelValidationError({ message: error.message, data: error.data })\n );\n }\n\n // TODO: ideally, this will eventually be handled by the Model domain object\n model.tags = ensureTypeTag(model);\n\n // Persist to storage\n await this.storageOperations.models.create({ model });\n\n // Clear cache\n this.modelCache.clear();\n\n return Result.ok();\n } catch (error) {\n console.error(error, error.stack);\n return Result.fail(new ModelPersistenceError(error as Error));\n }\n }\n}\n\nexport const CreateModelRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateModelRepositoryImpl,\n dependencies: [\n ModelCache,\n PluginModelsProvider,\n ListModelsUseCase,\n StorageOperations,\n TenantContext,\n CmsContext\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { CreateModelUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
3
3
|
import { CreateModelRepository } from "./abstractions.js";
|
|
4
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
5
5
|
import { AccessControl } from "../../../features/shared/abstractions.js";
|
|
6
|
-
import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
7
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
6
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
7
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
8
8
|
import type { CmsModel } from "../../../types/index.js";
|
|
9
9
|
import type { CmsModelCreateInput } from "../../../types/index.js";
|
|
10
10
|
/**
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
2
|
import { CreateModelUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
3
3
|
import { CreateModelRepository } from "./abstractions.js";
|
|
4
|
-
import { EventPublisher } from "@webiny/api-core/features/
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
5
5
|
import { ModelBeforeCreateEvent } from "./events.js";
|
|
6
6
|
import { ModelAfterCreateEvent } from "./events.js";
|
|
7
7
|
import { ModelCreateErrorEvent } from "./events.js";
|
|
8
8
|
import { AccessControl } from "../../shared/abstractions.js";
|
|
9
|
-
import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
10
|
-
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
9
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
10
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
11
11
|
import { ModelNotAuthorizedError, ModelValidationError } from "../../../domain/contentModel/errors.js";
|
|
12
12
|
import { createZodError } from "@webiny/utils";
|
|
13
13
|
import { removeUndefinedValues } from "@webiny/utils";
|