@webiny/api-aco 0.0.0-unstable.b14eaecf38 → 0.0.0-unstable.b6d7105cee
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/README.md +6 -28
- package/constants.d.ts +2 -0
- package/constants.js +5 -0
- package/constants.js.map +1 -0
- package/createAcoContext.d.ts +2 -2
- package/createAcoContext.js +111 -61
- package/createAcoContext.js.map +1 -1
- package/createAcoGraphQL.d.ts +3 -2
- package/createAcoGraphQL.js +55 -37
- package/createAcoGraphQL.js.map +1 -1
- package/createAcoTasks.d.ts +1 -0
- package/createAcoTasks.js +14 -0
- package/createAcoTasks.js.map +1 -0
- package/domain/folder/abstractions.d.ts +9 -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 +58 -0
- package/domain/folder/folder.model.js.map +1 -0
- package/exports/api/aco/flp.d.ts +6 -0
- package/exports/api/aco/flp.js +6 -0
- package/exports/api/aco/folder.d.ts +11 -0
- package/exports/api/aco/folder.js +10 -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 +10 -0
- package/features/flp/CreateFlp/feature.js +12 -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 +14 -0
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +37 -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 +10 -0
- package/features/flp/DeleteFlp/feature.js +12 -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 +14 -0
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +37 -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/feature.d.ts +4 -0
- package/features/flp/GetFlp/feature.js +12 -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/feature.d.ts +4 -0
- package/features/flp/ListFlps/feature.js +12 -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 +19 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js +152 -0
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -0
- package/features/flp/UpdateFlp/abstractions.d.ts +15 -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 +10 -0
- package/features/flp/UpdateFlp/feature.js +12 -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 +14 -0
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +39 -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/folder/CreateFolder/CreateFolderRepository.d.ts +21 -0
- package/features/folder/CreateFolder/CreateFolderRepository.js +85 -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 +11 -0
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +39 -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 +32 -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/GetAncestors/GetAncestorsRepository.d.ts +15 -0
- package/features/folder/GetAncestors/GetAncestorsRepository.js +58 -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 +33 -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 +84 -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 +52 -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/UpdateFolder/UpdateFolderRepository.d.ts +21 -0
- package/features/folder/UpdateFolder/UpdateFolderRepository.js +84 -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 +13 -0
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +58 -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 +10 -0
- package/features/folder/shared/abstractions.js +6 -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 +3 -0
- package/filter/filter.gql.js +130 -0
- package/filter/filter.gql.js.map +1 -0
- package/filter/filter.model.d.ts +9 -0
- package/filter/filter.model.js +50 -0
- package/filter/filter.model.js.map +1 -0
- package/filter/filter.so.d.ts +11 -0
- package/filter/filter.so.js +84 -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 +93 -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 +18 -0
- package/flp/tasks/createFlp.task.js +36 -0
- package/flp/tasks/createFlp.task.js.map +1 -0
- package/flp/tasks/deleteFlp.task.d.ts +18 -0
- package/flp/tasks/deleteFlp.task.js +36 -0
- package/flp/tasks/deleteFlp.task.js.map +1 -0
- package/flp/tasks/index.d.ts +5 -0
- package/flp/tasks/index.js +20 -0
- package/flp/tasks/index.js.map +1 -0
- package/flp/tasks/syncFlp.task.d.ts +22 -0
- package/flp/tasks/syncFlp.task.js +112 -0
- package/flp/tasks/syncFlp.task.js.map +1 -0
- package/flp/tasks/updateFlp.task.d.ts +18 -0
- package/flp/tasks/updateFlp.task.js +43 -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 +175 -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 -3
- package/index.js +12 -27
- package/index.js.map +1 -1
- package/package.json +34 -39
- package/types.d.ts +27 -22
- package/types.js +8 -38
- 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 +175 -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/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 -65
- 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 -4
- package/folder/folder.model.js +0 -75
- 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/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 -123
- package/record/record.gql.js.map +0 -1
- package/record/record.model.d.ts +0 -4
- package/record/record.model.js +0 -62
- package/record/record.model.js.map +0 -1
- package/record/record.so.d.ts +0 -3
- package/record/record.so.js +0 -100
- package/record/record.so.js.map +0 -1
- package/record/record.types.d.ts +0 -96
- 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 -5
- package/utils/createModelField.js +0 -37
- 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 -15
- package/utils/modelFactory.js +0 -25
- package/utils/modelFactory.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ListFolderLevelPermissionsTargetsUseCase } from "./abstractions.js";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type IListFoldersRepository, ListFoldersRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
2
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
3
|
+
import { FolderModel } from "../../../domain/folder/abstractions.js";
|
|
4
|
+
import type { ListFoldersParams } from "../../../folder/folder.types.js";
|
|
5
|
+
import { CmsSortMapper, CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
6
|
+
declare class ListFoldersRepositoryImpl implements IListFoldersRepository {
|
|
7
|
+
private listLatestEntries;
|
|
8
|
+
private folderModel;
|
|
9
|
+
private cmsWhereMapper;
|
|
10
|
+
private cmsSortMapper;
|
|
11
|
+
constructor(listLatestEntries: ListLatestEntriesUseCase.Interface, folderModel: FolderModel.Interface, cmsWhereMapper: CmsWhereMapper.Interface, cmsSortMapper: CmsSortMapper.Interface);
|
|
12
|
+
execute(params: ListFoldersParams): RepositoryAbstraction.Return;
|
|
13
|
+
}
|
|
14
|
+
export declare const ListFoldersRepository: typeof ListFoldersRepositoryImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<IListFoldersRepository>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { ListFoldersRepository } from "./abstractions.js";
|
|
3
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
4
|
+
import { FolderModel } from "../../../domain/folder/abstractions.js";
|
|
5
|
+
import { EntryToFolderMapper } from "../shared/EntryToFolderMapper.js";
|
|
6
|
+
import { FolderPersistenceError } from "../../../domain/folder/errors.js";
|
|
7
|
+
import { createListSort } from "../../../utils/createListSort.js";
|
|
8
|
+
import { CmsSortMapper, CmsWhereMapper } from "@webiny/api-headless-cms";
|
|
9
|
+
class ListFoldersRepositoryImpl {
|
|
10
|
+
constructor(listLatestEntries, folderModel, cmsWhereMapper, cmsSortMapper){
|
|
11
|
+
this.listLatestEntries = listLatestEntries;
|
|
12
|
+
this.folderModel = folderModel;
|
|
13
|
+
this.cmsWhereMapper = cmsWhereMapper;
|
|
14
|
+
this.cmsSortMapper = cmsSortMapper;
|
|
15
|
+
}
|
|
16
|
+
async execute(params) {
|
|
17
|
+
const { sort, where } = params;
|
|
18
|
+
const listSort = sort || {
|
|
19
|
+
values_title: "ASC"
|
|
20
|
+
};
|
|
21
|
+
const result = await this.listLatestEntries.execute(this.folderModel, {
|
|
22
|
+
...params,
|
|
23
|
+
sort: this.cmsSortMapper.map({
|
|
24
|
+
input: createListSort(listSort),
|
|
25
|
+
fields: this.folderModel.fields
|
|
26
|
+
}),
|
|
27
|
+
where: this.cmsWhereMapper.map({
|
|
28
|
+
input: where,
|
|
29
|
+
fields: this.folderModel.fields
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
|
|
33
|
+
const { entries, meta } = result.value;
|
|
34
|
+
const folders = entries.map((entry)=>EntryToFolderMapper.toFolder(entry));
|
|
35
|
+
return Result.ok({
|
|
36
|
+
folders,
|
|
37
|
+
meta
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const ListFoldersRepository_ListFoldersRepository = ListFoldersRepository.createImplementation({
|
|
42
|
+
implementation: ListFoldersRepositoryImpl,
|
|
43
|
+
dependencies: [
|
|
44
|
+
ListLatestEntriesUseCase,
|
|
45
|
+
FolderModel,
|
|
46
|
+
CmsWhereMapper,
|
|
47
|
+
CmsSortMapper
|
|
48
|
+
]
|
|
49
|
+
});
|
|
50
|
+
export { ListFoldersRepository_ListFoldersRepository as ListFoldersRepository };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=ListFoldersRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/ListFolders/ListFoldersRepository.js","sources":["../../../../src/features/folder/ListFolders/ListFoldersRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n type IListFoldersRepository,\n ListFoldersRepository as RepositoryAbstraction\n} from \"./abstractions.js\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { FolderModel } from \"~/domain/folder/abstractions.js\";\nimport type { CmsEntryFolder, ListFoldersParams } from \"~/folder/folder.types.js\";\nimport { EntryToFolderMapper } from \"../shared/EntryToFolderMapper.js\";\nimport { FolderPersistenceError } from \"~/domain/folder/errors.js\";\nimport { createListSort } from \"~/utils/createListSort.js\";\nimport type { ListSort } from \"~/types.js\";\nimport { CmsSortMapper, CmsWhereMapper } from \"@webiny/api-headless-cms\";\n\nclass ListFoldersRepositoryImpl implements IListFoldersRepository {\n constructor(\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private folderModel: FolderModel.Interface,\n private cmsWhereMapper: CmsWhereMapper.Interface,\n private cmsSortMapper: CmsSortMapper.Interface\n ) {}\n\n async execute(params: ListFoldersParams): RepositoryAbstraction.Return {\n const { sort, where } = params;\n\n const listSort =\n sort ||\n ({\n values_title: \"ASC\"\n } as unknown as ListSort);\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(this.folderModel, {\n ...params,\n sort: this.cmsSortMapper.map({\n input: createListSort(listSort),\n fields: this.folderModel.fields\n }),\n where: this.cmsWhereMapper.map({\n input: where,\n fields: this.folderModel.fields\n })\n });\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const { entries, meta } = result.value;\n const folders = entries.map(entry => EntryToFolderMapper.toFolder(entry));\n return Result.ok({ folders, meta });\n }\n}\n\nexport const ListFoldersRepository = RepositoryAbstraction.createImplementation({\n implementation: ListFoldersRepositoryImpl,\n dependencies: [ListLatestEntriesUseCase, FolderModel, CmsWhereMapper, CmsSortMapper]\n});\n"],"names":["ListFoldersRepositoryImpl","listLatestEntries","folderModel","cmsWhereMapper","cmsSortMapper","params","sort","where","listSort","result","createListSort","Result","FolderPersistenceError","entries","meta","folders","entry","EntryToFolderMapper","ListFoldersRepository","RepositoryAbstraction","ListLatestEntriesUseCase","FolderModel","CmsWhereMapper","CmsSortMapper"],"mappings":";;;;;;;;AAcA,MAAMA;IACF,YACYC,iBAAqD,EACrDC,WAAkC,EAClCC,cAAwC,EACxCC,aAAsC,CAChD;aAJUH,iBAAiB,GAAjBA;aACAC,WAAW,GAAXA;aACAC,cAAc,GAAdA;aACAC,aAAa,GAAbA;IACT;IAEH,MAAM,QAAQC,MAAyB,EAAgC;QACnE,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAGF;QAExB,MAAMG,WACFF,QACC;YACG,cAAc;QAClB;QAEJ,MAAMG,SAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAiB,IAAI,CAAC,WAAW,EAAE;YAClF,GAAGJ,MAAM;YACT,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBACzB,OAAOK,eAAeF;gBACtB,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM;YACnC;YACA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;gBAC3B,OAAOD;gBACP,QAAQ,IAAI,CAAC,WAAW,CAAC,MAAM;YACnC;QACJ;QAEA,IAAIE,OAAO,MAAM,IACb,OAAOE,OAAO,IAAI,CAAC,IAAIC,uBAAuBH,OAAO,KAAK;QAG9D,MAAM,EAAEI,OAAO,EAAEC,IAAI,EAAE,GAAGL,OAAO,KAAK;QACtC,MAAMM,UAAUF,QAAQ,GAAG,CAACG,CAAAA,QAASC,oBAAoB,QAAQ,CAACD;QAClE,OAAOL,OAAO,EAAE,CAAC;YAAEI;YAASD;QAAK;IACrC;AACJ;AAEO,MAAMI,8CAAwBC,sBAAAA,oBAA0C,CAAC;IAC5E,gBAAgBnB;IAChB,cAAc;QAACoB;QAA0BC;QAAaC;QAAgBC;KAAc;AACxF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ListFoldersUseCase as UseCaseAbstraction, ListFoldersRepository } from "./abstractions.js";
|
|
2
|
+
import type { ListFoldersParams } from "../../../folder/folder.types.js";
|
|
3
|
+
declare class ListFoldersUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
4
|
+
private repository;
|
|
5
|
+
constructor(repository: ListFoldersRepository.Interface);
|
|
6
|
+
execute(params: ListFoldersParams): UseCaseAbstraction.Return;
|
|
7
|
+
}
|
|
8
|
+
export declare const ListFoldersUseCase: import("@webiny/di").Implementation<typeof ListFoldersUseCaseImpl>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
+
import { ListFoldersRepository, ListFoldersUseCase } from "./abstractions.js";
|
|
3
|
+
class ListFoldersUseCaseImpl {
|
|
4
|
+
constructor(repository){
|
|
5
|
+
this.repository = repository;
|
|
6
|
+
}
|
|
7
|
+
async execute(params) {
|
|
8
|
+
return await this.repository.execute(params);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
const ListFoldersUseCase_ListFoldersUseCase = createImplementation({
|
|
12
|
+
abstraction: ListFoldersUseCase,
|
|
13
|
+
implementation: ListFoldersUseCaseImpl,
|
|
14
|
+
dependencies: [
|
|
15
|
+
ListFoldersRepository
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
export { ListFoldersUseCase_ListFoldersUseCase as ListFoldersUseCase };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=ListFoldersUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/ListFolders/ListFoldersUseCase.js","sources":["../../../../src/features/folder/ListFolders/ListFoldersUseCase.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/feature/api\";\nimport { ListFoldersUseCase as UseCaseAbstraction, ListFoldersRepository } from \"./abstractions.js\";\nimport type { ListFoldersParams } from \"~/folder/folder.types.js\";\n\nclass ListFoldersUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(private repository: ListFoldersRepository.Interface) {}\n\n async execute(params: ListFoldersParams): UseCaseAbstraction.Return {\n return await this.repository.execute(params);\n }\n}\n\nexport const ListFoldersUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: ListFoldersUseCaseImpl,\n dependencies: [ListFoldersRepository]\n});\n"],"names":["ListFoldersUseCaseImpl","repository","params","ListFoldersUseCase","createImplementation","UseCaseAbstraction","ListFoldersRepository"],"mappings":";;AAIA,MAAMA;IACF,YAAoBC,UAA2C,CAAE;aAA7CA,UAAU,GAAVA;IAA8C;IAElE,MAAM,QAAQC,MAAyB,EAA6B;QAChE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACA;IACzC;AACJ;AAEO,MAAMC,wCAAqBC,qBAAqB;IACnD,aAAaC;IACb,gBAAgBL;IAChB,cAAc;QAACM;KAAsB;AACzC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { Folder, ListFoldersParams } from "../../../folder/folder.types.js";
|
|
3
|
+
import type { ListMeta } from "../../../types.js";
|
|
4
|
+
import type { FolderNotAuthorizedError, FolderPersistenceError } from "../../../domain/folder/errors.js";
|
|
5
|
+
interface IListFoldersResult {
|
|
6
|
+
folders: Folder[];
|
|
7
|
+
meta: ListMeta;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* ListFolders repository interface
|
|
11
|
+
*/
|
|
12
|
+
export interface IListFoldersRepository {
|
|
13
|
+
execute(params: ListFoldersParams): Promise<Result<IListFoldersResult, RepositoryError>>;
|
|
14
|
+
}
|
|
15
|
+
export interface IListFoldersRepositoryErrors {
|
|
16
|
+
persistence: FolderPersistenceError;
|
|
17
|
+
}
|
|
18
|
+
type RepositoryError = IListFoldersRepositoryErrors[keyof IListFoldersRepositoryErrors];
|
|
19
|
+
/** Fetch folders from storage. */
|
|
20
|
+
export declare const ListFoldersRepository: import("@webiny/di").Abstraction<IListFoldersRepository>;
|
|
21
|
+
export declare namespace ListFoldersRepository {
|
|
22
|
+
type Interface = IListFoldersRepository;
|
|
23
|
+
type Return = Promise<Result<IListFoldersResult, RepositoryError>>;
|
|
24
|
+
type Error = RepositoryError;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* ListFolders use case interface
|
|
28
|
+
*/
|
|
29
|
+
export interface IListFoldersUseCase {
|
|
30
|
+
execute(params: ListFoldersParams): Promise<Result<IListFoldersResult, UseCaseError>>;
|
|
31
|
+
}
|
|
32
|
+
export interface IListFoldersUseCaseErrors {
|
|
33
|
+
notAuthorized: FolderNotAuthorizedError;
|
|
34
|
+
persistence: FolderPersistenceError;
|
|
35
|
+
}
|
|
36
|
+
type UseCaseError = IListFoldersUseCaseErrors[keyof IListFoldersUseCaseErrors];
|
|
37
|
+
/** List folders with filtering. */
|
|
38
|
+
export declare const ListFoldersUseCase: import("@webiny/di").Abstraction<IListFoldersUseCase>;
|
|
39
|
+
export declare namespace ListFoldersUseCase {
|
|
40
|
+
type Interface = IListFoldersUseCase;
|
|
41
|
+
type Return = Promise<Result<IListFoldersResult, UseCaseError>>;
|
|
42
|
+
type Error = UseCaseError;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const ListFoldersRepository = createAbstraction("ListFoldersRepository");
|
|
3
|
+
const ListFoldersUseCase = createAbstraction("ListFoldersUseCase");
|
|
4
|
+
export { ListFoldersRepository, ListFoldersUseCase };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/ListFolders/abstractions.js","sources":["../../../../src/features/folder/ListFolders/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { Folder, ListFoldersParams } from \"~/folder/folder.types.js\";\nimport type { ListMeta } from \"~/types.js\";\nimport type { FolderNotAuthorizedError, FolderPersistenceError } from \"~/domain/folder/errors.js\";\n\ninterface IListFoldersResult {\n folders: Folder[];\n meta: ListMeta;\n}\n\n/**\n * ListFolders repository interface\n */\nexport interface IListFoldersRepository {\n execute(params: ListFoldersParams): Promise<Result<IListFoldersResult, RepositoryError>>;\n}\n\nexport interface IListFoldersRepositoryErrors {\n persistence: FolderPersistenceError;\n}\n\ntype RepositoryError = IListFoldersRepositoryErrors[keyof IListFoldersRepositoryErrors];\n\n/** Fetch folders from storage. */\nexport const ListFoldersRepository =\n createAbstraction<IListFoldersRepository>(\"ListFoldersRepository\");\n\nexport namespace ListFoldersRepository {\n export type Interface = IListFoldersRepository;\n export type Return = Promise<Result<IListFoldersResult, RepositoryError>>;\n export type Error = RepositoryError;\n}\n\n/**\n * ListFolders use case interface\n */\nexport interface IListFoldersUseCase {\n execute(params: ListFoldersParams): Promise<Result<IListFoldersResult, UseCaseError>>;\n}\n\nexport interface IListFoldersUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n persistence: FolderPersistenceError;\n}\n\ntype UseCaseError = IListFoldersUseCaseErrors[keyof IListFoldersUseCaseErrors];\n\n/** List folders with filtering. */\nexport const ListFoldersUseCase = createAbstraction<IListFoldersUseCase>(\"ListFoldersUseCase\");\n\nexport namespace ListFoldersUseCase {\n export type Interface = IListFoldersUseCase;\n export type Return = Promise<Result<IListFoldersResult, UseCaseError>>;\n export type Error = UseCaseError;\n}\n"],"names":["ListFoldersRepository","createAbstraction","ListFoldersUseCase"],"mappings":";AAyBO,MAAMA,wBACTC,kBAA0C;AAuBvC,MAAMC,qBAAqBD,kBAAuC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ListFoldersParams } from "../../../../folder/folder.types.js";
|
|
2
|
+
import { ListFoldersUseCase } from "../abstractions.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../../../features/flp/FolderLevelPermissions/index.js";
|
|
4
|
+
declare class ListFoldersWithFolderLevelPermissionsImpl implements ListFoldersUseCase.Interface {
|
|
5
|
+
private folderLevelPermissions;
|
|
6
|
+
private decoratee;
|
|
7
|
+
private flpCatalog;
|
|
8
|
+
constructor(folderLevelPermissions: FolderLevelPermissions.Interface, decoratee: ListFoldersUseCase.Interface);
|
|
9
|
+
execute(params: ListFoldersParams): ListFoldersUseCase.Return;
|
|
10
|
+
private hasFlp;
|
|
11
|
+
private getFlp;
|
|
12
|
+
private setFlp;
|
|
13
|
+
}
|
|
14
|
+
export declare const ListFoldersWithFolderLevelPermissions: typeof ListFoldersWithFolderLevelPermissionsImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<import("../abstractions.js").IListFoldersUseCase>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { ListFoldersUseCase } from "../abstractions.js";
|
|
3
|
+
import { FolderLevelPermissions } from "../../../flp/FolderLevelPermissions/index.js";
|
|
4
|
+
import { ROOT_FOLDER } from "../../../../constants.js";
|
|
5
|
+
class ListFoldersWithFolderLevelPermissionsImpl {
|
|
6
|
+
constructor(folderLevelPermissions, decoratee){
|
|
7
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
8
|
+
this.decoratee = decoratee;
|
|
9
|
+
this.flpCatalog = new Map();
|
|
10
|
+
}
|
|
11
|
+
async execute(params) {
|
|
12
|
+
const result = await this.decoratee.execute(params);
|
|
13
|
+
if (result.isFail()) return Result.fail(result.error);
|
|
14
|
+
const { folders, meta } = result.value;
|
|
15
|
+
const rootFlps = await this.folderLevelPermissions.listFolderLevelPermissions({
|
|
16
|
+
where: {
|
|
17
|
+
type: params.where.type,
|
|
18
|
+
parentId: ROOT_FOLDER
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
rootFlps.forEach((flp)=>this.setFlp(flp.id, flp.permissions));
|
|
22
|
+
await Promise.all(folders.map(async (folder)=>{
|
|
23
|
+
if (!this.hasFlp(folder.id)) {
|
|
24
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folder.id);
|
|
25
|
+
this.setFlp(folder.id, permissions);
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
const foldersWithPermissions = await Promise.all(folders.map(async (folder)=>{
|
|
29
|
+
const permissions = this.getFlp(folder.id);
|
|
30
|
+
if (!permissions) return null;
|
|
31
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolder({
|
|
32
|
+
permissions,
|
|
33
|
+
rwd: "r"
|
|
34
|
+
});
|
|
35
|
+
if (!canAccessFolder) return null;
|
|
36
|
+
const folderWithFlp = {
|
|
37
|
+
...folder,
|
|
38
|
+
permissions
|
|
39
|
+
};
|
|
40
|
+
return canAccessFolder ? folderWithFlp : null;
|
|
41
|
+
}));
|
|
42
|
+
return Result.ok({
|
|
43
|
+
folders: foldersWithPermissions.filter(Boolean),
|
|
44
|
+
meta
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
hasFlp(id) {
|
|
48
|
+
return this.flpCatalog.has(id);
|
|
49
|
+
}
|
|
50
|
+
getFlp(id) {
|
|
51
|
+
return this.flpCatalog.get(id);
|
|
52
|
+
}
|
|
53
|
+
setFlp(id, permissions) {
|
|
54
|
+
this.flpCatalog.set(id, permissions);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const ListFoldersWithFolderLevelPermissions = ListFoldersUseCase.createDecorator({
|
|
58
|
+
decorator: ListFoldersWithFolderLevelPermissionsImpl,
|
|
59
|
+
dependencies: [
|
|
60
|
+
FolderLevelPermissions
|
|
61
|
+
]
|
|
62
|
+
});
|
|
63
|
+
export { ListFoldersWithFolderLevelPermissions };
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=ListFoldersWithFolderLevelPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js","sources":["../../../../../src/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport type { Folder, ListFoldersParams } from \"~/folder/folder.types.js\";\nimport { ListFoldersUseCase } from \"../abstractions.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport type { FolderPermission } from \"~/flp/flp.types.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass ListFoldersWithFolderLevelPermissionsImpl implements ListFoldersUseCase.Interface {\n private flpCatalog: Map<string, FolderPermission[]> = new Map();\n\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListFoldersUseCase.Interface\n ) {}\n\n async execute(params: ListFoldersParams): ListFoldersUseCase.Return {\n const result = await this.decoratee.execute(params);\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n const { folders, meta } = result.value;\n\n // Fetch FLP records for ROOT folders and populate the catalog.\n const rootFlps = await this.folderLevelPermissions.listFolderLevelPermissions({\n where: {\n type: params.where.type,\n parentId: ROOT_FOLDER\n }\n });\n\n rootFlps.forEach(flp => this.setFlp(flp.id, flp.permissions));\n\n // Fetch FLP for folders not already in the catalog.\n await Promise.all(\n folders.map(async folder => {\n if (!this.hasFlp(folder.id)) {\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(\n folder.id\n );\n this.setFlp(folder.id, permissions);\n }\n })\n );\n\n // Filter folders based on permissions.\n const foldersWithPermissions = await Promise.all(\n folders.map(async folder => {\n const permissions = this.getFlp(folder.id);\n if (!permissions) {\n return null;\n }\n\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolder({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return null;\n }\n\n const folderWithFlp = { ...folder, permissions };\n return canAccessFolder ? folderWithFlp : null;\n })\n );\n\n return Result.ok({ folders: foldersWithPermissions.filter(Boolean) as Folder[], meta });\n }\n\n private hasFlp(id: string): boolean {\n return this.flpCatalog.has(id);\n }\n\n private getFlp(id: string): FolderPermission[] | undefined {\n return this.flpCatalog.get(id);\n }\n\n private setFlp(id: string, permissions: FolderPermission[]): void {\n this.flpCatalog.set(id, permissions);\n }\n}\n\nexport const ListFoldersWithFolderLevelPermissions = ListFoldersUseCase.createDecorator({\n decorator: ListFoldersWithFolderLevelPermissionsImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["ListFoldersWithFolderLevelPermissionsImpl","folderLevelPermissions","decoratee","Map","params","result","Result","folders","meta","rootFlps","ROOT_FOLDER","flp","Promise","folder","permissions","foldersWithPermissions","canAccessFolder","folderWithFlp","Boolean","id","ListFoldersWithFolderLevelPermissions","ListFoldersUseCase","FolderLevelPermissions"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,sBAAwD,EACxDC,SAAuC,CACjD;aAFUD,sBAAsB,GAAtBA;aACAC,SAAS,GAATA;aAJJ,UAAU,GAAoC,IAAIC;IAKvD;IAEH,MAAM,QAAQC,MAAyB,EAA6B;QAChE,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAACD;QAC5C,IAAIC,OAAO,MAAM,IACb,OAAOC,OAAO,IAAI,CAACD,OAAO,KAAK;QAGnC,MAAM,EAAEE,OAAO,EAAEC,IAAI,EAAE,GAAGH,OAAO,KAAK;QAGtC,MAAMI,WAAW,MAAM,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC;YAC1E,OAAO;gBACH,MAAML,OAAO,KAAK,CAAC,IAAI;gBACvB,UAAUM;YACd;QACJ;QAEAD,SAAS,OAAO,CAACE,CAAAA,MAAO,IAAI,CAAC,MAAM,CAACA,IAAI,EAAE,EAAEA,IAAI,WAAW;QAG3D,MAAMC,QAAQ,GAAG,CACbL,QAAQ,GAAG,CAAC,OAAMM;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAACA,OAAO,EAAE,GAAG;gBACzB,MAAMC,cAAc,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAC3ED,OAAO,EAAE;gBAEb,IAAI,CAAC,MAAM,CAACA,OAAO,EAAE,EAAEC;YAC3B;QACJ;QAIJ,MAAMC,yBAAyB,MAAMH,QAAQ,GAAG,CAC5CL,QAAQ,GAAG,CAAC,OAAMM;YACd,MAAMC,cAAc,IAAI,CAAC,MAAM,CAACD,OAAO,EAAE;YACzC,IAAI,CAACC,aACD,OAAO;YAGX,MAAME,kBAAkB,MAAM,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;gBACtEF;gBACA,KAAK;YACT;YAEA,IAAI,CAACE,iBACD,OAAO;YAGX,MAAMC,gBAAgB;gBAAE,GAAGJ,MAAM;gBAAEC;YAAY;YAC/C,OAAOE,kBAAkBC,gBAAgB;QAC7C;QAGJ,OAAOX,OAAO,EAAE,CAAC;YAAE,SAASS,uBAAuB,MAAM,CAACG;YAAsBV;QAAK;IACzF;IAEQ,OAAOW,EAAU,EAAW;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA;IAC/B;IAEQ,OAAOA,EAAU,EAAkC;QACvD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAACA;IAC/B;IAEQ,OAAOA,EAAU,EAAEL,WAA+B,EAAQ;QAC9D,IAAI,CAAC,UAAU,CAAC,GAAG,CAACK,IAAIL;IAC5B;AACJ;AAEO,MAAMM,wCAAwCC,mBAAmB,eAAe,CAAC;IACpF,WAAWrB;IACX,cAAc;QAACsB;KAAuB;AAC1C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { ListFoldersRepository } from "./ListFoldersRepository.js";
|
|
3
|
+
import { ListFoldersUseCase } from "./ListFoldersUseCase.js";
|
|
4
|
+
import { ListFoldersWithFolderLevelPermissions } from "./decorators/ListFoldersWithFolderLevelPermissions.js";
|
|
5
|
+
const ListFoldersFeature = createFeature({
|
|
6
|
+
name: "ListFolders",
|
|
7
|
+
register (container) {
|
|
8
|
+
container.register(ListFoldersRepository).inSingletonScope();
|
|
9
|
+
container.register(ListFoldersUseCase);
|
|
10
|
+
container.registerDecorator(ListFoldersWithFolderLevelPermissions);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
export { ListFoldersFeature };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/ListFolders/feature.js","sources":["../../../../src/features/folder/ListFolders/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport type { Container } from \"@webiny/di\";\nimport { ListFoldersRepository } from \"./ListFoldersRepository.js\";\nimport { ListFoldersUseCase } from \"./ListFoldersUseCase.js\";\nimport { ListFoldersWithFolderLevelPermissions } from \"./decorators/ListFoldersWithFolderLevelPermissions.js\";\n\nexport const ListFoldersFeature = createFeature({\n name: \"ListFolders\",\n register(container: Container) {\n container.register(ListFoldersRepository).inSingletonScope();\n container.register(ListFoldersUseCase);\n container.registerDecorator(ListFoldersWithFolderLevelPermissions);\n }\n});\n"],"names":["ListFoldersFeature","createFeature","container","ListFoldersRepository","ListFoldersUseCase","ListFoldersWithFolderLevelPermissions"],"mappings":";;;;AAMO,MAAMA,qBAAqBC,cAAc;IAC5C,MAAM;IACN,UAASC,SAAoB;QACzBA,UAAU,QAAQ,CAACC,uBAAuB,gBAAgB;QAC1DD,UAAU,QAAQ,CAACE;QACnBF,UAAU,iBAAiB,CAACG;IAChC;AACJ"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { type IUpdateFolderRepository, UpdateFolderRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry";
|
|
4
|
+
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
|
|
5
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
6
|
+
import { FolderModel } from "../../../domain/folder/abstractions.js";
|
|
7
|
+
import type { Folder, UpdateFolderParams } from "../../../folder/folder.types.js";
|
|
8
|
+
declare class UpdateFolderRepositoryImpl implements IUpdateFolderRepository {
|
|
9
|
+
private updateEntry;
|
|
10
|
+
private getEntryById;
|
|
11
|
+
private listLatestEntries;
|
|
12
|
+
private folderModel;
|
|
13
|
+
constructor(updateEntry: UpdateEntryUseCase.Interface, getEntryById: GetEntryByIdUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface, folderModel: FolderModel.Interface);
|
|
14
|
+
execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, RepositoryAbstraction.Error>>;
|
|
15
|
+
private checkExistingFolder;
|
|
16
|
+
private createFolderPath;
|
|
17
|
+
}
|
|
18
|
+
export declare const UpdateFolderRepository: typeof UpdateFolderRepositoryImpl & {
|
|
19
|
+
__abstraction: import("@webiny/di").Abstraction<IUpdateFolderRepository>;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { UpdateFolderRepository } from "./abstractions.js";
|
|
3
|
+
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry";
|
|
4
|
+
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
|
|
5
|
+
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
6
|
+
import { FolderModel } from "../../../domain/folder/abstractions.js";
|
|
7
|
+
import { EntryToFolderMapper } from "../shared/EntryToFolderMapper.js";
|
|
8
|
+
import { FolderPersistenceError, FolderValidationError } from "../../../domain/folder/errors.js";
|
|
9
|
+
import { Path } from "../../../utils/Path.js";
|
|
10
|
+
import { EntryId } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
|
|
11
|
+
class UpdateFolderRepositoryImpl {
|
|
12
|
+
constructor(updateEntry, getEntryById, listLatestEntries, folderModel){
|
|
13
|
+
this.updateEntry = updateEntry;
|
|
14
|
+
this.getEntryById = getEntryById;
|
|
15
|
+
this.listLatestEntries = listLatestEntries;
|
|
16
|
+
this.folderModel = folderModel;
|
|
17
|
+
}
|
|
18
|
+
async execute(id, data) {
|
|
19
|
+
const entryId = EntryId.from(id);
|
|
20
|
+
const originalResult = await this.getEntryById.execute(this.folderModel, entryId.toString());
|
|
21
|
+
if (originalResult.isFail()) return Result.fail(new FolderPersistenceError(originalResult.error));
|
|
22
|
+
const original = EntryToFolderMapper.toFolder(originalResult.value);
|
|
23
|
+
const checkResult = await this.checkExistingFolder({
|
|
24
|
+
id,
|
|
25
|
+
type: original.type,
|
|
26
|
+
slug: data.slug || original.slug,
|
|
27
|
+
parentId: void 0 !== data.parentId ? data.parentId : original.parentId
|
|
28
|
+
});
|
|
29
|
+
if (checkResult.isFail()) return Result.fail(checkResult.error);
|
|
30
|
+
const pathResult = await this.createFolderPath({
|
|
31
|
+
slug: data.slug || original.slug,
|
|
32
|
+
parentId: void 0 !== data.parentId ? data.parentId : original.parentId
|
|
33
|
+
});
|
|
34
|
+
if (pathResult.isFail()) return Result.fail(pathResult.error);
|
|
35
|
+
const result = await this.updateEntry.execute(this.folderModel, entryId.toString(), {
|
|
36
|
+
values: {
|
|
37
|
+
...data,
|
|
38
|
+
path: pathResult.value
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
|
|
42
|
+
const updatedFolder = EntryToFolderMapper.toFolder(result.value);
|
|
43
|
+
return Result.ok(updatedFolder);
|
|
44
|
+
}
|
|
45
|
+
async checkExistingFolder(params) {
|
|
46
|
+
const { id, type, slug, parentId } = params;
|
|
47
|
+
const result = await this.listLatestEntries.execute(this.folderModel, {
|
|
48
|
+
where: {
|
|
49
|
+
latest: true,
|
|
50
|
+
entryId_not: id,
|
|
51
|
+
values: {
|
|
52
|
+
type,
|
|
53
|
+
slug,
|
|
54
|
+
parentId
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
limit: 1
|
|
58
|
+
});
|
|
59
|
+
if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
|
|
60
|
+
const { entries } = result.value;
|
|
61
|
+
if (entries.length > 0) return Result.fail(new FolderValidationError(`Folder with slug "${slug}" already exists at this level.`));
|
|
62
|
+
return Result.ok();
|
|
63
|
+
}
|
|
64
|
+
async createFolderPath(params) {
|
|
65
|
+
const { slug, parentId } = params;
|
|
66
|
+
if (!parentId) return Result.ok(Path.create(slug));
|
|
67
|
+
const parentResult = await this.getEntryById.execute(this.folderModel, EntryId.from(parentId).toString());
|
|
68
|
+
if (parentResult.isFail()) return Result.fail(new FolderPersistenceError(new Error("Parent folder not found. Unable to create the folder path")));
|
|
69
|
+
const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
|
|
70
|
+
return Result.ok(Path.create(slug, parentFolder.path));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const UpdateFolderRepository_UpdateFolderRepository = UpdateFolderRepository.createImplementation({
|
|
74
|
+
implementation: UpdateFolderRepositoryImpl,
|
|
75
|
+
dependencies: [
|
|
76
|
+
UpdateEntryUseCase,
|
|
77
|
+
GetEntryByIdUseCase,
|
|
78
|
+
ListLatestEntriesUseCase,
|
|
79
|
+
FolderModel
|
|
80
|
+
]
|
|
81
|
+
});
|
|
82
|
+
export { UpdateFolderRepository_UpdateFolderRepository as UpdateFolderRepository };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=UpdateFolderRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/UpdateFolder/UpdateFolderRepository.js","sources":["../../../../src/features/folder/UpdateFolder/UpdateFolderRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n type IUpdateFolderRepository,\n UpdateFolderRepository as RepositoryAbstraction\n} from \"./abstractions.js\";\nimport { UpdateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/UpdateEntry\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById\";\nimport { ListLatestEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries\";\nimport { FolderModel } from \"~/domain/folder/abstractions.js\";\nimport type { CmsEntryFolder, Folder, UpdateFolderParams } from \"~/folder/folder.types.js\";\nimport { EntryToFolderMapper } from \"../shared/EntryToFolderMapper.js\";\nimport { FolderPersistenceError, FolderValidationError } from \"~/domain/folder/errors.js\";\nimport { Path } from \"~/utils/Path.js\";\nimport { EntryId } from \"@webiny/api-headless-cms/exports/api/cms/entry.js\";\n\nclass UpdateFolderRepositoryImpl implements IUpdateFolderRepository {\n constructor(\n private updateEntry: UpdateEntryUseCase.Interface,\n private getEntryById: GetEntryByIdUseCase.Interface,\n private listLatestEntries: ListLatestEntriesUseCase.Interface,\n private folderModel: FolderModel.Interface\n ) {}\n\n async execute(\n id: string,\n data: UpdateFolderParams\n ): Promise<Result<Folder, RepositoryAbstraction.Error>> {\n const entryId = EntryId.from(id);\n\n // Get the original folder\n const originalResult = await this.getEntryById.execute<CmsEntryFolder>(\n this.folderModel,\n entryId.toString()\n );\n\n if (originalResult.isFail()) {\n return Result.fail(new FolderPersistenceError(originalResult.error));\n }\n\n const original = EntryToFolderMapper.toFolder(originalResult.value);\n\n // Check if folder with new slug already exists\n const checkResult = await this.checkExistingFolder({\n id,\n type: original.type,\n slug: data.slug || original.slug,\n parentId: data.parentId !== undefined ? data.parentId : original.parentId\n });\n\n if (checkResult.isFail()) {\n return Result.fail(checkResult.error);\n }\n\n // Create new path if slug or parentId changed\n const pathResult = await this.createFolderPath({\n slug: data.slug || original.slug,\n parentId: data.parentId !== undefined ? data.parentId : original.parentId\n });\n\n if (pathResult.isFail()) {\n return Result.fail(pathResult.error);\n }\n\n const result = await this.updateEntry.execute<CmsEntryFolder>(\n this.folderModel,\n entryId.toString(),\n {\n values: {\n ...data,\n path: pathResult.value\n }\n }\n );\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const updatedFolder = EntryToFolderMapper.toFolder(result.value);\n return Result.ok(updatedFolder);\n }\n\n private async checkExistingFolder(params: {\n id: string;\n type: string;\n slug: string;\n parentId?: string | null;\n }): Promise<Result<void, RepositoryAbstraction.Error>> {\n const { id, type, slug, parentId } = params;\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(this.folderModel, {\n where: {\n latest: true,\n entryId_not: id,\n values: {\n type,\n slug,\n parentId\n }\n },\n limit: 1\n });\n\n if (result.isFail()) {\n return Result.fail(new FolderPersistenceError(result.error));\n }\n\n const { entries } = result.value;\n\n if (entries.length > 0) {\n return Result.fail(\n new FolderValidationError(\n `Folder with slug \"${slug}\" already exists at this level.`\n )\n );\n }\n\n return Result.ok();\n }\n\n private async createFolderPath(params: {\n slug: string;\n parentId?: string | null;\n }): Promise<Result<string, RepositoryAbstraction.Error>> {\n const { slug, parentId } = params;\n\n if (!parentId) {\n return Result.ok(Path.create(slug));\n }\n\n const parentResult = await this.getEntryById.execute<CmsEntryFolder>(\n this.folderModel,\n EntryId.from(parentId).toString()\n );\n\n if (parentResult.isFail()) {\n return Result.fail(\n new FolderPersistenceError(\n new Error(\"Parent folder not found. Unable to create the folder path\")\n )\n );\n }\n\n const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);\n return Result.ok(Path.create(slug, parentFolder.path));\n }\n}\n\nexport const UpdateFolderRepository = RepositoryAbstraction.createImplementation({\n implementation: UpdateFolderRepositoryImpl,\n dependencies: [UpdateEntryUseCase, GetEntryByIdUseCase, ListLatestEntriesUseCase, FolderModel]\n});\n"],"names":["UpdateFolderRepositoryImpl","updateEntry","getEntryById","listLatestEntries","folderModel","id","data","entryId","EntryId","originalResult","Result","FolderPersistenceError","original","EntryToFolderMapper","checkResult","undefined","pathResult","result","updatedFolder","params","type","slug","parentId","entries","FolderValidationError","Path","parentResult","Error","parentFolder","UpdateFolderRepository","RepositoryAbstraction","UpdateEntryUseCase","GetEntryByIdUseCase","ListLatestEntriesUseCase","FolderModel"],"mappings":";;;;;;;;;;AAeA,MAAMA;IACF,YACYC,WAAyC,EACzCC,YAA2C,EAC3CC,iBAAqD,EACrDC,WAAkC,CAC5C;aAJUH,WAAW,GAAXA;aACAC,YAAY,GAAZA;aACAC,iBAAiB,GAAjBA;aACAC,WAAW,GAAXA;IACT;IAEH,MAAM,QACFC,EAAU,EACVC,IAAwB,EAC4B;QACpD,MAAMC,UAAUC,QAAQ,IAAI,CAACH;QAG7B,MAAMI,iBAAiB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAClD,IAAI,CAAC,WAAW,EAChBF,QAAQ,QAAQ;QAGpB,IAAIE,eAAe,MAAM,IACrB,OAAOC,OAAO,IAAI,CAAC,IAAIC,uBAAuBF,eAAe,KAAK;QAGtE,MAAMG,WAAWC,oBAAoB,QAAQ,CAACJ,eAAe,KAAK;QAGlE,MAAMK,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC;YAC/CT;YACA,MAAMO,SAAS,IAAI;YACnB,MAAMN,KAAK,IAAI,IAAIM,SAAS,IAAI;YAChC,UAAUN,AAAkBS,WAAlBT,KAAK,QAAQ,GAAiBA,KAAK,QAAQ,GAAGM,SAAS,QAAQ;QAC7E;QAEA,IAAIE,YAAY,MAAM,IAClB,OAAOJ,OAAO,IAAI,CAACI,YAAY,KAAK;QAIxC,MAAME,aAAa,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC3C,MAAMV,KAAK,IAAI,IAAIM,SAAS,IAAI;YAChC,UAAUN,AAAkBS,WAAlBT,KAAK,QAAQ,GAAiBA,KAAK,QAAQ,GAAGM,SAAS,QAAQ;QAC7E;QAEA,IAAII,WAAW,MAAM,IACjB,OAAON,OAAO,IAAI,CAACM,WAAW,KAAK;QAGvC,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CACzC,IAAI,CAAC,WAAW,EAChBV,QAAQ,QAAQ,IAChB;YACI,QAAQ;gBACJ,GAAGD,IAAI;gBACP,MAAMU,WAAW,KAAK;YAC1B;QACJ;QAGJ,IAAIC,OAAO,MAAM,IACb,OAAOP,OAAO,IAAI,CAAC,IAAIC,uBAAuBM,OAAO,KAAK;QAG9D,MAAMC,gBAAgBL,oBAAoB,QAAQ,CAACI,OAAO,KAAK;QAC/D,OAAOP,OAAO,EAAE,CAACQ;IACrB;IAEA,MAAc,oBAAoBC,MAKjC,EAAsD;QACnD,MAAM,EAAEd,EAAE,EAAEe,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAGH;QAErC,MAAMF,SAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAiB,IAAI,CAAC,WAAW,EAAE;YAClF,OAAO;gBACH,QAAQ;gBACR,aAAaZ;gBACb,QAAQ;oBACJe;oBACAC;oBACAC;gBACJ;YACJ;YACA,OAAO;QACX;QAEA,IAAIL,OAAO,MAAM,IACb,OAAOP,OAAO,IAAI,CAAC,IAAIC,uBAAuBM,OAAO,KAAK;QAG9D,MAAM,EAAEM,OAAO,EAAE,GAAGN,OAAO,KAAK;QAEhC,IAAIM,QAAQ,MAAM,GAAG,GACjB,OAAOb,OAAO,IAAI,CACd,IAAIc,sBACA,CAAC,kBAAkB,EAAEH,KAAK,+BAA+B,CAAC;QAKtE,OAAOX,OAAO,EAAE;IACpB;IAEA,MAAc,iBAAiBS,MAG9B,EAAwD;QACrD,MAAM,EAAEE,IAAI,EAAEC,QAAQ,EAAE,GAAGH;QAE3B,IAAI,CAACG,UACD,OAAOZ,OAAO,EAAE,CAACe,KAAK,MAAM,CAACJ;QAGjC,MAAMK,eAAe,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAChD,IAAI,CAAC,WAAW,EAChBlB,QAAQ,IAAI,CAACc,UAAU,QAAQ;QAGnC,IAAII,aAAa,MAAM,IACnB,OAAOhB,OAAO,IAAI,CACd,IAAIC,uBACA,IAAIgB,MAAM;QAKtB,MAAMC,eAAef,oBAAoB,QAAQ,CAACa,aAAa,KAAK;QACpE,OAAOhB,OAAO,EAAE,CAACe,KAAK,MAAM,CAACJ,MAAMO,aAAa,IAAI;IACxD;AACJ;AAEO,MAAMC,gDAAyBC,uBAAAA,oBAA0C,CAAC;IAC7E,gBAAgB9B;IAChB,cAAc;QAAC+B;QAAoBC;QAAqBC;QAA0BC;KAAY;AAClG"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { EventPublisher as EventPublisherAbstraction } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import { UpdateFolderRepository, UpdateFolderUseCase as UseCaseAbstraction } from "./abstractions.js";
|
|
4
|
+
import { GetFolderRepository } from "../GetFolder/abstractions.js";
|
|
5
|
+
import type { Folder, UpdateFolderParams } from "../../../folder/folder.types.js";
|
|
6
|
+
declare class UpdateFolderUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
7
|
+
private eventPublisher;
|
|
8
|
+
private getFolderRepository;
|
|
9
|
+
private repository;
|
|
10
|
+
constructor(eventPublisher: EventPublisherAbstraction.Interface, getFolderRepository: GetFolderRepository.Interface, repository: UpdateFolderRepository.Interface);
|
|
11
|
+
execute(id: string, input: UpdateFolderParams): Promise<Result<Folder, UseCaseAbstraction.Error>>;
|
|
12
|
+
}
|
|
13
|
+
export declare const UpdateFolderUseCase: import("@webiny/di").Implementation<typeof UpdateFolderUseCaseImpl>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Result, createImplementation } from "@webiny/feature/api";
|
|
2
|
+
import { EventPublisher } from "@webiny/api-core/features/eventPublisher/index.js";
|
|
3
|
+
import { UpdateFolderRepository, UpdateFolderUseCase } from "./abstractions.js";
|
|
4
|
+
import { GetFolderRepository } from "../GetFolder/abstractions.js";
|
|
5
|
+
import { FolderAfterUpdateEvent, FolderBeforeUpdateEvent } from "./events.js";
|
|
6
|
+
class UpdateFolderUseCaseImpl {
|
|
7
|
+
constructor(eventPublisher, getFolderRepository, repository){
|
|
8
|
+
this.eventPublisher = eventPublisher;
|
|
9
|
+
this.getFolderRepository = getFolderRepository;
|
|
10
|
+
this.repository = repository;
|
|
11
|
+
}
|
|
12
|
+
async execute(id, input) {
|
|
13
|
+
const useCaseInput = {
|
|
14
|
+
id,
|
|
15
|
+
data: input
|
|
16
|
+
};
|
|
17
|
+
const originalResult = await this.getFolderRepository.execute(id);
|
|
18
|
+
if (originalResult.isFail()) return originalResult;
|
|
19
|
+
const original = originalResult.value;
|
|
20
|
+
const beforeUpdateEvent = new FolderBeforeUpdateEvent({
|
|
21
|
+
original,
|
|
22
|
+
input: useCaseInput
|
|
23
|
+
});
|
|
24
|
+
await this.eventPublisher.publish(beforeUpdateEvent);
|
|
25
|
+
const result = await this.repository.execute(id, input);
|
|
26
|
+
if (result.isFail()) return result;
|
|
27
|
+
const folder = result.value;
|
|
28
|
+
const afterUpdateEvent = new FolderAfterUpdateEvent({
|
|
29
|
+
original,
|
|
30
|
+
folder,
|
|
31
|
+
input: useCaseInput
|
|
32
|
+
});
|
|
33
|
+
await this.eventPublisher.publish(afterUpdateEvent);
|
|
34
|
+
return Result.ok(folder);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const UpdateFolderUseCase_UpdateFolderUseCase = createImplementation({
|
|
38
|
+
abstraction: UpdateFolderUseCase,
|
|
39
|
+
implementation: UpdateFolderUseCaseImpl,
|
|
40
|
+
dependencies: [
|
|
41
|
+
EventPublisher,
|
|
42
|
+
GetFolderRepository,
|
|
43
|
+
UpdateFolderRepository
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
export { UpdateFolderUseCase_UpdateFolderUseCase as UpdateFolderUseCase };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=UpdateFolderUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/UpdateFolder/UpdateFolderUseCase.js","sources":["../../../../src/features/folder/UpdateFolder/UpdateFolderUseCase.ts"],"sourcesContent":["import { createImplementation, Result } from \"@webiny/feature/api\";\nimport {\n EventPublisher,\n EventPublisher as EventPublisherAbstraction\n} from \"@webiny/api-core/features/eventPublisher/index.js\";\nimport {\n UpdateFolderRepository,\n UpdateFolderUseCase as UseCaseAbstraction\n} from \"./abstractions.js\";\nimport { GetFolderRepository } from \"../GetFolder/abstractions.js\";\nimport { FolderAfterUpdateEvent, FolderBeforeUpdateEvent } from \"./events.js\";\nimport type { Folder, UpdateFolderParams } from \"~/folder/folder.types.js\";\n\nclass UpdateFolderUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private eventPublisher: EventPublisherAbstraction.Interface,\n private getFolderRepository: GetFolderRepository.Interface,\n private repository: UpdateFolderRepository.Interface\n ) {}\n\n async execute(\n id: string,\n input: UpdateFolderParams\n ): Promise<Result<Folder, UseCaseAbstraction.Error>> {\n const useCaseInput = { id, data: input };\n\n // Get original folder for events\n const originalResult = await this.getFolderRepository.execute(id);\n\n if (originalResult.isFail()) {\n return originalResult;\n }\n\n const original = originalResult.value;\n\n // Publish before update event\n const beforeUpdateEvent = new FolderBeforeUpdateEvent({\n original,\n input: useCaseInput\n });\n\n await this.eventPublisher.publish(beforeUpdateEvent);\n\n // Execute the update operation\n const result = await this.repository.execute(id, input);\n\n if (result.isFail()) {\n return result;\n }\n\n const folder = result.value;\n\n // Publish after update event\n const afterUpdateEvent = new FolderAfterUpdateEvent({\n original,\n folder,\n input: useCaseInput\n });\n\n await this.eventPublisher.publish(afterUpdateEvent);\n\n return Result.ok(folder);\n }\n}\n\nexport const UpdateFolderUseCase = createImplementation({\n abstraction: UseCaseAbstraction,\n implementation: UpdateFolderUseCaseImpl,\n dependencies: [EventPublisher, GetFolderRepository, UpdateFolderRepository]\n});\n"],"names":["UpdateFolderUseCaseImpl","eventPublisher","getFolderRepository","repository","id","input","useCaseInput","originalResult","original","beforeUpdateEvent","FolderBeforeUpdateEvent","result","folder","afterUpdateEvent","FolderAfterUpdateEvent","Result","UpdateFolderUseCase","createImplementation","UseCaseAbstraction","EventPublisher","GetFolderRepository","UpdateFolderRepository"],"mappings":";;;;;AAaA,MAAMA;IACF,YACYC,cAAmD,EACnDC,mBAAkD,EAClDC,UAA4C,CACtD;aAHUF,cAAc,GAAdA;aACAC,mBAAmB,GAAnBA;aACAC,UAAU,GAAVA;IACT;IAEH,MAAM,QACFC,EAAU,EACVC,KAAyB,EACwB;QACjD,MAAMC,eAAe;YAAEF;YAAI,MAAMC;QAAM;QAGvC,MAAME,iBAAiB,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAACH;QAE9D,IAAIG,eAAe,MAAM,IACrB,OAAOA;QAGX,MAAMC,WAAWD,eAAe,KAAK;QAGrC,MAAME,oBAAoB,IAAIC,wBAAwB;YAClDF;YACA,OAAOF;QACX;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACG;QAGlC,MAAME,SAAS,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAACP,IAAIC;QAEjD,IAAIM,OAAO,MAAM,IACb,OAAOA;QAGX,MAAMC,SAASD,OAAO,KAAK;QAG3B,MAAME,mBAAmB,IAAIC,uBAAuB;YAChDN;YACAI;YACA,OAAON;QACX;QAEA,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAACO;QAElC,OAAOE,OAAO,EAAE,CAACH;IACrB;AACJ;AAEO,MAAMI,0CAAsBC,qBAAqB;IACpD,aAAaC;IACb,gBAAgBlB;IAChB,cAAc;QAACmB;QAAgBC;QAAqBC;KAAuB;AAC/E"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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, UpdateFolderParams } from "../../../folder/folder.types.js";
|
|
4
|
+
import { FolderCannotMoveToNewParent, type FolderNotAuthorizedError, type FolderNotFoundError, type FolderPersistenceError, type FolderValidationError } from "../../../domain/folder/errors.js";
|
|
5
|
+
/**
|
|
6
|
+
* UpdateFolder repository interface
|
|
7
|
+
*/
|
|
8
|
+
export interface IUpdateFolderRepository {
|
|
9
|
+
execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, RepositoryError>>;
|
|
10
|
+
}
|
|
11
|
+
export interface IUpdateFolderRepositoryErrors {
|
|
12
|
+
persistence: FolderPersistenceError;
|
|
13
|
+
validation: FolderValidationError;
|
|
14
|
+
}
|
|
15
|
+
type RepositoryError = IUpdateFolderRepositoryErrors[keyof IUpdateFolderRepositoryErrors];
|
|
16
|
+
/** Persist folder updates. */
|
|
17
|
+
export declare const UpdateFolderRepository: import("@webiny/di").Abstraction<IUpdateFolderRepository>;
|
|
18
|
+
export declare namespace UpdateFolderRepository {
|
|
19
|
+
type Interface = IUpdateFolderRepository;
|
|
20
|
+
type Error = RepositoryError;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* UpdateFolder use case interface
|
|
24
|
+
*/
|
|
25
|
+
export interface IUpdateFolderUseCase {
|
|
26
|
+
execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, UseCaseError>>;
|
|
27
|
+
}
|
|
28
|
+
export interface IUpdateFolderUseCaseErrors {
|
|
29
|
+
notAuthorized: FolderNotAuthorizedError;
|
|
30
|
+
notFound: FolderNotFoundError;
|
|
31
|
+
cannotMoveToNewParent: FolderCannotMoveToNewParent;
|
|
32
|
+
persistence: FolderPersistenceError;
|
|
33
|
+
validation: FolderValidationError;
|
|
34
|
+
}
|
|
35
|
+
type UseCaseError = IUpdateFolderUseCaseErrors[keyof IUpdateFolderUseCaseErrors];
|
|
36
|
+
/** Update a folder. */
|
|
37
|
+
export declare const UpdateFolderUseCase: import("@webiny/di").Abstraction<IUpdateFolderUseCase>;
|
|
38
|
+
export declare namespace UpdateFolderUseCase {
|
|
39
|
+
type Interface = IUpdateFolderUseCase;
|
|
40
|
+
type Return = Promise<Result<Folder, UseCaseError>>;
|
|
41
|
+
type Error = UseCaseError;
|
|
42
|
+
}
|
|
43
|
+
export interface FolderBeforeUpdatePayload {
|
|
44
|
+
original: Folder;
|
|
45
|
+
input: Record<string, any>;
|
|
46
|
+
}
|
|
47
|
+
export interface FolderAfterUpdatePayload {
|
|
48
|
+
original: Folder;
|
|
49
|
+
folder: Folder;
|
|
50
|
+
input: Record<string, any>;
|
|
51
|
+
}
|
|
52
|
+
/** Hook into folder lifecycle before a folder is updated. */
|
|
53
|
+
export declare const FolderBeforeUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>>;
|
|
54
|
+
export declare namespace FolderBeforeUpdateEventHandler {
|
|
55
|
+
type Interface = IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>;
|
|
56
|
+
type Event = DomainEvent<FolderBeforeUpdatePayload>;
|
|
57
|
+
}
|
|
58
|
+
/** Hook into folder lifecycle after a folder is updated. */
|
|
59
|
+
export declare const FolderAfterUpdateEventHandler: import("@webiny/di").Abstraction<IEventHandler<DomainEvent<FolderAfterUpdatePayload>>>;
|
|
60
|
+
export declare namespace FolderAfterUpdateEventHandler {
|
|
61
|
+
type Interface = IEventHandler<DomainEvent<FolderAfterUpdatePayload>>;
|
|
62
|
+
type Event = DomainEvent<FolderAfterUpdatePayload>;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const UpdateFolderRepository = createAbstraction("UpdateFolderRepository");
|
|
3
|
+
const UpdateFolderUseCase = createAbstraction("UpdateFolderUseCase");
|
|
4
|
+
const FolderBeforeUpdateEventHandler = createAbstraction("FolderBeforeUpdateEventHandler");
|
|
5
|
+
const FolderAfterUpdateEventHandler = createAbstraction("FolderAfterUpdateEventHandler");
|
|
6
|
+
export { FolderAfterUpdateEventHandler, FolderBeforeUpdateEventHandler, UpdateFolderRepository, UpdateFolderUseCase };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/folder/UpdateFolder/abstractions.js","sources":["../../../../src/features/folder/UpdateFolder/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, UpdateFolderParams } from \"~/folder/folder.types.js\";\nimport {\n FolderCannotMoveToNewParent,\n type FolderNotAuthorizedError,\n type FolderNotFoundError,\n type FolderPersistenceError,\n type FolderValidationError\n} from \"~/domain/folder/errors.js\";\n\n/**\n * UpdateFolder repository interface\n */\nexport interface IUpdateFolderRepository {\n execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, RepositoryError>>;\n}\n\nexport interface IUpdateFolderRepositoryErrors {\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype RepositoryError = IUpdateFolderRepositoryErrors[keyof IUpdateFolderRepositoryErrors];\n\n/** Persist folder updates. */\nexport const UpdateFolderRepository =\n createAbstraction<IUpdateFolderRepository>(\"UpdateFolderRepository\");\n\nexport namespace UpdateFolderRepository {\n export type Interface = IUpdateFolderRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * UpdateFolder use case interface\n */\nexport interface IUpdateFolderUseCase {\n execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, UseCaseError>>;\n}\n\nexport interface IUpdateFolderUseCaseErrors {\n notAuthorized: FolderNotAuthorizedError;\n notFound: FolderNotFoundError;\n cannotMoveToNewParent: FolderCannotMoveToNewParent;\n persistence: FolderPersistenceError;\n validation: FolderValidationError;\n}\n\ntype UseCaseError = IUpdateFolderUseCaseErrors[keyof IUpdateFolderUseCaseErrors];\n\n/** Update a folder. */\nexport const UpdateFolderUseCase = createAbstraction<IUpdateFolderUseCase>(\"UpdateFolderUseCase\");\n\nexport namespace UpdateFolderUseCase {\n export type Interface = IUpdateFolderUseCase;\n export type Return = Promise<Result<Folder, UseCaseError>>;\n export type Error = UseCaseError;\n}\n\n// Event Payload Types\nexport interface FolderBeforeUpdatePayload {\n original: Folder;\n input: Record<string, any>;\n}\n\nexport interface FolderAfterUpdatePayload {\n original: Folder;\n folder: Folder;\n input: Record<string, any>;\n}\n\n// Event Handler Abstractions\n/** Hook into folder lifecycle before a folder is updated. */\nexport const FolderBeforeUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>\n>(\"FolderBeforeUpdateEventHandler\");\n\nexport namespace FolderBeforeUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderBeforeUpdatePayload>>;\n export type Event = DomainEvent<FolderBeforeUpdatePayload>;\n}\n\n/** Hook into folder lifecycle after a folder is updated. */\nexport const FolderAfterUpdateEventHandler = createAbstraction<\n IEventHandler<DomainEvent<FolderAfterUpdatePayload>>\n>(\"FolderAfterUpdateEventHandler\");\n\nexport namespace FolderAfterUpdateEventHandler {\n export type Interface = IEventHandler<DomainEvent<FolderAfterUpdatePayload>>;\n export type Event = DomainEvent<FolderAfterUpdatePayload>;\n}\n"],"names":["UpdateFolderRepository","createAbstraction","UpdateFolderUseCase","FolderBeforeUpdateEventHandler","FolderAfterUpdateEventHandler"],"mappings":";AA2BO,MAAMA,yBACTC,kBAA2C;AAyBxC,MAAMC,sBAAsBD,kBAAwC;AAsBpE,MAAME,iCAAiCF,kBAE5C;AAQK,MAAMG,gCAAgCH,kBAE3C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { UpdateFolderParams } from "../../../../folder/folder.types.js";
|
|
2
|
+
import { FolderLevelPermissions } from "../../../../features/flp/FolderLevelPermissions/index.js";
|
|
3
|
+
import { UpdateFolderUseCase } from "../abstractions.js";
|
|
4
|
+
import { GetFolderUseCase } from "../../../../features/folder/GetFolder/index.js";
|
|
5
|
+
declare class UpdateFolderWithFolderLevelPermissionsImpl implements UpdateFolderUseCase.Interface {
|
|
6
|
+
private getFolder;
|
|
7
|
+
private folderLevelPermissions;
|
|
8
|
+
private readonly decoretee;
|
|
9
|
+
constructor(getFolder: GetFolderUseCase.Interface, folderLevelPermissions: FolderLevelPermissions.Interface, decoretee: UpdateFolderUseCase.Interface);
|
|
10
|
+
execute(id: string, params: UpdateFolderParams): UpdateFolderUseCase.Return;
|
|
11
|
+
}
|
|
12
|
+
export declare const UpdateFolderWithFolderLevelPermissions: typeof UpdateFolderWithFolderLevelPermissionsImpl;
|
|
13
|
+
export {};
|