@webiny/api-aco 6.3.0 → 6.4.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants.js +2 -1
- package/constants.js.map +1 -1
- package/createAcoContext.d.ts +1 -1
- package/createAcoContext.js +75 -103
- package/createAcoContext.js.map +1 -1
- package/createAcoGraphQL.js +42 -43
- package/createAcoGraphQL.js.map +1 -1
- package/createAcoStorageOperations.js +5 -6
- package/createAcoStorageOperations.js.map +1 -1
- package/createAcoTasks.js +7 -8
- package/createAcoTasks.js.map +1 -1
- 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 +52 -36
- package/domain/folder/folder.model.js.map +1 -1
- package/exports/api/aco/flp.js +0 -2
- package/exports/api/aco/folder.js +4 -6
- 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 +27 -28
- package/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js +27 -27
- package/features/cms/decorators/ListEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js +27 -28
- package/features/cms/decorators/ListLatestEntriesWithFlpDecorator.js.map +1 -1
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js +27 -28
- package/features/cms/decorators/ListPublishedEntriesWithFlpDecorator.js.map +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.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.js +7 -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.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.js +7 -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.js +87 -108
- package/features/flp/FolderLevelPermissions/FolderLevelPermissions.js.map +1 -1
- 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.js +0 -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/feature.js +7 -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/feature.js +7 -8
- package/features/flp/ListFlps/feature.js.map +1 -1
- package/features/flp/ListFlps/index.js +0 -2
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js +133 -184
- package/features/flp/UpdateFlp/UpdateFlpUseCase.js.map +1 -1
- package/features/flp/UpdateFlp/abstractions.js +2 -5
- package/features/flp/UpdateFlp/abstractions.js.map +1 -1
- package/features/flp/UpdateFlp/feature.js +7 -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/folder/CreateFolder/CreateFolderRepository.js +67 -90
- 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.js +29 -34
- 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.js +22 -20
- 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.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 +43 -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 +36 -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/GetAncestors/GetAncestorsRepository.js +45 -75
- 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.js +21 -19
- 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.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.js +67 -86
- 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.js +39 -41
- 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.js +66 -92
- 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.js +45 -64
- 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.js +2 -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.js +32 -48
- package/filter/filter.gql.js.map +1 -1
- package/filter/filter.model.js +44 -35
- package/filter/filter.model.js.map +1 -1
- package/filter/filter.so.js +73 -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.so.js +162 -199
- package/flp/flp.so.js.map +1 -1
- package/flp/flp.types.js +0 -3
- package/flp/index.js +0 -2
- package/flp/tasks/createFlp.task.js +26 -27
- package/flp/tasks/createFlp.task.js.map +1 -1
- package/flp/tasks/deleteFlp.task.js +26 -27
- package/flp/tasks/deleteFlp.task.js.map +1 -1
- package/flp/tasks/index.js +13 -12
- package/flp/tasks/index.js.map +1 -1
- package/flp/tasks/syncFlp.task.js +83 -112
- package/flp/tasks/syncFlp.task.js.map +1 -1
- package/flp/tasks/updateFlp.task.js +33 -32
- 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 +39 -50
- package/folder/createFolderTypeDefs.js.map +1 -1
- package/folder/folder.gql.js +100 -133
- package/folder/folder.gql.js.map +1 -1
- package/folder/folder.types.js +0 -3
- package/index.d.ts +1 -1
- package/index.js +7 -4
- package/index.js.map +1 -1
- package/package.json +25 -25
- 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.js +12 -19
- package/utils/createOperationsWrapper.js.map +1 -1
- package/utils/decorators/CmsEntriesCrudDecorators.js +165 -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.js +7 -6
- package/utils/resolve.js.map +1 -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.types.js.map +0 -1
- package/flp/index.js.map +0 -1
- package/folder/folder.types.js.map +0 -1
|
@@ -1,41 +1,36 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
2
2
|
import { GetEntryByIdUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntryById/abstractions.js";
|
|
3
3
|
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
4
|
import { ROOT_FOLDER } from "../../../constants.js";
|
|
5
5
|
import { EntryNotAuthorizedError } from "@webiny/api-headless-cms/domain/contentEntry/errors.js";
|
|
6
6
|
class GetEntryByIdWithFlpDecoratorImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
async execute(model, id) {
|
|
12
|
-
const result = await this.decoratee.execute(model, id);
|
|
13
|
-
if (result.isFail()) {
|
|
14
|
-
return result;
|
|
7
|
+
constructor(folderLevelPermissions, decoratee){
|
|
8
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
9
|
+
this.decoratee = decoratee;
|
|
15
10
|
}
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
async execute(model, id) {
|
|
12
|
+
const result = await this.decoratee.execute(model, id);
|
|
13
|
+
if (result.isFail()) return result;
|
|
14
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) return result;
|
|
15
|
+
const entry = result.value;
|
|
16
|
+
const folderId = entry?.location?.folderId;
|
|
17
|
+
if (!folderId || folderId === ROOT_FOLDER) return result;
|
|
18
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
19
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
20
|
+
permissions,
|
|
21
|
+
rwd: "r"
|
|
22
|
+
});
|
|
23
|
+
if (!canAccessFolder) return Result.fail(new EntryNotAuthorizedError());
|
|
24
|
+
return result;
|
|
18
25
|
}
|
|
19
|
-
const entry = result.value;
|
|
20
|
-
const folderId = entry?.location?.folderId;
|
|
21
|
-
if (!folderId || folderId === ROOT_FOLDER) {
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
25
|
-
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
26
|
-
permissions,
|
|
27
|
-
rwd: "r"
|
|
28
|
-
});
|
|
29
|
-
if (!canAccessFolder) {
|
|
30
|
-
return Result.fail(new EntryNotAuthorizedError());
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
}
|
|
34
26
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
const GetEntryByIdWithFlpDecorator = createDecorator({
|
|
28
|
+
abstraction: GetEntryByIdUseCase,
|
|
29
|
+
decorator: GetEntryByIdWithFlpDecoratorImpl,
|
|
30
|
+
dependencies: [
|
|
31
|
+
FolderLevelPermissions
|
|
32
|
+
]
|
|
39
33
|
});
|
|
34
|
+
export { GetEntryByIdWithFlpDecorator };
|
|
40
35
|
|
|
41
36
|
//# sourceMappingURL=GetEntryByIdWithFlpDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/cms/decorators/GetEntryByIdWithFlpDecorator.js","sources":["../../../../src/features/cms/decorators/GetEntryByIdWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { GetEntryByIdUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntryById/abstractions.js\";\nimport type { CmsModel, CmsEntryValues, CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { EntryNotAuthorizedError } from \"@webiny/api-headless-cms/domain/contentEntry/errors.js\";\n\nclass GetEntryByIdWithFlpDecoratorImpl implements GetEntryByIdUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetEntryByIdUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n id: string\n ): Promise<Result<CmsEntry<T>, GetEntryByIdUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, id);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entry = result.value;\n const folderId = entry?.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return result;\n }\n\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return Result.fail(new EntryNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetEntryByIdWithFlpDecorator = createDecorator({\n abstraction: GetEntryByIdUseCase,\n decorator: GetEntryByIdWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["GetEntryByIdWithFlpDecoratorImpl","folderLevelPermissions","decoratee","model","id","result","entry","folderId","ROOT_FOLDER","permissions","canAccessFolder","Result","EntryNotAuthorizedError","GetEntryByIdWithFlpDecorator","createDecorator","GetEntryByIdUseCase","FolderLevelPermissions"],"mappings":";;;;;AAOA,MAAMA;IACF,YACYC,sBAAwD,EACxDC,SAAwC,CAClD;aAFUD,sBAAsB,GAAtBA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,EAAU,EAC6C;QACvD,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAIF,OAAOC;QAEtD,IAAIC,OAAO,MAAM,IACb,OAAOA;QAGX,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,IACzD,OAAOA;QAGX,MAAMC,QAAQD,OAAO,KAAK;QAC1B,MAAME,WAAWD,OAAO,UAAU;QAElC,IAAI,CAACC,YAAYA,aAAaC,aAC1B,OAAOH;QAGX,MAAMI,cAAc,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAACF;QAChF,MAAMG,kBAAkB,MAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;YAC7ED;YACA,KAAK;QACT;QAEA,IAAI,CAACC,iBACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,OAAOP;IACX;AACJ;AAEO,MAAMQ,+BAA+BC,gBAAgB;IACxD,aAAaC;IACb,WAAWf;IACX,cAAc;QAACgB;KAAuB;AAC1C"}
|
|
@@ -1,41 +1,36 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
2
2
|
import { GetEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetEntry/abstractions.js";
|
|
3
3
|
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
4
|
import { ROOT_FOLDER } from "../../../constants.js";
|
|
5
5
|
import { EntryNotAuthorizedError } from "@webiny/api-headless-cms/domain/contentEntry/errors";
|
|
6
6
|
class GetEntryWithFlpDecoratorImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
async execute(model, params) {
|
|
12
|
-
const result = await this.decoratee.execute(model, params);
|
|
13
|
-
if (result.isFail()) {
|
|
14
|
-
return result;
|
|
7
|
+
constructor(folderLevelPermissions, decoratee){
|
|
8
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
9
|
+
this.decoratee = decoratee;
|
|
15
10
|
}
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
async execute(model, params) {
|
|
12
|
+
const result = await this.decoratee.execute(model, params);
|
|
13
|
+
if (result.isFail()) return result;
|
|
14
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) return result;
|
|
15
|
+
const entry = result.value;
|
|
16
|
+
const folderId = entry?.location?.folderId;
|
|
17
|
+
if (!folderId || folderId === ROOT_FOLDER) return result;
|
|
18
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
19
|
+
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
20
|
+
permissions,
|
|
21
|
+
rwd: "r"
|
|
22
|
+
});
|
|
23
|
+
if (!canAccessFolder) return Result.fail(new EntryNotAuthorizedError());
|
|
24
|
+
return result;
|
|
18
25
|
}
|
|
19
|
-
const entry = result.value;
|
|
20
|
-
const folderId = entry?.location?.folderId;
|
|
21
|
-
if (!folderId || folderId === ROOT_FOLDER) {
|
|
22
|
-
return result;
|
|
23
|
-
}
|
|
24
|
-
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
25
|
-
const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({
|
|
26
|
-
permissions,
|
|
27
|
-
rwd: "r"
|
|
28
|
-
});
|
|
29
|
-
if (!canAccessFolder) {
|
|
30
|
-
return Result.fail(new EntryNotAuthorizedError());
|
|
31
|
-
}
|
|
32
|
-
return result;
|
|
33
|
-
}
|
|
34
26
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
const GetEntryWithFlpDecorator = createDecorator({
|
|
28
|
+
abstraction: GetEntryUseCase,
|
|
29
|
+
decorator: GetEntryWithFlpDecoratorImpl,
|
|
30
|
+
dependencies: [
|
|
31
|
+
FolderLevelPermissions
|
|
32
|
+
]
|
|
39
33
|
});
|
|
34
|
+
export { GetEntryWithFlpDecorator };
|
|
40
35
|
|
|
41
36
|
//# sourceMappingURL=GetEntryWithFlpDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/cms/decorators/GetEntryWithFlpDecorator.js","sources":["../../../../src/features/cms/decorators/GetEntryWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { GetEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetEntry/abstractions.js\";\nimport type {\n CmsModel,\n CmsEntryGetParams,\n CmsEntryValues,\n CmsEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\nimport { EntryNotAuthorizedError } from \"@webiny/api-headless-cms/domain/contentEntry/errors\";\n\nclass GetEntryWithFlpDecoratorImpl implements GetEntryUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetEntryUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryGetParams\n ): Promise<Result<CmsEntry<T>, GetEntryUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, params);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entry = result.value;\n const folderId = entry?.location?.folderId;\n\n if (!folderId || folderId === ROOT_FOLDER) {\n return result;\n }\n\n const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccessFolder = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n\n if (!canAccessFolder) {\n return Result.fail(new EntryNotAuthorizedError());\n }\n\n return result;\n }\n}\n\nexport const GetEntryWithFlpDecorator = createDecorator({\n abstraction: GetEntryUseCase,\n decorator: GetEntryWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["GetEntryWithFlpDecoratorImpl","folderLevelPermissions","decoratee","model","params","result","entry","folderId","ROOT_FOLDER","permissions","canAccessFolder","Result","EntryNotAuthorizedError","GetEntryWithFlpDecorator","createDecorator","GetEntryUseCase","FolderLevelPermissions"],"mappings":";;;;;AAYA,MAAMA;IACF,YACYC,sBAAwD,EACxDC,SAAoC,CAC9C;aAFUD,sBAAsB,GAAtBA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,MAAyB,EAC0B;QACnD,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAIF,OAAOC;QAEtD,IAAIC,OAAO,MAAM,IACb,OAAOA;QAGX,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,IACzD,OAAOA;QAGX,MAAMC,QAAQD,OAAO,KAAK;QAC1B,MAAME,WAAWD,OAAO,UAAU;QAElC,IAAI,CAACC,YAAYA,aAAaC,aAC1B,OAAOH;QAGX,MAAMI,cAAc,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAACF;QAChF,MAAMG,kBAAkB,MAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;YAC7ED;YACA,KAAK;QACT;QAEA,IAAI,CAACC,iBACD,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,OAAOP;IACX;AACJ;AAEO,MAAMQ,2BAA2BC,gBAAgB;IACpD,aAAaC;IACb,WAAWf;IACX,cAAc;QAACgB;KAAuB;AAC1C"}
|
|
@@ -1,45 +1,41 @@
|
|
|
1
|
-
import { createDecorator } from "@webiny/feature/api";
|
|
2
|
-
import { Result } from "@webiny/feature/api";
|
|
1
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
3
2
|
import { GetLatestEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/abstractions.js";
|
|
4
3
|
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
4
|
import { ROOT_FOLDER } from "../../../constants.js";
|
|
6
5
|
class GetLatestEntriesByIdsWithFlpDecoratorImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
async execute(model, ids) {
|
|
12
|
-
const result = await this.decoratee.execute(model, ids);
|
|
13
|
-
if (result.isFail()) {
|
|
14
|
-
return result;
|
|
6
|
+
constructor(folderLevelPermissions, decoratee){
|
|
7
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
8
|
+
this.decoratee = decoratee;
|
|
15
9
|
}
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
async execute(model, ids) {
|
|
11
|
+
const result = await this.decoratee.execute(model, ids);
|
|
12
|
+
if (result.isFail()) return result;
|
|
13
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) return result;
|
|
14
|
+
const entries = result.value;
|
|
15
|
+
const filteredEntries = await this.filterEntriesByFolder(entries);
|
|
16
|
+
return Result.ok(filteredEntries);
|
|
17
|
+
}
|
|
18
|
+
async filterEntriesByFolder(entries) {
|
|
19
|
+
const results = await Promise.all(entries.map(async (entry)=>{
|
|
20
|
+
const folderId = entry.location?.folderId;
|
|
21
|
+
if (!folderId || folderId === ROOT_FOLDER) return entry;
|
|
22
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
23
|
+
const canAccess = await this.folderLevelPermissions.canAccessFolderContent({
|
|
24
|
+
permissions,
|
|
25
|
+
rwd: "r"
|
|
26
|
+
});
|
|
27
|
+
return canAccess ? entry : null;
|
|
28
|
+
}));
|
|
29
|
+
return results.filter((entry)=>!!entry);
|
|
18
30
|
}
|
|
19
|
-
const entries = result.value;
|
|
20
|
-
const filteredEntries = await this.filterEntriesByFolder(entries);
|
|
21
|
-
return Result.ok(filteredEntries);
|
|
22
|
-
}
|
|
23
|
-
async filterEntriesByFolder(entries) {
|
|
24
|
-
const results = await Promise.all(entries.map(async entry => {
|
|
25
|
-
const folderId = entry.location?.folderId;
|
|
26
|
-
if (!folderId || folderId === ROOT_FOLDER) {
|
|
27
|
-
return entry;
|
|
28
|
-
}
|
|
29
|
-
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
30
|
-
const canAccess = await this.folderLevelPermissions.canAccessFolderContent({
|
|
31
|
-
permissions,
|
|
32
|
-
rwd: "r"
|
|
33
|
-
});
|
|
34
|
-
return canAccess ? entry : null;
|
|
35
|
-
}));
|
|
36
|
-
return results.filter(entry => !!entry);
|
|
37
|
-
}
|
|
38
31
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
const GetLatestEntriesByIdsWithFlpDecorator = createDecorator({
|
|
33
|
+
abstraction: GetLatestEntriesByIdsUseCase,
|
|
34
|
+
decorator: GetLatestEntriesByIdsWithFlpDecoratorImpl,
|
|
35
|
+
dependencies: [
|
|
36
|
+
FolderLevelPermissions
|
|
37
|
+
]
|
|
43
38
|
});
|
|
39
|
+
export { GetLatestEntriesByIdsWithFlpDecorator };
|
|
44
40
|
|
|
45
41
|
//# sourceMappingURL=GetLatestEntriesByIdsWithFlpDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.js","sources":["../../../../src/features/cms/decorators/GetLatestEntriesByIdsWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { GetLatestEntriesByIdsUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetLatestEntriesByIds/abstractions.js\";\nimport type { CmsModel, CmsEntryValues, CmsEntry } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass GetLatestEntriesByIdsWithFlpDecoratorImpl implements GetLatestEntriesByIdsUseCase.Interface {\n constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetLatestEntriesByIdsUseCase.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ): Promise<Result<CmsEntry<T>[], GetLatestEntriesByIdsUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, ids);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entries = result.value;\n const filteredEntries = await this.filterEntriesByFolder<T>(entries);\n\n return Result.ok(filteredEntries);\n }\n\n private async filterEntriesByFolder<T extends CmsEntryValues = CmsEntryValues>(\n entries: CmsEntry<T>[]\n ): Promise<CmsEntry<T>[]> {\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const permissions =\n await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccess = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n return canAccess ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry<T> => !!entry);\n }\n}\n\nexport const GetLatestEntriesByIdsWithFlpDecorator = createDecorator({\n abstraction: GetLatestEntriesByIdsUseCase,\n decorator: GetLatestEntriesByIdsWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["GetLatestEntriesByIdsWithFlpDecoratorImpl","folderLevelPermissions","decoratee","model","ids","result","entries","filteredEntries","Result","results","Promise","entry","folderId","ROOT_FOLDER","permissions","canAccess","GetLatestEntriesByIdsWithFlpDecorator","createDecorator","GetLatestEntriesByIdsUseCase","FolderLevelPermissions"],"mappings":";;;;AAOA,MAAMA;IACF,YACYC,sBAAwD,EACxDC,SAAiD,CAC3D;aAFUD,sBAAsB,GAAtBA;aACAC,SAAS,GAATA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,GAAa,EACqD;QAClE,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAIF,OAAOC;QAEtD,IAAIC,OAAO,MAAM,IACb,OAAOA;QAGX,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,IACzD,OAAOA;QAGX,MAAMC,UAAUD,OAAO,KAAK;QAC5B,MAAME,kBAAkB,MAAM,IAAI,CAAC,qBAAqB,CAAID;QAE5D,OAAOE,OAAO,EAAE,CAACD;IACrB;IAEA,MAAc,sBACVD,OAAsB,EACA;QACtB,MAAMG,UAAU,MAAMC,QAAQ,GAAG,CAC7BJ,QAAQ,GAAG,CAAC,OAAMK;YACd,MAAMC,WAAWD,MAAM,QAAQ,EAAE;YACjC,IAAI,CAACC,YAAYA,aAAaC,aAC1B,OAAOF;YAGX,MAAMG,cACF,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAACF;YAChE,MAAMG,YAAY,MAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;gBACvED;gBACA,KAAK;YACT;YACA,OAAOC,YAAYJ,QAAQ;QAC/B;QAGJ,OAAOF,QAAQ,MAAM,CAAC,CAACE,QAAgC,CAAC,CAACA;IAC7D;AACJ;AAEO,MAAMK,wCAAwCC,gBAAgB;IACjE,aAAaC;IACb,WAAWlB;IACX,cAAc;QAACmB;KAAuB;AAC1C"}
|
|
@@ -1,44 +1,41 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
2
2
|
import { GetPublishedEntriesByIdsUseCase } from "@webiny/api-headless-cms/features/contentEntry/GetPublishedEntriesByIds/abstractions.js";
|
|
3
3
|
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
4
|
import { ROOT_FOLDER } from "../../../constants.js";
|
|
5
5
|
class GetPublishedEntriesByIdsWithFlpDecoratorImpl {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
async execute(model, ids) {
|
|
11
|
-
const result = await this.decoratee.execute(model, ids);
|
|
12
|
-
if (result.isFail()) {
|
|
13
|
-
return result;
|
|
6
|
+
constructor(folderLevelPermissions, decoratee){
|
|
7
|
+
this.folderLevelPermissions = folderLevelPermissions;
|
|
8
|
+
this.decoratee = decoratee;
|
|
14
9
|
}
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
async execute(model, ids) {
|
|
11
|
+
const result = await this.decoratee.execute(model, ids);
|
|
12
|
+
if (result.isFail()) return result;
|
|
13
|
+
if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) return result;
|
|
14
|
+
const entries = result.value;
|
|
15
|
+
const filteredEntries = await this.filterEntriesByFolder(entries);
|
|
16
|
+
return Result.ok(filteredEntries);
|
|
17
|
+
}
|
|
18
|
+
async filterEntriesByFolder(entries) {
|
|
19
|
+
const results = await Promise.all(entries.map(async (entry)=>{
|
|
20
|
+
const folderId = entry.location?.folderId;
|
|
21
|
+
if (!folderId || folderId === ROOT_FOLDER) return entry;
|
|
22
|
+
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
23
|
+
const canAccess = await this.folderLevelPermissions.canAccessFolderContent({
|
|
24
|
+
permissions,
|
|
25
|
+
rwd: "r"
|
|
26
|
+
});
|
|
27
|
+
return canAccess ? entry : null;
|
|
28
|
+
}));
|
|
29
|
+
return results.filter((entry)=>!!entry);
|
|
17
30
|
}
|
|
18
|
-
const entries = result.value;
|
|
19
|
-
const filteredEntries = await this.filterEntriesByFolder(entries);
|
|
20
|
-
return Result.ok(filteredEntries);
|
|
21
|
-
}
|
|
22
|
-
async filterEntriesByFolder(entries) {
|
|
23
|
-
const results = await Promise.all(entries.map(async entry => {
|
|
24
|
-
const folderId = entry.location?.folderId;
|
|
25
|
-
if (!folderId || folderId === ROOT_FOLDER) {
|
|
26
|
-
return entry;
|
|
27
|
-
}
|
|
28
|
-
const permissions = await this.folderLevelPermissions.getFolderLevelPermissions(folderId);
|
|
29
|
-
const canAccess = await this.folderLevelPermissions.canAccessFolderContent({
|
|
30
|
-
permissions,
|
|
31
|
-
rwd: "r"
|
|
32
|
-
});
|
|
33
|
-
return canAccess ? entry : null;
|
|
34
|
-
}));
|
|
35
|
-
return results.filter(entry => !!entry);
|
|
36
|
-
}
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
const GetPublishedEntriesByIdsWithFlpDecorator = createDecorator({
|
|
33
|
+
abstraction: GetPublishedEntriesByIdsUseCase,
|
|
34
|
+
decorator: GetPublishedEntriesByIdsWithFlpDecoratorImpl,
|
|
35
|
+
dependencies: [
|
|
36
|
+
FolderLevelPermissions
|
|
37
|
+
]
|
|
42
38
|
});
|
|
39
|
+
export { GetPublishedEntriesByIdsWithFlpDecorator };
|
|
43
40
|
|
|
44
41
|
//# sourceMappingURL=GetPublishedEntriesByIdsWithFlpDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.js","sources":["../../../../src/features/cms/decorators/GetPublishedEntriesByIdsWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { GetPublishedEntriesByIdsUseCase } from \"@webiny/api-headless-cms/features/contentEntry/GetPublishedEntriesByIds/abstractions.js\";\nimport type { CmsEntry, CmsEntryValues, CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ROOT_FOLDER } from \"~/constants.js\";\n\nclass GetPublishedEntriesByIdsWithFlpDecoratorImpl\n implements GetPublishedEntriesByIdsUseCase.Interface\n{\n public constructor(\n private folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: GetPublishedEntriesByIdsUseCase.Interface\n ) {}\n\n public async execute<T extends CmsEntryValues>(\n model: CmsModel,\n ids: string[]\n ): Promise<Result<CmsEntry<T>[], GetPublishedEntriesByIdsUseCase.Error>> {\n const result = await this.decoratee.execute<T>(model, ids);\n\n if (result.isFail()) {\n return result;\n }\n\n if (!this.folderLevelPermissions.canUseFolderLevelPermissions()) {\n return result;\n }\n\n const entries = result.value;\n const filteredEntries = await this.filterEntriesByFolder<T>(entries);\n\n return Result.ok(filteredEntries);\n }\n\n private async filterEntriesByFolder<T extends CmsEntryValues = CmsEntryValues>(\n entries: CmsEntry<T>[]\n ): Promise<CmsEntry<T>[]> {\n const results = await Promise.all(\n entries.map(async entry => {\n const folderId = entry.location?.folderId;\n if (!folderId || folderId === ROOT_FOLDER) {\n return entry;\n }\n\n const permissions =\n await this.folderLevelPermissions.getFolderLevelPermissions(folderId);\n const canAccess = await this.folderLevelPermissions.canAccessFolderContent({\n permissions,\n rwd: \"r\"\n });\n return canAccess ? entry : null;\n })\n );\n\n return results.filter((entry): entry is CmsEntry<T> => !!entry);\n }\n}\n\nexport const GetPublishedEntriesByIdsWithFlpDecorator = createDecorator({\n abstraction: GetPublishedEntriesByIdsUseCase,\n decorator: GetPublishedEntriesByIdsWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["GetPublishedEntriesByIdsWithFlpDecoratorImpl","folderLevelPermissions","decoratee","model","ids","result","entries","filteredEntries","Result","results","Promise","entry","folderId","ROOT_FOLDER","permissions","canAccess","GetPublishedEntriesByIdsWithFlpDecorator","createDecorator","GetPublishedEntriesByIdsUseCase","FolderLevelPermissions"],"mappings":";;;;AAMA,MAAMA;IAGF,YACYC,sBAAwD,EACxDC,SAAoD,CAC9D;aAFUD,sBAAsB,GAAtBA;aACAC,SAAS,GAATA;IACT;IAEH,MAAa,QACTC,KAAe,EACfC,GAAa,EACwD;QACrE,MAAMC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAIF,OAAOC;QAEtD,IAAIC,OAAO,MAAM,IACb,OAAOA;QAGX,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,4BAA4B,IACzD,OAAOA;QAGX,MAAMC,UAAUD,OAAO,KAAK;QAC5B,MAAME,kBAAkB,MAAM,IAAI,CAAC,qBAAqB,CAAID;QAE5D,OAAOE,OAAO,EAAE,CAACD;IACrB;IAEA,MAAc,sBACVD,OAAsB,EACA;QACtB,MAAMG,UAAU,MAAMC,QAAQ,GAAG,CAC7BJ,QAAQ,GAAG,CAAC,OAAMK;YACd,MAAMC,WAAWD,MAAM,QAAQ,EAAE;YACjC,IAAI,CAACC,YAAYA,aAAaC,aAC1B,OAAOF;YAGX,MAAMG,cACF,MAAM,IAAI,CAAC,sBAAsB,CAAC,yBAAyB,CAACF;YAChE,MAAMG,YAAY,MAAM,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC;gBACvED;gBACA,KAAK;YACT;YACA,OAAOC,YAAYJ,QAAQ;QAC/B;QAGJ,OAAOF,QAAQ,MAAM,CAAC,CAACE,QAAgC,CAAC,CAACA;IAC7D;AACJ;AAEO,MAAMK,2CAA2CC,gBAAgB;IACpE,aAAaC;IACb,WAAWlB;IACX,cAAc;QAACmB;KAAuB;AAC1C"}
|
|
@@ -1,36 +1,35 @@
|
|
|
1
|
-
import { createDecorator } from "@webiny/feature/api";
|
|
2
|
-
import { Result } from "@webiny/feature/api";
|
|
1
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
3
2
|
import { ListDeletedEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
4
3
|
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
5
4
|
import { ListEntriesFactory } from "../../../utils/decorators/ListEntriesFactory.js";
|
|
6
5
|
class ListDeletedEntriesWithFlpDecoratorImpl {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
meta
|
|
27
|
-
});
|
|
28
|
-
}
|
|
6
|
+
constructor(folderLevelPermissions, decoratee){
|
|
7
|
+
this.decoratee = decoratee;
|
|
8
|
+
this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
const loader = async (params)=>{
|
|
12
|
+
const result = await this.decoratee.execute(model, params);
|
|
13
|
+
return result.value;
|
|
14
|
+
};
|
|
15
|
+
const { entries, meta } = await this.listEntriesHandler.execute({
|
|
16
|
+
model,
|
|
17
|
+
dataLoader: loader,
|
|
18
|
+
initialParams: params
|
|
19
|
+
});
|
|
20
|
+
return Result.ok({
|
|
21
|
+
entries,
|
|
22
|
+
meta
|
|
23
|
+
});
|
|
24
|
+
}
|
|
29
25
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
const ListDeletedEntriesWithFlpDecorator = createDecorator({
|
|
27
|
+
abstraction: ListDeletedEntriesUseCase,
|
|
28
|
+
decorator: ListDeletedEntriesWithFlpDecoratorImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
FolderLevelPermissions
|
|
31
|
+
]
|
|
34
32
|
});
|
|
33
|
+
export { ListDeletedEntriesWithFlpDecorator };
|
|
35
34
|
|
|
36
35
|
//# sourceMappingURL=ListDeletedEntriesWithFlpDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/cms/decorators/ListDeletedEntriesWithFlpDecorator.js","sources":["../../../../src/features/cms/decorators/ListDeletedEntriesWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator } from \"@webiny/feature/api\";\nimport { Result } from \"@webiny/feature/api\";\nimport { ListDeletedEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport type {\n CmsModel,\n CmsEntryValues,\n CmsEntryListParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListEntriesFactory } from \"~/utils/decorators/ListEntriesFactory.js\";\n\nclass ListDeletedEntriesWithFlpDecoratorImpl implements ListDeletedEntriesUseCase.Interface {\n private readonly listEntriesHandler: ListEntriesFactory;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListDeletedEntriesUseCase.Interface\n ) {\n this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ): ListDeletedEntriesUseCase.Return<T> {\n const loader = async (params?: CmsEntryListParams) => {\n const result = await this.decoratee.execute<T>(model, params);\n return result.value;\n };\n\n const { entries, meta } = await this.listEntriesHandler.execute<T>({\n model,\n dataLoader: loader,\n initialParams: params\n });\n\n return Result.ok({ entries, meta });\n }\n}\n\nexport const ListDeletedEntriesWithFlpDecorator = createDecorator({\n abstraction: ListDeletedEntriesUseCase,\n decorator: ListDeletedEntriesWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["ListDeletedEntriesWithFlpDecoratorImpl","folderLevelPermissions","decoratee","ListEntriesFactory","model","params","loader","result","entries","meta","Result","ListDeletedEntriesWithFlpDecorator","createDecorator","ListDeletedEntriesUseCase","FolderLevelPermissions"],"mappings":";;;;AAWA,MAAMA;IAGF,YACIC,sBAAwD,EAChDC,SAA8C,CACxD;aADUA,SAAS,GAATA;QAER,IAAI,CAAC,kBAAkB,GAAG,IAAIC,mBAAmBF;IACrD;IAEA,MAAM,QACFG,KAAe,EACfC,MAA2B,EACQ;QACnC,MAAMC,SAAS,OAAOD;YAClB,MAAME,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAIH,OAAOC;YACtD,OAAOE,OAAO,KAAK;QACvB;QAEA,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAI;YAC/DL;YACA,YAAYE;YACZ,eAAeD;QACnB;QAEA,OAAOK,OAAO,EAAE,CAAC;YAAEF;YAASC;QAAK;IACrC;AACJ;AAEO,MAAME,qCAAqCC,gBAAgB;IAC9D,aAAaC;IACb,WAAWb;IACX,cAAc;QAACc;KAAuB;AAC1C"}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Result, createDecorator } from "@webiny/feature/api";
|
|
2
2
|
import { ListEntriesUseCase } from "@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js";
|
|
3
3
|
import { FolderLevelPermissions } from "../../flp/FolderLevelPermissions/index.js";
|
|
4
4
|
import { ListEntriesFactory } from "../../../utils/decorators/ListEntriesFactory.js";
|
|
5
5
|
class ListEntriesWithFlpDecoratorImpl {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
meta
|
|
26
|
-
});
|
|
27
|
-
}
|
|
6
|
+
constructor(folderLevelPermissions, decoratee){
|
|
7
|
+
this.decoratee = decoratee;
|
|
8
|
+
this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
const loader = async (params)=>{
|
|
12
|
+
const result = await this.decoratee.execute(model, params);
|
|
13
|
+
return result.value;
|
|
14
|
+
};
|
|
15
|
+
const { entries, meta } = await this.listEntriesHandler.execute({
|
|
16
|
+
model,
|
|
17
|
+
dataLoader: loader,
|
|
18
|
+
initialParams: params
|
|
19
|
+
});
|
|
20
|
+
return Result.ok({
|
|
21
|
+
entries,
|
|
22
|
+
meta
|
|
23
|
+
});
|
|
24
|
+
}
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const ListEntriesWithFlpDecorator = createDecorator({
|
|
27
|
+
abstraction: ListEntriesUseCase,
|
|
28
|
+
decorator: ListEntriesWithFlpDecoratorImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
FolderLevelPermissions
|
|
31
|
+
]
|
|
33
32
|
});
|
|
33
|
+
export { ListEntriesWithFlpDecorator };
|
|
34
34
|
|
|
35
35
|
//# sourceMappingURL=ListEntriesWithFlpDecorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"features/cms/decorators/ListEntriesWithFlpDecorator.js","sources":["../../../../src/features/cms/decorators/ListEntriesWithFlpDecorator.ts"],"sourcesContent":["import { createDecorator, Result } from \"@webiny/feature/api\";\nimport { ListEntriesUseCase } from \"@webiny/api-headless-cms/features/contentEntry/ListEntries/abstractions.js\";\nimport type {\n CmsEntryListParams,\n CmsEntryValues,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { FolderLevelPermissions } from \"~/features/flp/FolderLevelPermissions/index.js\";\nimport { ListEntriesFactory } from \"~/utils/decorators/ListEntriesFactory.js\";\n\nclass ListEntriesWithFlpDecoratorImpl implements ListEntriesUseCase.Interface {\n private readonly listEntriesHandler: ListEntriesFactory;\n\n constructor(\n folderLevelPermissions: FolderLevelPermissions.Interface,\n private decoratee: ListEntriesUseCase.Interface\n ) {\n this.listEntriesHandler = new ListEntriesFactory(folderLevelPermissions);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params?: CmsEntryListParams\n ): ListEntriesUseCase.Return<T> {\n const loader = async (params?: CmsEntryListParams) => {\n const result = await this.decoratee.execute<T>(model, params);\n return result.value;\n };\n\n const { entries, meta } = await this.listEntriesHandler.execute<T>({\n model,\n dataLoader: loader,\n initialParams: params\n });\n\n return Result.ok({ entries, meta });\n }\n}\n\nexport const ListEntriesWithFlpDecorator = createDecorator({\n abstraction: ListEntriesUseCase,\n decorator: ListEntriesWithFlpDecoratorImpl,\n dependencies: [FolderLevelPermissions]\n});\n"],"names":["ListEntriesWithFlpDecoratorImpl","folderLevelPermissions","decoratee","ListEntriesFactory","model","params","loader","result","entries","meta","Result","ListEntriesWithFlpDecorator","createDecorator","ListEntriesUseCase","FolderLevelPermissions"],"mappings":";;;;AAUA,MAAMA;IAGF,YACIC,sBAAwD,EAChDC,SAAuC,CACjD;aADUA,SAAS,GAATA;QAER,IAAI,CAAC,kBAAkB,GAAG,IAAIC,mBAAmBF;IACrD;IAEA,MAAM,QACFG,KAAe,EACfC,MAA2B,EACC;QAC5B,MAAMC,SAAS,OAAOD;YAClB,MAAME,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAIH,OAAOC;YACtD,OAAOE,OAAO,KAAK;QACvB;QAEA,MAAM,EAAEC,OAAO,EAAEC,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAI;YAC/DL;YACA,YAAYE;YACZ,eAAeD;QACnB;QAEA,OAAOK,OAAO,EAAE,CAAC;YAAEF;YAASC;QAAK;IACrC;AACJ;AAEO,MAAME,8BAA8BC,gBAAgB;IACvD,aAAaC;IACb,WAAWb;IACX,cAAc;QAACc;KAAuB;AAC1C"}
|