@webiny/api-aco 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.e9333b3f0b
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 +132 -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/constants.js +2 -1
- package/constants.js.map +1 -1
- package/createAcoGraphQL.d.ts +8 -4
- package/createAcoGraphQL.js +56 -97
- package/createAcoGraphQL.js.map +1 -1
- package/domain/folder/abstractions.d.ts +12 -5
- package/domain/folder/abstractions.js +2 -5
- package/domain/folder/abstractions.js.map +1 -1
- package/domain/folder/errors.js +42 -47
- package/domain/folder/errors.js.map +1 -1
- package/domain/folder/folder.model.js +53 -36
- package/domain/folder/folder.model.js.map +1 -1
- package/exports/api/aco/flp.d.ts +1 -0
- package/exports/api/aco/flp.js +1 -2
- package/exports/api/aco/folder.d.ts +2 -1
- package/exports/api/aco/folder.js +5 -7
- package/features/ai/CreateFolderTool.d.ts +51 -0
- package/features/ai/CreateFolderTool.js +65 -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 +50 -0
- package/features/ai/DeleteFolderTool.js +62 -0
- package/features/ai/DeleteFolderTool.js.map +1 -0
- package/features/ai/GrantFolderAccessTool.d.ts +79 -0
- package/features/ai/GrantFolderAccessTool.js +87 -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/NotifyFolderChange/NotifyFolderChangeUseCase.d.ts +11 -0
- package/features/ai/NotifyFolderChange/NotifyFolderChangeUseCase.js +37 -0
- package/features/ai/NotifyFolderChange/NotifyFolderChangeUseCase.js.map +1 -0
- package/features/ai/NotifyFolderChange/abstractions.d.ts +20 -0
- package/features/ai/NotifyFolderChange/abstractions.js +8 -0
- package/features/ai/NotifyFolderChange/abstractions.js.map +1 -0
- package/features/ai/NotifyFolderChange/index.d.ts +1 -0
- package/features/ai/NotifyFolderChange/index.js +1 -0
- package/features/ai/RevokeFolderAccessTool.d.ts +65 -0
- package/features/ai/RevokeFolderAccessTool.js +76 -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 +27 -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.js +27 -31
- package/features/cms/decorators/CreateEntryRevisionFromWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/CreateEntryWithFlpDecorator.js +22 -25
- package/features/cms/decorators/CreateEntryWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js +27 -31
- package/features/cms/decorators/DeleteEntryRevisionWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.js +29 -33
- package/features/cms/decorators/DeleteEntryWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js +25 -30
- package/features/cms/decorators/GetEntryByIdWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/GetEntryWithFlpDecorator.js +25 -30
- package/features/cms/decorators/GetEntryWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js +31 -35
- package/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js +31 -34
- package/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js +28 -28
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js +28 -27
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +28 -28
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +28 -28
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/MoveEntryWithFlpDecorator.d.ts +1 -1
- package/features/cms/decorators/MoveEntryWithFlpDecorator.js +37 -51
- package/features/cms/decorators/MoveEntryWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.d.ts +1 -2
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.js +27 -31
- package/features/cms/decorators/UpdateEntryWithFlpDecorator.js.map +1 -1
- package/features/cms/feature.js +19 -25
- package/features/cms/feature.js.map +1 -1
- package/features/cms/index.js +0 -2
- package/features/flp/CreateFlp/CreateFlpUseCase.d.ts +3 -3
- package/features/flp/CreateFlp/CreateFlpUseCase.js +26 -33
- package/features/flp/CreateFlp/CreateFlpUseCase.js.map +1 -1
- package/features/flp/CreateFlp/abstractions.js +2 -5
- package/features/flp/CreateFlp/abstractions.js.map +1 -1
- package/features/flp/CreateFlp/feature.d.ts +1 -6
- package/features/flp/CreateFlp/feature.js +8 -8
- package/features/flp/CreateFlp/feature.js.map +1 -1
- package/features/flp/CreateFlp/index.js +0 -2
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js +27 -27
- package/features/flp/CreateFlpOnFolderCreated/CreateFlpOnFolderCreatedHandler.js.map +1 -1
- package/features/flp/CreateFlpOnFolderCreated/feature.js +6 -5
- package/features/flp/CreateFlpOnFolderCreated/feature.js.map +1 -1
- package/features/flp/CreateFlpOnFolderCreated/index.js +0 -2
- package/features/flp/DeleteFlp/DeleteFlpUseCase.d.ts +3 -3
- package/features/flp/DeleteFlp/DeleteFlpUseCase.js +17 -18
- package/features/flp/DeleteFlp/DeleteFlpUseCase.js.map +1 -1
- package/features/flp/DeleteFlp/abstractions.js +2 -5
- package/features/flp/DeleteFlp/abstractions.js.map +1 -1
- package/features/flp/DeleteFlp/feature.d.ts +1 -6
- package/features/flp/DeleteFlp/feature.js +8 -8
- package/features/flp/DeleteFlp/feature.js.map +1 -1
- package/features/flp/DeleteFlp/index.js +0 -2
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js +27 -27
- package/features/flp/DeleteFlpOnFolderDeleted/DeleteFlpOnFolderDeletedHandler.js.map +1 -1
- package/features/flp/DeleteFlpOnFolderDeleted/feature.js +6 -5
- package/features/flp/DeleteFlpOnFolderDeleted/feature.js.map +1 -1
- package/features/flp/DeleteFlpOnFolderDeleted/index.js +0 -2
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.d.ts +3 -3
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js +88 -109
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
- 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.js +2 -2
- package/features/flp/FolderLevelPermissions/abstractions.js.map +1 -1
- package/features/flp/FolderLevelPermissions/feature.js +6 -5
- package/features/flp/FolderLevelPermissions/feature.js.map +1 -1
- package/features/flp/FolderLevelPermissions/index.d.ts +1 -0
- package/features/flp/FolderLevelPermissions/index.js +1 -2
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js +14 -36
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/CanAccessFolder.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js +0 -3
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js +0 -2
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js +12 -29
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/CanAccessFolderContent.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js +0 -3
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js +0 -2
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js +5 -4
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/CanCreateFolderInRoot.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js +0 -3
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js +0 -2
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js +5 -4
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/CheckNotInheritedPermissions.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js +0 -3
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js +0 -2
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js +43 -66
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/DefaultPermissionsMerger.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js +10 -9
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissions.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js +22 -33
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/GetDefaultPermissionsWithTeams.js.map +1 -1
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js +0 -3
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js +0 -2
- package/features/flp/FolderLevelPermissions/useCases/index.js +0 -2
- package/features/flp/GetFlp/GetFlpUseCase.js +8 -7
- package/features/flp/GetFlp/GetFlpUseCase.js.map +1 -1
- package/features/flp/GetFlp/abstractions.js +2 -2
- package/features/flp/GetFlp/abstractions.js.map +1 -1
- 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 +1 -1
- package/features/flp/GetFlp/feature.js +8 -8
- package/features/flp/GetFlp/feature.js.map +1 -1
- package/features/flp/GetFlp/index.js +0 -2
- package/features/flp/ListFlps/ListFlpsUseCase.js +8 -7
- package/features/flp/ListFlps/ListFlpsUseCase.js.map +1 -1
- package/features/flp/ListFlps/abstractions.js +2 -2
- package/features/flp/ListFlps/abstractions.js.map +1 -1
- 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 +1 -1
- package/features/flp/ListFlps/feature.js +8 -8
- package/features/flp/ListFlps/feature.js.map +1 -1
- package/features/flp/ListFlps/index.js +0 -2
- package/features/flp/UpdateFlp/UpdateFlpUseCase.d.ts +15 -8
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js +130 -186
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -1
- package/features/flp/UpdateFlp/abstractions.d.ts +6 -2
- package/features/flp/UpdateFlp/abstractions.js +2 -5
- package/features/flp/UpdateFlp/abstractions.js.map +1 -1
- package/features/flp/UpdateFlp/feature.d.ts +1 -6
- package/features/flp/UpdateFlp/feature.js +12 -8
- package/features/flp/UpdateFlp/feature.js.map +1 -1
- package/features/flp/UpdateFlp/index.js +0 -2
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js +29 -29
- package/features/flp/UpdateFlpOnFolderUpdated/UpdateFlpOnFolderUpdatedHandler.js.map +1 -1
- package/features/flp/UpdateFlpOnFolderUpdated/feature.js +6 -5
- package/features/flp/UpdateFlpOnFolderUpdated/feature.js.map +1 -1
- package/features/flp/UpdateFlpOnFolderUpdated/index.js +0 -2
- 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 +3 -3
- package/features/folder/CreateFolder/CreateFolderRepository.js +71 -91
- package/features/folder/CreateFolder/CreateFolderRepository.js.map +1 -1
- package/features/folder/CreateFolder/CreateFolderUseCase.js +27 -30
- package/features/folder/CreateFolder/CreateFolderUseCase.js.map +1 -1
- package/features/folder/CreateFolder/abstractions.js +5 -22
- package/features/folder/CreateFolder/abstractions.js.map +1 -1
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.d.ts +9 -1
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js +45 -33
- package/features/folder/CreateFolder/decorators/CreateFolderWithFolderLevelPermissions.js.map +1 -1
- package/features/folder/CreateFolder/events.js +16 -14
- package/features/folder/CreateFolder/events.js.map +1 -1
- package/features/folder/CreateFolder/feature.js +8 -7
- package/features/folder/CreateFolder/feature.js.map +1 -1
- package/features/folder/CreateFolder/index.js +1 -3
- package/features/folder/DeleteFolder/DeleteFolderRepository.d.ts +3 -3
- package/features/folder/DeleteFolder/DeleteFolderRepository.js +24 -21
- package/features/folder/DeleteFolder/DeleteFolderRepository.js.map +1 -1
- package/features/folder/DeleteFolder/DeleteFolderUseCase.js +35 -43
- package/features/folder/DeleteFolder/DeleteFolderUseCase.js.map +1 -1
- package/features/folder/DeleteFolder/abstractions.js +5 -22
- package/features/folder/DeleteFolder/abstractions.js.map +1 -1
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.d.ts +1 -1
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js +21 -20
- package/features/folder/DeleteFolder/decorators/DeleteFolderWithFolderLevelPermissions.js.map +1 -1
- package/features/folder/DeleteFolder/events.js +16 -14
- package/features/folder/DeleteFolder/events.js.map +1 -1
- package/features/folder/DeleteFolder/feature.js +8 -7
- package/features/folder/DeleteFolder/feature.js.map +1 -1
- package/features/folder/DeleteFolder/index.js +1 -3
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js +47 -44
- package/features/folder/EnsureFolderIsEmpty/EnsureFolderIsEmpty.js.map +1 -1
- package/features/folder/EnsureFolderIsEmpty/abstractions.js +2 -2
- package/features/folder/EnsureFolderIsEmpty/abstractions.js.map +1 -1
- package/features/folder/EnsureFolderIsEmpty/feature.js +6 -5
- package/features/folder/EnsureFolderIsEmpty/feature.js.map +1 -1
- package/features/folder/EnsureFolderIsEmpty/index.js +0 -2
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js +16 -20
- package/features/folder/EnsureFolderIsEmptyOnDelete/GenericFolderBeforeDeleteHandler.js.map +1 -1
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js +6 -12
- package/features/folder/EnsureFolderIsEmptyOnDelete/feature.js.map +1 -1
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.js +0 -2
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js +40 -44
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/ModelFolderBeforeDeleteHandler.js.map +1 -1
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js +6 -5
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/feature.js.map +1 -1
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js +0 -2
- 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 +3 -3
- package/features/folder/GetAncestors/GetAncestorsRepository.js +47 -76
- package/features/folder/GetAncestors/GetAncestorsRepository.js.map +1 -1
- package/features/folder/GetAncestors/GetAncestorsUseCase.js +14 -11
- package/features/folder/GetAncestors/GetAncestorsUseCase.js.map +1 -1
- package/features/folder/GetAncestors/abstractions.js +3 -14
- package/features/folder/GetAncestors/abstractions.js.map +1 -1
- package/features/folder/GetAncestors/feature.js +7 -6
- package/features/folder/GetAncestors/feature.js.map +1 -1
- package/features/folder/GetAncestors/index.js +0 -2
- package/features/folder/GetFolder/GetFolderRepository.d.ts +3 -3
- package/features/folder/GetFolder/GetFolderRepository.js +23 -20
- package/features/folder/GetFolder/GetFolderRepository.js.map +1 -1
- package/features/folder/GetFolder/GetFolderUseCase.js +14 -11
- package/features/folder/GetFolder/GetFolderUseCase.js.map +1 -1
- package/features/folder/GetFolder/abstractions.js +5 -21
- package/features/folder/GetFolder/abstractions.js.map +1 -1
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.d.ts +8 -8
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js +23 -26
- package/features/folder/GetFolder/decorators/GetFolderWithFolderLevelPermissions.js.map +1 -1
- package/features/folder/GetFolder/feature.js +8 -7
- package/features/folder/GetFolder/feature.js.map +1 -1
- package/features/folder/GetFolder/index.js +0 -2
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.d.ts +3 -3
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js +70 -87
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -1
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js +14 -11
- package/features/folder/GetFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -1
- package/features/folder/GetFolderHierarchy/abstractions.js +3 -14
- package/features/folder/GetFolderHierarchy/abstractions.js.map +1 -1
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js +55 -56
- package/features/folder/GetFolderHierarchy/decorators/GetFolderHierarchyWithFolderLevelPermissions.js.map +1 -1
- package/features/folder/GetFolderHierarchy/feature.js +8 -7
- package/features/folder/GetFolderHierarchy/feature.js.map +1 -1
- package/features/folder/GetFolderHierarchy/index.js +0 -2
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js +65 -58
- package/features/folder/ListFolderLevelPermissionsTargets/ListFolderLevelPermissionsTargetsUseCase.js.map +1 -1
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js +2 -5
- package/features/folder/ListFolderLevelPermissionsTargets/abstractions.js.map +1 -1
- package/features/folder/ListFolderLevelPermissionsTargets/feature.js +6 -5
- package/features/folder/ListFolderLevelPermissionsTargets/feature.js.map +1 -1
- package/features/folder/ListFolderLevelPermissionsTargets/index.js +0 -2
- package/features/folder/ListFolders/ListFoldersRepository.d.ts +3 -3
- package/features/folder/ListFolders/ListFoldersRepository.js +41 -42
- package/features/folder/ListFolders/ListFoldersRepository.js.map +1 -1
- package/features/folder/ListFolders/ListFoldersUseCase.js +14 -11
- package/features/folder/ListFolders/ListFoldersUseCase.js.map +1 -1
- package/features/folder/ListFolders/abstractions.js +3 -14
- package/features/folder/ListFolders/abstractions.js.map +1 -1
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js +55 -67
- package/features/folder/ListFolders/decorators/ListFoldersWithFolderLevelPermissions.js.map +1 -1
- package/features/folder/ListFolders/feature.js +8 -7
- package/features/folder/ListFolders/feature.js.map +1 -1
- package/features/folder/ListFolders/index.js +0 -2
- package/features/folder/UpdateFolder/UpdateFolderRepository.d.ts +3 -3
- package/features/folder/UpdateFolder/UpdateFolderRepository.js +70 -93
- package/features/folder/UpdateFolder/UpdateFolderRepository.js.map +1 -1
- package/features/folder/UpdateFolder/UpdateFolderUseCase.js +38 -45
- package/features/folder/UpdateFolder/UpdateFolderUseCase.js.map +1 -1
- package/features/folder/UpdateFolder/abstractions.js +5 -22
- package/features/folder/UpdateFolder/abstractions.js.map +1 -1
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.d.ts +14 -1
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js +91 -62
- package/features/folder/UpdateFolder/decorators/UpdateFolderWithFolderLevelPermissions.js.map +1 -1
- package/features/folder/UpdateFolder/events.js +16 -14
- package/features/folder/UpdateFolder/events.js.map +1 -1
- package/features/folder/UpdateFolder/feature.js +8 -7
- package/features/folder/UpdateFolder/feature.js.map +1 -1
- package/features/folder/UpdateFolder/index.js +0 -2
- package/features/folder/shared/EntryToFolderMapper.js +20 -19
- package/features/folder/shared/EntryToFolderMapper.js.map +1 -1
- package/features/folder/shared/abstractions.d.ts +14 -0
- package/features/folder/shared/abstractions.js +5 -2
- package/features/folder/shared/abstractions.js.map +1 -1
- package/filter/filter.crud.js +28 -31
- package/filter/filter.crud.js.map +1 -1
- package/filter/filter.gql.d.ts +2 -3
- package/filter/filter.gql.js +72 -54
- package/filter/filter.gql.js.map +1 -1
- package/filter/filter.model.js +45 -35
- package/filter/filter.model.js.map +1 -1
- package/filter/filter.so.d.ts +8 -2
- package/filter/filter.so.js +85 -93
- package/filter/filter.so.js.map +1 -1
- package/filter/filter.types.js +5 -4
- package/filter/filter.types.js.map +1 -1
- package/flp/flp.crud.js +69 -86
- package/flp/flp.crud.js.map +1 -1
- package/flp/flp.types.d.ts +2 -1
- package/flp/flp.types.js +0 -3
- package/flp/index.d.ts +0 -1
- package/flp/index.js +0 -3
- package/flp/tasks/createFlp.task.d.ts +14 -8
- package/flp/tasks/createFlp.task.js +37 -28
- package/flp/tasks/createFlp.task.js.map +1 -1
- package/flp/tasks/deleteFlp.task.d.ts +14 -8
- package/flp/tasks/deleteFlp.task.js +37 -28
- package/flp/tasks/deleteFlp.task.js.map +1 -1
- package/flp/tasks/index.d.ts +0 -1
- package/flp/tasks/index.js +5 -17
- package/flp/tasks/index.js.map +1 -1
- package/flp/tasks/syncFlp.task.d.ts +14 -8
- package/flp/tasks/syncFlp.task.js +107 -114
- package/flp/tasks/syncFlp.task.js.map +1 -1
- package/flp/tasks/updateFlp.task.d.ts +14 -8
- package/flp/tasks/updateFlp.task.js +48 -33
- package/flp/tasks/updateFlp.task.js.map +1 -1
- package/folder/createFolderModelModifier.js +50 -50
- package/folder/createFolderModelModifier.js.map +1 -1
- package/folder/createFolderTypeDefs.js +43 -51
- package/folder/createFolderTypeDefs.js.map +1 -1
- package/folder/folder.gql.d.ts +1 -1
- package/folder/folder.gql.js +109 -136
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.types.js +0 -3
- package/index.d.ts +1 -6
- package/index.js +2 -9
- package/package.json +30 -29
- package/types.d.ts +1 -1
- package/types.js +5 -4
- package/types.js.map +1 -1
- package/utils/FoldersCacheFactory.js +20 -19
- package/utils/FoldersCacheFactory.js.map +1 -1
- package/utils/ListCache.js +20 -19
- package/utils/ListCache.js.map +1 -1
- package/utils/Path.js +5 -6
- package/utils/Path.js.map +1 -1
- package/utils/compress.js +8 -7
- package/utils/compress.js.map +1 -1
- package/utils/createListSort.js +4 -7
- package/utils/createListSort.js.map +1 -1
- package/utils/createOperationsWrapper.d.ts +5 -2
- package/utils/createOperationsWrapper.js +12 -19
- package/utils/createOperationsWrapper.js.map +1 -1
- package/utils/decorators/CmsEntriesCrudDecorators.js +169 -196
- package/utils/decorators/CmsEntriesCrudDecorators.js.map +1 -1
- package/utils/decorators/FilterEntriesByFolderFactory.js +18 -19
- package/utils/decorators/FilterEntriesByFolderFactory.js.map +1 -1
- package/utils/decorators/ListEntriesFactory.js +65 -98
- package/utils/decorators/ListEntriesFactory.js.map +1 -1
- package/utils/decorators/hasRootFolderId.js +6 -12
- package/utils/decorators/hasRootFolderId.js.map +1 -1
- package/utils/decorators/isPageModel.js +5 -10
- package/utils/decorators/isPageModel.js.map +1 -1
- package/utils/ensureAuthentication.js +6 -7
- package/utils/ensureAuthentication.js.map +1 -1
- package/utils/pickEntryFieldValues.js +24 -18
- package/utils/pickEntryFieldValues.js.map +1 -1
- package/utils/resolve.d.ts +2 -2
- package/utils/resolve.js +8 -7
- package/utils/resolve.js.map +1 -1
- package/createAcoContext.d.ts +0 -9
- package/createAcoContext.js +0 -137
- package/createAcoContext.js.map +0 -1
- package/createAcoStorageOperations.d.ts +0 -12
- package/createAcoStorageOperations.js +0 -10
- package/createAcoStorageOperations.js.map +0 -1
- package/createAcoTasks.d.ts +0 -1
- package/createAcoTasks.js +0 -15
- package/createAcoTasks.js.map +0 -1
- package/exports/api/aco/flp.js.map +0 -1
- package/exports/api/aco/folder.js.map +0 -1
- package/features/cms/index.js.map +0 -1
- package/features/flp/CreateFlp/index.js.map +0 -1
- package/features/flp/CreateFlpOnFolderCreated/index.js.map +0 -1
- package/features/flp/DeleteFlp/index.js.map +0 -1
- package/features/flp/DeleteFlpOnFolderDeleted/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/ICanAccessFolder.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolder/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/ICanAccessFolderContent.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CanAccessFolderContent/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/ICanCreateFolderInRoot.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CanCreateFolderInRoot/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/ICheckNotInheritedPermissions.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/CheckNotInheritedPermissions/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/IGetDefaultPermissions.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/GetDefaultPermissions/index.js.map +0 -1
- package/features/flp/FolderLevelPermissions/useCases/index.js.map +0 -1
- package/features/flp/GetFlp/index.js.map +0 -1
- package/features/flp/ListFlps/index.js.map +0 -1
- package/features/flp/UpdateFlp/index.js.map +0 -1
- package/features/flp/UpdateFlpOnFolderUpdated/index.js.map +0 -1
- package/features/folder/CreateFolder/index.js.map +0 -1
- package/features/folder/DeleteFolder/index.js.map +0 -1
- package/features/folder/EnsureFolderIsEmpty/index.js.map +0 -1
- package/features/folder/EnsureFolderIsEmptyOnDelete/index.js.map +0 -1
- package/features/folder/EnsureHcmsFolderIsEmptyOnDelete/index.js.map +0 -1
- package/features/folder/GetAncestors/index.js.map +0 -1
- package/features/folder/GetFolder/index.js.map +0 -1
- package/features/folder/GetFolderHierarchy/index.js.map +0 -1
- package/features/folder/ListFolderLevelPermissionsTargets/index.js.map +0 -1
- package/features/folder/ListFolders/index.js.map +0 -1
- package/features/folder/UpdateFolder/index.js.map +0 -1
- package/flp/flp.so.d.ts +0 -20
- package/flp/flp.so.js +0 -220
- package/flp/flp.so.js.map +0 -1
- package/flp/flp.types.js.map +0 -1
- package/flp/index.js.map +0 -1
- package/folder/folder.types.js.map +0 -1
- package/index.js.map +0 -1
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { createImplementation } from "@webiny/feature/api";
|
|
2
|
-
import {
|
|
2
|
+
import { ListFoldersRepository, ListFoldersUseCase } from "./abstractions.js";
|
|
3
3
|
class ListFoldersUseCaseImpl {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
constructor(repository){
|
|
5
|
+
this.repository = repository;
|
|
6
|
+
}
|
|
7
|
+
async execute(params) {
|
|
8
|
+
return await this.repository.execute(params);
|
|
9
|
+
}
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
const ListFoldersUseCase_ListFoldersUseCase = createImplementation({
|
|
12
|
+
abstraction: ListFoldersUseCase,
|
|
13
|
+
implementation: ListFoldersUseCaseImpl,
|
|
14
|
+
dependencies: [
|
|
15
|
+
ListFoldersRepository
|
|
16
|
+
]
|
|
15
17
|
});
|
|
18
|
+
export { ListFoldersUseCase_ListFoldersUseCase as ListFoldersUseCase };
|
|
16
19
|
|
|
17
20
|
//# sourceMappingURL=ListFoldersUseCase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -1,17 +1,6 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/** Fetch folders from storage. */
|
|
8
|
-
export const ListFoldersRepository = createAbstraction("ListFoldersRepository");
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* ListFolders use case interface
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/** List folders with filtering. */
|
|
15
|
-
export const ListFoldersUseCase = createAbstraction("ListFoldersUseCase");
|
|
2
|
+
const ListFoldersRepository = createAbstraction("ListFoldersRepository");
|
|
3
|
+
const ListFoldersUseCase = createAbstraction("ListFoldersUseCase");
|
|
4
|
+
export { ListFoldersRepository, ListFoldersUseCase };
|
|
16
5
|
|
|
17
6
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -3,75 +3,63 @@ import { ListFoldersUseCase } from "../abstractions.js";
|
|
|
3
3
|
import { FolderLevelPermissions } from "../../../flp/FolderLevelPermissions/index.js";
|
|
4
4
|
import { ROOT_FOLDER } from "../../../../constants.js";
|
|
5
5
|
class ListFoldersWithFolderLevelPermissionsImpl {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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);
|
|
15
55
|
}
|
|
16
|
-
const {
|
|
17
|
-
folders,
|
|
18
|
-
meta
|
|
19
|
-
} = result.value;
|
|
20
|
-
|
|
21
|
-
// Fetch FLP records for ROOT folders and populate the catalog.
|
|
22
|
-
const rootFlps = await this.folderLevelPermissions.listFolderLevelPermissions({
|
|
23
|
-
where: {
|
|
24
|
-
type: params.where.type,
|
|
25
|
-
parentId: ROOT_FOLDER
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
rootFlps.forEach(flp => this.setFlp(flp.id, flp.permissions));
|
|
29
|
-
|
|
30
|
-
// Fetch FLP for folders not already in the catalog.
|
|
31
|
-
await Promise.all(folders.map(async folder => {
|
|
32
|
-
if (!this.hasFlp(folder.id)) {
|
|
33
|
-
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folder.id);
|
|
34
|
-
this.setFlp(folder.id, permissions);
|
|
35
|
-
}
|
|
36
|
-
}));
|
|
37
|
-
|
|
38
|
-
// Filter folders based on permissions.
|
|
39
|
-
const foldersWithPermissions = await Promise.all(folders.map(async folder => {
|
|
40
|
-
const permissions = this.getFlp(folder.id);
|
|
41
|
-
if (!permissions) {
|
|
42
|
-
return null;
|
|
43
|
-
}
|
|
44
|
-
const canAccessFolder = await this.folderLevelPermissions.canAccessFolder({
|
|
45
|
-
permissions,
|
|
46
|
-
rwd: "r"
|
|
47
|
-
});
|
|
48
|
-
if (!canAccessFolder) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
const folderWithFlp = {
|
|
52
|
-
...folder,
|
|
53
|
-
permissions
|
|
54
|
-
};
|
|
55
|
-
return canAccessFolder ? folderWithFlp : null;
|
|
56
|
-
}));
|
|
57
|
-
return Result.ok({
|
|
58
|
-
folders: foldersWithPermissions.filter(Boolean),
|
|
59
|
-
meta
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
hasFlp(id) {
|
|
63
|
-
return this.flpCatalog.has(id);
|
|
64
|
-
}
|
|
65
|
-
getFlp(id) {
|
|
66
|
-
return this.flpCatalog.get(id);
|
|
67
|
-
}
|
|
68
|
-
setFlp(id, permissions) {
|
|
69
|
-
this.flpCatalog.set(id, permissions);
|
|
70
|
-
}
|
|
71
56
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
57
|
+
const ListFoldersWithFolderLevelPermissions = ListFoldersUseCase.createDecorator({
|
|
58
|
+
decorator: ListFoldersWithFolderLevelPermissionsImpl,
|
|
59
|
+
dependencies: [
|
|
60
|
+
FolderLevelPermissions
|
|
61
|
+
]
|
|
75
62
|
});
|
|
63
|
+
export { ListFoldersWithFolderLevelPermissions };
|
|
76
64
|
|
|
77
65
|
//# sourceMappingURL=ListFoldersWithFolderLevelPermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -2,13 +2,14 @@ import { createFeature } from "@webiny/feature/api";
|
|
|
2
2
|
import { ListFoldersRepository } from "./ListFoldersRepository.js";
|
|
3
3
|
import { ListFoldersUseCase } from "./ListFoldersUseCase.js";
|
|
4
4
|
import { ListFoldersWithFolderLevelPermissions } from "./decorators/ListFoldersWithFolderLevelPermissions.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
12
|
});
|
|
13
|
+
export { ListFoldersFeature };
|
|
13
14
|
|
|
14
15
|
//# sourceMappingURL=feature.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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"}
|
|
@@ -3,14 +3,14 @@ import { type IUpdateFolderRepository, UpdateFolderRepository as RepositoryAbstr
|
|
|
3
3
|
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry";
|
|
4
4
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
|
|
5
5
|
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
6
|
-
import {
|
|
6
|
+
import { FolderModelProvider } from "../../../domain/folder/abstractions.js";
|
|
7
7
|
import type { Folder, UpdateFolderParams } from "../../../folder/folder.types.js";
|
|
8
8
|
declare class UpdateFolderRepositoryImpl implements IUpdateFolderRepository {
|
|
9
9
|
private updateEntry;
|
|
10
10
|
private getEntryById;
|
|
11
11
|
private listLatestEntries;
|
|
12
|
-
private
|
|
13
|
-
constructor(updateEntry: UpdateEntryUseCase.Interface, getEntryById: GetEntryByIdUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface,
|
|
12
|
+
private folderModelProvider;
|
|
13
|
+
constructor(updateEntry: UpdateEntryUseCase.Interface, getEntryById: GetEntryByIdUseCase.Interface, listLatestEntries: ListLatestEntriesUseCase.Interface, folderModelProvider: FolderModelProvider.Interface);
|
|
14
14
|
execute(id: string, data: UpdateFolderParams): Promise<Result<Folder, RepositoryAbstraction.Error>>;
|
|
15
15
|
private checkExistingFolder;
|
|
16
16
|
private createFolderPath;
|
|
@@ -1,110 +1,87 @@
|
|
|
1
1
|
import { Result } from "@webiny/feature/api";
|
|
2
|
-
import { UpdateFolderRepository
|
|
2
|
+
import { UpdateFolderRepository } from "./abstractions.js";
|
|
3
3
|
import { UpdateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/UpdateEntry";
|
|
4
4
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById";
|
|
5
5
|
import { ListLatestEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries";
|
|
6
|
-
import {
|
|
6
|
+
import { FolderModelProvider } from "../../../domain/folder/abstractions.js";
|
|
7
7
|
import { EntryToFolderMapper } from "../shared/EntryToFolderMapper.js";
|
|
8
8
|
import { FolderPersistenceError, FolderValidationError } from "../../../domain/folder/errors.js";
|
|
9
9
|
import { Path } from "../../../utils/Path.js";
|
|
10
10
|
import { EntryId } from "@webiny/api-headless-cms/exports/api/cms/entry.js";
|
|
11
11
|
class UpdateFolderRepositoryImpl {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
async execute(id, data) {
|
|
19
|
-
const entryId = EntryId.from(id);
|
|
20
|
-
|
|
21
|
-
// Get the original folder
|
|
22
|
-
const originalResult = await this.getEntryById.execute(this.folderModel, entryId.toString());
|
|
23
|
-
if (originalResult.isFail()) {
|
|
24
|
-
return Result.fail(new FolderPersistenceError(originalResult.error));
|
|
25
|
-
}
|
|
26
|
-
const original = EntryToFolderMapper.toFolder(originalResult.value);
|
|
27
|
-
|
|
28
|
-
// Check if folder with new slug already exists
|
|
29
|
-
const checkResult = await this.checkExistingFolder({
|
|
30
|
-
id,
|
|
31
|
-
type: original.type,
|
|
32
|
-
slug: data.slug || original.slug,
|
|
33
|
-
parentId: data.parentId !== undefined ? data.parentId : original.parentId
|
|
34
|
-
});
|
|
35
|
-
if (checkResult.isFail()) {
|
|
36
|
-
return Result.fail(checkResult.error);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Create new path if slug or parentId changed
|
|
40
|
-
const pathResult = await this.createFolderPath({
|
|
41
|
-
slug: data.slug || original.slug,
|
|
42
|
-
parentId: data.parentId !== undefined ? data.parentId : original.parentId
|
|
43
|
-
});
|
|
44
|
-
if (pathResult.isFail()) {
|
|
45
|
-
return Result.fail(pathResult.error);
|
|
46
|
-
}
|
|
47
|
-
const result = await this.updateEntry.execute(this.folderModel, entryId.toString(), {
|
|
48
|
-
values: {
|
|
49
|
-
...data,
|
|
50
|
-
path: pathResult.value
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
if (result.isFail()) {
|
|
54
|
-
return Result.fail(new FolderPersistenceError(result.error));
|
|
55
|
-
}
|
|
56
|
-
const updatedFolder = EntryToFolderMapper.toFolder(result.value);
|
|
57
|
-
return Result.ok(updatedFolder);
|
|
58
|
-
}
|
|
59
|
-
async checkExistingFolder(params) {
|
|
60
|
-
const {
|
|
61
|
-
id,
|
|
62
|
-
type,
|
|
63
|
-
slug,
|
|
64
|
-
parentId
|
|
65
|
-
} = params;
|
|
66
|
-
const result = await this.listLatestEntries.execute(this.folderModel, {
|
|
67
|
-
where: {
|
|
68
|
-
latest: true,
|
|
69
|
-
entryId_not: id,
|
|
70
|
-
values: {
|
|
71
|
-
type,
|
|
72
|
-
slug,
|
|
73
|
-
parentId
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
limit: 1
|
|
77
|
-
});
|
|
78
|
-
if (result.isFail()) {
|
|
79
|
-
return Result.fail(new FolderPersistenceError(result.error));
|
|
12
|
+
constructor(updateEntry, getEntryById, listLatestEntries, folderModelProvider){
|
|
13
|
+
this.updateEntry = updateEntry;
|
|
14
|
+
this.getEntryById = getEntryById;
|
|
15
|
+
this.listLatestEntries = listLatestEntries;
|
|
16
|
+
this.folderModelProvider = folderModelProvider;
|
|
80
17
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
18
|
+
async execute(id, data) {
|
|
19
|
+
const folderModel = await this.folderModelProvider.get();
|
|
20
|
+
const entryId = EntryId.from(id);
|
|
21
|
+
const originalResult = await this.getEntryById.execute(folderModel, entryId.toString());
|
|
22
|
+
if (originalResult.isFail()) return Result.fail(new FolderPersistenceError(originalResult.error));
|
|
23
|
+
const original = EntryToFolderMapper.toFolder(originalResult.value);
|
|
24
|
+
const checkResult = await this.checkExistingFolder({
|
|
25
|
+
id,
|
|
26
|
+
type: original.type,
|
|
27
|
+
slug: data.slug || original.slug,
|
|
28
|
+
parentId: void 0 !== data.parentId ? data.parentId : original.parentId
|
|
29
|
+
});
|
|
30
|
+
if (checkResult.isFail()) return Result.fail(checkResult.error);
|
|
31
|
+
const pathResult = await this.createFolderPath({
|
|
32
|
+
slug: data.slug || original.slug,
|
|
33
|
+
parentId: void 0 !== data.parentId ? data.parentId : original.parentId
|
|
34
|
+
});
|
|
35
|
+
if (pathResult.isFail()) return Result.fail(pathResult.error);
|
|
36
|
+
const result = await this.updateEntry.execute(folderModel, entryId.toString(), {
|
|
37
|
+
values: {
|
|
38
|
+
...data,
|
|
39
|
+
path: pathResult.value
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
|
|
43
|
+
const updatedFolder = EntryToFolderMapper.toFolder(result.value);
|
|
44
|
+
return Result.ok(updatedFolder);
|
|
86
45
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
46
|
+
async checkExistingFolder(params) {
|
|
47
|
+
const folderModel = await this.folderModelProvider.get();
|
|
48
|
+
const { id, type, slug, parentId } = params;
|
|
49
|
+
const result = await this.listLatestEntries.execute(folderModel, {
|
|
50
|
+
where: {
|
|
51
|
+
latest: true,
|
|
52
|
+
entryId_not: id,
|
|
53
|
+
values: {
|
|
54
|
+
type,
|
|
55
|
+
slug,
|
|
56
|
+
parentId
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
limit: 1
|
|
60
|
+
});
|
|
61
|
+
if (result.isFail()) return Result.fail(new FolderPersistenceError(result.error));
|
|
62
|
+
const { entries } = result.value;
|
|
63
|
+
if (entries.length > 0) return Result.fail(new FolderValidationError(`Folder with slug "${slug}" already exists at this level.`));
|
|
64
|
+
return Result.ok();
|
|
96
65
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
66
|
+
async createFolderPath(params) {
|
|
67
|
+
const folderModel = await this.folderModelProvider.get();
|
|
68
|
+
const { slug, parentId } = params;
|
|
69
|
+
if (!parentId) return Result.ok(Path.create(slug));
|
|
70
|
+
const parentResult = await this.getEntryById.execute(folderModel, EntryId.from(parentId).toString());
|
|
71
|
+
if (parentResult.isFail()) return Result.fail(new FolderPersistenceError(new Error("Parent folder not found. Unable to create the folder path")));
|
|
72
|
+
const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
|
|
73
|
+
return Result.ok(Path.create(slug, parentFolder.path));
|
|
100
74
|
}
|
|
101
|
-
const parentFolder = EntryToFolderMapper.toFolder(parentResult.value);
|
|
102
|
-
return Result.ok(Path.create(slug, parentFolder.path));
|
|
103
|
-
}
|
|
104
75
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
76
|
+
const UpdateFolderRepository_UpdateFolderRepository = UpdateFolderRepository.createImplementation({
|
|
77
|
+
implementation: UpdateFolderRepositoryImpl,
|
|
78
|
+
dependencies: [
|
|
79
|
+
UpdateEntryUseCase,
|
|
80
|
+
GetEntryByIdUseCase,
|
|
81
|
+
ListLatestEntriesUseCase,
|
|
82
|
+
FolderModelProvider
|
|
83
|
+
]
|
|
108
84
|
});
|
|
85
|
+
export { UpdateFolderRepository_UpdateFolderRepository as UpdateFolderRepository };
|
|
109
86
|
|
|
110
87
|
//# sourceMappingURL=UpdateFolderRepository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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 { FolderModelProvider } 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 folderModelProvider: FolderModelProvider.Interface\n ) {}\n\n async execute(\n id: string,\n data: UpdateFolderParams\n ): Promise<Result<Folder, RepositoryAbstraction.Error>> {\n const folderModel = await this.folderModelProvider.get();\n const entryId = EntryId.from(id);\n\n // Get the original folder\n const originalResult = await this.getEntryById.execute<CmsEntryFolder>(\n 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 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 folderModel = await this.folderModelProvider.get();\n const { id, type, slug, parentId } = params;\n\n const result = await this.listLatestEntries.execute<CmsEntryFolder>(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 folderModel = await this.folderModelProvider.get();\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 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: [\n UpdateEntryUseCase,\n GetEntryByIdUseCase,\n ListLatestEntriesUseCase,\n FolderModelProvider\n ]\n});\n"],"names":["UpdateFolderRepositoryImpl","updateEntry","getEntryById","listLatestEntries","folderModelProvider","id","data","folderModel","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","FolderModelProvider"],"mappings":";;;;;;;;;;AAeA,MAAMA;IACF,YACYC,WAAyC,EACzCC,YAA2C,EAC3CC,iBAAqD,EACrDC,mBAAkD,CAC5D;aAJUH,WAAW,GAAXA;aACAC,YAAY,GAAZA;aACAC,iBAAiB,GAAjBA;aACAC,mBAAmB,GAAnBA;IACT;IAEH,MAAM,QACFC,EAAU,EACVC,IAAwB,EAC4B;QACpD,MAAMC,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG;QACtD,MAAMC,UAAUC,QAAQ,IAAI,CAACJ;QAG7B,MAAMK,iBAAiB,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAClDH,aACAC,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/CV;YACA,MAAMQ,SAAS,IAAI;YACnB,MAAMP,KAAK,IAAI,IAAIO,SAAS,IAAI;YAChC,UAAUP,AAAkBU,WAAlBV,KAAK,QAAQ,GAAiBA,KAAK,QAAQ,GAAGO,SAAS,QAAQ;QAC7E;QAEA,IAAIE,YAAY,MAAM,IAClB,OAAOJ,OAAO,IAAI,CAACI,YAAY,KAAK;QAIxC,MAAME,aAAa,MAAM,IAAI,CAAC,gBAAgB,CAAC;YAC3C,MAAMX,KAAK,IAAI,IAAIO,SAAS,IAAI;YAChC,UAAUP,AAAkBU,WAAlBV,KAAK,QAAQ,GAAiBA,KAAK,QAAQ,GAAGO,SAAS,QAAQ;QAC7E;QAEA,IAAII,WAAW,MAAM,IACjB,OAAON,OAAO,IAAI,CAACM,WAAW,KAAK;QAGvC,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CACzCX,aACAC,QAAQ,QAAQ,IAChB;YACI,QAAQ;gBACJ,GAAGF,IAAI;gBACP,MAAMW,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,MAAMb,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG;QACtD,MAAM,EAAEF,EAAE,EAAEgB,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAGH;QAErC,MAAMF,SAAS,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAiBX,aAAa;YAC7E,OAAO;gBACH,QAAQ;gBACR,aAAaF;gBACb,QAAQ;oBACJgB;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,MAAMb,cAAc,MAAM,IAAI,CAAC,mBAAmB,CAAC,GAAG;QACtD,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,CAChDpB,aACAE,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,gBAAgB/B;IAChB,cAAc;QACVgC;QACAC;QACAC;QACAC;KACH;AACL"}
|