@webiny/api-file-manager 6.0.0-alpha.5 → 6.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -13
- package/contants.js +1 -7
- package/contants.js.map +1 -1
- package/delivery/AssetDelivery/Asset.d.ts +3 -7
- package/delivery/AssetDelivery/Asset.js +1 -11
- package/delivery/AssetDelivery/Asset.js.map +1 -1
- package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +11 -9
- package/delivery/AssetDelivery/AssetDeliveryConfig.js +18 -26
- package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
- package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
- package/delivery/AssetDelivery/AssetRequest.js +1 -8
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
- package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +3 -3
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js +3 -10
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +1 -1
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js +3 -10
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/NullAssetReply.d.ts +1 -1
- package/delivery/AssetDelivery/NullAssetReply.js +2 -9
- package/delivery/AssetDelivery/NullAssetReply.js.map +1 -1
- package/delivery/AssetDelivery/NullAssetResolver.d.ts +2 -2
- package/delivery/AssetDelivery/NullAssetResolver.js +1 -8
- package/delivery/AssetDelivery/NullAssetResolver.js.map +1 -1
- package/delivery/AssetDelivery/NullRequestResolver.d.ts +1 -1
- package/delivery/AssetDelivery/NullRequestResolver.js +1 -8
- package/delivery/AssetDelivery/NullRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +1 -1
- package/delivery/AssetDelivery/SetCacheControlHeaders.js +1 -8
- package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
- package/delivery/AssetDelivery/SetResponseHeaders.d.ts +3 -3
- package/delivery/AssetDelivery/SetResponseHeaders.js +1 -8
- package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +1 -3
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +1 -5
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +1 -1
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +1 -5
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +1 -1
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js +1 -5
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetReply.js +3 -10
- package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +2 -2
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +1 -5
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +1 -1
- package/delivery/AssetDelivery/abstractions/AssetResolver.js +1 -5
- package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +1 -1
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +1 -5
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +1 -1
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.d.ts +1 -1
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +1 -8
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +1 -1
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +1 -5
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +1 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +4 -11
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +1 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +3 -10
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +4 -3
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +3 -11
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js +4 -11
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +3 -3
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +3 -10
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +4 -4
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +21 -21
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +1 -1
- package/delivery/AssetDelivery/privateFiles/PublicCache.js +4 -11
- package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +2 -2
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +5 -12
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +2 -2
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +5 -12
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +1 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +1 -8
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +1 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +1 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +1 -8
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +1 -1
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +1 -1
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +1 -8
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
- package/delivery/index.d.ts +16 -17
- package/delivery/index.js +10 -192
- package/delivery/index.js.map +1 -1
- package/delivery/setupAssetDelivery.d.ts +2 -6
- package/delivery/setupAssetDelivery.js +21 -35
- package/delivery/setupAssetDelivery.js.map +1 -1
- package/domain/file/abstractions.d.ts +9 -0
- package/domain/file/abstractions.js +8 -0
- package/domain/file/abstractions.js.map +1 -0
- package/domain/file/errors.d.ts +59 -0
- package/domain/file/errors.js +89 -0
- package/domain/file/errors.js.map +1 -0
- package/domain/file/file.model.d.ts +12 -0
- package/domain/file/file.model.js +56 -0
- package/domain/file/file.model.js.map +1 -0
- package/domain/file/types.d.ts +51 -0
- package/domain/file/types.js +3 -0
- package/domain/file/types.js.map +1 -0
- package/domain/identity/Identity.d.ts +9 -0
- package/domain/identity/Identity.js +11 -0
- package/domain/identity/Identity.js.map +1 -0
- package/domain/settings/constants.d.ts +1 -0
- package/domain/settings/constants.js +3 -0
- package/domain/settings/constants.js.map +1 -0
- package/domain/settings/errors.d.ts +18 -0
- package/domain/settings/errors.js +30 -0
- package/domain/settings/errors.js.map +1 -0
- package/domain/settings/types.d.ts +10 -0
- package/domain/settings/types.js +3 -0
- package/domain/settings/types.js.map +1 -0
- package/domain/settings/validation.d.ts +14 -0
- package/domain/settings/validation.js +36 -0
- package/domain/settings/validation.js.map +1 -0
- package/features/FileManagerFeature.d.ts +1 -0
- package/features/FileManagerFeature.js +28 -0
- package/features/FileManagerFeature.js.map +1 -0
- package/features/file/CreateFile/CreateFileRepository.d.ts +15 -0
- package/features/file/CreateFile/CreateFileRepository.js +30 -0
- package/features/file/CreateFile/CreateFileRepository.js.map +1 -0
- package/features/file/CreateFile/CreateFileUseCase.d.ts +21 -0
- package/features/file/CreateFile/CreateFileUseCase.js +89 -0
- package/features/file/CreateFile/CreateFileUseCase.js.map +1 -0
- package/features/file/CreateFile/abstractions.d.ts +57 -0
- package/features/file/CreateFile/abstractions.js +15 -0
- package/features/file/CreateFile/abstractions.js.map +1 -0
- package/features/file/CreateFile/events.d.ts +29 -0
- package/features/file/CreateFile/events.js +28 -0
- package/features/file/CreateFile/events.js.map +1 -0
- package/features/file/CreateFile/feature.d.ts +1 -0
- package/features/file/CreateFile/feature.js +12 -0
- package/features/file/CreateFile/feature.js.map +1 -0
- package/features/file/CreateFile/index.d.ts +2 -0
- package/features/file/CreateFile/index.js +4 -0
- package/features/file/CreateFile/index.js.map +1 -0
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.d.ts +13 -0
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js +24 -0
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js.map +1 -0
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.d.ts +19 -0
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +84 -0
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -0
- package/features/file/CreateFilesInBatch/abstractions.d.ts +40 -0
- package/features/file/CreateFilesInBatch/abstractions.js +15 -0
- package/features/file/CreateFilesInBatch/abstractions.js.map +1 -0
- package/features/file/CreateFilesInBatch/events.d.ts +29 -0
- package/features/file/CreateFilesInBatch/events.js +28 -0
- package/features/file/CreateFilesInBatch/events.js.map +1 -0
- package/features/file/CreateFilesInBatch/feature.d.ts +1 -0
- package/features/file/CreateFilesInBatch/feature.js +12 -0
- package/features/file/CreateFilesInBatch/feature.js.map +1 -0
- package/features/file/CreateFilesInBatch/index.d.ts +1 -0
- package/features/file/CreateFilesInBatch/index.js +3 -0
- package/features/file/CreateFilesInBatch/index.js.map +1 -0
- package/features/file/DeleteFile/DeleteFileRepository.d.ts +15 -0
- package/features/file/DeleteFile/DeleteFileRepository.js +30 -0
- package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -0
- package/features/file/DeleteFile/DeleteFileUseCase.d.ts +17 -0
- package/features/file/DeleteFile/DeleteFileUseCase.js +45 -0
- package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -0
- package/features/file/DeleteFile/abstractions.d.ts +37 -0
- package/features/file/DeleteFile/abstractions.js +15 -0
- package/features/file/DeleteFile/abstractions.js.map +1 -0
- package/features/file/DeleteFile/events.d.ts +27 -0
- package/features/file/DeleteFile/events.js +28 -0
- package/features/file/DeleteFile/events.js.map +1 -0
- package/features/file/DeleteFile/feature.d.ts +1 -0
- package/features/file/DeleteFile/feature.js +12 -0
- package/features/file/DeleteFile/feature.js.map +1 -0
- package/features/file/DeleteFile/index.d.ts +2 -0
- package/features/file/DeleteFile/index.js +4 -0
- package/features/file/DeleteFile/index.js.map +1 -0
- package/features/file/FileUrlGenerator/abstractions.d.ts +8 -0
- package/features/file/FileUrlGenerator/abstractions.js +4 -0
- package/features/file/FileUrlGenerator/abstractions.js.map +1 -0
- package/features/file/GetFile/GetFileRepository.d.ts +15 -0
- package/features/file/GetFile/GetFileRepository.js +33 -0
- package/features/file/GetFile/GetFileRepository.js.map +1 -0
- package/features/file/GetFile/GetFileUseCase.d.ts +14 -0
- package/features/file/GetFile/GetFileUseCase.js +31 -0
- package/features/file/GetFile/GetFileUseCase.js.map +1 -0
- package/features/file/GetFile/abstractions.d.ts +38 -0
- package/features/file/GetFile/abstractions.js +15 -0
- package/features/file/GetFile/abstractions.js.map +1 -0
- package/features/file/GetFile/feature.d.ts +1 -0
- package/features/file/GetFile/feature.js +12 -0
- package/features/file/GetFile/feature.js.map +1 -0
- package/features/file/GetFile/index.d.ts +1 -0
- package/features/file/GetFile/index.js +3 -0
- package/features/file/GetFile/index.js.map +1 -0
- package/features/file/ListFiles/ListFilesRepository.d.ts +18 -0
- package/features/file/ListFiles/ListFilesRepository.js +51 -0
- package/features/file/ListFiles/ListFilesRepository.js.map +1 -0
- package/features/file/ListFiles/ListFilesUseCase.d.ts +15 -0
- package/features/file/ListFiles/ListFilesUseCase.js +45 -0
- package/features/file/ListFiles/ListFilesUseCase.js.map +1 -0
- package/features/file/ListFiles/abstractions.d.ts +47 -0
- package/features/file/ListFiles/abstractions.js +15 -0
- package/features/file/ListFiles/abstractions.js.map +1 -0
- package/features/file/ListFiles/feature.d.ts +1 -0
- package/features/file/ListFiles/feature.js +12 -0
- package/features/file/ListFiles/feature.js.map +1 -0
- package/features/file/ListFiles/index.d.ts +1 -0
- package/features/file/ListFiles/index.js +3 -0
- package/features/file/ListFiles/index.js.map +1 -0
- package/features/file/ListTags/ListTagsRepository.d.ts +16 -0
- package/features/file/ListTags/ListTagsRepository.js +47 -0
- package/features/file/ListTags/ListTagsRepository.js.map +1 -0
- package/features/file/ListTags/ListTagsUseCase.d.ts +13 -0
- package/features/file/ListTags/ListTagsUseCase.js +31 -0
- package/features/file/ListTags/ListTagsUseCase.js.map +1 -0
- package/features/file/ListTags/abstractions.d.ts +43 -0
- package/features/file/ListTags/abstractions.js +15 -0
- package/features/file/ListTags/abstractions.js.map +1 -0
- package/features/file/ListTags/feature.d.ts +1 -0
- package/features/file/ListTags/feature.js +12 -0
- package/features/file/ListTags/feature.js.map +1 -0
- package/features/file/ListTags/index.d.ts +1 -0
- package/features/file/ListTags/index.js +3 -0
- package/features/file/ListTags/index.js.map +1 -0
- package/features/file/UpdateFile/UpdateFileRepository.d.ts +15 -0
- package/features/file/UpdateFile/UpdateFileRepository.js +39 -0
- package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -0
- package/features/file/UpdateFile/UpdateFileUseCase.d.ts +20 -0
- package/features/file/UpdateFile/UpdateFileUseCase.js +78 -0
- package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -0
- package/features/file/UpdateFile/abstractions.d.ts +53 -0
- package/features/file/UpdateFile/abstractions.js +15 -0
- package/features/file/UpdateFile/abstractions.js.map +1 -0
- package/features/file/UpdateFile/events.d.ts +32 -0
- package/features/file/UpdateFile/events.js +28 -0
- package/features/file/UpdateFile/events.js.map +1 -0
- package/features/file/UpdateFile/feature.d.ts +1 -0
- package/features/file/UpdateFile/feature.js +12 -0
- package/features/file/UpdateFile/feature.js.map +1 -0
- package/features/file/UpdateFile/index.d.ts +2 -0
- package/features/file/UpdateFile/index.js +4 -0
- package/features/file/UpdateFile/index.js.map +1 -0
- package/features/file/shared/EntryToFileMapper.d.ts +5 -0
- package/features/file/shared/EntryToFileMapper.js +26 -0
- package/features/file/shared/EntryToFileMapper.js.map +1 -0
- package/features/file/shared/FileInputToEntryInputMapper.d.ts +5 -0
- package/features/file/shared/FileInputToEntryInputMapper.js +30 -0
- package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -0
- package/features/file/shared/FileToEntryMapper.d.ts +5 -0
- package/features/file/shared/FileToEntryMapper.js +29 -0
- package/features/file/shared/FileToEntryMapper.js.map +1 -0
- package/features/settings/GetSettings/GetSettingsUseCase.d.ts +13 -0
- package/features/settings/GetSettings/GetSettingsUseCase.js +28 -0
- package/features/settings/GetSettings/GetSettingsUseCase.js.map +1 -0
- package/features/settings/GetSettings/abstractions.d.ts +17 -0
- package/features/settings/GetSettings/abstractions.js +9 -0
- package/features/settings/GetSettings/abstractions.js.map +1 -0
- package/features/settings/GetSettings/feature.d.ts +1 -0
- package/features/settings/GetSettings/feature.js +10 -0
- package/features/settings/GetSettings/feature.js.map +1 -0
- package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +15 -0
- package/features/settings/SettingsInstaller/SettingsInstaller.js +35 -0
- package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -0
- package/features/settings/SettingsInstaller/feature.d.ts +1 -0
- package/features/settings/SettingsInstaller/feature.js +10 -0
- package/features/settings/SettingsInstaller/feature.js.map +1 -0
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.d.ts +18 -0
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +62 -0
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -0
- package/features/settings/UpdateSettings/abstractions.d.ts +22 -0
- package/features/settings/UpdateSettings/abstractions.js +9 -0
- package/features/settings/UpdateSettings/abstractions.js.map +1 -0
- package/features/settings/UpdateSettings/events.d.ts +32 -0
- package/features/settings/UpdateSettings/events.js +28 -0
- package/features/settings/UpdateSettings/events.js.map +1 -0
- package/features/settings/UpdateSettings/feature.d.ts +1 -0
- package/features/settings/UpdateSettings/feature.js +10 -0
- package/features/settings/UpdateSettings/feature.js.map +1 -0
- package/features/settings/UpdateSettings/index.d.ts +2 -0
- package/features/settings/UpdateSettings/index.js +4 -0
- package/features/settings/UpdateSettings/index.js.map +1 -0
- package/features/shared/abstractions.d.ts +1 -0
- package/features/shared/abstractions.js +3 -0
- package/features/shared/abstractions.js.map +1 -0
- package/graphql/baseSchema.d.ts +2 -2
- package/graphql/baseSchema.js +20 -38
- package/graphql/baseSchema.js.map +1 -1
- package/graphql/createFilesTypeDefs.d.ts +1 -1
- package/graphql/createFilesTypeDefs.js +40 -25
- package/graphql/createFilesTypeDefs.js.map +1 -1
- package/graphql/filesSchema.d.ts +3 -3
- package/graphql/filesSchema.js +73 -46
- package/graphql/filesSchema.js.map +1 -1
- package/graphql/getFileByUrl.d.ts +2 -2
- package/graphql/getFileByUrl.js +17 -26
- package/graphql/getFileByUrl.js.map +1 -1
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +24 -26
- package/graphql/index.js.map +1 -1
- package/graphql/utils.js +6 -13
- package/graphql/utils.js.map +1 -1
- package/index.d.ts +6 -9
- package/index.js +28 -67
- package/index.js.map +1 -1
- package/modelModifier/CmsModelModifier.d.ts +1 -1
- package/modelModifier/CmsModelModifier.js +7 -15
- package/modelModifier/CmsModelModifier.js.map +1 -1
- package/package.json +26 -28
- package/permissions/schema.d.ts +81 -0
- package/permissions/schema.js +22 -0
- package/permissions/schema.js.map +1 -0
- package/types.d.ts +1 -367
- package/types.js +1 -27
- package/types.js.map +1 -1
- package/FileManagerContextSetup.d.ts +0 -13
- package/FileManagerContextSetup.js +0 -115
- package/FileManagerContextSetup.js.map +0 -1
- package/cmsFileStorage/CmsFilesStorage.d.ts +0 -27
- package/cmsFileStorage/CmsFilesStorage.js +0 -164
- package/cmsFileStorage/CmsFilesStorage.js.map +0 -1
- package/cmsFileStorage/ListFilesWhereProcessor.d.ts +0 -7
- package/cmsFileStorage/ListFilesWhereProcessor.js +0 -33
- package/cmsFileStorage/ListFilesWhereProcessor.js.map +0 -1
- package/cmsFileStorage/ListTagsWhereProcessor.d.ts +0 -7
- package/cmsFileStorage/ListTagsWhereProcessor.js +0 -33
- package/cmsFileStorage/ListTagsWhereProcessor.js.map +0 -1
- package/cmsFileStorage/file.model.d.ts +0 -6
- package/cmsFileStorage/file.model.js +0 -158
- package/cmsFileStorage/file.model.js.map +0 -1
- package/createFileManager/files.crud.d.ts +0 -3
- package/createFileManager/files.crud.js +0 -328
- package/createFileManager/files.crud.js.map +0 -1
- package/createFileManager/index.d.ts +0 -3
- package/createFileManager/index.js +0 -23
- package/createFileManager/index.js.map +0 -1
- package/createFileManager/permissions/FilesPermissions.d.ts +0 -4
- package/createFileManager/permissions/FilesPermissions.js +0 -11
- package/createFileManager/permissions/FilesPermissions.js.map +0 -1
- package/createFileManager/permissions/SettingsPermissions.d.ts +0 -4
- package/createFileManager/permissions/SettingsPermissions.js +0 -11
- package/createFileManager/permissions/SettingsPermissions.js.map +0 -1
- package/createFileManager/settings.crud.d.ts +0 -3
- package/createFileManager/settings.crud.js +0 -117
- package/createFileManager/settings.crud.js.map +0 -1
- package/createFileManager/system.crud.d.ts +0 -3
- package/createFileManager/system.crud.js +0 -88
- package/createFileManager/system.crud.js.map +0 -1
- package/createFileManager/types.d.ts +0 -16
- package/createFileManager/types.js +0 -7
- package/createFileManager/types.js.map +0 -1
- package/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +0 -11
- package/delivery/AssetDelivery/AliasAssetRequestResolver.js +0 -74
- package/delivery/AssetDelivery/AliasAssetRequestResolver.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/internalIdentity.d.ts +0 -7
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js +0 -18
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +0 -1
- package/enterprise/applyThreatScanning.d.ts +0 -2
- package/enterprise/applyThreatScanning.js +0 -20
- package/enterprise/applyThreatScanning.js.map +0 -1
- package/handlers/manage/imageManager.d.ts +0 -14
- package/handlers/manage/imageManager.js +0 -75
- package/handlers/manage/imageManager.js.map +0 -1
- package/handlers/manage/index.d.ts +0 -5
- package/handlers/manage/index.js +0 -59
- package/handlers/manage/index.js.map +0 -1
- package/handlers/manage/legacyUtils.d.ts +0 -12
- package/handlers/manage/legacyUtils.js +0 -34
- package/handlers/manage/legacyUtils.js.map +0 -1
- package/handlers/manage/utils.d.ts +0 -12
- package/handlers/manage/utils.js +0 -34
- package/handlers/manage/utils.js.map +0 -1
- package/handlers/types.d.ts +0 -8
- package/handlers/types.js +0 -7
- package/handlers/types.js.map +0 -1
- package/handlers/utils/getEnvironment.d.ts +0 -5
- package/handlers/utils/getEnvironment.js +0 -13
- package/handlers/utils/getEnvironment.js.map +0 -1
- package/handlers/utils/getObjectParams.d.ts +0 -9
- package/handlers/utils/getObjectParams.js +0 -23
- package/handlers/utils/getObjectParams.js.map +0 -1
- package/handlers/utils/index.d.ts +0 -2
- package/handlers/utils/index.js +0 -22
- package/handlers/utils/index.js.map +0 -1
- package/plugins/FilePhysicalStoragePlugin.d.ts +0 -22
- package/plugins/FilePhysicalStoragePlugin.js +0 -31
- package/plugins/FilePhysicalStoragePlugin.js.map +0 -1
- package/plugins/FileStorageTransformPlugin.d.ts +0 -34
- package/plugins/FileStorageTransformPlugin.js +0 -39
- package/plugins/FileStorageTransformPlugin.js.map +0 -1
- package/plugins/index.d.ts +0 -2
- package/plugins/index.js +0 -29
- package/plugins/index.js.map +0 -1
- package/storage/FileStorage.d.ts +0 -34
- package/storage/FileStorage.js +0 -90
- package/storage/FileStorage.js.map +0 -1
- package/types/file.d.ts +0 -49
- package/types/file.js +0 -7
- package/types/file.js.map +0 -1
- package/types/file.lifecycle.d.ts +0 -44
- package/types/file.lifecycle.js +0 -7
- package/types/file.lifecycle.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import zod from "zod";
|
|
2
|
+
export declare const updateSettingsValidation: zod.ZodObject<{
|
|
3
|
+
uploadMinFileSize: zod.ZodOptional<zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, number, number | null | undefined>>;
|
|
4
|
+
uploadMaxFileSize: zod.ZodOptional<zod.ZodEffects<zod.ZodOptional<zod.ZodNullable<zod.ZodNumber>>, number, number | null | undefined>>;
|
|
5
|
+
srcPrefix: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
|
|
6
|
+
}, "strip", zod.ZodTypeAny, {
|
|
7
|
+
srcPrefix: string;
|
|
8
|
+
uploadMinFileSize?: number | undefined;
|
|
9
|
+
uploadMaxFileSize?: number | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
uploadMinFileSize?: number | null | undefined;
|
|
12
|
+
uploadMaxFileSize?: number | null | undefined;
|
|
13
|
+
srcPrefix?: string | undefined;
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import zod from "zod";
|
|
2
|
+
import { ServiceDiscovery } from "@webiny/api";
|
|
3
|
+
const MIN_FILE_SIZE = 0;
|
|
4
|
+
const MAX_FILE_SIZE = 10737418240;
|
|
5
|
+
const uploadMinFileSizeValidation = zod.number().min(MIN_FILE_SIZE, {
|
|
6
|
+
message: `Value needs to be greater than or equal to ${MIN_FILE_SIZE}.`
|
|
7
|
+
}).nullish().transform(value => {
|
|
8
|
+
return value || MIN_FILE_SIZE;
|
|
9
|
+
}).optional();
|
|
10
|
+
const uploadMaxFileSizeValidation = zod.number().max(MAX_FILE_SIZE, {
|
|
11
|
+
message: `Value needs to be lesser than or equal to ${MAX_FILE_SIZE}.`
|
|
12
|
+
}).nullish().transform(value => {
|
|
13
|
+
return value || MAX_FILE_SIZE;
|
|
14
|
+
}).optional();
|
|
15
|
+
export const updateSettingsValidation = zod.object({
|
|
16
|
+
uploadMinFileSize: uploadMinFileSizeValidation,
|
|
17
|
+
uploadMaxFileSize: uploadMaxFileSizeValidation,
|
|
18
|
+
srcPrefix: zod.string().optional().transform(async value => {
|
|
19
|
+
if (!value) {
|
|
20
|
+
const manifest = await ServiceDiscovery.load();
|
|
21
|
+
if (!manifest || !manifest.api) {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
const {
|
|
25
|
+
domain
|
|
26
|
+
} = manifest.api.cloudfront;
|
|
27
|
+
return `https://${domain}/files/`;
|
|
28
|
+
}
|
|
29
|
+
if (typeof value === "string") {
|
|
30
|
+
return value.endsWith("/") ? value : value + "/";
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["zod","ServiceDiscovery","MIN_FILE_SIZE","MAX_FILE_SIZE","uploadMinFileSizeValidation","number","min","message","nullish","transform","value","optional","uploadMaxFileSizeValidation","max","updateSettingsValidation","object","uploadMinFileSize","uploadMaxFileSize","srcPrefix","string","manifest","load","api","domain","cloudfront","endsWith"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport { ServiceDiscovery } from \"@webiny/api\";\n\nconst MIN_FILE_SIZE = 0;\nconst MAX_FILE_SIZE = 10737418240;\n\nconst uploadMinFileSizeValidation = zod\n .number()\n .min(MIN_FILE_SIZE, {\n message: `Value needs to be greater than or equal to ${MIN_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MIN_FILE_SIZE;\n })\n .optional();\n\nconst uploadMaxFileSizeValidation = zod\n .number()\n .max(MAX_FILE_SIZE, {\n message: `Value needs to be lesser than or equal to ${MAX_FILE_SIZE}.`\n })\n .nullish()\n .transform(value => {\n return value || MAX_FILE_SIZE;\n })\n .optional();\n\nexport const updateSettingsValidation = zod.object({\n uploadMinFileSize: uploadMinFileSizeValidation,\n uploadMaxFileSize: uploadMaxFileSizeValidation,\n srcPrefix: zod\n .string()\n .optional()\n .transform(async value => {\n if (!value) {\n const manifest = await ServiceDiscovery.load();\n if (!manifest || !manifest.api) {\n return \"\";\n }\n\n const { domain } = manifest.api.cloudfront;\n\n return `https://${domain}/files/`;\n }\n if (typeof value === \"string\") {\n return value.endsWith(\"/\") ? value : value + \"/\";\n }\n return value;\n })\n});\n"],"mappings":"AAAA,OAAOA,GAAG,MAAM,KAAK;AACrB,SAASC,gBAAgB,QAAQ,aAAa;AAE9C,MAAMC,aAAa,GAAG,CAAC;AACvB,MAAMC,aAAa,GAAG,WAAW;AAEjC,MAAMC,2BAA2B,GAAGJ,GAAG,CAClCK,MAAM,CAAC,CAAC,CACRC,GAAG,CAACJ,aAAa,EAAE;EAChBK,OAAO,EAAE,8CAA8CL,aAAa;AACxE,CAAC,CAAC,CACDM,OAAO,CAAC,CAAC,CACTC,SAAS,CAACC,KAAK,IAAI;EAChB,OAAOA,KAAK,IAAIR,aAAa;AACjC,CAAC,CAAC,CACDS,QAAQ,CAAC,CAAC;AAEf,MAAMC,2BAA2B,GAAGZ,GAAG,CAClCK,MAAM,CAAC,CAAC,CACRQ,GAAG,CAACV,aAAa,EAAE;EAChBI,OAAO,EAAE,6CAA6CJ,aAAa;AACvE,CAAC,CAAC,CACDK,OAAO,CAAC,CAAC,CACTC,SAAS,CAACC,KAAK,IAAI;EAChB,OAAOA,KAAK,IAAIP,aAAa;AACjC,CAAC,CAAC,CACDQ,QAAQ,CAAC,CAAC;AAEf,OAAO,MAAMG,wBAAwB,GAAGd,GAAG,CAACe,MAAM,CAAC;EAC/CC,iBAAiB,EAAEZ,2BAA2B;EAC9Ca,iBAAiB,EAAEL,2BAA2B;EAC9CM,SAAS,EAAElB,GAAG,CACTmB,MAAM,CAAC,CAAC,CACRR,QAAQ,CAAC,CAAC,CACVF,SAAS,CAAC,MAAMC,KAAK,IAAI;IACtB,IAAI,CAACA,KAAK,EAAE;MACR,MAAMU,QAAQ,GAAG,MAAMnB,gBAAgB,CAACoB,IAAI,CAAC,CAAC;MAC9C,IAAI,CAACD,QAAQ,IAAI,CAACA,QAAQ,CAACE,GAAG,EAAE;QAC5B,OAAO,EAAE;MACb;MAEA,MAAM;QAAEC;MAAO,CAAC,GAAGH,QAAQ,CAACE,GAAG,CAACE,UAAU;MAE1C,OAAO,WAAWD,MAAM,SAAS;IACrC;IACA,IAAI,OAAOb,KAAK,KAAK,QAAQ,EAAE;MAC3B,OAAOA,KAAK,CAACe,QAAQ,CAAC,GAAG,CAAC,GAAGf,KAAK,GAAGA,KAAK,GAAG,GAAG;IACpD;IACA,OAAOA,KAAK;EAChB,CAAC;AACT,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FileManagerFeature: import("@webiny/feature/api/createFeature").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFileFeature } from "./file/CreateFile/feature.js";
|
|
3
|
+
import { CreateFilesInBatchFeature } from "./file/CreateFilesInBatch/feature.js";
|
|
4
|
+
import { DeleteFileFeature } from "./file/DeleteFile/feature.js";
|
|
5
|
+
import { GetFileFeature } from "./file/GetFile/feature.js";
|
|
6
|
+
import { ListFilesFeature } from "./file/ListFiles/feature.js";
|
|
7
|
+
import { ListTagsFeature } from "./file/ListTags/feature.js";
|
|
8
|
+
import { UpdateFileFeature } from "./file/UpdateFile/feature.js";
|
|
9
|
+
import { SettingsInstallerFeature } from "./settings/SettingsInstaller/feature.js";
|
|
10
|
+
import { GetSettingsFeature } from "./settings/GetSettings/feature.js";
|
|
11
|
+
import { UpdateSettingsFeature } from "./settings/UpdateSettings/feature.js";
|
|
12
|
+
export const FileManagerFeature = createFeature({
|
|
13
|
+
name: "FileManager",
|
|
14
|
+
register(container) {
|
|
15
|
+
CreateFileFeature.register(container);
|
|
16
|
+
CreateFilesInBatchFeature.register(container);
|
|
17
|
+
UpdateFileFeature.register(container);
|
|
18
|
+
DeleteFileFeature.register(container);
|
|
19
|
+
GetFileFeature.register(container);
|
|
20
|
+
ListFilesFeature.register(container);
|
|
21
|
+
ListTagsFeature.register(container);
|
|
22
|
+
SettingsInstallerFeature.register(container);
|
|
23
|
+
GetSettingsFeature.register(container);
|
|
24
|
+
UpdateSettingsFeature.register(container);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=FileManagerFeature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","CreateFileFeature","CreateFilesInBatchFeature","DeleteFileFeature","GetFileFeature","ListFilesFeature","ListTagsFeature","UpdateFileFeature","SettingsInstallerFeature","GetSettingsFeature","UpdateSettingsFeature","FileManagerFeature","name","register","container"],"sources":["FileManagerFeature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileFeature } from \"~/features/file/CreateFile/feature.js\";\nimport { CreateFilesInBatchFeature } from \"~/features/file/CreateFilesInBatch/feature.js\";\nimport { DeleteFileFeature } from \"~/features/file/DeleteFile/feature.js\";\nimport { GetFileFeature } from \"~/features/file/GetFile/feature.js\";\nimport { ListFilesFeature } from \"~/features/file/ListFiles/feature.js\";\nimport { ListTagsFeature } from \"~/features/file/ListTags/feature.js\";\nimport { UpdateFileFeature } from \"~/features/file/UpdateFile/feature.js\";\nimport { SettingsInstallerFeature } from \"~/features/settings/SettingsInstaller/feature.js\";\nimport { GetSettingsFeature } from \"~/features/settings/GetSettings/feature.js\";\nimport { UpdateSettingsFeature } from \"~/features/settings/UpdateSettings/feature.js\";\n\nexport const FileManagerFeature = createFeature({\n name: \"FileManager\",\n register(container) {\n CreateFileFeature.register(container);\n CreateFilesInBatchFeature.register(container);\n UpdateFileFeature.register(container);\n DeleteFileFeature.register(container);\n GetFileFeature.register(container);\n ListFilesFeature.register(container);\n ListTagsFeature.register(container);\n SettingsInstallerFeature.register(container);\n GetSettingsFeature.register(container);\n UpdateSettingsFeature.register(container);\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,iBAAiB;AAC1B,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAC1B,SAASC,cAAc;AACvB,SAASC,gBAAgB;AACzB,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,wBAAwB;AACjC,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAE9B,OAAO,MAAMC,kBAAkB,GAAGX,aAAa,CAAC;EAC5CY,IAAI,EAAE,aAAa;EACnBC,QAAQA,CAACC,SAAS,EAAE;IAChBb,iBAAiB,CAACY,QAAQ,CAACC,SAAS,CAAC;IACrCZ,yBAAyB,CAACW,QAAQ,CAACC,SAAS,CAAC;IAC7CP,iBAAiB,CAACM,QAAQ,CAACC,SAAS,CAAC;IACrCX,iBAAiB,CAACU,QAAQ,CAACC,SAAS,CAAC;IACrCV,cAAc,CAACS,QAAQ,CAACC,SAAS,CAAC;IAClCT,gBAAgB,CAACQ,QAAQ,CAACC,SAAS,CAAC;IACpCR,eAAe,CAACO,QAAQ,CAACC,SAAS,CAAC;IACnCN,wBAAwB,CAACK,QAAQ,CAACC,SAAS,CAAC;IAC5CL,kBAAkB,CAACI,QAAQ,CAACC,SAAS,CAAC;IACtCJ,qBAAqB,CAACG,QAAQ,CAACC,SAAS,CAAC;EAC7C;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFileRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
|
|
4
|
+
import { FileModel } from "../../../domain/file/abstractions.js";
|
|
5
|
+
import type { File, FileInput } from "../../../domain/file/types.js";
|
|
6
|
+
declare class CreateFileRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
7
|
+
private createEntry;
|
|
8
|
+
private fileModel;
|
|
9
|
+
constructor(createEntry: CreateEntryUseCase.Interface, fileModel: FileModel.Interface);
|
|
10
|
+
execute(data: FileInput): Promise<Result<File, RepositoryAbstraction.Error>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const CreateFileRepository: typeof CreateFileRepositoryImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateFileRepository>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFileRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { CreateEntryUseCase } from "@webiny/api-headless-cms/features/contentEntry/CreateEntry";
|
|
4
|
+
import { FileModel } from "../../../domain/file/abstractions.js";
|
|
5
|
+
import { EntryToFileMapper } from "../shared/EntryToFileMapper.js";
|
|
6
|
+
import { FileNotAuthorizedError, FilePersistenceError } from "../../../domain/file/errors.js";
|
|
7
|
+
import { FileInputToEntryInputMapper } from "../shared/FileInputToEntryInputMapper.js";
|
|
8
|
+
class CreateFileRepositoryImpl {
|
|
9
|
+
constructor(createEntry, fileModel) {
|
|
10
|
+
this.createEntry = createEntry;
|
|
11
|
+
this.fileModel = fileModel;
|
|
12
|
+
}
|
|
13
|
+
async execute(data) {
|
|
14
|
+
const result = await this.createEntry.execute(this.fileModel, FileInputToEntryInputMapper.toEntry(data));
|
|
15
|
+
if (result.isFail()) {
|
|
16
|
+
if (result.error.code === "Cms/Entry/NotAuthorized") {
|
|
17
|
+
return Result.fail(new FileNotAuthorizedError());
|
|
18
|
+
}
|
|
19
|
+
return Result.fail(new FilePersistenceError(result.error));
|
|
20
|
+
}
|
|
21
|
+
const file = EntryToFileMapper.toFile(result.value);
|
|
22
|
+
return Result.ok(file);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export const CreateFileRepository = RepositoryAbstraction.createImplementation({
|
|
26
|
+
implementation: CreateFileRepositoryImpl,
|
|
27
|
+
dependencies: [CreateEntryUseCase, FileModel]
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=CreateFileRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","CreateFileRepository","RepositoryAbstraction","CreateEntryUseCase","FileModel","EntryToFileMapper","FileNotAuthorizedError","FilePersistenceError","FileInputToEntryInputMapper","CreateFileRepositoryImpl","constructor","createEntry","fileModel","execute","data","result","toEntry","isFail","error","code","fail","file","toFile","value","ok","createImplementation","implementation","dependencies"],"sources":["CreateFileRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateFileRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport { CreateEntryUseCase } from \"@webiny/api-headless-cms/features/contentEntry/CreateEntry\";\nimport { FileModel } from \"~/domain/file/abstractions.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { EntryToFileMapper } from \"../shared/EntryToFileMapper.js\";\nimport { FileNotAuthorizedError, FilePersistenceError } from \"~/domain/file/errors.js\";\nimport { FileInputToEntryInputMapper } from \"~/features/file/shared/FileInputToEntryInputMapper.js\";\n\nclass CreateFileRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(\n private createEntry: CreateEntryUseCase.Interface,\n private fileModel: FileModel.Interface\n ) {}\n\n async execute(data: FileInput): Promise<Result<File, RepositoryAbstraction.Error>> {\n const result = await this.createEntry.execute(\n this.fileModel,\n FileInputToEntryInputMapper.toEntry(data)\n );\n\n if (result.isFail()) {\n if (result.error.code === \"Cms/Entry/NotAuthorized\") {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n return Result.fail(new FilePersistenceError(result.error));\n }\n\n const file = EntryToFileMapper.toFile(result.value);\n return Result.ok(file);\n }\n}\n\nexport const CreateFileRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateFileRepositoryImpl,\n dependencies: [CreateEntryUseCase, FileModel]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,oBAAoB,IAAIC,qBAAqB;AACtD,SAASC,kBAAkB,QAAQ,4DAA4D;AAC/F,SAASC,SAAS;AAElB,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB,EAAEC,oBAAoB;AACrD,SAASC,2BAA2B;AAEpC,MAAMC,wBAAwB,CAA4C;EACtEC,WAAWA,CACCC,WAAyC,EACzCC,SAA8B,EACxC;IAAA,KAFUD,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,SAA8B,GAA9BA,SAA8B;EACvC;EAEH,MAAMC,OAAOA,CAACC,IAAe,EAAsD;IAC/E,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACJ,WAAW,CAACE,OAAO,CACzC,IAAI,CAACD,SAAS,EACdJ,2BAA2B,CAACQ,OAAO,CAACF,IAAI,CAC5C,CAAC;IAED,IAAIC,MAAM,CAACE,MAAM,CAAC,CAAC,EAAE;MACjB,IAAIF,MAAM,CAACG,KAAK,CAACC,IAAI,KAAK,yBAAyB,EAAE;QACjD,OAAOnB,MAAM,CAACoB,IAAI,CAAC,IAAId,sBAAsB,CAAC,CAAC,CAAC;MACpD;MAEA,OAAON,MAAM,CAACoB,IAAI,CAAC,IAAIb,oBAAoB,CAACQ,MAAM,CAACG,KAAK,CAAC,CAAC;IAC9D;IAEA,MAAMG,IAAI,GAAGhB,iBAAiB,CAACiB,MAAM,CAACP,MAAM,CAACQ,KAAK,CAAC;IACnD,OAAOvB,MAAM,CAACwB,EAAE,CAACH,IAAI,CAAC;EAC1B;AACJ;AAEA,OAAO,MAAMpB,oBAAoB,GAAGC,qBAAqB,CAACuB,oBAAoB,CAAC;EAC3EC,cAAc,EAAEjB,wBAAwB;EACxCkB,YAAY,EAAE,CAACxB,kBAAkB,EAAEC,SAAS;AAChD,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFileUseCase as UseCaseAbstraction, CreateFileInput, CreateFileRepository } from "./abstractions.js";
|
|
3
|
+
import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
5
|
+
import type { File } from "../../../domain/file/types.js";
|
|
6
|
+
import { FmPermissions } from "../../../features/shared/abstractions.js";
|
|
7
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
8
|
+
declare class CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
9
|
+
private identityContext;
|
|
10
|
+
private permissions;
|
|
11
|
+
private repository;
|
|
12
|
+
private getSettings;
|
|
13
|
+
private eventPublisher;
|
|
14
|
+
constructor(identityContext: IdentityContext.Interface, permissions: FmPermissions.Interface, repository: CreateFileRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
|
|
15
|
+
execute(input: CreateFileInput, meta?: Record<string, any>): Promise<Result<File, UseCaseAbstraction.Error>>;
|
|
16
|
+
private validateInput;
|
|
17
|
+
}
|
|
18
|
+
export declare const CreateFileUseCase: typeof CreateFileUseCaseImpl & {
|
|
19
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateFileUseCase>;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFileUseCase as UseCaseAbstraction, CreateFileRepository } from "./abstractions.js";
|
|
3
|
+
import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
5
|
+
import { FileNotAuthorizedError, InvalidFileSizeError } from "../../../domain/file/errors.js";
|
|
6
|
+
import { FileBeforeCreateEvent, FileAfterCreateEvent } from "./events.js";
|
|
7
|
+
import { FmPermissions } from "../../shared/abstractions.js";
|
|
8
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
9
|
+
import { Identity } from "../../../domain/identity/Identity.js";
|
|
10
|
+
class CreateFileUseCaseImpl {
|
|
11
|
+
constructor(identityContext, permissions, repository, getSettings, eventPublisher) {
|
|
12
|
+
this.identityContext = identityContext;
|
|
13
|
+
this.permissions = permissions;
|
|
14
|
+
this.repository = repository;
|
|
15
|
+
this.getSettings = getSettings;
|
|
16
|
+
this.eventPublisher = eventPublisher;
|
|
17
|
+
}
|
|
18
|
+
async execute(input, meta) {
|
|
19
|
+
const hasPermission = await this.permissions.canCreate("file");
|
|
20
|
+
if (!hasPermission) {
|
|
21
|
+
return Result.fail(new FileNotAuthorizedError());
|
|
22
|
+
}
|
|
23
|
+
const validationResult = await this.validateInput(input);
|
|
24
|
+
if (validationResult.isFail()) {
|
|
25
|
+
return Result.fail(validationResult.error);
|
|
26
|
+
}
|
|
27
|
+
const [id] = input.key.split("/");
|
|
28
|
+
const currentIdentity = this.identityContext.getIdentity();
|
|
29
|
+
|
|
30
|
+
// Prepare file input
|
|
31
|
+
const fileInput = {
|
|
32
|
+
id: input.id || id,
|
|
33
|
+
key: input.key,
|
|
34
|
+
name: input.name,
|
|
35
|
+
size: input.size,
|
|
36
|
+
type: input.type,
|
|
37
|
+
metadata: input.metadata || {},
|
|
38
|
+
location: input.location || {
|
|
39
|
+
folderId: "root"
|
|
40
|
+
},
|
|
41
|
+
tags: input.tags || [],
|
|
42
|
+
extensions: meta || {},
|
|
43
|
+
// system attributes
|
|
44
|
+
createdOn: input.createdOn,
|
|
45
|
+
modifiedOn: input.modifiedOn,
|
|
46
|
+
savedOn: input.savedOn,
|
|
47
|
+
createdBy: input.createdBy ? Identity.from(input.createdBy) : Identity.from(currentIdentity),
|
|
48
|
+
modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,
|
|
49
|
+
savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
|
|
50
|
+
};
|
|
51
|
+
await this.eventPublisher.publish(new FileBeforeCreateEvent({
|
|
52
|
+
file: fileInput,
|
|
53
|
+
meta
|
|
54
|
+
}));
|
|
55
|
+
const result = await this.repository.execute(fileInput);
|
|
56
|
+
if (result.isFail()) {
|
|
57
|
+
return Result.fail(result.error);
|
|
58
|
+
}
|
|
59
|
+
await this.eventPublisher.publish(new FileAfterCreateEvent({
|
|
60
|
+
file: result.value,
|
|
61
|
+
meta
|
|
62
|
+
}));
|
|
63
|
+
return Result.ok(result.value);
|
|
64
|
+
}
|
|
65
|
+
async validateInput(input) {
|
|
66
|
+
const settingsResult = await this.getSettings.execute();
|
|
67
|
+
if (settingsResult.isFail()) {
|
|
68
|
+
return Result.ok();
|
|
69
|
+
}
|
|
70
|
+
const settings = settingsResult.value;
|
|
71
|
+
if (settings) {
|
|
72
|
+
// Validate file size
|
|
73
|
+
if (input.size < settings.uploadMinFileSize || input.size > settings.uploadMaxFileSize) {
|
|
74
|
+
return Result.fail(new InvalidFileSizeError({
|
|
75
|
+
size: input.size,
|
|
76
|
+
minSize: settings.uploadMinFileSize,
|
|
77
|
+
maxSize: settings.uploadMaxFileSize
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return Result.ok();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export const CreateFileUseCase = UseCaseAbstraction.createImplementation({
|
|
85
|
+
implementation: CreateFileUseCaseImpl,
|
|
86
|
+
dependencies: [IdentityContext, FmPermissions.Abstraction, CreateFileRepository, GetSettingsUseCase, EventPublisher]
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=CreateFileUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","CreateFileUseCase","UseCaseAbstraction","CreateFileRepository","GetSettingsUseCase","EventPublisher","FileNotAuthorizedError","InvalidFileSizeError","FileBeforeCreateEvent","FileAfterCreateEvent","FmPermissions","IdentityContext","Identity","CreateFileUseCaseImpl","constructor","identityContext","permissions","repository","getSettings","eventPublisher","execute","input","meta","hasPermission","canCreate","fail","validationResult","validateInput","isFail","error","id","key","split","currentIdentity","getIdentity","fileInput","name","size","type","metadata","location","folderId","tags","extensions","createdOn","modifiedOn","savedOn","createdBy","from","modifiedBy","undefined","savedBy","publish","file","result","value","ok","settingsResult","settings","uploadMinFileSize","uploadMaxFileSize","minSize","maxSize","createImplementation","implementation","dependencies","Abstraction"],"sources":["CreateFileUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport {\n CreateFileUseCase as UseCaseAbstraction,\n CreateFileInput,\n CreateFileRepository\n} from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"../../settings/GetSettings/abstractions.js\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { FileNotAuthorizedError, InvalidFileSizeError } from \"~/domain/file/errors.js\";\nimport { FileBeforeCreateEvent, FileAfterCreateEvent } from \"./events.js\";\nimport { FmPermissions } from \"~/features/shared/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { Identity } from \"~/domain/identity/Identity.js\";\n\nclass CreateFileUseCaseImpl implements UseCaseAbstraction.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private permissions: FmPermissions.Interface,\n private repository: CreateFileRepository.Interface,\n private getSettings: GetSettingsUseCase.Interface,\n private eventPublisher: EventPublisher.Interface\n ) {}\n\n async execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseAbstraction.Error>> {\n const hasPermission = await this.permissions.canCreate(\"file\");\n if (!hasPermission) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const validationResult = await this.validateInput(input);\n if (validationResult.isFail()) {\n return Result.fail(validationResult.error);\n }\n\n const [id] = input.key.split(\"/\");\n const currentIdentity = this.identityContext.getIdentity();\n\n // Prepare file input\n const fileInput: FileInput = {\n id: input.id || id,\n key: input.key,\n name: input.name,\n size: input.size,\n type: input.type,\n metadata: input.metadata || {},\n location: input.location || { folderId: \"root\" },\n tags: input.tags || [],\n extensions: meta || {},\n // system attributes\n createdOn: input.createdOn,\n modifiedOn: input.modifiedOn,\n savedOn: input.savedOn,\n createdBy: input.createdBy\n ? Identity.from(input.createdBy)\n : Identity.from(currentIdentity),\n modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,\n savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)\n };\n\n await this.eventPublisher.publish(new FileBeforeCreateEvent({ file: fileInput, meta }));\n\n const result = await this.repository.execute(fileInput);\n\n if (result.isFail()) {\n return Result.fail(result.error);\n }\n\n await this.eventPublisher.publish(new FileAfterCreateEvent({ file: result.value, meta }));\n\n return Result.ok(result.value);\n }\n\n private async validateInput(\n input: CreateFileInput\n ): Promise<Result<void, InvalidFileSizeError>> {\n const settingsResult = await this.getSettings.execute();\n\n if (settingsResult.isFail()) {\n return Result.ok();\n }\n\n const settings = settingsResult.value;\n\n if (settings) {\n // Validate file size\n if (\n input.size < settings.uploadMinFileSize ||\n input.size > settings.uploadMaxFileSize\n ) {\n return Result.fail(\n new InvalidFileSizeError({\n size: input.size,\n minSize: settings.uploadMinFileSize,\n maxSize: settings.uploadMaxFileSize\n })\n );\n }\n }\n\n return Result.ok();\n }\n}\n\nexport const CreateFileUseCase = UseCaseAbstraction.createImplementation({\n implementation: CreateFileUseCaseImpl,\n dependencies: [\n IdentityContext,\n FmPermissions.Abstraction,\n CreateFileRepository,\n GetSettingsUseCase,\n EventPublisher\n ]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { CreatedBy, File, FileInput } from "../../../domain/file/types.js";
|
|
3
|
+
import { type FilePersistenceError, type InvalidFileSizeError, type FileAlreadyExistsError, FileNotAuthorizedError } from "../../../domain/file/errors.js";
|
|
4
|
+
export interface CreateFileInput {
|
|
5
|
+
id?: string;
|
|
6
|
+
key: string;
|
|
7
|
+
size: number;
|
|
8
|
+
type: string;
|
|
9
|
+
name: string;
|
|
10
|
+
metadata?: Record<string, any>;
|
|
11
|
+
extensions?: Record<string, any>;
|
|
12
|
+
tags?: string[];
|
|
13
|
+
location?: {
|
|
14
|
+
folderId: string;
|
|
15
|
+
};
|
|
16
|
+
createdOn?: string;
|
|
17
|
+
createdBy?: CreatedBy;
|
|
18
|
+
modifiedOn?: string;
|
|
19
|
+
modifiedBy?: CreatedBy;
|
|
20
|
+
savedOn?: string;
|
|
21
|
+
savedBy?: CreatedBy;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* CreateFile repository interface
|
|
25
|
+
*/
|
|
26
|
+
export interface ICreateFileRepository {
|
|
27
|
+
execute(data: FileInput): Promise<Result<File, RepositoryError>>;
|
|
28
|
+
}
|
|
29
|
+
export interface ICreateFileRepositoryErrors {
|
|
30
|
+
notAuthorized: FileNotAuthorizedError;
|
|
31
|
+
persistence: FilePersistenceError;
|
|
32
|
+
}
|
|
33
|
+
type RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];
|
|
34
|
+
export declare const CreateFileRepository: import("@webiny/di").Abstraction<ICreateFileRepository>;
|
|
35
|
+
export declare namespace CreateFileRepository {
|
|
36
|
+
type Interface = ICreateFileRepository;
|
|
37
|
+
type Error = RepositoryError;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* CreateFile use case interface
|
|
41
|
+
*/
|
|
42
|
+
export interface ICreateFileUseCase {
|
|
43
|
+
execute(input: CreateFileInput, meta?: Record<string, any>): Promise<Result<File, UseCaseError>>;
|
|
44
|
+
}
|
|
45
|
+
export interface ICreateFileUseCaseErrors {
|
|
46
|
+
notAuthorized: FileNotAuthorizedError;
|
|
47
|
+
persistence: FilePersistenceError;
|
|
48
|
+
invalidSize: InvalidFileSizeError;
|
|
49
|
+
alreadyExists: FileAlreadyExistsError;
|
|
50
|
+
}
|
|
51
|
+
type UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];
|
|
52
|
+
export declare const CreateFileUseCase: import("@webiny/di").Abstraction<ICreateFileUseCase>;
|
|
53
|
+
export declare namespace CreateFileUseCase {
|
|
54
|
+
type Interface = ICreateFileUseCase;
|
|
55
|
+
type Error = UseCaseError;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* CreateFile repository interface
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export const CreateFileRepository = createAbstraction("CreateFileRepository");
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* CreateFile use case interface
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export const CreateFileUseCase = createAbstraction("CreateFileUseCase");
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createAbstraction","CreateFileRepository","CreateFileUseCase"],"sources":["abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Result } from \"@webiny/feature/api\";\nimport type { CreatedBy, File, FileInput } from \"~/domain/file/types.js\";\nimport {\n type FilePersistenceError,\n type InvalidFileSizeError,\n type FileAlreadyExistsError,\n FileNotAuthorizedError\n} from \"~/domain/file/errors.js\";\n\nexport interface CreateFileInput {\n id?: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata?: Record<string, any>;\n extensions?: Record<string, any>;\n tags?: string[];\n location?: { folderId: string };\n // System attributes\n createdOn?: string;\n createdBy?: CreatedBy;\n modifiedOn?: string;\n modifiedBy?: CreatedBy;\n savedOn?: string;\n savedBy?: CreatedBy;\n}\n\n/**\n * CreateFile repository interface\n */\nexport interface ICreateFileRepository {\n execute(data: FileInput): Promise<Result<File, RepositoryError>>;\n}\n\nexport interface ICreateFileRepositoryErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n}\n\ntype RepositoryError = ICreateFileRepositoryErrors[keyof ICreateFileRepositoryErrors];\n\nexport const CreateFileRepository =\n createAbstraction<ICreateFileRepository>(\"CreateFileRepository\");\n\nexport namespace CreateFileRepository {\n export type Interface = ICreateFileRepository;\n export type Error = RepositoryError;\n}\n\n/**\n * CreateFile use case interface\n */\nexport interface ICreateFileUseCase {\n execute(\n input: CreateFileInput,\n meta?: Record<string, any>\n ): Promise<Result<File, UseCaseError>>;\n}\n\nexport interface ICreateFileUseCaseErrors {\n notAuthorized: FileNotAuthorizedError;\n persistence: FilePersistenceError;\n invalidSize: InvalidFileSizeError;\n alreadyExists: FileAlreadyExistsError;\n}\n\ntype UseCaseError = ICreateFileUseCaseErrors[keyof ICreateFileUseCaseErrors];\n\nexport const CreateFileUseCase = createAbstraction<ICreateFileUseCase>(\"CreateFileUseCase\");\n\nexport namespace CreateFileUseCase {\n export type Interface = ICreateFileUseCase;\n export type Error = UseCaseError;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;;AA6BvD;AACA;AACA;;AAYA,OAAO,MAAMC,oBAAoB,GAC7BD,iBAAiB,CAAwB,sBAAsB,CAAC;;AAOpE;AACA;AACA;;AAiBA,OAAO,MAAME,iBAAiB,GAAGF,iBAAiB,CAAqB,mBAAmB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
2
|
+
import type { IEventHandler } from "@webiny/api-core/features/EventPublisher";
|
|
3
|
+
import type { File, FileInput } from "../../../domain/file/types.js";
|
|
4
|
+
export interface FileBeforeCreatePayload {
|
|
5
|
+
file: FileInput;
|
|
6
|
+
meta?: Record<string, any>;
|
|
7
|
+
}
|
|
8
|
+
export declare class FileBeforeCreateEvent extends DomainEvent<FileBeforeCreatePayload> {
|
|
9
|
+
eventType: "FileManager/File/BeforeCreate";
|
|
10
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<FileBeforeCreateEvent>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const FileBeforeCreateHandler: import("@webiny/di").Abstraction<IEventHandler<FileBeforeCreateEvent>>;
|
|
13
|
+
export declare namespace FileBeforeCreateHandler {
|
|
14
|
+
type Interface = IEventHandler<FileBeforeCreateEvent>;
|
|
15
|
+
type Event = FileBeforeCreateEvent;
|
|
16
|
+
}
|
|
17
|
+
export interface FileAfterCreatePayload {
|
|
18
|
+
file: File;
|
|
19
|
+
meta?: Record<string, any>;
|
|
20
|
+
}
|
|
21
|
+
export declare class FileAfterCreateEvent extends DomainEvent<FileAfterCreatePayload> {
|
|
22
|
+
eventType: "FileManager/File/AfterCreate";
|
|
23
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<IEventHandler<FileAfterCreateEvent>>;
|
|
24
|
+
}
|
|
25
|
+
export declare const FileAfterCreateHandler: import("@webiny/di").Abstraction<IEventHandler<FileAfterCreateEvent>>;
|
|
26
|
+
export declare namespace FileAfterCreateHandler {
|
|
27
|
+
type Interface = IEventHandler<FileAfterCreateEvent>;
|
|
28
|
+
type Event = FileAfterCreateEvent;
|
|
29
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
import { DomainEvent } from "@webiny/api-core/features/EventPublisher";
|
|
3
|
+
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// FileBeforeCreate Event
|
|
6
|
+
// ============================================================================
|
|
7
|
+
|
|
8
|
+
export class FileBeforeCreateEvent extends DomainEvent {
|
|
9
|
+
eventType = "FileManager/File/BeforeCreate";
|
|
10
|
+
getHandlerAbstraction() {
|
|
11
|
+
return FileBeforeCreateHandler;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const FileBeforeCreateHandler = createAbstraction("FileBeforeCreateHandler");
|
|
15
|
+
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// FileAfterCreate Event
|
|
18
|
+
// ============================================================================
|
|
19
|
+
|
|
20
|
+
export class FileAfterCreateEvent extends DomainEvent {
|
|
21
|
+
eventType = "FileManager/File/AfterCreate";
|
|
22
|
+
getHandlerAbstraction() {
|
|
23
|
+
return FileAfterCreateHandler;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export const FileAfterCreateHandler = createAbstraction("FileAfterCreateHandler");
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createAbstraction","DomainEvent","FileBeforeCreateEvent","eventType","getHandlerAbstraction","FileBeforeCreateHandler","FileAfterCreateEvent","FileAfterCreateHandler"],"sources":["events.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport { DomainEvent } from \"@webiny/api-core/features/EventPublisher\";\nimport type { IEventHandler } from \"@webiny/api-core/features/EventPublisher\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\n\n// ============================================================================\n// FileBeforeCreate Event\n// ============================================================================\n\nexport interface FileBeforeCreatePayload {\n file: FileInput;\n meta?: Record<string, any>;\n}\n\nexport class FileBeforeCreateEvent extends DomainEvent<FileBeforeCreatePayload> {\n eventType = \"FileManager/File/BeforeCreate\" as const;\n\n getHandlerAbstraction() {\n return FileBeforeCreateHandler;\n }\n}\n\nexport const FileBeforeCreateHandler =\n createAbstraction<IEventHandler<FileBeforeCreateEvent>>(\"FileBeforeCreateHandler\");\n\nexport namespace FileBeforeCreateHandler {\n export type Interface = IEventHandler<FileBeforeCreateEvent>;\n export type Event = FileBeforeCreateEvent;\n}\n\n// ============================================================================\n// FileAfterCreate Event\n// ============================================================================\n\nexport interface FileAfterCreatePayload {\n file: File;\n meta?: Record<string, any>;\n}\n\nexport class FileAfterCreateEvent extends DomainEvent<FileAfterCreatePayload> {\n eventType = \"FileManager/File/AfterCreate\" as const;\n\n getHandlerAbstraction() {\n return FileAfterCreateHandler;\n }\n}\n\nexport const FileAfterCreateHandler =\n createAbstraction<IEventHandler<FileAfterCreateEvent>>(\"FileAfterCreateHandler\");\n\nexport namespace FileAfterCreateHandler {\n export type Interface = IEventHandler<FileAfterCreateEvent>;\n export type Event = FileAfterCreateEvent;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,WAAW,QAAQ,0CAA0C;;AAItE;AACA;AACA;;AAOA,OAAO,MAAMC,qBAAqB,SAASD,WAAW,CAA0B;EAC5EE,SAAS,GAAG,+BAA+B;EAE3CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOC,uBAAuB;EAClC;AACJ;AAEA,OAAO,MAAMA,uBAAuB,GAChCL,iBAAiB,CAAuC,yBAAyB,CAAC;;AAOtF;AACA;AACA;;AAOA,OAAO,MAAMM,oBAAoB,SAASL,WAAW,CAAyB;EAC1EE,SAAS,GAAG,8BAA8B;EAE1CC,qBAAqBA,CAAA,EAAG;IACpB,OAAOG,sBAAsB;EACjC;AACJ;AAEA,OAAO,MAAMA,sBAAsB,GAC/BP,iBAAiB,CAAsC,wBAAwB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const CreateFileFeature: import("@webiny/feature/api/createFeature.js").FeatureDefinition<unknown>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFileRepository } from "./CreateFileRepository.js";
|
|
3
|
+
import { CreateFileUseCase } from "./CreateFileUseCase.js";
|
|
4
|
+
export const CreateFileFeature = createFeature({
|
|
5
|
+
name: "FileManager/CreateFile",
|
|
6
|
+
register(container) {
|
|
7
|
+
container.register(CreateFileUseCase);
|
|
8
|
+
container.register(CreateFileRepository).inSingletonScope();
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createFeature","CreateFileRepository","CreateFileUseCase","CreateFileFeature","name","register","container","inSingletonScope"],"sources":["feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { CreateFileRepository } from \"./CreateFileRepository.js\";\nimport { CreateFileUseCase } from \"./CreateFileUseCase.js\";\n\nexport const CreateFileFeature = createFeature({\n name: \"FileManager/CreateFile\",\n register(container) {\n container.register(CreateFileUseCase);\n container.register(CreateFileRepository).inSingletonScope();\n }\n});\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,qBAAqB;AACnD,SAASC,oBAAoB;AAC7B,SAASC,iBAAiB;AAE1B,OAAO,MAAMC,iBAAiB,GAAGH,aAAa,CAAC;EAC3CI,IAAI,EAAE,wBAAwB;EAC9BC,QAAQA,CAACC,SAAS,EAAE;IAChBA,SAAS,CAACD,QAAQ,CAACH,iBAAiB,CAAC;IACrCI,SAAS,CAACD,QAAQ,CAACJ,oBAAoB,CAAC,CAACM,gBAAgB,CAAC,CAAC;EAC/D;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CreateFileUseCase","FileAfterCreateHandler","FileBeforeCreateHandler"],"sources":["index.ts"],"sourcesContent":["export { CreateFileUseCase } from \"./abstractions.js\";\nexport { FileAfterCreateHandler, FileBeforeCreateHandler } from \"./events.js\";\n"],"mappings":"AAAA,SAASA,iBAAiB;AAC1B,SAASC,sBAAsB,EAAEC,uBAAuB","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFilesInBatchRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import type { File, FileInput } from "../../../domain/file/types.js";
|
|
4
|
+
import { CreateFileRepository } from "../../../features/file/CreateFile/abstractions.js";
|
|
5
|
+
declare class CreateFilesInBatchRepositoryImpl implements RepositoryAbstraction.Interface {
|
|
6
|
+
private createFileRepository;
|
|
7
|
+
constructor(createFileRepository: CreateFileRepository.Interface);
|
|
8
|
+
createBatch(files: FileInput[]): Promise<Result<File[], RepositoryAbstraction.Error>>;
|
|
9
|
+
}
|
|
10
|
+
export declare const CreateFilesInBatchRepository: typeof CreateFilesInBatchRepositoryImpl & {
|
|
11
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateFilesInBatchRepository>;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFilesInBatchRepository as RepositoryAbstraction } from "./abstractions.js";
|
|
3
|
+
import { CreateFileRepository } from "../CreateFile/abstractions.js";
|
|
4
|
+
class CreateFilesInBatchRepositoryImpl {
|
|
5
|
+
constructor(createFileRepository) {
|
|
6
|
+
this.createFileRepository = createFileRepository;
|
|
7
|
+
}
|
|
8
|
+
async createBatch(files) {
|
|
9
|
+
const results = await Promise.all(files.map(async input => {
|
|
10
|
+
return this.createFileRepository.execute(input);
|
|
11
|
+
}));
|
|
12
|
+
|
|
13
|
+
// Return only successful results.
|
|
14
|
+
// TODO: group files into successful and failed
|
|
15
|
+
const createdFiles = results.filter(result => result.isOk()).map(result => result.value);
|
|
16
|
+
return Result.ok(createdFiles);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export const CreateFilesInBatchRepository = RepositoryAbstraction.createImplementation({
|
|
20
|
+
implementation: CreateFilesInBatchRepositoryImpl,
|
|
21
|
+
dependencies: [CreateFileRepository]
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=CreateFilesInBatchRepository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","CreateFilesInBatchRepository","RepositoryAbstraction","CreateFileRepository","CreateFilesInBatchRepositoryImpl","constructor","createFileRepository","createBatch","files","results","Promise","all","map","input","execute","createdFiles","filter","result","isOk","value","ok","createImplementation","implementation","dependencies"],"sources":["CreateFilesInBatchRepository.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { CreateFilesInBatchRepository as RepositoryAbstraction } from \"./abstractions.js\";\nimport type { File, FileInput } from \"~/domain/file/types.js\";\nimport { CreateFileRepository } from \"~/features/file/CreateFile/abstractions.js\";\n\nclass CreateFilesInBatchRepositoryImpl implements RepositoryAbstraction.Interface {\n constructor(private createFileRepository: CreateFileRepository.Interface) {}\n\n async createBatch(files: FileInput[]): Promise<Result<File[], RepositoryAbstraction.Error>> {\n const results = await Promise.all(\n files.map(async input => {\n return this.createFileRepository.execute(input);\n })\n );\n\n // Return only successful results.\n // TODO: group files into successful and failed\n const createdFiles = results.filter(result => result.isOk()).map(result => result.value);\n\n return Result.ok(createdFiles);\n }\n}\n\nexport const CreateFilesInBatchRepository = RepositoryAbstraction.createImplementation({\n implementation: CreateFilesInBatchRepositoryImpl,\n dependencies: [CreateFileRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,4BAA4B,IAAIC,qBAAqB;AAE9D,SAASC,oBAAoB;AAE7B,MAAMC,gCAAgC,CAA4C;EAC9EC,WAAWA,CAASC,oBAAoD,EAAE;IAAA,KAAtDA,oBAAoD,GAApDA,oBAAoD;EAAG;EAE3E,MAAMC,WAAWA,CAACC,KAAkB,EAAwD;IACxF,MAAMC,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC7BH,KAAK,CAACI,GAAG,CAAC,MAAMC,KAAK,IAAI;MACrB,OAAO,IAAI,CAACP,oBAAoB,CAACQ,OAAO,CAACD,KAAK,CAAC;IACnD,CAAC,CACL,CAAC;;IAED;IACA;IACA,MAAME,YAAY,GAAGN,OAAO,CAACO,MAAM,CAACC,MAAM,IAAIA,MAAM,CAACC,IAAI,CAAC,CAAC,CAAC,CAACN,GAAG,CAACK,MAAM,IAAIA,MAAM,CAACE,KAAK,CAAC;IAExF,OAAOnB,MAAM,CAACoB,EAAE,CAACL,YAAY,CAAC;EAClC;AACJ;AAEA,OAAO,MAAMd,4BAA4B,GAAGC,qBAAqB,CAACmB,oBAAoB,CAAC;EACnFC,cAAc,EAAElB,gCAAgC;EAChDmB,YAAY,EAAE,CAACpB,oBAAoB;AACvC,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { CreateFilesInBatchUseCase as UseCaseAbstraction, CreateFilesInBatchInput, CreateFilesInBatchRepository } from "./abstractions.js";
|
|
3
|
+
import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
|
|
4
|
+
import { EventPublisher } from "@webiny/api-core/features/EventPublisher";
|
|
5
|
+
import type { File } from "../../../domain/file/types.js";
|
|
6
|
+
import { FmPermissions } from "../../../features/shared/abstractions.js";
|
|
7
|
+
declare class CreateFilesInBatchUseCaseImpl implements UseCaseAbstraction.Interface {
|
|
8
|
+
private permissions;
|
|
9
|
+
private repository;
|
|
10
|
+
private getSettings;
|
|
11
|
+
private eventPublisher;
|
|
12
|
+
constructor(permissions: FmPermissions.Interface, repository: CreateFilesInBatchRepository.Interface, getSettings: GetSettingsUseCase.Interface, eventPublisher: EventPublisher.Interface);
|
|
13
|
+
execute(input: CreateFilesInBatchInput): Promise<Result<File[], UseCaseAbstraction.Error>>;
|
|
14
|
+
private validateInput;
|
|
15
|
+
}
|
|
16
|
+
export declare const CreateFilesInBatchUseCase: typeof CreateFilesInBatchUseCaseImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").ICreateFilesInBatchUseCase>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|