@webiny/api-file-manager 0.0.0-unstable.de38392959 → 0.0.0-unstable.df7a8bb475
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 -8
- package/contants.js.map +1 -1
- package/delivery/AssetDelivery/Asset.d.ts +6 -8
- package/delivery/AssetDelivery/Asset.js +13 -18
- package/delivery/AssetDelivery/Asset.js.map +1 -1
- package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +17 -15
- package/delivery/AssetDelivery/AssetDeliveryConfig.js +18 -26
- package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +1 -1
- package/delivery/AssetDelivery/AssetRequest.d.ts +3 -2
- 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 +11 -14
- 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 +2 -2
- package/delivery/AssetDelivery/SetCacheControlHeaders.js +1 -8
- package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +1 -1
- package/delivery/AssetDelivery/SetResponseHeaders.d.ts +4 -4
- package/delivery/AssetDelivery/SetResponseHeaders.js +1 -8
- package/delivery/AssetDelivery/SetResponseHeaders.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +1 -2
- 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 +5 -12
- 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 +5 -3
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js +17 -14
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +3 -2
- 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 +22 -21
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +5 -3
- package/delivery/AssetDelivery/privateFiles/PublicCache.js +17 -14
- package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +1 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +2 -1
- 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 -1
- 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 +2 -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 +23 -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 +91 -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 +87 -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 +48 -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 +39 -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 +48 -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 +32 -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 +81 -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 +13 -0
- package/features/shared/abstractions.js +5 -0
- package/features/shared/abstractions.js.map +1 -0
- package/graphql/baseSchema.d.ts +2 -2
- package/graphql/baseSchema.js +20 -37
- package/graphql/baseSchema.js.map +1 -1
- package/graphql/createFilesTypeDefs.d.ts +1 -1
- package/graphql/createFilesTypeDefs.js +42 -28
- package/graphql/createFilesTypeDefs.js.map +1 -1
- package/graphql/filesSchema.d.ts +3 -3
- package/graphql/filesSchema.js +73 -48
- 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.d.ts +1 -1
- package/graphql/utils.js +6 -13
- package/graphql/utils.js.map +1 -1
- package/index.d.ts +6 -9
- package/index.js +43 -63
- package/index.js.map +1 -1
- package/modelModifier/CmsModelModifier.d.ts +3 -3
- package/modelModifier/CmsModelModifier.js +7 -15
- package/modelModifier/CmsModelModifier.js.map +1 -1
- package/package.json +26 -38
- package/permissions/FilesPermissions.d.ts +4 -0
- package/permissions/FilesPermissions.js +4 -0
- package/permissions/FilesPermissions.js.map +1 -0
- package/permissions/SettingsPermissions.d.ts +4 -0
- package/permissions/SettingsPermissions.js +4 -0
- package/permissions/SettingsPermissions.js.map +1 -0
- package/types.d.ts +3 -364
- 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 -176
- 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/createFileManagerPlugins.d.ts +0 -7
- package/cmsFileStorage/createFileManagerPlugins.js +0 -17
- package/cmsFileStorage/createFileManagerPlugins.js.map +0 -1
- package/cmsFileStorage/createModelField.d.ts +0 -5
- package/cmsFileStorage/createModelField.js +0 -41
- package/cmsFileStorage/createModelField.js.map +0 -1
- package/cmsFileStorage/file.model.d.ts +0 -6
- package/cmsFileStorage/file.model.js +0 -153
- package/cmsFileStorage/file.model.js.map +0 -1
- package/cmsFileStorage/isInstallationPending.d.ts +0 -4
- package/cmsFileStorage/isInstallationPending.js +0 -23
- package/cmsFileStorage/isInstallationPending.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 -15
- 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/settings.crud.d.ts +0 -3
- package/createFileManager/settings.crud.js +0 -107
- 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/delivery/AssetDelivery/AliasAssetRequestResolver.d.ts +0 -10
- 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 -19
- package/delivery/AssetDelivery/privateFiles/internalIdentity.js.map +0 -1
- package/handlers/manage/imageManager.d.ts +0 -14
- package/handlers/manage/imageManager.js +0 -76
- 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 -38
- package/handlers/manage/legacyUtils.js.map +0 -1
- package/handlers/manage/utils.d.ts +0 -12
- package/handlers/manage/utils.js +0 -38
- 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 -21
- 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 -33
- package/storage/FileStorage.js +0 -90
- package/storage/FileStorage.js.map +0 -1
- package/types/file.d.ts +0 -48
- 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,56 @@
|
|
|
1
|
+
import { ModelFactory } from "@webiny/api-headless-cms/features/modelBuilder/index.js";
|
|
2
|
+
import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
|
|
3
|
+
export const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? "fmFile" : "wbyFmFile";
|
|
4
|
+
class FilePrivateModelImpl {
|
|
5
|
+
constructor(wcp) {
|
|
6
|
+
this.wcp = wcp;
|
|
7
|
+
}
|
|
8
|
+
async execute(builder) {
|
|
9
|
+
const model = builder.private({
|
|
10
|
+
modelId: FILE_MODEL_ID,
|
|
11
|
+
name: "FmFile"
|
|
12
|
+
});
|
|
13
|
+
const privateFiles = this.wcp.canUsePrivateFiles();
|
|
14
|
+
model.fields(fields => ({
|
|
15
|
+
name: fields.text().label("Name").required("Value is required."),
|
|
16
|
+
key: fields.text().label("Key").required("Value is required."),
|
|
17
|
+
type: fields.text().label("Type").required("Value is required."),
|
|
18
|
+
size: fields.number().label("Size").required("Value is required."),
|
|
19
|
+
metadata: fields.object().label("Metadata").renderer("hidden").fields(fields => ({
|
|
20
|
+
image: fields.object().label("Image").fields(fields => ({
|
|
21
|
+
width: fields.number().label("Width"),
|
|
22
|
+
height: fields.number().label("Height"),
|
|
23
|
+
format: fields.text().label("Format"),
|
|
24
|
+
orientation: fields.number().label("Orientation")
|
|
25
|
+
})),
|
|
26
|
+
// Store complete raw EXIF as JSON
|
|
27
|
+
exif: fields.searchableJson().label("EXIF Data"),
|
|
28
|
+
// Store complete raw IPTC as JSON
|
|
29
|
+
iptc: fields.searchableJson().label("IPTC Data")
|
|
30
|
+
})),
|
|
31
|
+
tags: fields.text().label("Tags").tags(["$bulk-edit"]).list().required("Value is required.")
|
|
32
|
+
}));
|
|
33
|
+
if (privateFiles) {
|
|
34
|
+
model.fields(fields => ({
|
|
35
|
+
accessControl: fields.object().label("Access Control").tags(["$bulk-edit"]).fields(fields => ({
|
|
36
|
+
type: fields.text().label("Type").predefinedValues([{
|
|
37
|
+
label: "Public",
|
|
38
|
+
value: "public",
|
|
39
|
+
selected: true
|
|
40
|
+
}, {
|
|
41
|
+
label: "Private",
|
|
42
|
+
value: "private-authenticated",
|
|
43
|
+
selected: false
|
|
44
|
+
}])
|
|
45
|
+
}))
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
return [model];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export const FileModel = ModelFactory.createImplementation({
|
|
52
|
+
implementation: FilePrivateModelImpl,
|
|
53
|
+
dependencies: [WcpContext]
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=file.model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ModelFactory","WcpContext","FILE_MODEL_ID","process","env","WEBINY_API_LEGACY_MODELS","FilePrivateModelImpl","constructor","wcp","execute","builder","model","private","modelId","name","privateFiles","canUsePrivateFiles","fields","text","label","required","key","type","size","number","metadata","object","renderer","image","width","height","format","orientation","exif","searchableJson","iptc","tags","list","accessControl","predefinedValues","value","selected","FileModel","createImplementation","implementation","dependencies"],"sources":["file.model.ts"],"sourcesContent":["import { ModelFactory } from \"@webiny/api-headless-cms/features/modelBuilder/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\n\nexport const FILE_MODEL_ID = process.env.WEBINY_API_LEGACY_MODELS ? \"fmFile\" : \"wbyFmFile\";\n\nclass FilePrivateModelImpl implements ModelFactory.Interface {\n public constructor(private wcp: WcpContext.Interface) {}\n\n public async execute(builder: ModelFactory.Builder) {\n const model = builder.private({\n modelId: FILE_MODEL_ID,\n name: \"FmFile\"\n });\n const privateFiles = this.wcp.canUsePrivateFiles();\n\n model.fields(fields => ({\n name: fields.text().label(\"Name\").required(\"Value is required.\"),\n key: fields.text().label(\"Key\").required(\"Value is required.\"),\n type: fields.text().label(\"Type\").required(\"Value is required.\"),\n size: fields.number().label(\"Size\").required(\"Value is required.\"),\n metadata: fields\n .object()\n .label(\"Metadata\")\n .renderer(\"hidden\")\n .fields(fields => ({\n image: fields\n .object()\n .label(\"Image\")\n .fields(fields => ({\n width: fields.number().label(\"Width\"),\n height: fields.number().label(\"Height\"),\n format: fields.text().label(\"Format\"),\n orientation: fields.number().label(\"Orientation\")\n })),\n // Store complete raw EXIF as JSON\n exif: fields.searchableJson().label(\"EXIF Data\"),\n // Store complete raw IPTC as JSON\n iptc: fields.searchableJson().label(\"IPTC Data\")\n })),\n tags: fields\n .text()\n .label(\"Tags\")\n .tags([\"$bulk-edit\"])\n .list()\n .required(\"Value is required.\")\n }));\n\n if (privateFiles) {\n model.fields(fields => ({\n accessControl: fields\n .object()\n .label(\"Access Control\")\n .tags([\"$bulk-edit\"])\n .fields(fields => ({\n type: fields\n .text()\n .label(\"Type\")\n .predefinedValues([\n {\n label: \"Public\",\n value: \"public\",\n selected: true\n },\n {\n label: \"Private\",\n value: \"private-authenticated\",\n selected: false\n }\n ])\n }))\n }));\n }\n\n return [model];\n }\n}\n\nexport const FileModel = ModelFactory.createImplementation({\n implementation: FilePrivateModelImpl,\n dependencies: [WcpContext]\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type PublicAccess = {
|
|
2
|
+
type: "public";
|
|
3
|
+
};
|
|
4
|
+
export type PrivateAuthenticatedAccess = {
|
|
5
|
+
type: "private-authenticated";
|
|
6
|
+
};
|
|
7
|
+
export type FileAccess = PublicAccess | PrivateAuthenticatedAccess;
|
|
8
|
+
export interface CreatedBy {
|
|
9
|
+
id: string;
|
|
10
|
+
displayName: string;
|
|
11
|
+
type: string;
|
|
12
|
+
}
|
|
13
|
+
export interface File {
|
|
14
|
+
id: string;
|
|
15
|
+
key: string;
|
|
16
|
+
size: number;
|
|
17
|
+
type: string;
|
|
18
|
+
name: string;
|
|
19
|
+
metadata: Record<string, any>;
|
|
20
|
+
accessControl?: FileAccess;
|
|
21
|
+
location: {
|
|
22
|
+
folderId: string;
|
|
23
|
+
};
|
|
24
|
+
tags: string[];
|
|
25
|
+
createdOn: string;
|
|
26
|
+
modifiedOn: string | undefined;
|
|
27
|
+
savedOn: string;
|
|
28
|
+
createdBy: CreatedBy;
|
|
29
|
+
modifiedBy: CreatedBy | undefined;
|
|
30
|
+
savedBy: CreatedBy;
|
|
31
|
+
extensions?: Record<string, any>;
|
|
32
|
+
}
|
|
33
|
+
export interface FileInput {
|
|
34
|
+
id: string;
|
|
35
|
+
createdOn?: string;
|
|
36
|
+
modifiedOn?: string;
|
|
37
|
+
savedOn?: string;
|
|
38
|
+
createdBy?: CreatedBy;
|
|
39
|
+
modifiedBy?: CreatedBy;
|
|
40
|
+
savedBy?: CreatedBy;
|
|
41
|
+
key: string;
|
|
42
|
+
name: string;
|
|
43
|
+
size: number;
|
|
44
|
+
type: string;
|
|
45
|
+
metadata: Record<string, any>;
|
|
46
|
+
location?: {
|
|
47
|
+
folderId: string;
|
|
48
|
+
};
|
|
49
|
+
tags: string[];
|
|
50
|
+
extensions?: Record<string, any>;
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type PublicAccess = {\n type: \"public\";\n};\n\nexport type PrivateAuthenticatedAccess = {\n type: \"private-authenticated\";\n};\n\nexport type FileAccess = PublicAccess | PrivateAuthenticatedAccess;\n\nexport interface CreatedBy {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport interface File {\n id: string;\n key: string;\n size: number;\n type: string;\n name: string;\n metadata: Record<string, any>;\n accessControl?: FileAccess;\n location: {\n folderId: string;\n };\n tags: string[];\n createdOn: string;\n modifiedOn: string | undefined;\n savedOn: string;\n createdBy: CreatedBy;\n modifiedBy: CreatedBy | undefined;\n savedBy: CreatedBy;\n extensions?: Record<string, any>;\n}\n\nexport interface FileInput {\n id: string;\n\n // Entry-level fields (we don't use revisions for files)\n createdOn?: string;\n modifiedOn?: string;\n savedOn?: string;\n createdBy?: CreatedBy;\n modifiedBy?: CreatedBy;\n savedBy?: CreatedBy;\n\n key: string;\n name: string;\n size: number;\n type: string;\n metadata: Record<string, any>;\n location?: {\n folderId: string;\n };\n tags: string[];\n extensions?: Record<string, any>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Identity","from","identity","id","displayName","type"],"sources":["Identity.ts"],"sourcesContent":["interface IdentityDto {\n id: string;\n displayName: string;\n type: string;\n}\n\nexport class Identity {\n static from(identity: IdentityDto): IdentityDto {\n return {\n id: identity.id,\n displayName: identity.displayName,\n type: identity.type\n };\n }\n}\n"],"mappings":"AAMA,OAAO,MAAMA,QAAQ,CAAC;EAClB,OAAOC,IAAIA,CAACC,QAAqB,EAAe;IAC5C,OAAO;MACHC,EAAE,EAAED,QAAQ,CAACC,EAAE;MACfC,WAAW,EAAEF,QAAQ,CAACE,WAAW;MACjCC,IAAI,EAAEH,QAAQ,CAACG;IACnB,CAAC;EACL;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FILE_MANAGER_GENERAL_SETTINGS = "FileManager/General";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FILE_MANAGER_GENERAL_SETTINGS"],"sources":["constants.ts"],"sourcesContent":["export const FILE_MANAGER_GENERAL_SETTINGS = \"FileManager/General\";\n"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,GAAG,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseError } from "@webiny/feature/api";
|
|
2
|
+
import type { OutputErrors } from "@webiny/utils/createZodError.js";
|
|
3
|
+
export declare class SettingsNotFoundError extends BaseError {
|
|
4
|
+
readonly code: "FileManager/Settings/NotFoundError";
|
|
5
|
+
constructor();
|
|
6
|
+
}
|
|
7
|
+
export declare class SettingsUpdateError extends BaseError {
|
|
8
|
+
readonly code: "FileManager/Settings/UpdateError";
|
|
9
|
+
constructor(error: Error);
|
|
10
|
+
}
|
|
11
|
+
interface ValidationParams {
|
|
12
|
+
invalidFields: OutputErrors;
|
|
13
|
+
}
|
|
14
|
+
export declare class SettingsValidationError extends BaseError<ValidationParams> {
|
|
15
|
+
readonly code: "FileManager/Settings/ValidationError";
|
|
16
|
+
constructor(invalidFields: OutputErrors);
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { BaseError } from "@webiny/feature/api";
|
|
2
|
+
export class SettingsNotFoundError extends BaseError {
|
|
3
|
+
code = "FileManager/Settings/NotFoundError";
|
|
4
|
+
constructor() {
|
|
5
|
+
super({
|
|
6
|
+
message: "File manager settings not found."
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export class SettingsUpdateError extends BaseError {
|
|
11
|
+
code = "FileManager/Settings/UpdateError";
|
|
12
|
+
constructor(error) {
|
|
13
|
+
super({
|
|
14
|
+
message: `Error updating settings: ${error.message}`
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class SettingsValidationError extends BaseError {
|
|
19
|
+
code = "FileManager/Settings/ValidationError";
|
|
20
|
+
constructor(invalidFields) {
|
|
21
|
+
super({
|
|
22
|
+
message: "Validation failed.",
|
|
23
|
+
data: {
|
|
24
|
+
invalidFields
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BaseError","SettingsNotFoundError","code","constructor","message","SettingsUpdateError","error","SettingsValidationError","invalidFields","data"],"sources":["errors.ts"],"sourcesContent":["import { BaseError } from \"@webiny/feature/api\";\nimport type { OutputErrors } from \"@webiny/utils/createZodError.js\";\n\nexport class SettingsNotFoundError extends BaseError {\n override readonly code = \"FileManager/Settings/NotFoundError\" as const;\n\n constructor() {\n super({\n message: \"File manager settings not found.\"\n });\n }\n}\n\nexport class SettingsUpdateError extends BaseError {\n override readonly code = \"FileManager/Settings/UpdateError\" as const;\n\n constructor(error: Error) {\n super({\n message: `Error updating settings: ${error.message}`\n });\n }\n}\n\ninterface ValidationParams {\n invalidFields: OutputErrors;\n}\n\nexport class SettingsValidationError extends BaseError<ValidationParams> {\n override readonly code = \"FileManager/Settings/ValidationError\" as const;\n\n constructor(invalidFields: OutputErrors) {\n super({\n message: \"Validation failed.\",\n data: { invalidFields }\n });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,qBAAqB;AAG/C,OAAO,MAAMC,qBAAqB,SAASD,SAAS,CAAC;EAC/BE,IAAI,GAAG,oCAAoC;EAE7DC,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC;MACFC,OAAO,EAAE;IACb,CAAC,CAAC;EACN;AACJ;AAEA,OAAO,MAAMC,mBAAmB,SAASL,SAAS,CAAC;EAC7BE,IAAI,GAAG,kCAAkC;EAE3DC,WAAWA,CAACG,KAAY,EAAE;IACtB,KAAK,CAAC;MACFF,OAAO,EAAE,4BAA4BE,KAAK,CAACF,OAAO;IACtD,CAAC,CAAC;EACN;AACJ;AAMA,OAAO,MAAMG,uBAAuB,SAASP,SAAS,CAAmB;EACnDE,IAAI,GAAG,sCAAsC;EAE/DC,WAAWA,CAACK,aAA2B,EAAE;IACrC,KAAK,CAAC;MACFJ,OAAO,EAAE,oBAAoB;MAC7BK,IAAI,EAAE;QAAED;MAAc;IAC1B,CAAC,CAAC;EACN;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export interface FileManagerSettings {\n uploadMinFileSize: number;\n uploadMaxFileSize: number;\n srcPrefix: string;\n}\n\nexport interface UpdateSettingsInput {\n uploadMinFileSize?: number;\n uploadMaxFileSize?: number;\n srcPrefix?: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -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 { FilePermissions } 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 filePermissions;
|
|
11
|
+
private repository;
|
|
12
|
+
private getSettings;
|
|
13
|
+
private eventPublisher;
|
|
14
|
+
constructor(identityContext: IdentityContext.Interface, filePermissions: FilePermissions.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,91 @@
|
|
|
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 { FilePermissions } 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, filePermissions, repository, getSettings, eventPublisher) {
|
|
12
|
+
this.identityContext = identityContext;
|
|
13
|
+
this.filePermissions = filePermissions;
|
|
14
|
+
this.repository = repository;
|
|
15
|
+
this.getSettings = getSettings;
|
|
16
|
+
this.eventPublisher = eventPublisher;
|
|
17
|
+
}
|
|
18
|
+
async execute(input, meta) {
|
|
19
|
+
const hasPermission = await this.filePermissions.ensure({
|
|
20
|
+
rwd: "w"
|
|
21
|
+
});
|
|
22
|
+
if (!hasPermission) {
|
|
23
|
+
return Result.fail(new FileNotAuthorizedError());
|
|
24
|
+
}
|
|
25
|
+
const validationResult = await this.validateInput(input);
|
|
26
|
+
if (validationResult.isFail()) {
|
|
27
|
+
return Result.fail(validationResult.error);
|
|
28
|
+
}
|
|
29
|
+
const [id] = input.key.split("/");
|
|
30
|
+
const currentIdentity = this.identityContext.getIdentity();
|
|
31
|
+
|
|
32
|
+
// Prepare file input
|
|
33
|
+
const fileInput = {
|
|
34
|
+
id: input.id || id,
|
|
35
|
+
key: input.key,
|
|
36
|
+
name: input.name,
|
|
37
|
+
size: input.size,
|
|
38
|
+
type: input.type,
|
|
39
|
+
metadata: input.metadata || {},
|
|
40
|
+
location: input.location || {
|
|
41
|
+
folderId: "root"
|
|
42
|
+
},
|
|
43
|
+
tags: input.tags || [],
|
|
44
|
+
extensions: meta || {},
|
|
45
|
+
// system attributes
|
|
46
|
+
createdOn: input.createdOn,
|
|
47
|
+
modifiedOn: input.modifiedOn,
|
|
48
|
+
savedOn: input.savedOn,
|
|
49
|
+
createdBy: input.createdBy ? Identity.from(input.createdBy) : Identity.from(currentIdentity),
|
|
50
|
+
modifiedBy: input.modifiedBy ? Identity.from(input.modifiedBy) : undefined,
|
|
51
|
+
savedBy: input.savedBy ? Identity.from(input.savedBy) : Identity.from(currentIdentity)
|
|
52
|
+
};
|
|
53
|
+
await this.eventPublisher.publish(new FileBeforeCreateEvent({
|
|
54
|
+
file: fileInput,
|
|
55
|
+
meta
|
|
56
|
+
}));
|
|
57
|
+
const result = await this.repository.execute(fileInput);
|
|
58
|
+
if (result.isFail()) {
|
|
59
|
+
return Result.fail(result.error);
|
|
60
|
+
}
|
|
61
|
+
await this.eventPublisher.publish(new FileAfterCreateEvent({
|
|
62
|
+
file: result.value,
|
|
63
|
+
meta
|
|
64
|
+
}));
|
|
65
|
+
return Result.ok(result.value);
|
|
66
|
+
}
|
|
67
|
+
async validateInput(input) {
|
|
68
|
+
const settingsResult = await this.getSettings.execute();
|
|
69
|
+
if (settingsResult.isFail()) {
|
|
70
|
+
return Result.ok();
|
|
71
|
+
}
|
|
72
|
+
const settings = settingsResult.value;
|
|
73
|
+
if (settings) {
|
|
74
|
+
// Validate file size
|
|
75
|
+
if (input.size < settings.uploadMinFileSize || input.size > settings.uploadMaxFileSize) {
|
|
76
|
+
return Result.fail(new InvalidFileSizeError({
|
|
77
|
+
size: input.size,
|
|
78
|
+
minSize: settings.uploadMinFileSize,
|
|
79
|
+
maxSize: settings.uploadMaxFileSize
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return Result.ok();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export const CreateFileUseCase = UseCaseAbstraction.createImplementation({
|
|
87
|
+
implementation: CreateFileUseCaseImpl,
|
|
88
|
+
dependencies: [IdentityContext, FilePermissions, CreateFileRepository, GetSettingsUseCase, EventPublisher]
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
//# sourceMappingURL=CreateFileUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Result","CreateFileUseCase","UseCaseAbstraction","CreateFileRepository","GetSettingsUseCase","EventPublisher","FileNotAuthorizedError","InvalidFileSizeError","FileBeforeCreateEvent","FileAfterCreateEvent","FilePermissions","IdentityContext","Identity","CreateFileUseCaseImpl","constructor","identityContext","filePermissions","repository","getSettings","eventPublisher","execute","input","meta","hasPermission","ensure","rwd","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"],"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 { FilePermissions } 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 filePermissions: FilePermissions.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.filePermissions.ensure({ rwd: \"w\" });\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 FilePermissions,\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":[]}
|