@webiny/api-aco 0.0.0-unstable.496cf268ac → 0.0.0-unstable.5387e5f7c8
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/AcoFeature.d.ts +5 -0
- package/AcoFeature.js +134 -0
- package/AcoFeature.js.map +1 -0
- package/AcoFolderSchemaFactory.d.ts +32 -0
- package/AcoFolderSchemaFactory.js +82 -0
- package/AcoFolderSchemaFactory.js.map +1 -0
- package/README.md +6 -28
- package/constants.d.ts +2 -0
- package/constants.js +5 -0
- package/constants.js.map +1 -0
- package/createAcoGraphQL.d.ts +8 -3
- package/createAcoGraphQL.js +59 -81
- package/createAcoGraphQL.js.map +1 -1
- package/domain/folder/abstractions.d.ts +16 -0
- package/domain/folder/abstractions.js +5 -0
- package/domain/folder/abstractions.js.map +1 -0
- package/domain/folder/errors.d.ts +29 -0
- package/domain/folder/errors.js +51 -0
- package/domain/folder/errors.js.map +1 -0
- package/domain/folder/folder.model.d.ts +9 -0
- package/domain/folder/folder.model.js +59 -0
- package/domain/folder/folder.model.js.map +1 -0
- package/exports/api/aco/flp.d.ts +7 -0
- package/exports/api/aco/flp.js +7 -0
- package/exports/api/aco/folder.d.ts +11 -0
- package/exports/api/aco/folder.js +10 -0
- package/features/ai/CreateFolderTool.d.ts +49 -0
- package/features/ai/CreateFolderTool.js +58 -0
- package/features/ai/CreateFolderTool.js.map +1 -0
- package/features/ai/CreateTeamTool.d.ts +48 -0
- package/features/ai/CreateTeamTool.js +56 -0
- package/features/ai/CreateTeamTool.js.map +1 -0
- package/features/ai/DeleteFolderTool.d.ts +48 -0
- package/features/ai/DeleteFolderTool.js +55 -0
- package/features/ai/DeleteFolderTool.js.map +1 -0
- package/features/ai/GrantFolderAccessTool.d.ts +77 -0
- package/features/ai/GrantFolderAccessTool.js +80 -0
- package/features/ai/GrantFolderAccessTool.js.map +1 -0
- package/features/ai/ListFoldersTool.d.ts +47 -0
- package/features/ai/ListFoldersTool.js +57 -0
- package/features/ai/ListFoldersTool.js.map +1 -0
- package/features/ai/ListRolesTool.d.ts +39 -0
- package/features/ai/ListRolesTool.js +48 -0
- package/features/ai/ListRolesTool.js.map +1 -0
- package/features/ai/ListTeamsTool.d.ts +39 -0
- package/features/ai/ListTeamsTool.js +48 -0
- package/features/ai/ListTeamsTool.js.map +1 -0
- package/features/ai/RevokeFolderAccessTool.d.ts +63 -0
- package/features/ai/RevokeFolderAccessTool.js +69 -0
- package/features/ai/RevokeFolderAccessTool.js.map +1 -0
- package/features/ai/assertTargetIsUsable.d.ts +10 -0
- package/features/ai/assertTargetIsUsable.js +14 -0
- package/features/ai/assertTargetIsUsable.js.map +1 -0
- package/features/ai/feature.d.ts +12 -0
- package/features/ai/feature.js +25 -0
- package/features/ai/feature.js.map +1 -0
- package/features/ai/index.d.ts +9 -0
- package/features/ai/index.js +9 -0
- package/features/ai/loadFolderPermissions.d.ts +16 -0
- package/features/ai/loadFolderPermissions.js +14 -0
- package/features/ai/loadFolderPermissions.js.map +1 -0
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js +39 -0
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/CreateEntryWithFlpDecorator.d.ts +12 -0
- package/features/cms/decorators/CreateEntryWithFlpDecorator.js +33 -0
- package/features/cms/decorators/CreateEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js +39 -0
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.js +41 -0
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.d.ts +12 -0
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js +36 -0
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetEntryWithFlpDecorator.d.ts +12 -0
- package/features/cms/decorators/GetEntryWithFlpDecorator.js +36 -0
- package/features/cms/decorators/GetEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js +41 -0
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.d.ts +13 -0
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js +41 -0
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.d.ts +11 -0
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +36 -0
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/MoveEntryWithFlpDecorator.d.ts +15 -0
- package/features/cms/decorators/MoveEntryWithFlpDecorator.js +49 -0
- package/features/cms/decorators/MoveEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.d.ts +14 -0
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.js +39 -0
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.js.map +1 -0
- package/features/cms/feature.d.ts +4 -0
- package/features/cms/feature.js +37 -0
- package/features/cms/feature.js.map +1 -0
- package/features/cms/index.d.ts +1 -0
- package/features/cms/index.js +1 -0
- package/features/flp/CreateFlp/CreateFlpUseCase.d.ts +8 -0
- package/features/flp/CreateFlp/CreateFlpUseCase.js +34 -0
- package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -0
- package/features/flp/CreateFlp/abstractions.d.ts +9 -0
- package/features/flp/CreateFlp/abstractions.js +5 -0
- package/features/flp/CreateFlp/abstractions.js.map +1 -0
- package/features/flp/CreateFlp/feature.d.ts +5 -0
- package/features/flp/CreateFlp/feature.js +13 -0
- package/features/flp/CreateFlp/feature.js.map +1 -0
- package/features/flp/CreateFlp/index.d.ts +2 -0
- package/features/flp/CreateFlp/index.js +2 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.d.ts +17 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +44 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -0
- package/features/flp/CreateFlpOnFolderCreated/feature.d.ts +4 -0
- package/features/flp/CreateFlpOnFolderCreated/feature.js +11 -0
- package/features/flp/CreateFlpOnFolderCreated/feature.js.map +1 -0
- package/features/flp/CreateFlpOnFolderCreated/index.d.ts +1 -0
- package/features/flp/CreateFlpOnFolderCreated/index.js +1 -0
- package/features/flp/DeleteFlp/DeleteFlpUseCase.d.ts +8 -0
- package/features/flp/DeleteFlp/DeleteFlpUseCase.js +22 -0
- package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -0
- package/features/flp/DeleteFlp/abstractions.d.ts +9 -0
- package/features/flp/DeleteFlp/abstractions.js +5 -0
- package/features/flp/DeleteFlp/abstractions.js.map +1 -0
- package/features/flp/DeleteFlp/feature.d.ts +5 -0
- package/features/flp/DeleteFlp/feature.js +13 -0
- package/features/flp/DeleteFlp/feature.js.map +1 -0
- package/features/flp/DeleteFlp/index.d.ts +2 -0
- package/features/flp/DeleteFlp/index.js +2 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.d.ts +15 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +40 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/feature.d.ts +4 -0
- package/features/flp/DeleteFlpOnFolderDeleted/feature.js +11 -0
- package/features/flp/DeleteFlpOnFolderDeleted/feature.js.map +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/index.d.ts +1 -0
- package/features/flp/DeleteFlpOnFolderDeleted/index.js +1 -0
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +35 -0
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +112 -0
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/NoopFolderLevelPermissions.d.ts +25 -0
- package/features/flp/FolderLevelPermissions/NoopFolderLevelPermissions.js +48 -0
- package/features/flp/FolderLevelPermissions/NoopFolderLevelPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/abstractions.d.ts +26 -0
- package/features/flp/FolderLevelPermissions/abstractions.js +5 -0
- package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/feature.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/feature.js +11 -0
- package/features/flp/FolderLevelPermissions/feature.js.map +1 -0
- package/features/flp/FolderLevelPermissions/index.d.ts +3 -0
- package/features/flp/FolderLevelPermissions/index.js +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.d.ts +7 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +19 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.d.ts +9 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +0 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.d.ts +7 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +17 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.d.ts +8 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +0 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.d.ts +4 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +8 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.d.ts +3 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +0 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +8 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.d.ts +4 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +0 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.d.ts +2 -0
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +47 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.d.ts +8 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +14 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.d.ts +11 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +27 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.d.ts +4 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +0 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.d.ts +3 -0
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +2 -0
- package/features/flp/FolderLevelPermissions/useCases/index.d.ts +5 -0
- package/features/flp/FolderLevelPermissions/useCases/index.js +5 -0
- package/features/flp/GetFlp/GetFlpUseCase.d.ts +7 -0
- package/features/flp/GetFlp/GetFlpUseCase.js +11 -0
- package/features/flp/GetFlp/GetFlpUseCase.js.map +1 -0
- package/features/flp/GetFlp/abstractions.d.ts +9 -0
- package/features/flp/GetFlp/abstractions.js +5 -0
- package/features/flp/GetFlp/abstractions.js.map +1 -0
- package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.d.ts +13 -0
- package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.js +26 -0
- package/features/flp/GetFlp/decorators/GetFlpWithCodeFlps.js.map +1 -0
- package/features/flp/GetFlp/feature.d.ts +4 -0
- package/features/flp/GetFlp/feature.js +13 -0
- package/features/flp/GetFlp/feature.js.map +1 -0
- package/features/flp/GetFlp/index.d.ts +1 -0
- package/features/flp/GetFlp/index.js +1 -0
- package/features/flp/ListFlps/ListFlpsUseCase.d.ts +7 -0
- package/features/flp/ListFlps/ListFlpsUseCase.js +11 -0
- package/features/flp/ListFlps/ListFlpsUseCase.js.map +1 -0
- package/features/flp/ListFlps/abstractions.d.ts +17 -0
- package/features/flp/ListFlps/abstractions.js +5 -0
- package/features/flp/ListFlps/abstractions.js.map +1 -0
- package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.d.ts +13 -0
- package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.js +27 -0
- package/features/flp/ListFlps/decorators/ListFlpsWithCodeFlps.js.map +1 -0
- package/features/flp/ListFlps/feature.d.ts +4 -0
- package/features/flp/ListFlps/feature.js +13 -0
- package/features/flp/ListFlps/feature.js.map +1 -0
- package/features/flp/ListFlps/index.d.ts +1 -0
- package/features/flp/ListFlps/index.js +1 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.d.ts +26 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js +147 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -0
- package/features/flp/UpdateFlp/abstractions.d.ts +19 -0
- package/features/flp/UpdateFlp/abstractions.js +5 -0
- package/features/flp/UpdateFlp/abstractions.js.map +1 -0
- package/features/flp/UpdateFlp/feature.d.ts +5 -0
- package/features/flp/UpdateFlp/feature.js +17 -0
- package/features/flp/UpdateFlp/feature.js.map +1 -0
- package/features/flp/UpdateFlp/index.d.ts +2 -0
- package/features/flp/UpdateFlp/index.js +2 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.d.ts +17 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +44 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/feature.d.ts +4 -0
- package/features/flp/UpdateFlpOnFolderUpdated/feature.js +11 -0
- package/features/flp/UpdateFlpOnFolderUpdated/feature.js.map +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/index.d.ts +1 -0
- package/features/flp/UpdateFlpOnFolderUpdated/index.js +1 -0
- package/features/flp/shared/CodeFlpMerger.d.ts +26 -0
- package/features/flp/shared/CodeFlpMerger.js +20 -0
- package/features/flp/shared/CodeFlpMerger.js.map +1 -0
- package/features/flp/shared/CodeFlpPath.d.ts +15 -0
- package/features/flp/shared/CodeFlpPath.js +29 -0
- package/features/flp/shared/CodeFlpPath.js.map +1 -0
- package/features/flp/shared/CodeFlpTarget.d.ts +10 -0
- package/features/flp/shared/CodeFlpTarget.js +26 -0
- package/features/flp/shared/CodeFlpTarget.js.map +1 -0
- package/features/flp/shared/CodeFlpsProvider.d.ts +14 -0
- package/features/flp/shared/CodeFlpsProvider.js +33 -0
- package/features/flp/shared/CodeFlpsProvider.js.map +1 -0
- package/features/flp/shared/abstractions.d.ts +77 -0
- package/features/flp/shared/abstractions.js +19 -0
- package/features/flp/shared/abstractions.js.map +1 -0
- package/features/flp/shared/feature.d.ts +5 -0
- package/features/flp/shared/feature.js +17 -0
- package/features/flp/shared/feature.js.map +1 -0
- package/features/flp/shared/index.d.ts +4 -0
- package/features/flp/shared/index.js +4 -0
- package/features/folder/CreateFolder/CreateFolderRepository.d.ts +21 -0
- package/features/folder/CreateFolder/CreateFolderRepository.js +88 -0
- package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -0
- package/features/folder/CreateFolder/CreateFolderUseCase.d.ts +12 -0
- package/features/folder/CreateFolder/CreateFolderUseCase.js +36 -0
- package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -0
- package/features/folder/CreateFolder/abstractions.d.ts +59 -0
- package/features/folder/CreateFolder/abstractions.js +8 -0
- package/features/folder/CreateFolder/abstractions.js.map +1 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.d.ts +19 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +56 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/CreateFolder/events.d.ts +10 -0
- package/features/folder/CreateFolder/events.js +21 -0
- package/features/folder/CreateFolder/events.js.map +1 -0
- package/features/folder/CreateFolder/feature.d.ts +5 -0
- package/features/folder/CreateFolder/feature.js +15 -0
- package/features/folder/CreateFolder/feature.js.map +1 -0
- package/features/folder/CreateFolder/index.d.ts +2 -0
- package/features/folder/CreateFolder/index.js +2 -0
- package/features/folder/DeleteFolder/DeleteFolderRepository.d.ts +15 -0
- package/features/folder/DeleteFolder/DeleteFolderRepository.js +33 -0
- package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -0
- package/features/folder/DeleteFolder/DeleteFolderUseCase.d.ts +13 -0
- package/features/folder/DeleteFolder/DeleteFolderUseCase.js +47 -0
- package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -0
- package/features/folder/DeleteFolder/abstractions.d.ts +59 -0
- package/features/folder/DeleteFolder/abstractions.js +8 -0
- package/features/folder/DeleteFolder/abstractions.js.map +1 -0
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.d.ts +11 -0
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js +29 -0
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/DeleteFolder/events.d.ts +10 -0
- package/features/folder/DeleteFolder/events.js +21 -0
- package/features/folder/DeleteFolder/events.js.map +1 -0
- package/features/folder/DeleteFolder/feature.d.ts +5 -0
- package/features/folder/DeleteFolder/feature.js +15 -0
- package/features/folder/DeleteFolder/feature.js.map +1 -0
- package/features/folder/DeleteFolder/index.d.ts +2 -0
- package/features/folder/DeleteFolder/index.js +2 -0
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.d.ts +15 -0
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +59 -0
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/abstractions.d.ts +21 -0
- package/features/folder/EnsureFolderIsEmpty/abstractions.js +5 -0
- package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/feature.d.ts +4 -0
- package/features/folder/EnsureFolderIsEmpty/feature.js +11 -0
- package/features/folder/EnsureFolderIsEmpty/feature.js.map +1 -0
- package/features/folder/EnsureFolderIsEmpty/index.d.ts +1 -0
- package/features/folder/EnsureFolderIsEmpty/index.js +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.d.ts +12 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +25 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.d.ts +10 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js +11 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js.map +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.d.ts +1 -0
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.js +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.d.ts +16 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +52 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.d.ts +4 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js +11 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js.map +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.d.ts +1 -0
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js +1 -0
- package/features/folder/FolderModelProvider.d.ts +26 -0
- package/features/folder/FolderModelProvider.js +22 -0
- package/features/folder/FolderModelProvider.js.map +1 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.d.ts +15 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.js +59 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -0
- package/features/folder/GetAncestors/GetAncestorsUseCase.d.ts +10 -0
- package/features/folder/GetAncestors/GetAncestorsUseCase.js +20 -0
- package/features/folder/GetAncestors/GetAncestorsUseCase.js.map +1 -0
- package/features/folder/GetAncestors/abstractions.d.ts +40 -0
- package/features/folder/GetAncestors/abstractions.js +6 -0
- package/features/folder/GetAncestors/abstractions.js.map +1 -0
- package/features/folder/GetAncestors/feature.d.ts +5 -0
- package/features/folder/GetAncestors/feature.js +13 -0
- package/features/folder/GetAncestors/feature.js.map +1 -0
- package/features/folder/GetAncestors/index.d.ts +2 -0
- package/features/folder/GetAncestors/index.js +2 -0
- package/features/folder/GetFolder/GetFolderRepository.d.ts +15 -0
- package/features/folder/GetFolder/GetFolderRepository.js +34 -0
- package/features/folder/GetFolder/GetFolderRepository.js.map +1 -0
- package/features/folder/GetFolder/GetFolderUseCase.d.ts +10 -0
- package/features/folder/GetFolder/GetFolderUseCase.js +20 -0
- package/features/folder/GetFolder/GetFolderUseCase.js.map +1 -0
- package/features/folder/GetFolder/abstractions.d.ts +57 -0
- package/features/folder/GetFolder/abstractions.js +8 -0
- package/features/folder/GetFolder/abstractions.js.map +1 -0
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.d.ts +29 -0
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js +34 -0
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/GetFolder/feature.d.ts +5 -0
- package/features/folder/GetFolder/feature.js +15 -0
- package/features/folder/GetFolder/feature.js.map +1 -0
- package/features/folder/GetFolder/index.d.ts +2 -0
- package/features/folder/GetFolder/index.js +2 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.d.ts +18 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +86 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.d.ts +10 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js +20 -0
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -0
- package/features/folder/GetFolderHierarchy/abstractions.d.ts +38 -0
- package/features/folder/GetFolderHierarchy/abstractions.js +6 -0
- package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -0
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.d.ts +16 -0
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js +63 -0
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/GetFolderHierarchy/feature.d.ts +5 -0
- package/features/folder/GetFolderHierarchy/feature.js +15 -0
- package/features/folder/GetFolderHierarchy/feature.js.map +1 -0
- package/features/folder/GetFolderHierarchy/index.d.ts +2 -0
- package/features/folder/GetFolderHierarchy/index.js +2 -0
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.d.ts +13 -0
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +75 -0
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.d.ts +11 -0
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +5 -0
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/feature.d.ts +4 -0
- package/features/folder/ListFolderLevelPermissionsTargets/feature.js +11 -0
- package/features/folder/ListFolderLevelPermissionsTargets/feature.js.map +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/index.d.ts +1 -0
- package/features/folder/ListFolderLevelPermissionsTargets/index.js +1 -0
- package/features/folder/ListFolders/ListFoldersRepository.d.ts +17 -0
- package/features/folder/ListFolders/ListFoldersRepository.js +53 -0
- package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -0
- package/features/folder/ListFolders/ListFoldersUseCase.d.ts +9 -0
- package/features/folder/ListFolders/ListFoldersUseCase.js +20 -0
- package/features/folder/ListFolders/ListFoldersUseCase.js.map +1 -0
- package/features/folder/ListFolders/abstractions.d.ts +44 -0
- package/features/folder/ListFolders/abstractions.js +6 -0
- package/features/folder/ListFolders/abstractions.js.map +1 -0
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.d.ts +17 -0
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js +65 -0
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/ListFolders/feature.d.ts +5 -0
- package/features/folder/ListFolders/feature.js +15 -0
- package/features/folder/ListFolders/feature.js.map +1 -0
- package/features/folder/ListFolders/index.d.ts +2 -0
- package/features/folder/ListFolders/index.js +2 -0
- package/features/folder/NotifyFolderChange/NotifyFolderChangeUseCase.d.ts +11 -0
- package/features/folder/NotifyFolderChange/NotifyFolderChangeUseCase.js +38 -0
- package/features/folder/NotifyFolderChange/NotifyFolderChangeUseCase.js.map +1 -0
- package/features/folder/NotifyFolderChange/NotifyOnFolderDeletedHandler.d.ts +12 -0
- package/features/folder/NotifyFolderChange/NotifyOnFolderDeletedHandler.js +24 -0
- package/features/folder/NotifyFolderChange/NotifyOnFolderDeletedHandler.js.map +1 -0
- package/features/folder/NotifyFolderChange/abstractions.d.ts +28 -0
- package/features/folder/NotifyFolderChange/abstractions.js +8 -0
- package/features/folder/NotifyFolderChange/abstractions.js.map +1 -0
- package/features/folder/NotifyFolderChange/feature.d.ts +9 -0
- package/features/folder/NotifyFolderChange/feature.js +13 -0
- package/features/folder/NotifyFolderChange/feature.js.map +1 -0
- package/features/folder/NotifyFolderChange/index.d.ts +2 -0
- package/features/folder/NotifyFolderChange/index.js +2 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.d.ts +21 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.js +87 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -0
- package/features/folder/UpdateFolder/UpdateFolderUseCase.d.ts +14 -0
- package/features/folder/UpdateFolder/UpdateFolderUseCase.js +48 -0
- package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -0
- package/features/folder/UpdateFolder/abstractions.d.ts +64 -0
- package/features/folder/UpdateFolder/abstractions.js +8 -0
- package/features/folder/UpdateFolder/abstractions.js.map +1 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.d.ts +26 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +106 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -0
- package/features/folder/UpdateFolder/events.d.ts +10 -0
- package/features/folder/UpdateFolder/events.js +21 -0
- package/features/folder/UpdateFolder/events.js.map +1 -0
- package/features/folder/UpdateFolder/feature.d.ts +5 -0
- package/features/folder/UpdateFolder/feature.js +15 -0
- package/features/folder/UpdateFolder/feature.js.map +1 -0
- package/features/folder/UpdateFolder/index.d.ts +2 -0
- package/features/folder/UpdateFolder/index.js +2 -0
- package/features/folder/shared/EntryToFolderMapper.d.ts +5 -0
- package/features/folder/shared/EntryToFolderMapper.js +23 -0
- package/features/folder/shared/EntryToFolderMapper.js.map +1 -0
- package/features/folder/shared/abstractions.d.ts +20 -0
- package/features/folder/shared/abstractions.js +8 -0
- package/features/folder/shared/abstractions.js.map +1 -0
- package/filter/filter.crud.d.ts +3 -0
- package/filter/filter.crud.js +30 -0
- package/filter/filter.crud.js.map +1 -0
- package/filter/filter.gql.d.ts +2 -0
- package/filter/filter.gql.js +164 -0
- package/filter/filter.gql.js.map +1 -0
- package/filter/filter.model.d.ts +9 -0
- package/filter/filter.model.js +51 -0
- package/filter/filter.model.js.map +1 -0
- package/filter/filter.so.d.ts +9 -0
- package/filter/filter.so.js +96 -0
- package/filter/filter.so.js.map +1 -0
- package/filter/filter.types.d.ts +67 -0
- package/filter/filter.types.js +8 -0
- package/filter/filter.types.js.map +1 -0
- package/flp/flp.crud.d.ts +7 -0
- package/flp/flp.crud.js +74 -0
- package/flp/flp.crud.js.map +1 -0
- package/flp/flp.types.d.ts +98 -0
- package/flp/flp.types.js +0 -0
- package/flp/index.d.ts +2 -0
- package/flp/index.js +2 -0
- package/flp/tasks/createFlp.task.d.ts +25 -0
- package/flp/tasks/createFlp.task.js +53 -0
- package/flp/tasks/createFlp.task.js.map +1 -0
- package/flp/tasks/deleteFlp.task.d.ts +23 -0
- package/flp/tasks/deleteFlp.task.js +45 -0
- package/flp/tasks/deleteFlp.task.js.map +1 -0
- package/flp/tasks/index.d.ts +4 -0
- package/flp/tasks/index.js +7 -0
- package/flp/tasks/index.js.map +1 -0
- package/flp/tasks/syncFlp.task.d.ts +27 -0
- package/flp/tasks/syncFlp.task.js +121 -0
- package/flp/tasks/syncFlp.task.js.map +1 -0
- package/flp/tasks/updateFlp.task.d.ts +25 -0
- package/flp/tasks/updateFlp.task.js +64 -0
- package/flp/tasks/updateFlp.task.js.map +1 -0
- package/folder/createFolderModelModifier.d.ts +36 -0
- package/folder/createFolderModelModifier.js +61 -0
- package/folder/createFolderModelModifier.js.map +1 -0
- package/folder/createFolderTypeDefs.d.ts +8 -0
- package/folder/createFolderTypeDefs.js +178 -0
- package/folder/createFolderTypeDefs.js.map +1 -0
- package/folder/folder.gql.d.ts +4 -3
- package/folder/folder.gql.js +123 -101
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.types.d.ts +51 -58
- package/folder/folder.types.js +0 -5
- package/index.d.ts +3 -1
- package/index.js +3 -14
- package/package.json +36 -39
- package/types.d.ts +26 -16
- package/types.js +8 -11
- package/types.js.map +1 -1
- package/utils/FoldersCacheFactory.d.ts +10 -0
- package/utils/FoldersCacheFactory.js +25 -0
- package/utils/FoldersCacheFactory.js.map +1 -0
- package/utils/ListCache.d.ts +23 -0
- package/utils/ListCache.js +24 -0
- package/utils/ListCache.js.map +1 -0
- package/utils/Path.d.ts +3 -0
- package/utils/Path.js +10 -0
- package/utils/Path.js.map +1 -0
- package/utils/compress.d.ts +4 -0
- package/utils/compress.js +13 -0
- package/utils/compress.js.map +1 -0
- package/utils/createListSort.d.ts +3 -2
- package/utils/createListSort.js +6 -12
- package/utils/createListSort.js.map +1 -1
- package/utils/createOperationsWrapper.d.ts +6 -3
- package/utils/createOperationsWrapper.js +14 -28
- package/utils/createOperationsWrapper.js.map +1 -1
- package/utils/decorators/CmsEntriesCrudDecorators.d.ts +11 -0
- package/utils/decorators/CmsEntriesCrudDecorators.js +179 -0
- package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -0
- package/utils/decorators/FilterEntriesByFolderFactory.d.ts +7 -0
- package/utils/decorators/FilterEntriesByFolderFactory.js +22 -0
- package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -0
- package/utils/decorators/ListEntriesFactory.d.ts +17 -0
- package/utils/decorators/ListEntriesFactory.js +73 -0
- package/utils/decorators/ListEntriesFactory.js.map +1 -0
- package/utils/decorators/hasRootFolderId.d.ts +7 -0
- package/utils/decorators/hasRootFolderId.js +13 -0
- package/utils/decorators/hasRootFolderId.js.map +1 -0
- package/utils/decorators/isPageModel.d.ts +5 -0
- package/utils/decorators/isPageModel.js +8 -0
- package/utils/decorators/isPageModel.js.map +1 -0
- package/utils/ensureAuthentication.d.ts +2 -0
- package/utils/ensureAuthentication.js +11 -0
- package/utils/ensureAuthentication.js.map +1 -0
- package/utils/pickEntryFieldValues.d.ts +3 -0
- package/utils/pickEntryFieldValues.js +29 -0
- package/utils/pickEntryFieldValues.js.map +1 -0
- package/utils/resolve.d.ts +2 -2
- package/utils/resolve.js +10 -14
- package/utils/resolve.js.map +1 -1
- package/context/folders.d.ts +0 -2
- package/context/folders.js +0 -261
- package/context/folders.js.map +0 -1
- package/context/index.d.ts +0 -2
- package/context/index.js +0 -22
- package/context/index.js.map +0 -1
- package/context/links.d.ts +0 -2
- package/context/links.js +0 -270
- package/context/links.js.map +0 -1
- package/createAcoContext.d.ts +0 -3
- package/createAcoContext.js +0 -63
- package/createAcoContext.js.map +0 -1
- package/createAcoCrud.d.ts +0 -2
- package/createAcoCrud.js +0 -17
- package/createAcoCrud.js.map +0 -1
- package/createAcoFields.d.ts +0 -2
- package/createAcoFields.js +0 -40
- package/createAcoFields.js.map +0 -1
- package/createAcoHooks.d.ts +0 -2
- package/createAcoHooks.js +0 -11
- package/createAcoHooks.js.map +0 -1
- package/createAcoModels.d.ts +0 -2
- package/createAcoModels.js +0 -67
- package/createAcoModels.js.map +0 -1
- package/createAcoStorageOperations.d.ts +0 -10
- package/createAcoStorageOperations.js +0 -19
- package/createAcoStorageOperations.js.map +0 -1
- package/folder/folder.crud.d.ts +0 -3
- package/folder/folder.crud.js +0 -92
- package/folder/folder.crud.js.map +0 -1
- package/folder/folder.model.d.ts +0 -6
- package/folder/folder.model.js +0 -79
- package/folder/folder.model.js.map +0 -1
- package/folder/folder.so.d.ts +0 -3
- package/folder/folder.so.js +0 -151
- package/folder/folder.so.js.map +0 -1
- package/folder/folder.types.js.map +0 -1
- package/folder/onFolderBeforeDelete.hook.d.ts +0 -2
- package/folder/onFolderBeforeDelete.hook.js +0 -53
- package/folder/onFolderBeforeDelete.hook.js.map +0 -1
- package/graphql/base.gql.d.ts +0 -3
- package/graphql/base.gql.js +0 -63
- package/graphql/base.gql.js.map +0 -1
- package/graphql/folders.gql.d.ts +0 -3
- package/graphql/folders.gql.js +0 -126
- package/graphql/folders.gql.js.map +0 -1
- package/graphql/index.d.ts +0 -1
- package/graphql/index.js +0 -15
- package/graphql/index.js.map +0 -1
- package/graphql/links.gql.d.ts +0 -3
- package/graphql/links.gql.js +0 -123
- package/graphql/links.gql.js.map +0 -1
- package/index.js.map +0 -1
- package/record/record.crud.d.ts +0 -3
- package/record/record.crud.js +0 -92
- package/record/record.crud.js.map +0 -1
- package/record/record.gql.d.ts +0 -3
- package/record/record.gql.js +0 -117
- package/record/record.gql.js.map +0 -1
- package/record/record.model.d.ts +0 -6
- package/record/record.model.js +0 -63
- package/record/record.model.js.map +0 -1
- package/record/record.so.d.ts +0 -3
- package/record/record.so.js +0 -98
- package/record/record.so.js.map +0 -1
- package/record/record.types.d.ts +0 -91
- package/record/record.types.js +0 -5
- package/record/record.types.js.map +0 -1
- package/subscriptions/afterFolderDelete.d.ts +0 -3
- package/subscriptions/afterFolderDelete.js +0 -62
- package/subscriptions/afterFolderDelete.js.map +0 -1
- package/subscriptions/index.d.ts +0 -3
- package/subscriptions/index.js +0 -14
- package/subscriptions/index.js.map +0 -1
- package/utils/createModelField.d.ts +0 -6
- package/utils/createModelField.js +0 -39
- package/utils/createModelField.js.map +0 -1
- package/utils/fieldResolver.d.ts +0 -16
- package/utils/fieldResolver.js +0 -44
- package/utils/fieldResolver.js.map +0 -1
- package/utils/getFieldValues.d.ts +0 -2
- package/utils/getFieldValues.js +0 -19
- package/utils/getFieldValues.js.map +0 -1
- package/utils/isInstallationPending.d.ts +0 -4
- package/utils/isInstallationPending.js +0 -21
- package/utils/isInstallationPending.js.map +0 -1
- package/utils/modelFactory.d.ts +0 -17
- package/utils/modelFactory.js +0 -23
- package/utils/modelFactory.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteFolderRepository } from "./abstractions.js";
|
|
3
|
+
import { DeleteEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/DeleteEntry";
|
|
4
|
+
import { FolderModelProvider } from "../../../domain/folder/abstractions.js";
|
|
5
|
+
import { FolderNotAuthorizedError, FolderPersistenceError } from "../../../domain/folder/errors.js";
|
|
6
|
+
class DeleteFolderRepositoryImpl {
|
|
7
|
+
constructor(deleteEntry, folderModelProvider){
|
|
8
|
+
this.deleteEntry = deleteEntry;
|
|
9
|
+
this.folderModelProvider = folderModelProvider;
|
|
10
|
+
}
|
|
11
|
+
async execute(folder) {
|
|
12
|
+
const folderModel = await this.folderModelProvider.get();
|
|
13
|
+
const result = await this.deleteEntry.execute(folderModel, folder.id, {
|
|
14
|
+
permanently: true,
|
|
15
|
+
force: true
|
|
16
|
+
});
|
|
17
|
+
if (result.isFail()) {
|
|
18
|
+
if ("Cms/Entry/NotAuthorized" === result.error.code) return Result.fail(new FolderNotAuthorizedError());
|
|
19
|
+
return Result.fail(new FolderPersistenceError(result.error));
|
|
20
|
+
}
|
|
21
|
+
return Result.ok();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const DeleteFolderRepository_DeleteFolderRepository = DeleteFolderRepository.createImplementation({
|
|
25
|
+
implementation: DeleteFolderRepositoryImpl,
|
|
26
|
+
dependencies: [
|
|
27
|
+
DeleteEntryUseCase,
|
|
28
|
+
FolderModelProvider
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
export { DeleteFolderRepository_DeleteFolderRepository as DeleteFolderRepository };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=DeleteFolderRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/DeleteFolder/DeleteFolderRepository.js","sources":["../../../../src/features/folder/DeleteFolder/DeleteFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n DeleteFolderRepository as RepositoryAbstraction,\n type IDeleteFolderRepository\n} from \"./abstractions.js\";\nimport { DeleteEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/DeleteEntry\";\nimport { FolderModelProvider } from \"~/domain/folder/abstractions.js\";\nimport type { Folder } from \"~/folder/folder.types.js\";\nimport { FolderNotAuthorizedError, FolderPersistenceError } from \"~/domain/folder/errors.js\";\n\nclass DeleteFolderRepositoryImpl implements IDeleteFolderRepository {\n constructor(\n private deleteEntry: DeleteEntryUseCase.Interface,\n private folderModelProvider: FolderModelProvider.Interface\n ) {}\n\n async execute(folder: Folder): Promise<Result<void, RepositoryAbstraction.Error>> {\n const folderModel = await this.folderModelProvider.get();\n const result = await this.deleteEntry.execute(folderModel, folder.id, {\n permanently: true,\n force: true\n });\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FolderNotAuthorizedError());\n }\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: DeleteFolderRepositoryImpl,\n dependencies: [DeleteEntryUseCase, FolderModelProvider]\n});\n"],"names":["DeleteFolderRepositoryImpl","deleteEntry","folderModelProvider","folder","folderModel","result","Result","FolderNotAuthorizedError","FolderPersistenceError","DeleteFolderRepository","RepositoryAbstraction","DeleteEntryUseCase","FolderModelProvider"],"mappings":";;;;;AAUA,MAAMA;IACF,YACYC,WAAyC,EACzCC,mBAAkD,CAC5D;aAFUD,WAAW,GAAXA;aACAC,mBAAmB,GAAnBA;IACT;IAEH,MAAM,QAAQC,MAAc,EAAsD;QAC9E,MAAMC,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG;QACtD,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACD,aAAaD,OAAO,EAAE,EAAE;YAClE,aAAa;YACb,OAAO;QACX;QAEA,IAAIE,OAAO,MAAM,IAAI;YACjB,IAAIA,AAAsB,8BAAtBA,OAAO,KAAK,CAAC,IAAI,EACjB,OAAOC,OAAO,IAAI,CAAC,IAAIC;YAE3B,OAAOD,OAAO,IAAI,CAAC,IAAIE,uBAAuBH,OAAO,KAAK;QAC9D;QAEA,OAAOC,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMG,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgBV;IAChB,cAAc;QAACW;QAAoBC;KAAoB;AAC3D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import { DeleteFolderUseCase as UseCaseAbstraction, DeleteFolderRepository } from "./abstractions.js";
|
|
4
|
+
import { GetFolderRepository } from "../GetFolder/abstractions.js";
|
|
5
|
+
declare class DeleteFolderUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
6
|
+
private eventPublisher;
|
|
7
|
+
private getFolderRepository;
|
|
8
|
+
private repository;
|
|
9
|
+
constructor(eventPublisher: EventPublisherAbstraction.Interface, getFolderRepository: GetFolderRepository.Interface, repository: DeleteFolderRepository.Interface);
|
|
10
|
+
execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const DeleteFolderUseCase: import("@webiny/di").Implementation<typeof DeleteFolderUseCaseImpl>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import { DeleteFolderRepository, DeleteFolderUseCase } from "./abstractions.js";
|
|
4
|
+
import { GetFolderRepository } from "../GetFolder/abstractions.js";
|
|
5
|
+
import { FolderAfterDeleteEvent, FolderBeforeDeleteEvent } from "./events.js";
|
|
6
|
+
import { createImplementation } from "@webiny/di";
|
|
7
|
+
import { FolderNotAuthorizedError, FolderNotEmptyError } from "../../../domain/folder/errors.js";
|
|
8
|
+
class DeleteFolderUseCaseImpl {
|
|
9
|
+
constructor(eventPublisher, getFolderRepository, repository){
|
|
10
|
+
this.eventPublisher = eventPublisher;
|
|
11
|
+
this.getFolderRepository = getFolderRepository;
|
|
12
|
+
this.repository = repository;
|
|
13
|
+
}
|
|
14
|
+
async execute(id) {
|
|
15
|
+
const getFolderResult = await this.getFolderRepository.execute(id);
|
|
16
|
+
if (getFolderResult.isFail()) return Result.fail(getFolderResult.error);
|
|
17
|
+
const folder = getFolderResult.value;
|
|
18
|
+
const beforeDeleteEvent = new FolderBeforeDeleteEvent({
|
|
19
|
+
folder
|
|
20
|
+
});
|
|
21
|
+
try {
|
|
22
|
+
await this.eventPublisher.publish(beforeDeleteEvent);
|
|
23
|
+
} catch (err) {
|
|
24
|
+
if ("Aco/Folder/NotEmpty" === err.code) return Result.fail(new FolderNotEmptyError());
|
|
25
|
+
return Result.fail(new FolderNotAuthorizedError());
|
|
26
|
+
}
|
|
27
|
+
const result = await this.repository.execute(folder);
|
|
28
|
+
if (result.isFail()) return result;
|
|
29
|
+
const afterDeleteEvent = new FolderAfterDeleteEvent({
|
|
30
|
+
folder
|
|
31
|
+
});
|
|
32
|
+
await this.eventPublisher.publish(afterDeleteEvent);
|
|
33
|
+
return Result.ok();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const DeleteFolderUseCase_DeleteFolderUseCase = createImplementation({
|
|
37
|
+
abstraction: DeleteFolderUseCase,
|
|
38
|
+
implementation: DeleteFolderUseCaseImpl,
|
|
39
|
+
dependencies: [
|
|
40
|
+
EventPublisher,
|
|
41
|
+
GetFolderRepository,
|
|
42
|
+
DeleteFolderRepository
|
|
43
|
+
]
|
|
44
|
+
});
|
|
45
|
+
export { DeleteFolderUseCase_DeleteFolderUseCase as DeleteFolderUseCase };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=DeleteFolderUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/DeleteFolder/DeleteFolderUseCase.js","sources":["../../../../src/features/folder/DeleteFolder/DeleteFolderUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n DeleteFolderUseCase as UseCaseAbstraction,\n DeleteFolderRepository\n} from \"./abstractions.js\";\nimport { GetFolderRepository } from \"../GetFolder/abstractions.js\";\nimport { FolderBeforeDeleteEvent, FolderAfterDeleteEvent } from \"./events.js\";\nimport { createImplementation } from \"@webiny/di\";\nimport { FolderNotAuthorizedError, FolderNotEmptyError } from \"~/domain/folder/errors.js\";\n\nclass DeleteFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getFolderRepository: GetFolderRepository.Interface,\n private repository: DeleteFolderRepository.Interface\n ) {}\n\n async execute(id: string): Promise<Result<void, UseCaseAbstraction.Error>> {\n // Get the folder before deletion\n const getFolderResult = await this.getFolderRepository.execute(id);\n\n if (getFolderResult.isFail()) {\n return Result.fail(getFolderResult.error);\n }\n\n const folder = getFolderResult.value;\n\n // Publish before delete event\n const beforeDeleteEvent = new FolderBeforeDeleteEvent({\n folder\n });\n\n try {\n await this.eventPublisher.publish(beforeDeleteEvent);\n } catch (err) {\n if (err.code === \"Aco/Folder/NotEmpty\") {\n return Result.fail(new FolderNotEmptyError());\n }\n return Result.fail(new FolderNotAuthorizedError());\n }\n\n // Execute the delete operation\n const result = await this.repository.execute(folder);\n\n if (result.isFail()) {\n return result;\n }\n\n // Publish after delete event\n const afterDeleteEvent = new FolderAfterDeleteEvent({\n folder\n });\n\n await this.eventPublisher.publish(afterDeleteEvent);\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: DeleteFolderUseCaseImpl,\n dependencies: [EventPublisher, GetFolderRepository, DeleteFolderRepository]\n});\n"],"names":["DeleteFolderUseCaseImpl","eventPublisher","getFolderRepository","repository","id","getFolderResult","Result","folder","beforeDeleteEvent","FolderBeforeDeleteEvent","err","FolderNotEmptyError","FolderNotAuthorizedError","result","afterDeleteEvent","FolderAfterDeleteEvent","DeleteFolderUseCase","createImplementation","UseCaseAbstraction","EventPublisher","GetFolderRepository","DeleteFolderRepository"],"mappings":";;;;;;;AAcA,MAAMA;IACF,YACYC,cAAmD,EACnDC,mBAAkD,EAClDC,UAA4C,CACtD;aAHUF,cAAc,GAAdA;aACAC,mBAAmB,GAAnBA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QAAQC,EAAU,EAAmD;QAEvE,MAAMC,kBAAkB,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAACD;QAE/D,IAAIC,gBAAgB,MAAM,IACtB,OAAOC,OAAO,IAAI,CAACD,gBAAgB,KAAK;QAG5C,MAAME,SAASF,gBAAgB,KAAK;QAGpC,MAAMG,oBAAoB,IAAIC,wBAAwB;YAClDF;QACJ;QAEA,IAAI;YACA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACC;QACtC,EAAE,OAAOE,KAAK;YACV,IAAIA,AAAa,0BAAbA,IAAI,IAAI,EACR,OAAOJ,OAAO,IAAI,CAAC,IAAIK;YAE3B,OAAOL,OAAO,IAAI,CAAC,IAAIM;QAC3B;QAGA,MAAMC,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACN;QAE7C,IAAIM,OAAO,MAAM,IACb,OAAOA;QAIX,MAAMC,mBAAmB,IAAIC,uBAAuB;YAChDR;QACJ;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACO;QAElC,OAAOR,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMU,0CAAsBC,qBAAqB;IACpD,aAAaC;IACb,gBAAgBlB;IAChB,cAAc;QAACmB;QAAgBC;QAAqBC;KAAuB;AAC/E"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { DomainEvent, IEventHandler } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import type { Folder } from "../../../folder/folder.types.js";
|
|
4
|
+
import { type FolderNotAuthorizedError, FolderNotEmptyError, type FolderNotFoundError, type FolderPersistenceError } from "../../../domain/folder/errors.js";
|
|
5
|
+
/**
|
|
6
|
+
* DeleteFolder repository interface
|
|
7
|
+
*/
|
|
8
|
+
export interface IDeleteFolderRepository {
|
|
9
|
+
execute(folder: Folder): Promise<Result<void, RepositoryError>>;
|
|
10
|
+
}
|
|
11
|
+
export interface IDeleteFolderRepositoryErrors {
|
|
12
|
+
notAuthorized: FolderNotAuthorizedError;
|
|
13
|
+
persistence: FolderPersistenceError;
|
|
14
|
+
}
|
|
15
|
+
type RepositoryError = IDeleteFolderRepositoryErrors[keyof IDeleteFolderRepositoryErrors];
|
|
16
|
+
/** Persist folder deletion. */
|
|
17
|
+
export declare const DeleteFolderRepository: import("@webiny/di").Abstraction<IDeleteFolderRepository>;
|
|
18
|
+
export declare namespace DeleteFolderRepository {
|
|
19
|
+
type Interface = IDeleteFolderRepository;
|
|
20
|
+
type Error = RepositoryError;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DeleteFolder use case interface
|
|
24
|
+
*/
|
|
25
|
+
export interface IDeleteFolderUseCase {
|
|
26
|
+
execute(id: string): Promise<Result<void, UseCaseError>>;
|
|
27
|
+
}
|
|
28
|
+
export interface IDeleteFolderUseCaseErrors {
|
|
29
|
+
notAuthorized: FolderNotAuthorizedError;
|
|
30
|
+
notFound: FolderNotFoundError;
|
|
31
|
+
notEmpty: FolderNotEmptyError;
|
|
32
|
+
persistence: FolderPersistenceError;
|
|
33
|
+
}
|
|
34
|
+
type UseCaseError = IDeleteFolderUseCaseErrors[keyof IDeleteFolderUseCaseErrors];
|
|
35
|
+
/** Delete a folder. */
|
|
36
|
+
export declare const DeleteFolderUseCase: import("@webiny/di").Abstraction<IDeleteFolderUseCase>;
|
|
37
|
+
export declare namespace DeleteFolderUseCase {
|
|
38
|
+
type Interface = IDeleteFolderUseCase;
|
|
39
|
+
type Error = UseCaseError;
|
|
40
|
+
}
|
|
41
|
+
export interface FolderBeforeDeletePayload {
|
|
42
|
+
folder: Folder;
|
|
43
|
+
}
|
|
44
|
+
export interface FolderAfterDeletePayload {
|
|
45
|
+
folder: Folder;
|
|
46
|
+
}
|
|
47
|
+
/** Hook into folder lifecycle before a folder is deleted. */
|
|
48
|
+
export declare const FolderBeforeDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeDeletePayload>>>;
|
|
49
|
+
export declare namespace FolderBeforeDeleteEventHandler {
|
|
50
|
+
type Interface = IEventHandler<DomainEvent<FolderBeforeDeletePayload>>;
|
|
51
|
+
type Event = DomainEvent<FolderBeforeDeletePayload>;
|
|
52
|
+
}
|
|
53
|
+
/** Hook into folder lifecycle after a folder is deleted. */
|
|
54
|
+
export declare const FolderAfterDeleteEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterDeletePayload>>>;
|
|
55
|
+
export declare namespace FolderAfterDeleteEventHandler {
|
|
56
|
+
type Interface = IEventHandler<DomainEvent<FolderAfterDeletePayload>>;
|
|
57
|
+
type Event = DomainEvent<FolderAfterDeletePayload>;
|
|
58
|
+
}
|
|
59
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const DeleteFolderRepository = createAbstraction("DeleteFolderRepository");
|
|
3
|
+
const DeleteFolderUseCase = createAbstraction("DeleteFolderUseCase");
|
|
4
|
+
const FolderBeforeDeleteEventHandler = createAbstraction("FolderBeforeDeleteEventHandler");
|
|
5
|
+
const FolderAfterDeleteEventHandler = createAbstraction("FolderAfterDeleteEventHandler");
|
|
6
|
+
export { DeleteFolderRepository, DeleteFolderUseCase, FolderAfterDeleteEventHandler, FolderBeforeDeleteEventHandler };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/DeleteFolder/abstractions.js","sources":["../../../../src/features/folder/DeleteFolder/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { DomainEvent, IEventHandler } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport type { Folder } from \"~/folder/folder.types.js\";\nimport {\n type FolderNotAuthorizedError,\n FolderNotEmptyError,\n type FolderNotFoundError,\n type FolderPersistenceError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * DeleteFolder repository interface\n */\nexport interface IDeleteFolderRepository {\n execute(folder: Folder): Promise<Result<void, RepositoryError>>;\n}\n\nexport interface IDeleteFolderRepositoryErrors {\n notAuthorized: FolderNotAuthorizedError;\n persistence: FolderPersistenceError;\n}\n\ntype RepositoryError = IDeleteFolderRepositoryErrors[keyof IDeleteFolderRepositoryErrors];\n\n/** Persist folder deletion. */\nexport const DeleteFolderRepository =\n createAbstraction<IDeleteFolderRepository>(\"DeleteFolderRepository\");\n\nexport namespace DeleteFolderRepository {\n export type Interface = IDeleteFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * DeleteFolder use case interface\n */\nexport interface IDeleteFolderUseCase {\n execute(id: string): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IDeleteFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n notFound: FolderNotFoundError;\n notEmpty: FolderNotEmptyError;\n persistence: FolderPersistenceError;\n}\n\ntype UseCaseError = IDeleteFolderUseCaseErrors[keyof IDeleteFolderUseCaseErrors];\n\n/** Delete a folder. */\nexport const DeleteFolderUseCase = createAbstraction<IDeleteFolderUseCase>(\"DeleteFolderUseCase\");\n\nexport namespace DeleteFolderUseCase {\n export type Interface = IDeleteFolderUseCase;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeDeletePayload {\n folder: Folder;\n}\n\nexport interface FolderAfterDeletePayload {\n folder: Folder;\n}\n\n// Event Handler Abstractions\n/** Hook into folder lifecycle before a folder is deleted. */\nexport const FolderBeforeDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeDeletePayload>>\n>(\"FolderBeforeDeleteEventHandler\");\n\nexport namespace FolderBeforeDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeDeletePayload>>;\n export type Event = DomainEvent<FolderBeforeDeletePayload>;\n}\n\n/** Hook into folder lifecycle after a folder is deleted. */\nexport const FolderAfterDeleteEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterDeletePayload>>\n>(\"FolderAfterDeleteEventHandler\");\n\nexport namespace FolderAfterDeleteEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterDeletePayload>>;\n export type Event = DomainEvent<FolderAfterDeletePayload>;\n}\n"],"names":["DeleteFolderRepository","createAbstraction","DeleteFolderUseCase","FolderBeforeDeleteEventHandler","FolderAfterDeleteEventHandler"],"mappings":";AA0BO,MAAMA,yBACTC,kBAA2C;AAwBxC,MAAMC,sBAAsBD,kBAAwC;AAkBpE,MAAME,iCAAiCF,kBAE5C;AAQK,MAAMG,gCAAgCH,kBAE3C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FolderLevelPermissions } from "../../../../features/flp/FolderLevelPermissions/index.js";
|
|
2
|
+
import { DeleteFolderUseCase } from "../abstractions.js";
|
|
3
|
+
import { Result } from "@webiny/feature/api";
|
|
4
|
+
declare class DeleteFolderWithFolderLevelPermissionsImpl implements DeleteFolderUseCase.Interface {
|
|
5
|
+
private folderLevelPermissions;
|
|
6
|
+
private readonly decoretee;
|
|
7
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoretee: DeleteFolderUseCase.Interface);
|
|
8
|
+
execute(id: string): Promise<Result<void, never> | Result<never, import("../../../../domain/folder/errors.js").FolderNotAuthorizedError | import("../../../../domain/folder/errors.js").FolderNotEmptyError | import("../../../../domain/folder/errors.js").FolderNotFoundError | import("../../../../domain/folder/errors.js").FolderPersistenceError>>;
|
|
9
|
+
}
|
|
10
|
+
export declare const DeleteFolderWithFolderLevelPermissions: typeof DeleteFolderWithFolderLevelPermissionsImpl;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FolderLevelPermissions } from "../../../flp/FolderLevelPermissions/index.js";
|
|
2
|
+
import { DeleteFolderUseCase } from "../abstractions.js";
|
|
3
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
4
|
+
class DeleteFolderWithFolderLevelPermissionsImpl {
|
|
5
|
+
constructor(folderLevelPermissions, decoretee){
|
|
6
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
7
|
+
this.decoretee = decoretee;
|
|
8
|
+
}
|
|
9
|
+
async execute(id) {
|
|
10
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(id);
|
|
11
|
+
await this.folderLevelPermissions.ensureCanAccessFolder({
|
|
12
|
+
permissions,
|
|
13
|
+
rwd: "d"
|
|
14
|
+
});
|
|
15
|
+
const result = await this.decoretee.execute(id);
|
|
16
|
+
if (result.isFail()) return Result.fail(result.error);
|
|
17
|
+
return Result.ok();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const DeleteFolderWithFolderLevelPermissions = createDecorator({
|
|
21
|
+
abstraction: DeleteFolderUseCase,
|
|
22
|
+
decorator: DeleteFolderWithFolderLevelPermissionsImpl,
|
|
23
|
+
dependencies: [
|
|
24
|
+
FolderLevelPermissions
|
|
25
|
+
]
|
|
26
|
+
});
|
|
27
|
+
export { DeleteFolderWithFolderLevelPermissions };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=DeleteFolderWithFolderLevelPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js","sources":["../../../../../src/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.ts"],"sourcesContent":["import { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { DeleteFolderUseCase } from \"../abstractions.js\";\nimport { createDecorator, Result } from \"@webiny/feature/api\";\n\nclass DeleteFolderWithFolderLevelPermissionsImpl implements DeleteFolderUseCase.Interface {\n private folderLevelPermissions: FolderLevelPermissions.Interface;\n private readonly decoretee: DeleteFolderUseCase.Interface;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n decoretee: DeleteFolderUseCase.Interface\n ) {\n this.folderLevelPermissions = folderLevelPermissions;\n this.decoretee = decoretee;\n }\n\n async execute(id: string) {\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(id);\n await this.folderLevelPermissions.ensureCanAccessFolder({\n permissions,\n rwd: \"d\"\n });\n\n const result = await this.decoretee.execute(id);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n return Result.ok();\n }\n}\n\nexport const DeleteFolderWithFolderLevelPermissions = createDecorator({\n abstraction: DeleteFolderUseCase,\n decorator: DeleteFolderWithFolderLevelPermissionsImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["DeleteFolderWithFolderLevelPermissionsImpl","folderLevelPermissions","decoretee","id","permissions","result","Result","DeleteFolderWithFolderLevelPermissions","createDecorator","DeleteFolderUseCase","FolderLevelPermissions"],"mappings":";;;AAIA,MAAMA;IAIF,YACIC,sBAAwD,EACxDC,SAAwC,CAC1C;QACE,IAAI,CAAC,sBAAsB,GAAGD;QAC9B,IAAI,CAAC,SAAS,GAAGC;IACrB;IAEA,MAAM,QAAQC,EAAU,EAAE;QACtB,MAAMC,cAAc,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAACD;QAChF,MAAM,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC;YACpDC;YACA,KAAK;QACT;QAEA,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACF;QAE5C,IAAIE,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAACD,OAAO,KAAK;QAGnC,OAAOC,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMC,yCAAyCC,gBAAgB;IAClE,aAAaC;IACb,WAAWT;IACX,cAAc;QAACU;KAAuB;AAC1C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import type { FolderBeforeDeletePayload, FolderAfterDeletePayload } from "./abstractions.js";
|
|
3
|
+
export declare class FolderBeforeDeleteEvent extends DomainEvent<FolderBeforeDeletePayload> {
|
|
4
|
+
eventType: "folder.beforeDelete";
|
|
5
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<FolderBeforeDeletePayload>>>;
|
|
6
|
+
}
|
|
7
|
+
export declare class FolderAfterDeleteEvent extends DomainEvent<FolderAfterDeletePayload> {
|
|
8
|
+
eventType: "folder.afterDelete";
|
|
9
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<DomainEvent<FolderAfterDeletePayload>>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
2
|
+
import { FolderAfterDeleteEventHandler, FolderBeforeDeleteEventHandler } from "./abstractions.js";
|
|
3
|
+
class FolderBeforeDeleteEvent extends DomainEvent {
|
|
4
|
+
getHandlerAbstraction() {
|
|
5
|
+
return FolderBeforeDeleteEventHandler;
|
|
6
|
+
}
|
|
7
|
+
constructor(...args){
|
|
8
|
+
super(...args), this.eventType = "folder.beforeDelete";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
class FolderAfterDeleteEvent extends DomainEvent {
|
|
12
|
+
getHandlerAbstraction() {
|
|
13
|
+
return FolderAfterDeleteEventHandler;
|
|
14
|
+
}
|
|
15
|
+
constructor(...args){
|
|
16
|
+
super(...args), this.eventType = "folder.afterDelete";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export { FolderAfterDeleteEvent, FolderBeforeDeleteEvent };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/DeleteFolder/events.js","sources":["../../../../src/features/folder/DeleteFolder/events.ts"],"sourcesContent":["import { DomainEvent } from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport { FolderBeforeDeleteEventHandler, FolderAfterDeleteEventHandler } from \"./abstractions.js\";\nimport type { FolderBeforeDeletePayload, FolderAfterDeletePayload } from \"./abstractions.js\";\n\n// FolderBeforeDelete Event\nexport class FolderBeforeDeleteEvent extends DomainEvent<FolderBeforeDeletePayload> {\n eventType = \"folder.beforeDelete\" as const;\n\n getHandlerAbstraction() {\n return FolderBeforeDeleteEventHandler;\n }\n}\n\n// FolderAfterDelete Event\nexport class FolderAfterDeleteEvent extends DomainEvent<FolderAfterDeletePayload> {\n eventType = \"folder.afterDelete\" as const;\n\n getHandlerAbstraction() {\n return FolderAfterDeleteEventHandler;\n }\n}\n"],"names":["FolderBeforeDeleteEvent","DomainEvent","FolderBeforeDeleteEventHandler","FolderAfterDeleteEvent","FolderAfterDeleteEventHandler"],"mappings":";;AAKO,MAAMA,gCAAgCC;IAGzC,wBAAwB;QACpB,OAAOC;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB;AAGO,MAAMC,+BAA+BF;IAGxC,wBAAwB;QACpB,OAAOG;IACX;;QALG,qBACH,SAAS,GAAG;;AAKhB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { DeleteFolderRepository } from "./DeleteFolderRepository.js";
|
|
3
|
+
import { DeleteFolderUseCase } from "./DeleteFolderUseCase.js";
|
|
4
|
+
import { DeleteFolderWithFolderLevelPermissions } from "./decorators/DeleteFolderWithFolderLevelPermissions.js";
|
|
5
|
+
const DeleteFolderFeature = createFeature({
|
|
6
|
+
name: "DeleteFolder",
|
|
7
|
+
register (container) {
|
|
8
|
+
container.register(DeleteFolderRepository).inSingletonScope();
|
|
9
|
+
container.register(DeleteFolderUseCase);
|
|
10
|
+
container.registerDecorator(DeleteFolderWithFolderLevelPermissions);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export { DeleteFolderFeature };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/DeleteFolder/feature.js","sources":["../../../../src/features/folder/DeleteFolder/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { DeleteFolderRepository } from \"./DeleteFolderRepository.js\";\nimport { DeleteFolderUseCase } from \"./DeleteFolderUseCase.js\";\nimport { DeleteFolderWithFolderLevelPermissions } from \"./decorators/DeleteFolderWithFolderLevelPermissions.js\";\n\nexport const DeleteFolderFeature = createFeature({\n name: \"DeleteFolder\",\n register(container: Container) {\n container.register(DeleteFolderRepository).inSingletonScope();\n container.register(DeleteFolderUseCase);\n container.registerDecorator(DeleteFolderWithFolderLevelPermissions);\n }\n});\n"],"names":["DeleteFolderFeature","createFeature","container","DeleteFolderRepository","DeleteFolderUseCase","DeleteFolderWithFolderLevelPermissions"],"mappings":";;;;AAMO,MAAMA,sBAAsBC,cAAc;IAC7C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC,wBAAwB,gBAAgB;QAC3DD,UAAU,QAAQ,CAACE;QACnBF,UAAU,iBAAiB,CAACG;IAChC;AACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FolderLevelPermissions } from "../../../features/flp/FolderLevelPermissions/index.js";
|
|
2
|
+
import { ListFoldersUseCase } from "../../../features/folder/ListFolders/index.js";
|
|
3
|
+
import { EnsureFolderIsEmpty as Abstraction } from "../../../features/folder/EnsureFolderIsEmpty/abstractions.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
5
|
+
declare class EnsureFolderIsEmptyImpl implements Abstraction.Interface {
|
|
6
|
+
private identityContext;
|
|
7
|
+
private folderLevelPermissions;
|
|
8
|
+
private listFoldersUseCase;
|
|
9
|
+
constructor(identityContext: IdentityContext.Interface, folderLevelPermissions: FolderLevelPermissions.Interface, listFoldersUseCase: ListFoldersUseCase.Interface);
|
|
10
|
+
execute(type: string, id: string, hasContentCallback: Abstraction.HasContentCallback): Abstraction.Return;
|
|
11
|
+
}
|
|
12
|
+
export declare const EnsureFolderIsEmpty: typeof EnsureFolderIsEmptyImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("~/features/folder/EnsureFolderIsEmpty/abstractions.js").IEnsureFolderIsEmpty>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
2
|
+
import { ListFoldersUseCase } from "../ListFolders/index.js";
|
|
3
|
+
import { EnsureFolderIsEmpty } from "./abstractions.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
5
|
+
import { FolderNotAuthorizedError, FolderNotEmptyError } from "../../../domain/folder/errors.js";
|
|
6
|
+
import { Result } from "@webiny/feature/api";
|
|
7
|
+
class EnsureFolderIsEmptyImpl {
|
|
8
|
+
constructor(identityContext, folderLevelPermissions, listFoldersUseCase){
|
|
9
|
+
this.identityContext = identityContext;
|
|
10
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
11
|
+
this.listFoldersUseCase = listFoldersUseCase;
|
|
12
|
+
}
|
|
13
|
+
async execute(type, id, hasContentCallback) {
|
|
14
|
+
const hasFoldersCallback = async ()=>{
|
|
15
|
+
const result = await this.listFoldersUseCase.execute({
|
|
16
|
+
where: {
|
|
17
|
+
type,
|
|
18
|
+
parentId: id
|
|
19
|
+
},
|
|
20
|
+
limit: 1
|
|
21
|
+
});
|
|
22
|
+
if (result.isFail()) {
|
|
23
|
+
console.error(result.error.message);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const { folders } = result.value;
|
|
27
|
+
return folders.length > 0;
|
|
28
|
+
};
|
|
29
|
+
const [hasFolders, hasContent] = await Promise.all([
|
|
30
|
+
hasFoldersCallback(),
|
|
31
|
+
hasContentCallback()
|
|
32
|
+
]);
|
|
33
|
+
if (hasFolders || hasContent) return Result.fail(new FolderNotEmptyError());
|
|
34
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) return Result.ok();
|
|
35
|
+
const [hasInvisibleFolders, hasInvisibleContent] = await this.identityContext.withoutAuthorization(async ()=>{
|
|
36
|
+
const [hasFolders, hasContent] = await Promise.all([
|
|
37
|
+
hasFoldersCallback(),
|
|
38
|
+
hasContentCallback()
|
|
39
|
+
]);
|
|
40
|
+
return [
|
|
41
|
+
hasFolders,
|
|
42
|
+
hasContent
|
|
43
|
+
];
|
|
44
|
+
});
|
|
45
|
+
if (hasInvisibleFolders || hasInvisibleContent) return Result.fail(new FolderNotAuthorizedError());
|
|
46
|
+
return Result.ok();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const EnsureFolderIsEmpty_EnsureFolderIsEmpty = EnsureFolderIsEmpty.createImplementation({
|
|
50
|
+
implementation: EnsureFolderIsEmptyImpl,
|
|
51
|
+
dependencies: [
|
|
52
|
+
IdentityContext,
|
|
53
|
+
FolderLevelPermissions,
|
|
54
|
+
ListFoldersUseCase
|
|
55
|
+
]
|
|
56
|
+
});
|
|
57
|
+
export { EnsureFolderIsEmpty_EnsureFolderIsEmpty as EnsureFolderIsEmpty };
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=EnsureFolderIsEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js","sources":["../../../../src/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.ts"],"sourcesContent":["import { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListFoldersUseCase } from \"~/features/folder/ListFolders/index.js\";\nimport { EnsureFolderIsEmpty as Abstraction } from \"~/features/folder/EnsureFolderIsEmpty/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { FolderNotAuthorizedError, FolderNotEmptyError } from \"~/domain/folder/errors.js\";\nimport { Result } from \"@webiny/feature/api\";\n\nclass EnsureFolderIsEmptyImpl implements Abstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private listFoldersUseCase: ListFoldersUseCase.Interface\n ) {}\n\n async execute(\n type: string,\n id: string,\n hasContentCallback: Abstraction.HasContentCallback\n ): Abstraction.Return {\n const hasFoldersCallback = async () => {\n const result = await this.listFoldersUseCase.execute({\n where: {\n type,\n parentId: id\n },\n limit: 1\n });\n\n if (result.isFail()) {\n console.error(result.error.message);\n return true;\n }\n\n const { folders } = result.value;\n\n return folders.length > 0;\n };\n\n const [hasFolders, hasContent] = await Promise.all([\n hasFoldersCallback(),\n hasContentCallback()\n ]);\n\n if (hasFolders || hasContent) {\n return Result.fail(new FolderNotEmptyError());\n }\n\n // Let's also check if there are folders / content that are not visible because of folder permissions.\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n // If folder level permissions are not enabled, we can skip this check. This is because\n // in that case, all folders and content are visible to the user.\n return Result.ok();\n }\n\n const [hasInvisibleFolders, hasInvisibleContent] =\n await this.identityContext.withoutAuthorization(async () => {\n const [hasFolders, hasContent] = await Promise.all([\n hasFoldersCallback(),\n hasContentCallback()\n ]);\n return [hasFolders, hasContent];\n });\n\n // In case there are invisible folders or content, we'll throw a different error.\n // This is to prevent users from deleting folders that contain content they can't see.\n if (hasInvisibleFolders || hasInvisibleContent) {\n return Result.fail(new FolderNotAuthorizedError());\n }\n\n return Result.ok();\n }\n}\n\nexport const EnsureFolderIsEmpty = Abstraction.createImplementation({\n implementation: EnsureFolderIsEmptyImpl,\n dependencies: [IdentityContext, FolderLevelPermissions, ListFoldersUseCase]\n});\n"],"names":["EnsureFolderIsEmptyImpl","identityContext","folderLevelPermissions","listFoldersUseCase","type","id","hasContentCallback","hasFoldersCallback","result","console","folders","hasFolders","hasContent","Promise","Result","FolderNotEmptyError","hasInvisibleFolders","hasInvisibleContent","FolderNotAuthorizedError","EnsureFolderIsEmpty","Abstraction","IdentityContext","FolderLevelPermissions","ListFoldersUseCase"],"mappings":";;;;;;AAOA,MAAMA;IACF,YACYC,eAA0C,EAC1CC,sBAAwD,EACxDC,kBAAgD,CAC1D;aAHUF,eAAe,GAAfA;aACAC,sBAAsB,GAAtBA;aACAC,kBAAkB,GAAlBA;IACT;IAEH,MAAM,QACFC,IAAY,EACZC,EAAU,EACVC,kBAAkD,EAChC;QAClB,MAAMC,qBAAqB;YACvB,MAAMC,SAAS,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;gBACjD,OAAO;oBACHJ;oBACA,UAAUC;gBACd;gBACA,OAAO;YACX;YAEA,IAAIG,OAAO,MAAM,IAAI;gBACjBC,QAAQ,KAAK,CAACD,OAAO,KAAK,CAAC,OAAO;gBAClC,OAAO;YACX;YAEA,MAAM,EAAEE,OAAO,EAAE,GAAGF,OAAO,KAAK;YAEhC,OAAOE,QAAQ,MAAM,GAAG;QAC5B;QAEA,MAAM,CAACC,YAAYC,WAAW,GAAG,MAAMC,QAAQ,GAAG,CAAC;YAC/CN;YACAD;SACH;QAED,IAAIK,cAAcC,YACd,OAAOE,OAAO,IAAI,CAAC,IAAIC;QAI3B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,IAGzD,OAAOD,OAAO,EAAE;QAGpB,MAAM,CAACE,qBAAqBC,oBAAoB,GAC5C,MAAM,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;YAC5C,MAAM,CAACN,YAAYC,WAAW,GAAG,MAAMC,QAAQ,GAAG,CAAC;gBAC/CN;gBACAD;aACH;YACD,OAAO;gBAACK;gBAAYC;aAAW;QACnC;QAIJ,IAAII,uBAAuBC,qBACvB,OAAOH,OAAO,IAAI,CAAC,IAAII;QAG3B,OAAOJ,OAAO,EAAE;IACpB;AACJ;AAEO,MAAMK,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBpB;IAChB,cAAc;QAACqB;QAAiBC;QAAwBC;KAAmB;AAC/E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { FolderNotAuthorizedError, FolderNotEmptyError } from "../../../domain/folder/errors.js";
|
|
3
|
+
export interface IHasContentCallback {
|
|
4
|
+
(): boolean | Promise<boolean>;
|
|
5
|
+
}
|
|
6
|
+
export interface IEnsureFolderIsEmpty {
|
|
7
|
+
execute(type: string, id: string, hasContentCallback: IHasContentCallback): Promise<Result<void, UseCaseError>>;
|
|
8
|
+
}
|
|
9
|
+
export interface IEnsureFolderIsEmptyError {
|
|
10
|
+
notAuthorized: FolderNotAuthorizedError;
|
|
11
|
+
notEmpty: FolderNotEmptyError;
|
|
12
|
+
}
|
|
13
|
+
type UseCaseError = IEnsureFolderIsEmptyError[keyof IEnsureFolderIsEmptyError];
|
|
14
|
+
/** Verify a folder has no children before deletion. */
|
|
15
|
+
export declare const EnsureFolderIsEmpty: import("@webiny/di").Abstraction<IEnsureFolderIsEmpty>;
|
|
16
|
+
export declare namespace EnsureFolderIsEmpty {
|
|
17
|
+
type Interface = IEnsureFolderIsEmpty;
|
|
18
|
+
type HasContentCallback = IHasContentCallback;
|
|
19
|
+
type Return = Promise<Result<void, UseCaseError>>;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/EnsureFolderIsEmpty/abstractions.js","sources":["../../../../src/features/folder/EnsureFolderIsEmpty/abstractions.ts"],"sourcesContent":["import { createAbstraction, Result } from \"@webiny/feature/api\";\nimport { FolderNotAuthorizedError, FolderNotEmptyError } from \"~/domain/folder/errors.js\";\n\nexport interface IHasContentCallback {\n (): boolean | Promise<boolean>;\n}\n\nexport interface IEnsureFolderIsEmpty {\n execute(\n type: string,\n id: string,\n hasContentCallback: IHasContentCallback\n ): Promise<Result<void, UseCaseError>>;\n}\n\nexport interface IEnsureFolderIsEmptyError {\n notAuthorized: FolderNotAuthorizedError;\n notEmpty: FolderNotEmptyError;\n}\n\ntype UseCaseError = IEnsureFolderIsEmptyError[keyof IEnsureFolderIsEmptyError];\n\n/** Verify a folder has no children before deletion. */\nexport const EnsureFolderIsEmpty = createAbstraction<IEnsureFolderIsEmpty>(\"EnsureFolderIsEmpty\");\n\nexport namespace EnsureFolderIsEmpty {\n export type Interface = IEnsureFolderIsEmpty;\n export type HasContentCallback = IHasContentCallback;\n export type Return = Promise<Result<void, UseCaseError>>;\n}\n"],"names":["EnsureFolderIsEmpty","createAbstraction"],"mappings":";AAuBO,MAAMA,sBAAsBC,kBAAwC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { EnsureFolderIsEmpty } from "./EnsureFolderIsEmpty.js";
|
|
3
|
+
const EnsureFolderIsEmptyFeature = createFeature({
|
|
4
|
+
name: "EnsureFolderIsEmptyFeature",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(EnsureFolderIsEmpty);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { EnsureFolderIsEmptyFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/EnsureFolderIsEmpty/feature.js","sources":["../../../../src/features/folder/EnsureFolderIsEmpty/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { EnsureFolderIsEmpty } from \"./EnsureFolderIsEmpty.js\";\n\nexport const EnsureFolderIsEmptyFeature = createFeature({\n name: \"EnsureFolderIsEmptyFeature\",\n register(container) {\n container.register(EnsureFolderIsEmpty);\n }\n});\n"],"names":["EnsureFolderIsEmptyFeature","createFeature","container","EnsureFolderIsEmpty"],"mappings":";;AAGO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EnsureFolderIsEmpty } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EnsureFolderIsEmpty } from "./abstractions.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FolderBeforeDeleteEventHandler } from "../../../features/folder/DeleteFolder/abstractions.js";
|
|
2
|
+
import type { FolderBeforeDeleteEvent } from "../../../features/folder/DeleteFolder/events.js";
|
|
3
|
+
import { EnsureFolderIsEmpty } from "../../../features/folder/EnsureFolderIsEmpty/abstractions.js";
|
|
4
|
+
declare class GenericFolderBeforeDeleteHandlerImpl implements FolderBeforeDeleteEventHandler.Interface {
|
|
5
|
+
private ensureFolderIsEmpty;
|
|
6
|
+
constructor(ensureFolderIsEmpty: EnsureFolderIsEmpty.Interface);
|
|
7
|
+
handle(event: FolderBeforeDeleteEvent): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare const GenericFolderBeforeDeleteHandler: typeof GenericFolderBeforeDeleteHandlerImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("~/features/folder/DeleteFolder/abstractions.js").FolderBeforeDeletePayload>>>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WebinyError } from "@webiny/error";
|
|
2
|
+
import { FolderBeforeDeleteEventHandler } from "../DeleteFolder/abstractions.js";
|
|
3
|
+
import { EnsureFolderIsEmpty } from "../EnsureFolderIsEmpty/abstractions.js";
|
|
4
|
+
class GenericFolderBeforeDeleteHandlerImpl {
|
|
5
|
+
constructor(ensureFolderIsEmpty){
|
|
6
|
+
this.ensureFolderIsEmpty = ensureFolderIsEmpty;
|
|
7
|
+
}
|
|
8
|
+
async handle(event) {
|
|
9
|
+
const { folder } = event.payload;
|
|
10
|
+
const result = await this.ensureFolderIsEmpty.execute(folder.type, folder.id, ()=>false);
|
|
11
|
+
if (result.isFail()) throw WebinyError.from(result.error, {
|
|
12
|
+
message: "Error while ensuring folder is empty before delete.",
|
|
13
|
+
code: "ACO_BEFORE_FOLDER_DELETE_FILE_HANDLER"
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const GenericFolderBeforeDeleteHandler = FolderBeforeDeleteEventHandler.createImplementation({
|
|
18
|
+
implementation: GenericFolderBeforeDeleteHandlerImpl,
|
|
19
|
+
dependencies: [
|
|
20
|
+
EnsureFolderIsEmpty
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
export { GenericFolderBeforeDeleteHandler };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=GenericFolderBeforeDeleteHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js","sources":["../../../../src/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.ts"],"sourcesContent":["import { WebinyError } from \"@webiny/error\";\nimport { FolderBeforeDeleteEventHandler } from \"~/features/folder/DeleteFolder/abstractions.js\";\nimport type { FolderBeforeDeleteEvent } from \"~/features/folder/DeleteFolder/events.js\";\nimport { EnsureFolderIsEmpty } from \"~/features/folder/EnsureFolderIsEmpty/abstractions.js\";\n\nclass GenericFolderBeforeDeleteHandlerImpl implements FolderBeforeDeleteEventHandler.Interface {\n constructor(private ensureFolderIsEmpty: EnsureFolderIsEmpty.Interface) {}\n\n async handle(event: FolderBeforeDeleteEvent): Promise<void> {\n const { folder } = event.payload;\n\n const result = await this.ensureFolderIsEmpty.execute(\n folder.type,\n folder.id,\n // We can only check if a folder has child folders.\n // Content is controlled by individual apps, so content checks are implemented there.\n () => false\n );\n\n if (result.isFail()) {\n throw WebinyError.from(result.error, {\n message: \"Error while ensuring folder is empty before delete.\",\n code: \"ACO_BEFORE_FOLDER_DELETE_FILE_HANDLER\"\n });\n }\n }\n}\n\nexport const GenericFolderBeforeDeleteHandler = FolderBeforeDeleteEventHandler.createImplementation(\n {\n implementation: GenericFolderBeforeDeleteHandlerImpl,\n dependencies: [EnsureFolderIsEmpty]\n }\n);\n"],"names":["GenericFolderBeforeDeleteHandlerImpl","ensureFolderIsEmpty","event","folder","result","WebinyError","GenericFolderBeforeDeleteHandler","FolderBeforeDeleteEventHandler","EnsureFolderIsEmpty"],"mappings":";;;AAKA,MAAMA;IACF,YAAoBC,mBAAkD,CAAE;aAApDA,mBAAmB,GAAnBA;IAAqD;IAEzE,MAAM,OAAOC,KAA8B,EAAiB;QACxD,MAAM,EAAEC,MAAM,EAAE,GAAGD,MAAM,OAAO;QAEhC,MAAME,SAAS,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CACjDD,OAAO,IAAI,EACXA,OAAO,EAAE,EAGT,IAAM;QAGV,IAAIC,OAAO,MAAM,IACb,MAAMC,YAAY,IAAI,CAACD,OAAO,KAAK,EAAE;YACjC,SAAS;YACT,MAAM;QACV;IAER;AACJ;AAEO,MAAME,mCAAmCC,+BAA+B,oBAAoB,CAC/F;IACI,gBAAgBP;IAChB,cAAc;QAACQ;KAAoB;AACvC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This feature checks whether a folder is allowed to be deleted.
|
|
3
|
+
* This generic check simply checks if there are child folders within the given folder.
|
|
4
|
+
* Actual content cannot be checked, as folders do not have information about their records.
|
|
5
|
+
* Individual apps (like File Manager, Headless CMS, etc.) need to implement their own event handlers.
|
|
6
|
+
*/
|
|
7
|
+
export declare const EnsureFolderIsEmptyOnDeleteFeature: {
|
|
8
|
+
name: string;
|
|
9
|
+
register(container: import("@webiny/di").Container): void;
|
|
10
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { GenericFolderBeforeDeleteHandler } from "./GenericFolderBeforeDeleteHandler.js";
|
|
3
|
+
const EnsureFolderIsEmptyOnDeleteFeature = createFeature({
|
|
4
|
+
name: "EnsureFolderIsEmptyOnDelete",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(GenericFolderBeforeDeleteHandler);
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { EnsureFolderIsEmptyOnDeleteFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/EnsureFolderIsEmptyOnDelete/feature.js","sources":["../../../../src/features/folder/EnsureFolderIsEmptyOnDelete/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { GenericFolderBeforeDeleteHandler } from \"./GenericFolderBeforeDeleteHandler.js\";\n\n/**\n * This feature checks whether a folder is allowed to be deleted.\n * This generic check simply checks if there are child folders within the given folder.\n * Actual content cannot be checked, as folders do not have information about their records.\n * Individual apps (like File Manager, Headless CMS, etc.) need to implement their own event handlers.\n */\nexport const EnsureFolderIsEmptyOnDeleteFeature = createFeature({\n name: \"EnsureFolderIsEmptyOnDelete\",\n register(container) {\n container.register(GenericFolderBeforeDeleteHandler);\n }\n});\n"],"names":["EnsureFolderIsEmptyOnDeleteFeature","createFeature","container","GenericFolderBeforeDeleteHandler"],"mappings":";;AASO,MAAMA,qCAAqCC,cAAc;IAC5D,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;IACvB;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EnsureFolderIsEmptyOnDeleteFeature } from "./feature.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { EnsureFolderIsEmptyOnDeleteFeature } from "./feature.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FolderBeforeDeleteEventHandler } from "../../../features/folder/DeleteFolder/abstractions.js";
|
|
2
|
+
import type { FolderBeforeDeleteEvent } from "../../../features/folder/DeleteFolder/events.js";
|
|
3
|
+
import { EnsureFolderIsEmpty } from "../../../features/folder/EnsureFolderIsEmpty/abstractions.js";
|
|
4
|
+
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
5
|
+
import { ListEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
6
|
+
declare class ModelFolderBeforeDeleteHandlerImpl implements FolderBeforeDeleteEventHandler.Interface {
|
|
7
|
+
private ensureFolderIsEmpty;
|
|
8
|
+
private getModel;
|
|
9
|
+
private listEntries;
|
|
10
|
+
constructor(ensureFolderIsEmpty: EnsureFolderIsEmpty.Interface, getModel: GetModelUseCase.Interface, listEntries: ListEntriesUseCase.Interface);
|
|
11
|
+
handle(event: FolderBeforeDeleteEvent): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare const ModelFolderBeforeDeleteHandler: typeof ModelFolderBeforeDeleteHandlerImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher").IEventHandler<import("@webiny/api-core/features/eventPublisher").DomainEvent<import("~/features/folder/DeleteFolder/abstractions.js").FolderBeforeDeletePayload>>>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|