@webiny/api-file-manager 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e
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/FileManagerAppFeature.d.ts +5 -0
- package/FileManagerAppFeature.js +21 -0
- package/FileManagerAppFeature.js.map +1 -0
- package/contants.js +2 -1
- package/contants.js.map +1 -1
- package/delivery/AssetDelivery/Asset.js +50 -56
- package/delivery/AssetDelivery/Asset.js.map +1 -1
- package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
- package/delivery/AssetDelivery/AssetRequest.js +20 -19
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
- package/delivery/AssetDelivery/abstractions/AssetReply.js +28 -27
- package/delivery/AssetDelivery/abstractions/AssetReply.js.map +1 -1
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js +4 -5
- package/delivery/AssetDelivery/createAssetDeliveryPluginLoader.js.map +1 -1
- package/delivery/AssetDeliveryRoute.d.ts +24 -0
- package/delivery/AssetDeliveryRoute.js +69 -0
- package/delivery/AssetDeliveryRoute.js.map +1 -0
- package/delivery/index.d.ts +3 -12
- package/delivery/index.js +2 -8
- package/delivery/setupAssetDelivery.d.ts +1 -2
- package/delivery/setupAssetDelivery.js +2 -112
- package/delivery/setupAssetDelivery.js.map +1 -1
- package/domain/file/abstractions.d.ts +13 -5
- package/domain/file/abstractions.js +2 -5
- package/domain/file/abstractions.js.map +1 -1
- package/domain/file/errors.js +67 -76
- package/domain/file/errors.js.map +1 -1
- package/domain/file/file.model.d.ts +3 -3
- package/domain/file/file.model.js +63 -50
- package/domain/file/file.model.js.map +1 -1
- package/domain/file/types.js +0 -3
- package/domain/identity/Identity.js +9 -8
- package/domain/identity/Identity.js.map +1 -1
- package/domain/permissionsSchema.js +26 -15
- package/domain/permissionsSchema.js.map +1 -1
- package/domain/settings/constants.js +2 -1
- package/domain/settings/constants.js.map +1 -1
- package/domain/settings/errors.js +22 -24
- package/domain/settings/errors.js.map +1 -1
- package/domain/settings/types.js +0 -3
- package/domain/settings/validation.js +19 -28
- package/domain/settings/validation.js.map +1 -1
- package/exports/api/file-manager/assetDelivery.d.ts +10 -0
- package/exports/api/file-manager/assetDelivery.js +8 -0
- package/exports/api/file-manager/file.d.ts +2 -1
- package/exports/api/file-manager/file.js +2 -3
- package/exports/api/file-manager/permissions.js +0 -2
- package/exports/api/file-manager/settings.js +0 -2
- package/features/FileManagerFeature.js +22 -15
- package/features/FileManagerFeature.js.map +1 -1
- package/features/assetDelivery/Asset/Asset.d.ts +8 -0
- package/features/assetDelivery/Asset/Asset.js +14 -0
- package/features/assetDelivery/Asset/Asset.js.map +1 -0
- package/features/assetDelivery/Asset/abstractions.d.ts +10 -0
- package/features/assetDelivery/Asset/abstractions.js +5 -0
- package/features/assetDelivery/Asset/abstractions.js.map +1 -0
- package/features/assetDelivery/Asset/index.d.ts +1 -0
- package/features/assetDelivery/Asset/index.js +1 -0
- package/features/assetDelivery/FilesAssetRequestResolver.d.ts +9 -0
- package/features/assetDelivery/FilesAssetRequestResolver.js +29 -0
- package/features/assetDelivery/FilesAssetRequestResolver.js.map +1 -0
- package/features/assetDelivery/NullAssetOutputStrategy.d.ts +8 -0
- package/features/assetDelivery/NullAssetOutputStrategy.js +14 -0
- package/features/assetDelivery/NullAssetOutputStrategy.js.map +1 -0
- package/features/assetDelivery/NullAssetReply.js +14 -0
- package/features/assetDelivery/NullAssetReply.js.map +1 -0
- package/features/assetDelivery/NullAssetResolver.d.ts +8 -0
- package/features/assetDelivery/NullAssetResolver.js +13 -0
- package/features/assetDelivery/NullAssetResolver.js.map +1 -0
- package/features/assetDelivery/ObjectKey/ObjectKey.d.ts +8 -0
- package/features/assetDelivery/ObjectKey/ObjectKey.js +28 -0
- package/features/assetDelivery/ObjectKey/ObjectKey.js.map +1 -0
- package/features/assetDelivery/ObjectKey/abstractions.d.ts +12 -0
- package/features/assetDelivery/ObjectKey/abstractions.js +5 -0
- package/features/assetDelivery/ObjectKey/abstractions.js.map +1 -0
- package/features/assetDelivery/ObjectKey/index.d.ts +1 -0
- package/features/assetDelivery/ObjectKey/index.js +1 -0
- package/features/assetDelivery/StreamAssetReply/StreamAssetReply.d.ts +8 -0
- package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js +22 -0
- package/features/assetDelivery/StreamAssetReply/StreamAssetReply.js.map +1 -0
- package/features/assetDelivery/StreamAssetReply/abstractions.d.ts +11 -0
- package/features/assetDelivery/StreamAssetReply/abstractions.js +5 -0
- package/features/assetDelivery/StreamAssetReply/abstractions.js.map +1 -0
- package/features/assetDelivery/StreamAssetReply/index.d.ts +1 -0
- package/features/assetDelivery/StreamAssetReply/index.js +1 -0
- package/features/assetDelivery/abstractions/AssetType.d.ts +17 -0
- package/features/assetDelivery/abstractions/AssetType.js +5 -0
- package/features/assetDelivery/abstractions/AssetType.js.map +1 -0
- package/features/assetDelivery/abstractions.d.ts +65 -0
- package/features/assetDelivery/abstractions.js +11 -0
- package/features/assetDelivery/abstractions.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.d.ts +12 -0
- package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.js +30 -0
- package/features/assetDelivery/assetTypes/image/AssetKeyGenerator.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetType.d.ts +9 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetType.js +18 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetType.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.d.ts +5 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js +5 -0
- package/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/SharpTransformer.d.ts +18 -0
- package/features/assetDelivery/assetTypes/image/SharpTransformer.js +47 -0
- package/features/assetDelivery/assetTypes/image/SharpTransformer.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/WidthCollection.d.ts +8 -0
- package/features/assetDelivery/assetTypes/image/WidthCollection.js +22 -0
- package/features/assetDelivery/assetTypes/image/WidthCollection.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/imageFormat.d.ts +26 -0
- package/features/assetDelivery/assetTypes/image/imageFormat.js +51 -0
- package/features/assetDelivery/assetTypes/image/imageFormat.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/imageTypes.d.ts +39 -0
- package/features/assetDelivery/assetTypes/image/imageTypes.js +0 -0
- package/features/assetDelivery/assetTypes/image/index.d.ts +5 -0
- package/features/assetDelivery/assetTypes/image/index.js +4 -0
- package/features/assetDelivery/assetTypes/image/normalizeImageOptions.d.ts +6 -0
- package/features/assetDelivery/assetTypes/image/normalizeImageOptions.js +56 -0
- package/features/assetDelivery/assetTypes/image/normalizeImageOptions.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/transformImage.d.ts +59 -0
- package/features/assetDelivery/assetTypes/image/transformImage.js +146 -0
- package/features/assetDelivery/assetTypes/image/transformImage.js.map +1 -0
- package/features/assetDelivery/assetTypes/image/utils.d.ts +26 -0
- package/features/assetDelivery/assetTypes/image/utils.js +47 -0
- package/features/assetDelivery/assetTypes/image/utils.js.map +1 -0
- package/features/assetDelivery/feature.d.ts +4 -0
- package/features/assetDelivery/feature.js +35 -0
- package/features/assetDelivery/feature.js.map +1 -0
- package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +4 -0
- package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.js +20 -0
- package/features/assetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +1 -0
- package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +5 -0
- package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +9 -0
- package/features/assetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +1 -0
- package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +11 -0
- package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +26 -0
- package/features/assetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +1 -0
- package/features/assetDelivery/privateFiles/PrivateCache.d.ts +8 -0
- package/features/assetDelivery/privateFiles/PrivateCache.js +22 -0
- package/features/assetDelivery/privateFiles/PrivateCache.js.map +1 -0
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +11 -0
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +31 -0
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -0
- package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +19 -0
- package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js +65 -0
- package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -0
- package/features/assetDelivery/privateFiles/PublicCache.d.ts +8 -0
- package/features/assetDelivery/privateFiles/PublicCache.js +22 -0
- package/features/assetDelivery/privateFiles/PublicCache.js.map +1 -0
- package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +9 -0
- package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +21 -0
- package/features/assetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +1 -0
- package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +9 -0
- package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +21 -0
- package/features/assetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +1 -0
- package/features/assetDelivery/transformation/CallableContentsReader.d.ts +11 -0
- package/features/assetDelivery/transformation/CallableContentsReader.js +14 -0
- package/features/assetDelivery/transformation/CallableContentsReader.js.map +1 -0
- package/features/assetDelivery/transformation/TransformationAssetProcessor.d.ts +9 -0
- package/features/assetDelivery/transformation/TransformationAssetProcessor.js +25 -0
- package/features/assetDelivery/transformation/TransformationAssetProcessor.js.map +1 -0
- package/features/assetDelivery/transformation/index.d.ts +5 -0
- package/features/assetDelivery/transformation/index.js +4 -0
- package/features/extractMetadata/ExtractMetadataHandler.d.ts +11 -0
- package/features/extractMetadata/ExtractMetadataHandler.js +25 -0
- package/features/extractMetadata/ExtractMetadataHandler.js.map +1 -0
- package/features/extractMetadata/ExtractMetadataInput.d.ts +3 -0
- package/features/extractMetadata/ExtractMetadataInput.js +0 -0
- package/features/file/CreateFile/CreateFileRepository.d.ts +3 -3
- package/features/file/CreateFile/CreateFileRepository.js +22 -19
- package/features/file/CreateFile/CreateFileRepository.js.map +1 -1
- package/features/file/CreateFile/CreateFileUseCase.js +68 -75
- package/features/file/CreateFile/CreateFileUseCase.js.map +1 -1
- package/features/file/CreateFile/abstractions.js +3 -14
- package/features/file/CreateFile/abstractions.js.map +1 -1
- package/features/file/CreateFile/events.js +17 -26
- package/features/file/CreateFile/events.js.map +1 -1
- package/features/file/CreateFile/feature.js +7 -6
- package/features/file/CreateFile/feature.js.map +1 -1
- package/features/file/CreateFile/index.js +0 -2
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js +15 -17
- package/features/file/CreateFilesInBatch/CreateFilesInBatchRepository.js.map +1 -1
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js +59 -70
- package/features/file/CreateFilesInBatch/CreateFilesInBatchUseCase.js.map +1 -1
- package/features/file/CreateFilesInBatch/abstractions.js +3 -14
- package/features/file/CreateFilesInBatch/abstractions.js.map +1 -1
- package/features/file/CreateFilesInBatch/events.js +17 -26
- package/features/file/CreateFilesInBatch/events.js.map +1 -1
- package/features/file/CreateFilesInBatch/feature.js +7 -6
- package/features/file/CreateFilesInBatch/feature.js.map +1 -1
- package/features/file/CreateFilesInBatch/index.js +0 -2
- package/features/file/DeleteFile/DeleteFileRepository.d.ts +3 -3
- package/features/file/DeleteFile/DeleteFileRepository.js +23 -21
- package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -1
- package/features/file/DeleteFile/DeleteFileUseCase.js +31 -33
- package/features/file/DeleteFile/DeleteFileUseCase.js.map +1 -1
- package/features/file/DeleteFile/abstractions.js +3 -14
- package/features/file/DeleteFile/abstractions.js.map +1 -1
- package/features/file/DeleteFile/events.js +17 -26
- package/features/file/DeleteFile/events.js.map +1 -1
- package/features/file/DeleteFile/feature.js +7 -6
- package/features/file/DeleteFile/feature.js.map +1 -1
- package/features/file/DeleteFile/index.js +1 -3
- package/features/file/FileModelProvider.d.ts +31 -0
- package/features/file/FileModelProvider.js +22 -0
- package/features/file/FileModelProvider.js.map +1 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.d.ts +12 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.js +19 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.js.map +1 -0
- package/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.d.ts +13 -0
- package/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.js +28 -0
- package/features/file/FileUrlGenerator/SettingsFileUrlPrefixProvider.js.map +1 -0
- package/features/file/FileUrlGenerator/abstractions.d.ts +15 -4
- package/features/file/FileUrlGenerator/abstractions.js +3 -2
- package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
- package/features/file/FileUrlGenerator/feature.d.ts +4 -0
- package/features/file/FileUrlGenerator/feature.js +13 -0
- package/features/file/FileUrlGenerator/feature.js.map +1 -0
- package/features/file/FileUrlGenerator/index.d.ts +2 -0
- package/features/file/FileUrlGenerator/index.js +1 -0
- package/features/file/GetFile/GetFileRepository.d.ts +3 -3
- package/features/file/GetFile/GetFileRepository.js +24 -23
- package/features/file/GetFile/GetFileRepository.js.map +1 -1
- package/features/file/GetFile/GetFileUseCase.js +19 -21
- package/features/file/GetFile/GetFileUseCase.js.map +1 -1
- package/features/file/GetFile/abstractions.js +3 -14
- package/features/file/GetFile/abstractions.js.map +1 -1
- package/features/file/GetFile/feature.js +7 -6
- package/features/file/GetFile/feature.js.map +1 -1
- package/features/file/GetFile/index.js +0 -2
- package/features/file/GetFileByUrl/GetFileByUrlUseCase.d.ts +15 -0
- package/features/file/GetFileByUrl/GetFileByUrlUseCase.js +37 -0
- package/features/file/GetFileByUrl/GetFileByUrlUseCase.js.map +1 -0
- package/features/file/GetFileByUrl/abstractions.d.ts +18 -0
- package/features/file/GetFileByUrl/abstractions.js +5 -0
- package/features/file/GetFileByUrl/abstractions.js.map +1 -0
- package/features/file/GetFileByUrl/feature.d.ts +4 -0
- package/features/file/GetFileByUrl/feature.js +11 -0
- package/features/file/GetFileByUrl/feature.js.map +1 -0
- package/features/file/GetFileByUrl/index.d.ts +1 -0
- package/features/file/GetFileByUrl/index.js +1 -0
- package/features/file/GetFileContentsById/abstractions.d.ts +20 -0
- package/features/file/GetFileContentsById/abstractions.js +5 -0
- package/features/file/GetFileContentsById/abstractions.js.map +1 -0
- package/features/file/GetFileContentsById/index.d.ts +1 -0
- package/features/file/GetFileContentsById/index.js +1 -0
- package/features/file/GetFileContentsByKey/abstractions.d.ts +17 -0
- package/features/file/GetFileContentsByKey/abstractions.js +5 -0
- package/features/file/GetFileContentsByKey/abstractions.js.map +1 -0
- package/features/file/GetFileContentsByKey/index.d.ts +1 -0
- package/features/file/GetFileContentsByKey/index.js +1 -0
- package/features/file/ListFiles/ListFilesRepository.d.ts +3 -3
- package/features/file/ListFiles/ListFilesRepository.js +44 -41
- package/features/file/ListFiles/ListFilesRepository.js.map +1 -1
- package/features/file/ListFiles/ListFilesUseCase.js +33 -34
- package/features/file/ListFiles/ListFilesUseCase.js.map +1 -1
- package/features/file/ListFiles/abstractions.js +3 -14
- package/features/file/ListFiles/abstractions.js.map +1 -1
- package/features/file/ListFiles/feature.js +7 -6
- package/features/file/ListFiles/feature.js.map +1 -1
- package/features/file/ListFiles/index.js +0 -2
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.d.ts +15 -5
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +46 -29
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -1
- package/features/file/ListImagesByTagTool/feature.js +6 -5
- package/features/file/ListImagesByTagTool/feature.js.map +1 -1
- package/features/file/ListTags/ListTagsRepository.d.ts +3 -3
- package/features/file/ListTags/ListTagsRepository.js +33 -37
- package/features/file/ListTags/ListTagsRepository.js.map +1 -1
- package/features/file/ListTags/ListTagsUseCase.js +21 -21
- package/features/file/ListTags/ListTagsUseCase.js.map +1 -1
- package/features/file/ListTags/abstractions.js +3 -14
- package/features/file/ListTags/abstractions.js.map +1 -1
- package/features/file/ListTags/feature.js +7 -6
- package/features/file/ListTags/feature.js.map +1 -1
- package/features/file/ListTags/index.js +0 -2
- package/features/file/UpdateFile/UpdateFileRepository.d.ts +3 -3
- package/features/file/UpdateFile/UpdateFileRepository.js +28 -29
- package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -1
- package/features/file/UpdateFile/UpdateFileUseCase.js +57 -65
- package/features/file/UpdateFile/UpdateFileUseCase.js.map +1 -1
- package/features/file/UpdateFile/abstractions.js +3 -14
- package/features/file/UpdateFile/abstractions.js.map +1 -1
- package/features/file/UpdateFile/events.js +17 -26
- package/features/file/UpdateFile/events.js.map +1 -1
- package/features/file/UpdateFile/feature.js +7 -6
- package/features/file/UpdateFile/feature.js.map +1 -1
- package/features/file/UpdateFile/index.js +1 -3
- package/features/file/shared/EntryToFileMapper.js +25 -24
- package/features/file/shared/EntryToFileMapper.js.map +1 -1
- package/features/file/shared/FileInputToEntryInputMapper.js +29 -28
- package/features/file/shared/FileInputToEntryInputMapper.js.map +1 -1
- package/features/file/shared/FileToEntryMapper.js +28 -27
- package/features/file/shared/FileToEntryMapper.js.map +1 -1
- package/features/permissions/abstractions.js +2 -1
- package/features/permissions/abstractions.js.map +1 -1
- package/features/permissions/feature.js +2 -1
- package/features/permissions/feature.js.map +1 -1
- package/features/settings/GetSettings/GetSettingsUseCase.js +19 -19
- package/features/settings/GetSettings/GetSettingsUseCase.js.map +1 -1
- package/features/settings/GetSettings/abstractions.js +2 -7
- package/features/settings/GetSettings/abstractions.js.map +1 -1
- package/features/settings/GetSettings/feature.js +6 -5
- package/features/settings/GetSettings/feature.js.map +1 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +3 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.js +29 -25
- package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
- package/features/settings/SettingsInstaller/feature.js +6 -5
- package/features/settings/SettingsInstaller/feature.js.map +1 -1
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +41 -48
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
- package/features/settings/UpdateSettings/abstractions.js +2 -7
- package/features/settings/UpdateSettings/abstractions.js.map +1 -1
- package/features/settings/UpdateSettings/events.js +17 -26
- package/features/settings/UpdateSettings/events.js.map +1 -1
- package/features/settings/UpdateSettings/feature.js +6 -5
- package/features/settings/UpdateSettings/feature.js.map +1 -1
- package/features/settings/UpdateSettings/index.js +0 -2
- package/features/shared/abstractions.js +0 -2
- package/features/upload/CompleteMultiPartUpload/abstractions.d.ts +12 -0
- package/features/upload/CompleteMultiPartUpload/abstractions.js +5 -0
- package/features/upload/CompleteMultiPartUpload/abstractions.js.map +1 -0
- package/features/upload/CompleteMultiPartUpload/index.d.ts +1 -0
- package/features/upload/CompleteMultiPartUpload/index.js +1 -0
- package/features/upload/CreateMultiPartUpload/abstractions.d.ts +14 -0
- package/features/upload/CreateMultiPartUpload/abstractions.js +5 -0
- package/features/upload/CreateMultiPartUpload/abstractions.js.map +1 -0
- package/features/upload/CreateMultiPartUpload/index.d.ts +1 -0
- package/features/upload/CreateMultiPartUpload/index.js +1 -0
- package/features/upload/GetUploadPayload/abstractions.d.ts +10 -0
- package/features/upload/GetUploadPayload/abstractions.js +5 -0
- package/features/upload/GetUploadPayload/abstractions.js.map +1 -0
- package/features/upload/GetUploadPayload/index.d.ts +1 -0
- package/features/upload/GetUploadPayload/index.js +1 -0
- package/features/upload/ReadFileMetadata/MetadataReader.d.ts +11 -0
- package/features/upload/ReadFileMetadata/MetadataReader.js +21 -0
- package/features/upload/ReadFileMetadata/MetadataReader.js.map +1 -0
- package/features/upload/ReadFileMetadata/abstractions.d.ts +15 -0
- package/features/upload/ReadFileMetadata/abstractions.js +5 -0
- package/features/upload/ReadFileMetadata/abstractions.js.map +1 -0
- package/features/upload/ReadFileMetadata/feature.d.ts +4 -0
- package/features/upload/ReadFileMetadata/feature.js +11 -0
- package/features/upload/ReadFileMetadata/feature.js.map +1 -0
- package/features/upload/ReadFileMetadata/index.d.ts +1 -0
- package/features/upload/ReadFileMetadata/index.js +1 -0
- package/features/upload/WriteFileMetadata/MetadataWriter.d.ts +14 -0
- package/features/upload/WriteFileMetadata/MetadataWriter.js +36 -0
- package/features/upload/WriteFileMetadata/MetadataWriter.js.map +1 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +11 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +20 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +1 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +11 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +22 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +1 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.d.ts +11 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js +22 -0
- package/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js.map +1 -0
- package/features/upload/WriteFileMetadata/abstractions.d.ts +9 -0
- package/features/upload/WriteFileMetadata/abstractions.js +5 -0
- package/features/upload/WriteFileMetadata/abstractions.js.map +1 -0
- package/features/upload/WriteFileMetadata/feature.d.ts +4 -0
- package/features/upload/WriteFileMetadata/feature.js +17 -0
- package/features/upload/WriteFileMetadata/feature.js.map +1 -0
- package/features/upload/index.d.ts +17 -0
- package/features/upload/index.js +10 -0
- package/features/upload/types.d.ts +28 -0
- package/features/upload/types.js +0 -0
- package/features/upload/utils/FileExtension.d.ts +6 -0
- package/features/upload/utils/FileExtension.js +16 -0
- package/features/upload/utils/FileExtension.js.map +1 -0
- package/features/upload/utils/FileKey.d.ts +11 -0
- package/features/upload/utils/FileKey.js +33 -0
- package/features/upload/utils/FileKey.js.map +1 -0
- package/features/upload/utils/FileNormalizer.d.ts +13 -0
- package/features/upload/utils/FileNormalizer.js +41 -0
- package/features/upload/utils/FileNormalizer.js.map +1 -0
- package/features/upload/utils/FileUploadModifier.d.ts +30 -0
- package/features/upload/utils/FileUploadModifier.js +39 -0
- package/features/upload/utils/FileUploadModifier.js.map +1 -0
- package/features/upload/utils/checkPermissions.d.ts +5 -0
- package/features/upload/utils/checkPermissions.js +22 -0
- package/features/upload/utils/checkPermissions.js.map +1 -0
- package/features/upload/utils/createFileNormalizerFromContext.d.ts +3 -0
- package/features/upload/utils/createFileNormalizerFromContext.js +9 -0
- package/features/upload/utils/createFileNormalizerFromContext.js.map +1 -0
- package/features/upload/utils/mimeTypes.d.ts +1 -0
- package/features/upload/utils/mimeTypes.js +9 -0
- package/features/upload/utils/mimeTypes.js.map +1 -0
- package/graphql/FmGraphQLSchema.d.ts +24 -0
- package/graphql/FmGraphQLSchema.js +458 -0
- package/graphql/FmGraphQLSchema.js.map +1 -0
- package/index.d.ts +3 -6
- package/index.js +11 -33
- package/index.js.map +1 -1
- package/package.json +28 -21
- package/types.d.ts +1 -1
- package/types.js +1 -3
- package/delivery/AssetDelivery/AssetDeliveryConfig.d.ts +0 -65
- package/delivery/AssetDelivery/AssetDeliveryConfig.js +0 -94
- package/delivery/AssetDelivery/AssetDeliveryConfig.js.map +0 -1
- package/delivery/AssetDelivery/FilesAssetRequestResolver.d.ts +0 -6
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js +0 -30
- package/delivery/AssetDelivery/FilesAssetRequestResolver.js.map +0 -1
- package/delivery/AssetDelivery/NullAssetOutputStrategy.d.ts +0 -4
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js +0 -8
- package/delivery/AssetDelivery/NullAssetOutputStrategy.js.map +0 -1
- package/delivery/AssetDelivery/NullAssetReply.js +0 -13
- package/delivery/AssetDelivery/NullAssetReply.js.map +0 -1
- package/delivery/AssetDelivery/NullAssetResolver.d.ts +0 -5
- package/delivery/AssetDelivery/NullAssetResolver.js +0 -7
- package/delivery/AssetDelivery/NullAssetResolver.js.map +0 -1
- package/delivery/AssetDelivery/NullRequestResolver.d.ts +0 -4
- package/delivery/AssetDelivery/NullRequestResolver.js +0 -7
- package/delivery/AssetDelivery/NullRequestResolver.js.map +0 -1
- package/delivery/AssetDelivery/SetCacheControlHeaders.d.ts +0 -8
- package/delivery/AssetDelivery/SetCacheControlHeaders.js +0 -18
- package/delivery/AssetDelivery/SetCacheControlHeaders.js.map +0 -1
- package/delivery/AssetDelivery/SetResponseHeaders.d.ts +0 -18
- package/delivery/AssetDelivery/SetResponseHeaders.js +0 -18
- package/delivery/AssetDelivery/SetResponseHeaders.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.d.ts +0 -4
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetContentsReader.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.d.ts +0 -4
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetOutputStrategy.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetProcessor.d.ts +0 -4
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetProcessor.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.d.ts +0 -5
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetRequestResolver.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetResolver.d.ts +0 -4
- package/delivery/AssetDelivery/abstractions/AssetResolver.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetResolver.js.map +0 -1
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.d.ts +0 -4
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js +0 -3
- package/delivery/AssetDelivery/abstractions/AssetTransformationStrategy.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.d.ts +0 -4
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js +0 -3
- package/delivery/AssetDelivery/privateFiles/AssetAuthorizer.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.d.ts +0 -4
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js +0 -19
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedAssetReply.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.d.ts +0 -4
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js +0 -8
- package/delivery/AssetDelivery/privateFiles/NotAuthorizedOutputStrategy.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.d.ts +0 -8
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js +0 -20
- package/delivery/AssetDelivery/privateFiles/PrivateAuthenticatedAuthorizer.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/PrivateCache.d.ts +0 -6
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js +0 -21
- package/delivery/AssetDelivery/privateFiles/PrivateCache.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.d.ts +0 -8
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +0 -30
- package/delivery/AssetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.d.ts +0 -13
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js +0 -63
- package/delivery/AssetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/PublicCache.d.ts +0 -6
- package/delivery/AssetDelivery/privateFiles/PublicCache.js +0 -21
- package/delivery/AssetDelivery/privateFiles/PublicCache.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.d.ts +0 -7
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js +0 -20
- package/delivery/AssetDelivery/privateFiles/RedirectToPrivateUrlOutputStrategy.js.map +0 -1
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.d.ts +0 -7
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js +0 -20
- package/delivery/AssetDelivery/privateFiles/RedirectToPublicUrlOutputStrategy.js.map +0 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.d.ts +0 -4
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js +0 -7
- package/delivery/AssetDelivery/transformation/PassthroughAssetProcessor.js.map +0 -1
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +0 -4
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js +0 -7
- package/delivery/AssetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +0 -1
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.d.ts +0 -6
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js +0 -19
- package/delivery/AssetDelivery/transformation/TransformationAssetProcessor.js.map +0 -1
- package/delivery/index.js.map +0 -1
- package/domain/file/types.js.map +0 -1
- package/domain/settings/types.js.map +0 -1
- package/exports/api/file-manager/file.js.map +0 -1
- package/exports/api/file-manager/permissions.js.map +0 -1
- package/exports/api/file-manager/settings.js.map +0 -1
- package/features/file/CreateFile/index.js.map +0 -1
- package/features/file/CreateFilesInBatch/index.js.map +0 -1
- package/features/file/DeleteFile/index.js.map +0 -1
- package/features/file/GetFile/index.js.map +0 -1
- package/features/file/GetFileContents/abstractions.d.ts +0 -20
- package/features/file/GetFileContents/abstractions.js +0 -4
- package/features/file/GetFileContents/abstractions.js.map +0 -1
- package/features/file/GetFileContents/index.d.ts +0 -1
- package/features/file/GetFileContents/index.js +0 -3
- package/features/file/GetFileContents/index.js.map +0 -1
- package/features/file/ListFiles/index.js.map +0 -1
- package/features/file/ListTags/index.js.map +0 -1
- package/features/file/UpdateFile/index.js.map +0 -1
- package/features/settings/UpdateSettings/index.js.map +0 -1
- package/features/shared/abstractions.js.map +0 -1
- package/graphql/baseSchema.d.ts +0 -3
- package/graphql/baseSchema.js +0 -103
- package/graphql/baseSchema.js.map +0 -1
- package/graphql/createFilesTypeDefs.d.ts +0 -8
- package/graphql/createFilesTypeDefs.js +0 -199
- package/graphql/createFilesTypeDefs.js.map +0 -1
- package/graphql/filesSchema.d.ts +0 -4
- package/graphql/filesSchema.js +0 -116
- package/graphql/filesSchema.js.map +0 -1
- package/graphql/getFileByUrl.d.ts +0 -3
- package/graphql/getFileByUrl.js +0 -69
- package/graphql/getFileByUrl.js.map +0 -1
- package/graphql/index.d.ts +0 -4
- package/graphql/index.js +0 -54
- package/graphql/index.js.map +0 -1
- package/graphql/utils.d.ts +0 -11
- package/graphql/utils.js +0 -17
- package/graphql/utils.js.map +0 -1
- package/modelModifier/CmsModelModifier.d.ts +0 -26
- package/modelModifier/CmsModelModifier.js +0 -54
- package/modelModifier/CmsModelModifier.js.map +0 -1
- package/types.js.map +0 -1
- /package/{delivery/AssetDelivery → features/assetDelivery}/NullAssetReply.d.ts +0 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { Request as IRequest } from "@webiny/handler/types.js";
|
|
2
|
+
import type { AssetRequest as IAssetRequest } from "../../delivery/AssetDelivery/AssetRequest.js";
|
|
3
|
+
import type { Asset as IAsset } from "../../delivery/AssetDelivery/Asset.js";
|
|
4
|
+
import type { AssetReply as IAssetReply } from "../../delivery/AssetDelivery/abstractions/AssetReply.js";
|
|
5
|
+
import type { File as IFile } from "../../domain/file/types.js";
|
|
6
|
+
export interface IAssetRequestResolver {
|
|
7
|
+
resolve(request: IRequest): Promise<IAssetRequest | undefined>;
|
|
8
|
+
}
|
|
9
|
+
export interface IAssetResolver {
|
|
10
|
+
resolve(request: IAssetRequest): Promise<IAsset | undefined>;
|
|
11
|
+
}
|
|
12
|
+
export interface IAssetProcessor {
|
|
13
|
+
process(assetRequest: IAssetRequest, asset: IAsset): Promise<IAsset>;
|
|
14
|
+
}
|
|
15
|
+
export interface IAssetOutputStrategy {
|
|
16
|
+
output(asset: IAsset): Promise<IAssetReply>;
|
|
17
|
+
}
|
|
18
|
+
export interface IAssetTransformationStrategy {
|
|
19
|
+
transform(assetRequest: IAssetRequest, asset: IAsset): Promise<IAsset>;
|
|
20
|
+
}
|
|
21
|
+
export interface IAssetContentsReader {
|
|
22
|
+
read(asset: IAsset): Promise<Buffer>;
|
|
23
|
+
}
|
|
24
|
+
export interface IAssetAuthorizer {
|
|
25
|
+
authorize(file: IFile): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export declare const AssetRequestResolver: import("@webiny/di").Abstraction<IAssetRequestResolver>;
|
|
28
|
+
export declare const AssetResolver: import("@webiny/di").Abstraction<IAssetResolver>;
|
|
29
|
+
export declare const AssetProcessor: import("@webiny/di").Abstraction<IAssetProcessor>;
|
|
30
|
+
export declare const AssetOutputStrategy: import("@webiny/di").Abstraction<IAssetOutputStrategy>;
|
|
31
|
+
export declare const AssetTransformationStrategy: import("@webiny/di").Abstraction<IAssetTransformationStrategy>;
|
|
32
|
+
export declare const AssetContentsReader: import("@webiny/di").Abstraction<IAssetContentsReader>;
|
|
33
|
+
export declare const AssetAuthorizer: import("@webiny/di").Abstraction<IAssetAuthorizer>;
|
|
34
|
+
export declare namespace AssetRequestResolver {
|
|
35
|
+
type Interface = IAssetRequestResolver;
|
|
36
|
+
type AssetRequest = IAssetRequest;
|
|
37
|
+
type Request = IRequest;
|
|
38
|
+
}
|
|
39
|
+
export declare namespace AssetResolver {
|
|
40
|
+
type Interface = IAssetResolver;
|
|
41
|
+
type Asset = IAsset;
|
|
42
|
+
type Request = IAssetRequest;
|
|
43
|
+
}
|
|
44
|
+
export declare namespace AssetProcessor {
|
|
45
|
+
type Interface = IAssetProcessor;
|
|
46
|
+
type AssetRequest = IAssetRequest;
|
|
47
|
+
type Asset = IAsset;
|
|
48
|
+
}
|
|
49
|
+
export declare namespace AssetOutputStrategy {
|
|
50
|
+
type Interface = IAssetOutputStrategy;
|
|
51
|
+
type Asset = IAsset;
|
|
52
|
+
type AssetReply = IAssetReply;
|
|
53
|
+
}
|
|
54
|
+
export declare namespace AssetTransformationStrategy {
|
|
55
|
+
type Interface = IAssetTransformationStrategy;
|
|
56
|
+
type AssetRequest = IAssetRequest;
|
|
57
|
+
type Asset = IAsset;
|
|
58
|
+
}
|
|
59
|
+
export declare namespace AssetContentsReader {
|
|
60
|
+
type Interface = IAssetContentsReader;
|
|
61
|
+
type Asset = IAsset;
|
|
62
|
+
}
|
|
63
|
+
export declare namespace AssetAuthorizer {
|
|
64
|
+
type Interface = IAssetAuthorizer;
|
|
65
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
+
const AssetRequestResolver = createAbstraction("AssetDelivery/AssetRequestResolver");
|
|
3
|
+
const AssetResolver = createAbstraction("AssetDelivery/AssetResolver");
|
|
4
|
+
const AssetProcessor = createAbstraction("AssetDelivery/AssetProcessor");
|
|
5
|
+
const AssetOutputStrategy = createAbstraction("AssetDelivery/AssetOutputStrategy");
|
|
6
|
+
const AssetTransformationStrategy = createAbstraction("AssetDelivery/AssetTransformationStrategy");
|
|
7
|
+
const AssetContentsReader = createAbstraction("AssetDelivery/AssetContentsReader");
|
|
8
|
+
const AssetAuthorizer = createAbstraction("AssetDelivery/AssetAuthorizer");
|
|
9
|
+
export { AssetAuthorizer, AssetContentsReader, AssetOutputStrategy, AssetProcessor, AssetRequestResolver, AssetResolver, AssetTransformationStrategy };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=abstractions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/abstractions.js","sources":["../../../src/features/assetDelivery/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Request as IRequest } from \"@webiny/handler/types.js\";\nimport type { AssetRequest as IAssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport type { Asset as IAsset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetReply as IAssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport type { File as IFile } from \"~/domain/file/types.js\";\n\nexport interface IAssetRequestResolver {\n resolve(request: IRequest): Promise<IAssetRequest | undefined>;\n}\n\nexport interface IAssetResolver {\n resolve(request: IAssetRequest): Promise<IAsset | undefined>;\n}\n\nexport interface IAssetProcessor {\n process(assetRequest: IAssetRequest, asset: IAsset): Promise<IAsset>;\n}\n\nexport interface IAssetOutputStrategy {\n output(asset: IAsset): Promise<IAssetReply>;\n}\n\nexport interface IAssetTransformationStrategy {\n transform(assetRequest: IAssetRequest, asset: IAsset): Promise<IAsset>;\n}\n\nexport interface IAssetContentsReader {\n read(asset: IAsset): Promise<Buffer>;\n}\n\nexport interface IAssetAuthorizer {\n authorize(file: IFile): Promise<void>;\n}\n\nexport const AssetRequestResolver = createAbstraction<IAssetRequestResolver>(\n \"AssetDelivery/AssetRequestResolver\"\n);\n\nexport const AssetResolver = createAbstraction<IAssetResolver>(\"AssetDelivery/AssetResolver\");\n\nexport const AssetProcessor = createAbstraction<IAssetProcessor>(\"AssetDelivery/AssetProcessor\");\n\nexport const AssetOutputStrategy = createAbstraction<IAssetOutputStrategy>(\n \"AssetDelivery/AssetOutputStrategy\"\n);\n\nexport const AssetTransformationStrategy = createAbstraction<IAssetTransformationStrategy>(\n \"AssetDelivery/AssetTransformationStrategy\"\n);\n\nexport const AssetContentsReader = createAbstraction<IAssetContentsReader>(\n \"AssetDelivery/AssetContentsReader\"\n);\n\nexport const AssetAuthorizer = createAbstraction<IAssetAuthorizer>(\"AssetDelivery/AssetAuthorizer\");\n\nexport namespace AssetRequestResolver {\n export type Interface = IAssetRequestResolver;\n export type AssetRequest = IAssetRequest;\n export type Request = IRequest;\n}\n\nexport namespace AssetResolver {\n export type Interface = IAssetResolver;\n export type Asset = IAsset;\n export type Request = IAssetRequest;\n}\n\nexport namespace AssetProcessor {\n export type Interface = IAssetProcessor;\n export type AssetRequest = IAssetRequest;\n export type Asset = IAsset;\n}\n\nexport namespace AssetOutputStrategy {\n export type Interface = IAssetOutputStrategy;\n export type Asset = IAsset;\n export type AssetReply = IAssetReply;\n}\n\nexport namespace AssetTransformationStrategy {\n export type Interface = IAssetTransformationStrategy;\n export type AssetRequest = IAssetRequest;\n export type Asset = IAsset;\n}\n\nexport namespace AssetContentsReader {\n export type Interface = IAssetContentsReader;\n export type Asset = IAsset;\n}\n\nexport namespace AssetAuthorizer {\n export type Interface = IAssetAuthorizer;\n}\n"],"names":["AssetRequestResolver","createAbstraction","AssetResolver","AssetProcessor","AssetOutputStrategy","AssetTransformationStrategy","AssetContentsReader","AssetAuthorizer"],"mappings":";AAmCO,MAAMA,uBAAuBC,kBAChC;AAGG,MAAMC,gBAAgBD,kBAAkC;AAExD,MAAME,iBAAiBF,kBAAmC;AAE1D,MAAMG,sBAAsBH,kBAC/B;AAGG,MAAMI,8BAA8BJ,kBACvC;AAGG,MAAMK,sBAAsBL,kBAC/B;AAGG,MAAMM,kBAAkBN,kBAAoC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Asset } from "../../../../delivery/index.js";
|
|
2
|
+
import type { Framing } from "./imageTypes.js";
|
|
3
|
+
export declare class AssetKeyGenerator {
|
|
4
|
+
private readonly utils;
|
|
5
|
+
private readonly asset;
|
|
6
|
+
private readonly framing?;
|
|
7
|
+
static create(asset: Asset, framing?: Framing): AssetKeyGenerator;
|
|
8
|
+
private constructor();
|
|
9
|
+
private signature;
|
|
10
|
+
getOptimizedImageKey(): string;
|
|
11
|
+
getTransformedImageKey(transformations: Record<string, any>): string;
|
|
12
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import * as __rspack_external__utils_js_a9c81ddd from "./utils.js";
|
|
2
|
+
class AssetKeyGenerator {
|
|
3
|
+
static create(asset, framing) {
|
|
4
|
+
return new AssetKeyGenerator(asset, framing);
|
|
5
|
+
}
|
|
6
|
+
constructor(asset, framing){
|
|
7
|
+
this.asset = asset;
|
|
8
|
+
this.utils = __rspack_external__utils_js_a9c81ddd;
|
|
9
|
+
this.framing = framing;
|
|
10
|
+
}
|
|
11
|
+
signature() {
|
|
12
|
+
if (this.framing) return this.utils.getFramingSignature(this.framing);
|
|
13
|
+
}
|
|
14
|
+
getOptimizedImageKey() {
|
|
15
|
+
return this.utils.getImageKey({
|
|
16
|
+
key: this.asset.getKey(),
|
|
17
|
+
cropSignature: this.signature()
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
getTransformedImageKey(transformations) {
|
|
21
|
+
return this.utils.getImageKey({
|
|
22
|
+
key: this.asset.getKey(),
|
|
23
|
+
transformations,
|
|
24
|
+
cropSignature: this.signature()
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export { AssetKeyGenerator };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=AssetKeyGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/AssetKeyGenerator.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/AssetKeyGenerator.ts"],"sourcesContent":["import type { Asset } from \"../../../../delivery/index.js\";\nimport type { Framing } from \"./imageTypes.js\";\nimport * as newUtils from \"./utils.js\";\n\nexport class AssetKeyGenerator {\n private readonly utils: typeof newUtils;\n private readonly asset: Asset;\n private readonly framing?: Framing;\n\n public static create(asset: Asset, framing?: Framing) {\n return new AssetKeyGenerator(asset, framing);\n }\n\n private constructor(asset: Asset, framing?: Framing) {\n this.asset = asset;\n this.utils = newUtils;\n this.framing = framing;\n }\n\n private signature() {\n if (this.framing) {\n return this.utils.getFramingSignature(this.framing);\n }\n return undefined;\n }\n\n public getOptimizedImageKey() {\n return this.utils.getImageKey({\n key: this.asset.getKey(),\n cropSignature: this.signature()\n });\n }\n\n public getTransformedImageKey(transformations: Record<string, any>) {\n return this.utils.getImageKey({\n key: this.asset.getKey(),\n transformations,\n cropSignature: this.signature()\n });\n }\n}\n"],"names":["AssetKeyGenerator","asset","framing","newUtils","transformations"],"mappings":";AAIO,MAAMA;IAKT,OAAc,OAAOC,KAAY,EAAEC,OAAiB,EAAE;QAClD,OAAO,IAAIF,kBAAkBC,OAAOC;IACxC;IAEA,YAAoBD,KAAY,EAAEC,OAAiB,CAAE;QACjD,IAAI,CAAC,KAAK,GAAGD;QACb,IAAI,CAAC,KAAK,GAAGE;QACb,IAAI,CAAC,OAAO,GAAGD;IACnB;IAEQ,YAAY;QAChB,IAAI,IAAI,CAAC,OAAO,EACZ,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO;IAG1D;IAEO,uBAAuB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1B,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;YACtB,eAAe,IAAI,CAAC,SAAS;QACjC;IACJ;IAEO,uBAAuBE,eAAoC,EAAE;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAC1B,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;YACtBA;YACA,eAAe,IAAI,CAAC,SAAS;QACjC;IACJ;AACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AssetType } from "../../abstractions/AssetType.js";
|
|
2
|
+
declare class ImageAssetTypeImpl implements AssetType.Interface {
|
|
3
|
+
canHandle(asset: AssetType.Asset): boolean;
|
|
4
|
+
getHandlerAbstraction(): import("@webiny/di").Abstraction<import("../../abstractions/AssetType.js").IAssetTypeHandler>;
|
|
5
|
+
}
|
|
6
|
+
export declare const ImageAssetType: typeof ImageAssetTypeImpl & {
|
|
7
|
+
__abstraction: import("@webiny/di").Abstraction<import("../../abstractions/AssetType.js").IAssetType>;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AssetType } from "../../abstractions/AssetType.js";
|
|
2
|
+
import { SUPPORTED_TRANSFORMABLE_IMAGES } from "./utils.js";
|
|
3
|
+
import { ImageAssetTypeHandler } from "./ImageAssetTypeHandler.js";
|
|
4
|
+
class ImageAssetTypeImpl {
|
|
5
|
+
canHandle(asset) {
|
|
6
|
+
return SUPPORTED_TRANSFORMABLE_IMAGES.includes(asset.getExtension());
|
|
7
|
+
}
|
|
8
|
+
getHandlerAbstraction() {
|
|
9
|
+
return ImageAssetTypeHandler;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const ImageAssetType = AssetType.createImplementation({
|
|
13
|
+
implementation: ImageAssetTypeImpl,
|
|
14
|
+
dependencies: []
|
|
15
|
+
});
|
|
16
|
+
export { ImageAssetType };
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=ImageAssetType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/ImageAssetType.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/ImageAssetType.ts"],"sourcesContent":["import { AssetType } from \"../../abstractions/AssetType.js\";\nimport { SUPPORTED_TRANSFORMABLE_IMAGES } from \"./utils.js\";\nimport { ImageAssetTypeHandler } from \"./ImageAssetTypeHandler.js\";\n\nclass ImageAssetTypeImpl implements AssetType.Interface {\n canHandle(asset: AssetType.Asset): boolean {\n return SUPPORTED_TRANSFORMABLE_IMAGES.includes(asset.getExtension());\n }\n\n getHandlerAbstraction() {\n return ImageAssetTypeHandler;\n }\n}\n\nexport const ImageAssetType = AssetType.createImplementation({\n implementation: ImageAssetTypeImpl,\n dependencies: []\n});\n"],"names":["ImageAssetTypeImpl","asset","SUPPORTED_TRANSFORMABLE_IMAGES","ImageAssetTypeHandler","ImageAssetType","AssetType"],"mappings":";;;AAIA,MAAMA;IACF,UAAUC,KAAsB,EAAW;QACvC,OAAOC,+BAA+B,QAAQ,CAACD,MAAM,YAAY;IACrE;IAEA,wBAAwB;QACpB,OAAOE;IACX;AACJ;AAEO,MAAMC,iBAAiBC,UAAU,oBAAoB,CAAC;IACzD,gBAAgBL;IAChB,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/ImageAssetTypeHandler.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { IAssetTypeHandler } from \"../../abstractions/AssetType.js\";\n\nexport const ImageAssetTypeHandler = createAbstraction<IAssetTypeHandler>(\n \"AssetDelivery/ImageAssetTypeHandler\"\n);\n\nexport namespace ImageAssetTypeHandler {\n export type Interface = IAssetTypeHandler;\n}\n"],"names":["ImageAssetTypeHandler","createAbstraction"],"mappings":";AAGO,MAAMA,wBAAwBC,kBACjC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TransformImageParams, TransformImageResult } from "./transformImage.js";
|
|
2
|
+
import type { Framing } from "./imageTypes.js";
|
|
3
|
+
export declare class SharpTransformer {
|
|
4
|
+
private module?;
|
|
5
|
+
private sharp?;
|
|
6
|
+
private load;
|
|
7
|
+
private getSharp;
|
|
8
|
+
transformBuffer(params: TransformImageParams): Promise<TransformImageResult>;
|
|
9
|
+
extractFramedRegion(buffer: Buffer, framing: Framing): Promise<Buffer>;
|
|
10
|
+
cropBuffer(buffer: Buffer, crop: {
|
|
11
|
+
top: number;
|
|
12
|
+
left: number;
|
|
13
|
+
bottom: number;
|
|
14
|
+
right: number;
|
|
15
|
+
}): Promise<Buffer>;
|
|
16
|
+
optimizePng(buffer: Buffer): Promise<import("sharp").Sharp>;
|
|
17
|
+
optimizeJpeg(buffer: Buffer): Promise<import("sharp").Sharp>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class SharpTransformer {
|
|
2
|
+
async load() {
|
|
3
|
+
if (!this.module) this.module = await import("./transformImage.js");
|
|
4
|
+
return this.module;
|
|
5
|
+
}
|
|
6
|
+
async getSharp() {
|
|
7
|
+
if (!this.sharp) this.sharp = (await import("sharp")).default;
|
|
8
|
+
return this.sharp;
|
|
9
|
+
}
|
|
10
|
+
async transformBuffer(params) {
|
|
11
|
+
const m = await this.load();
|
|
12
|
+
return m.transformImageBuffer(params);
|
|
13
|
+
}
|
|
14
|
+
async extractFramedRegion(buffer, framing) {
|
|
15
|
+
const m = await this.load();
|
|
16
|
+
return m.extractFramedRegion(buffer, framing);
|
|
17
|
+
}
|
|
18
|
+
async cropBuffer(buffer, crop) {
|
|
19
|
+
const m = await this.load();
|
|
20
|
+
return m.cropImageBuffer(buffer, crop);
|
|
21
|
+
}
|
|
22
|
+
async optimizePng(buffer) {
|
|
23
|
+
const s = await this.getSharp();
|
|
24
|
+
return s(buffer).resize({
|
|
25
|
+
width: 2560,
|
|
26
|
+
withoutEnlargement: true,
|
|
27
|
+
fit: "inside"
|
|
28
|
+
}).png({
|
|
29
|
+
compressionLevel: 9,
|
|
30
|
+
adaptiveFiltering: true,
|
|
31
|
+
force: true
|
|
32
|
+
}).withMetadata();
|
|
33
|
+
}
|
|
34
|
+
async optimizeJpeg(buffer) {
|
|
35
|
+
const s = await this.getSharp();
|
|
36
|
+
return s(buffer).resize({
|
|
37
|
+
width: 2560,
|
|
38
|
+
withoutEnlargement: true,
|
|
39
|
+
fit: "inside"
|
|
40
|
+
}).withMetadata().toFormat("jpeg", {
|
|
41
|
+
quality: 90
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export { SharpTransformer };
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=SharpTransformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/SharpTransformer.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/SharpTransformer.ts"],"sourcesContent":["import type { TransformImageParams, TransformImageResult } from \"./transformImage.js\";\nimport type { Framing } from \"./imageTypes.js\";\n\nexport class SharpTransformer {\n private module?: typeof import(\"./transformImage.js\");\n private sharp?: typeof import(\"sharp\").default;\n\n private async load() {\n if (!this.module) {\n this.module = await import(\"./transformImage.js\");\n }\n return this.module;\n }\n\n private async getSharp() {\n if (!this.sharp) {\n this.sharp = (await import(\"sharp\")).default;\n }\n return this.sharp;\n }\n\n async transformBuffer(params: TransformImageParams): Promise<TransformImageResult> {\n const m = await this.load();\n return m.transformImageBuffer(params);\n }\n\n async extractFramedRegion(buffer: Buffer, framing: Framing): Promise<Buffer> {\n const m = await this.load();\n return m.extractFramedRegion(buffer, framing);\n }\n\n async cropBuffer(\n buffer: Buffer,\n crop: { top: number; left: number; bottom: number; right: number }\n ): Promise<Buffer> {\n const m = await this.load();\n return m.cropImageBuffer(buffer, crop);\n }\n\n async optimizePng(buffer: Buffer) {\n const s = await this.getSharp();\n return s(buffer)\n .resize({ width: 2560, withoutEnlargement: true, fit: \"inside\" })\n .png({ compressionLevel: 9, adaptiveFiltering: true, force: true })\n .withMetadata();\n }\n\n async optimizeJpeg(buffer: Buffer) {\n const s = await this.getSharp();\n return s(buffer)\n .resize({ width: 2560, withoutEnlargement: true, fit: \"inside\" })\n .withMetadata()\n .toFormat(\"jpeg\", { quality: 90 });\n }\n}\n"],"names":["SharpTransformer","params","m","buffer","framing","crop","s"],"mappings":"AAGO,MAAMA;IAIT,MAAc,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,IAAI,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC;QAE/B,OAAO,IAAI,CAAC,MAAM;IACtB;IAEA,MAAc,WAAW;QACrB,IAAI,CAAC,IAAI,CAAC,KAAK,EACX,IAAI,CAAC,KAAK,GAAI,OAAM,MAAM,CAAC,QAAO,EAAG,OAAO;QAEhD,OAAO,IAAI,CAAC,KAAK;IACrB;IAEA,MAAM,gBAAgBC,MAA4B,EAAiC;QAC/E,MAAMC,IAAI,MAAM,IAAI,CAAC,IAAI;QACzB,OAAOA,EAAE,oBAAoB,CAACD;IAClC;IAEA,MAAM,oBAAoBE,MAAc,EAAEC,OAAgB,EAAmB;QACzE,MAAMF,IAAI,MAAM,IAAI,CAAC,IAAI;QACzB,OAAOA,EAAE,mBAAmB,CAACC,QAAQC;IACzC;IAEA,MAAM,WACFD,MAAc,EACdE,IAAkE,EACnD;QACf,MAAMH,IAAI,MAAM,IAAI,CAAC,IAAI;QACzB,OAAOA,EAAE,eAAe,CAACC,QAAQE;IACrC;IAEA,MAAM,YAAYF,MAAc,EAAE;QAC9B,MAAMG,IAAI,MAAM,IAAI,CAAC,QAAQ;QAC7B,OAAOA,EAAEH,QACJ,MAAM,CAAC;YAAE,OAAO;YAAM,oBAAoB;YAAM,KAAK;QAAS,GAC9D,GAAG,CAAC;YAAE,kBAAkB;YAAG,mBAAmB;YAAM,OAAO;QAAK,GAChE,YAAY;IACrB;IAEA,MAAM,aAAaA,MAAc,EAAE;QAC/B,MAAMG,IAAI,MAAM,IAAI,CAAC,QAAQ;QAC7B,OAAOA,EAAEH,QACJ,MAAM,CAAC;YAAE,OAAO;YAAM,oBAAoB;YAAM,KAAK;QAAS,GAC9D,YAAY,GACZ,QAAQ,CAAC,QAAQ;YAAE,SAAS;QAAG;IACxC;AACJ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
class WidthCollection {
|
|
2
|
+
static create(values) {
|
|
3
|
+
return new WidthCollection(values);
|
|
4
|
+
}
|
|
5
|
+
constructor(values){
|
|
6
|
+
this.values = values.sort((a, b)=>a - b);
|
|
7
|
+
}
|
|
8
|
+
max() {
|
|
9
|
+
return Math.max(...this.values);
|
|
10
|
+
}
|
|
11
|
+
min() {
|
|
12
|
+
return Math.min(...this.values);
|
|
13
|
+
}
|
|
14
|
+
getClosestOrMax(value) {
|
|
15
|
+
if (!value) return this.max();
|
|
16
|
+
const gteGivenValue = this.values.filter((w)=>w >= value);
|
|
17
|
+
return gteGivenValue.length > 0 ? gteGivenValue[0] : this.max();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export { WidthCollection };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=WidthCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/WidthCollection.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/WidthCollection.ts"],"sourcesContent":["export class WidthCollection {\n private readonly values: number[];\n\n public static create(values: number[]) {\n return new WidthCollection(values);\n }\n\n private constructor(values: number[]) {\n this.values = values.sort((a, b) => a - b);\n }\n\n public max() {\n return Math.max(...this.values);\n }\n\n public min() {\n return Math.min(...this.values);\n }\n\n public getClosestOrMax(value: number | undefined): number {\n if (!value) {\n return this.max();\n }\n const gteGivenValue = this.values.filter(w => w >= value);\n return gteGivenValue.length > 0 ? gteGivenValue[0] : this.max();\n }\n}\n"],"names":["WidthCollection","values","a","b","Math","value","gteGivenValue","w"],"mappings":"AAAO,MAAMA;IAGT,OAAc,OAAOC,MAAgB,EAAE;QACnC,OAAO,IAAID,gBAAgBC;IAC/B;IAEA,YAAoBA,MAAgB,CAAE;QAClC,IAAI,CAAC,MAAM,GAAGA,OAAO,IAAI,CAAC,CAACC,GAAGC,IAAMD,IAAIC;IAC5C;IAEO,MAAM;QACT,OAAOC,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM;IAClC;IAEO,MAAM;QACT,OAAOA,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM;IAClC;IAEO,gBAAgBC,KAAyB,EAAU;QACtD,IAAI,CAACA,OACD,OAAO,IAAI,CAAC,GAAG;QAEnB,MAAMC,gBAAgB,IAAI,CAAC,MAAM,CAAC,MAAM,CAACC,CAAAA,IAAKA,KAAKF;QACnD,OAAOC,cAAc,MAAM,GAAG,IAAIA,aAAa,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG;IACjE;AACJ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure image-format helpers. IMPORTANT: this module must NOT import `sharp` (a
|
|
3
|
+
* native module). It is reachable from the GraphQL API handler via the asset
|
|
4
|
+
* request resolvers, and loading `sharp` there would crash that Lambda. The
|
|
5
|
+
* actual sharp pipeline lives in `transformImage.ts`, which only the transform
|
|
6
|
+
* strategies (the image Lambda) import.
|
|
7
|
+
*/
|
|
8
|
+
export type ImageFormat = "jpeg" | "png" | "webp" | "avif";
|
|
9
|
+
export declare const SUPPORTED_OUTPUT_FORMATS: ImageFormat[];
|
|
10
|
+
/**
|
|
11
|
+
* Default encoder quality per output format. AVIF reaches a comparable visual
|
|
12
|
+
* quality at a lower number than JPEG/WebP, hence the lower default.
|
|
13
|
+
*/
|
|
14
|
+
export declare const DEFAULT_IMAGE_QUALITY: Record<ImageFormat, number>;
|
|
15
|
+
export declare const contentTypeForFormat: (format: ImageFormat) => string;
|
|
16
|
+
export declare const formatFromContentType: (contentType: string) => ImageFormat | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a requested format string into a concrete output format.
|
|
19
|
+
*
|
|
20
|
+
* `"auto"` negotiates from the `Accept` header (AVIF ▸ WebP ▸ keep original), which
|
|
21
|
+
* is how we approach `next/image`'s automatic modern-format delivery. Returns
|
|
22
|
+
* `undefined` when the original format should be kept.
|
|
23
|
+
*/
|
|
24
|
+
export declare const resolveRequestedFormat: (requested: string | undefined, acceptHeader: string | undefined) => ImageFormat | undefined;
|
|
25
|
+
/** Clamp a requested quality into the valid 1–100 range; `undefined` when absent/invalid. */
|
|
26
|
+
export declare const clampQuality: (value: number | undefined) => number | undefined;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const SUPPORTED_OUTPUT_FORMATS = [
|
|
2
|
+
"jpeg",
|
|
3
|
+
"png",
|
|
4
|
+
"webp",
|
|
5
|
+
"avif"
|
|
6
|
+
];
|
|
7
|
+
const DEFAULT_IMAGE_QUALITY = {
|
|
8
|
+
jpeg: 75,
|
|
9
|
+
png: 80,
|
|
10
|
+
webp: 75,
|
|
11
|
+
avif: 55
|
|
12
|
+
};
|
|
13
|
+
const CONTENT_TYPE_BY_FORMAT = {
|
|
14
|
+
jpeg: "image/jpeg",
|
|
15
|
+
png: "image/png",
|
|
16
|
+
webp: "image/webp",
|
|
17
|
+
avif: "image/avif"
|
|
18
|
+
};
|
|
19
|
+
const contentTypeForFormat = (format)=>CONTENT_TYPE_BY_FORMAT[format];
|
|
20
|
+
const formatFromContentType = (contentType)=>{
|
|
21
|
+
switch(contentType){
|
|
22
|
+
case "image/jpeg":
|
|
23
|
+
case "image/jpg":
|
|
24
|
+
return "jpeg";
|
|
25
|
+
case "image/png":
|
|
26
|
+
return "png";
|
|
27
|
+
case "image/webp":
|
|
28
|
+
return "webp";
|
|
29
|
+
case "image/avif":
|
|
30
|
+
return "avif";
|
|
31
|
+
default:
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const resolveRequestedFormat = (requested, acceptHeader)=>{
|
|
36
|
+
if (!requested) return;
|
|
37
|
+
if ("auto" === requested) {
|
|
38
|
+
const accept = acceptHeader ?? "";
|
|
39
|
+
if (accept.includes("image/avif")) return "avif";
|
|
40
|
+
if (accept.includes("image/webp")) return "webp";
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
return SUPPORTED_OUTPUT_FORMATS.includes(requested) ? requested : void 0;
|
|
44
|
+
};
|
|
45
|
+
const clampQuality = (value)=>{
|
|
46
|
+
if (void 0 === value || Number.isNaN(value)) return;
|
|
47
|
+
return Math.min(100, Math.max(1, Math.round(value)));
|
|
48
|
+
};
|
|
49
|
+
export { DEFAULT_IMAGE_QUALITY, SUPPORTED_OUTPUT_FORMATS, clampQuality, contentTypeForFormat, formatFromContentType, resolveRequestedFormat };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=imageFormat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/imageFormat.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/imageFormat.ts"],"sourcesContent":["/**\n * Pure image-format helpers. IMPORTANT: this module must NOT import `sharp` (a\n * native module). It is reachable from the GraphQL API handler via the asset\n * request resolvers, and loading `sharp` there would crash that Lambda. The\n * actual sharp pipeline lives in `transformImage.ts`, which only the transform\n * strategies (the image Lambda) import.\n */\n\nexport type ImageFormat = \"jpeg\" | \"png\" | \"webp\" | \"avif\";\n\nexport const SUPPORTED_OUTPUT_FORMATS: ImageFormat[] = [\"jpeg\", \"png\", \"webp\", \"avif\"];\n\n/**\n * Default encoder quality per output format. AVIF reaches a comparable visual\n * quality at a lower number than JPEG/WebP, hence the lower default.\n */\nexport const DEFAULT_IMAGE_QUALITY: Record<ImageFormat, number> = {\n jpeg: 75,\n png: 80,\n webp: 75,\n avif: 55\n};\n\nconst CONTENT_TYPE_BY_FORMAT: Record<ImageFormat, string> = {\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n webp: \"image/webp\",\n avif: \"image/avif\"\n};\n\nexport const contentTypeForFormat = (format: ImageFormat): string => CONTENT_TYPE_BY_FORMAT[format];\n\nexport const formatFromContentType = (contentType: string): ImageFormat | undefined => {\n switch (contentType) {\n case \"image/jpeg\":\n case \"image/jpg\":\n return \"jpeg\";\n case \"image/png\":\n return \"png\";\n case \"image/webp\":\n return \"webp\";\n case \"image/avif\":\n return \"avif\";\n default:\n return undefined;\n }\n};\n\n/**\n * Resolve a requested format string into a concrete output format.\n *\n * `\"auto\"` negotiates from the `Accept` header (AVIF ▸ WebP ▸ keep original), which\n * is how we approach `next/image`'s automatic modern-format delivery. Returns\n * `undefined` when the original format should be kept.\n */\nexport const resolveRequestedFormat = (\n requested: string | undefined,\n acceptHeader: string | undefined\n): ImageFormat | undefined => {\n if (!requested) {\n return undefined;\n }\n\n if (requested === \"auto\") {\n const accept = acceptHeader ?? \"\";\n if (accept.includes(\"image/avif\")) {\n return \"avif\";\n }\n if (accept.includes(\"image/webp\")) {\n return \"webp\";\n }\n return undefined;\n }\n\n return SUPPORTED_OUTPUT_FORMATS.includes(requested as ImageFormat)\n ? (requested as ImageFormat)\n : undefined;\n};\n\n/** Clamp a requested quality into the valid 1–100 range; `undefined` when absent/invalid. */\nexport const clampQuality = (value: number | undefined): number | undefined => {\n if (value === undefined || Number.isNaN(value)) {\n return undefined;\n }\n return Math.min(100, Math.max(1, Math.round(value)));\n};\n"],"names":["SUPPORTED_OUTPUT_FORMATS","DEFAULT_IMAGE_QUALITY","CONTENT_TYPE_BY_FORMAT","contentTypeForFormat","format","formatFromContentType","contentType","resolveRequestedFormat","requested","acceptHeader","accept","undefined","clampQuality","value","Number","Math"],"mappings":"AAUO,MAAMA,2BAA0C;IAAC;IAAQ;IAAO;IAAQ;CAAO;AAM/E,MAAMC,wBAAqD;IAC9D,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;AACV;AAEA,MAAMC,yBAAsD;IACxD,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;AACV;AAEO,MAAMC,uBAAuB,CAACC,SAAgCF,sBAAsB,CAACE,OAAO;AAE5F,MAAMC,wBAAwB,CAACC;IAClC,OAAQA;QACJ,KAAK;QACL,KAAK;YACD,OAAO;QACX,KAAK;YACD,OAAO;QACX,KAAK;YACD,OAAO;QACX,KAAK;YACD,OAAO;QACX;YACI;IACR;AACJ;AASO,MAAMC,yBAAyB,CAClCC,WACAC;IAEA,IAAI,CAACD,WACD;IAGJ,IAAIA,AAAc,WAAdA,WAAsB;QACtB,MAAME,SAASD,gBAAgB;QAC/B,IAAIC,OAAO,QAAQ,CAAC,eAChB,OAAO;QAEX,IAAIA,OAAO,QAAQ,CAAC,eAChB,OAAO;QAEX;IACJ;IAEA,OAAOV,yBAAyB,QAAQ,CAACQ,aAClCA,YACDG;AACV;AAGO,MAAMC,eAAe,CAACC;IACzB,IAAIA,AAAUF,WAAVE,SAAuBC,OAAO,KAAK,CAACD,QACpC;IAEJ,OAAOE,KAAK,GAAG,CAAC,KAAKA,KAAK,GAAG,CAAC,GAAGA,KAAK,KAAK,CAACF;AAChD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ImageFormat } from "./imageFormat.js";
|
|
2
|
+
/** Crop expressed as the fraction (0..1) cut off from each edge of the original. */
|
|
3
|
+
export interface AssetCrop {
|
|
4
|
+
top: number;
|
|
5
|
+
left: number;
|
|
6
|
+
bottom: number;
|
|
7
|
+
right: number;
|
|
8
|
+
}
|
|
9
|
+
/** Asset-level, non-destructive image edit applied at delivery time. */
|
|
10
|
+
export interface AssetImageEdit {
|
|
11
|
+
crop?: AssetCrop;
|
|
12
|
+
}
|
|
13
|
+
/** Image-specific request options parsed from query parameters. */
|
|
14
|
+
export interface ImageRequestOptions {
|
|
15
|
+
original?: boolean;
|
|
16
|
+
width?: number;
|
|
17
|
+
/** Encoder quality (1–100). */
|
|
18
|
+
quality?: number;
|
|
19
|
+
/** Concrete output format (already resolved from any "auto" request). */
|
|
20
|
+
format?: ImageFormat;
|
|
21
|
+
/** Per-request crop (normalized 0–1 edge insets). Supersedes asset-level crop. */
|
|
22
|
+
crop?: AssetCrop;
|
|
23
|
+
/** Target aspect ratio (width / height). */
|
|
24
|
+
aspectRatio?: number;
|
|
25
|
+
/** Normalized 0–1 focal point kept in frame when aspectRatio forces extra cutting. */
|
|
26
|
+
focal?: {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Combined crop + focal + aspect ratio for cache key generation and pixel extraction. */
|
|
32
|
+
export interface Framing {
|
|
33
|
+
crop?: AssetCrop;
|
|
34
|
+
focal?: {
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
};
|
|
38
|
+
aspectRatio?: number;
|
|
39
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ImageAssetType } from "./ImageAssetType.js";
|
|
2
|
+
export { ImageAssetTypeHandler } from "./ImageAssetTypeHandler.js";
|
|
3
|
+
export { AssetKeyGenerator } from "./AssetKeyGenerator.js";
|
|
4
|
+
export { SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey, getCropSignature, getFramingSignature, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix } from "./utils.js";
|
|
5
|
+
export type { AssetCrop, AssetImageEdit, ImageRequestOptions, Framing } from "./imageTypes.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ImageAssetType } from "./ImageAssetType.js";
|
|
2
|
+
export { ImageAssetTypeHandler } from "./ImageAssetTypeHandler.js";
|
|
3
|
+
export { AssetKeyGenerator } from "./AssetKeyGenerator.js";
|
|
4
|
+
export { SUPPORTED_TRANSFORMABLE_IMAGES, getCropSignature, getFramingSignature, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix } from "./utils.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ImageRequestOptions } from "./imageTypes.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse raw query params into typed image request options.
|
|
4
|
+
* Returns a new `ImageRequestOptions` object; does not mutate the input.
|
|
5
|
+
*/
|
|
6
|
+
export declare const normalizeImageOptions: (query: Record<string, any>, acceptHeader: string | undefined) => ImageRequestOptions;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { clampQuality, resolveRequestedFormat } from "./imageFormat.js";
|
|
2
|
+
const normalizeImageOptions = (query, acceptHeader)=>{
|
|
3
|
+
const result = {
|
|
4
|
+
original: "original" in query
|
|
5
|
+
};
|
|
6
|
+
const width = query.width ? parseInt(query.width, 10) : 0 / 0;
|
|
7
|
+
if (!Number.isNaN(width) && width > 0) result.width = width;
|
|
8
|
+
const quality = void 0 !== query.quality ? clampQuality(parseInt(query.quality, 10)) : void 0;
|
|
9
|
+
if (void 0 !== quality) result.quality = quality;
|
|
10
|
+
const format = resolveRequestedFormat(query.format, acceptHeader);
|
|
11
|
+
if (format) result.format = format;
|
|
12
|
+
const crop = parseCrop(query.crop);
|
|
13
|
+
if (crop) result.crop = crop;
|
|
14
|
+
const aspectRatio = parseAspectRatio(query.aspectRatio);
|
|
15
|
+
if (aspectRatio) result.aspectRatio = aspectRatio;
|
|
16
|
+
const focal = parseFocal(query.focal);
|
|
17
|
+
if (focal) result.focal = focal;
|
|
18
|
+
return result;
|
|
19
|
+
};
|
|
20
|
+
const parseAspectRatio = (raw)=>{
|
|
21
|
+
if ("string" != typeof raw) return;
|
|
22
|
+
if (raw.includes(":")) {
|
|
23
|
+
const [w, h] = raw.split(":").map((v)=>parseFloat(v));
|
|
24
|
+
return w > 0 && h > 0 ? w / h : void 0;
|
|
25
|
+
}
|
|
26
|
+
const value = parseFloat(raw);
|
|
27
|
+
return !Number.isNaN(value) && value > 0 ? value : void 0;
|
|
28
|
+
};
|
|
29
|
+
const parseFocal = (raw)=>{
|
|
30
|
+
if ("string" != typeof raw) return;
|
|
31
|
+
const parts = raw.split(",").map((v)=>parseFloat(v));
|
|
32
|
+
if (2 !== parts.length || parts.some((n)=>Number.isNaN(n))) return;
|
|
33
|
+
const clamp01 = (n)=>Math.min(1, Math.max(0, n));
|
|
34
|
+
return {
|
|
35
|
+
x: clamp01(parts[0]),
|
|
36
|
+
y: clamp01(parts[1])
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
const parseCrop = (raw)=>{
|
|
40
|
+
if ("string" != typeof raw) return;
|
|
41
|
+
const parts = raw.split(",").map((v)=>parseFloat(v));
|
|
42
|
+
if (4 !== parts.length || parts.some((n)=>Number.isNaN(n))) return;
|
|
43
|
+
const clamp01 = (n)=>Math.min(1, Math.max(0, n));
|
|
44
|
+
const [top, left, bottom, right] = parts.map(clamp01);
|
|
45
|
+
if (0 === top && 0 === left && 0 === bottom && 0 === right) return;
|
|
46
|
+
if (top + bottom >= 1 || left + right >= 1) return;
|
|
47
|
+
return {
|
|
48
|
+
top,
|
|
49
|
+
left,
|
|
50
|
+
bottom,
|
|
51
|
+
right
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
export { normalizeImageOptions };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=normalizeImageOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/assetTypes/image/normalizeImageOptions.js","sources":["../../../../../src/features/assetDelivery/assetTypes/image/normalizeImageOptions.ts"],"sourcesContent":["import type { ImageRequestOptions } from \"./imageTypes.js\";\nimport { clampQuality, resolveRequestedFormat } from \"./imageFormat.js\";\n\n/**\n * Parse raw query params into typed image request options.\n * Returns a new `ImageRequestOptions` object; does not mutate the input.\n */\nexport const normalizeImageOptions = (\n query: Record<string, any>,\n acceptHeader: string | undefined\n): ImageRequestOptions => {\n const result: ImageRequestOptions = {\n original: \"original\" in query\n };\n\n const width = query.width ? parseInt(query.width, 10) : NaN;\n if (!Number.isNaN(width) && width > 0) {\n result.width = width;\n }\n\n const quality =\n query.quality !== undefined ? clampQuality(parseInt(query.quality, 10)) : undefined;\n if (quality !== undefined) {\n result.quality = quality;\n }\n\n const format = resolveRequestedFormat(query.format, acceptHeader);\n if (format) {\n result.format = format;\n }\n\n const crop = parseCrop(query.crop);\n if (crop) {\n result.crop = crop;\n }\n\n const aspectRatio = parseAspectRatio(query.aspectRatio);\n if (aspectRatio) {\n result.aspectRatio = aspectRatio;\n }\n\n const focal = parseFocal(query.focal);\n if (focal) {\n result.focal = focal;\n }\n\n return result;\n};\n\nconst parseAspectRatio = (raw: unknown): number | undefined => {\n if (typeof raw !== \"string\") {\n return undefined;\n }\n if (raw.includes(\":\")) {\n const [w, h] = raw.split(\":\").map(v => parseFloat(v));\n return w > 0 && h > 0 ? w / h : undefined;\n }\n const value = parseFloat(raw);\n return !Number.isNaN(value) && value > 0 ? value : undefined;\n};\n\nconst parseFocal = (raw: unknown): { x: number; y: number } | undefined => {\n if (typeof raw !== \"string\") {\n return undefined;\n }\n const parts = raw.split(\",\").map(v => parseFloat(v));\n if (parts.length !== 2 || parts.some(n => Number.isNaN(n))) {\n return undefined;\n }\n const clamp01 = (n: number) => Math.min(1, Math.max(0, n));\n return { x: clamp01(parts[0]), y: clamp01(parts[1]) };\n};\n\nconst parseCrop = (\n raw: unknown\n): { top: number; left: number; bottom: number; right: number } | undefined => {\n if (typeof raw !== \"string\") {\n return undefined;\n }\n const parts = raw.split(\",\").map(v => parseFloat(v));\n if (parts.length !== 4 || parts.some(n => Number.isNaN(n))) {\n return undefined;\n }\n const clamp01 = (n: number) => Math.min(1, Math.max(0, n));\n const [top, left, bottom, right] = parts.map(clamp01);\n if (top === 0 && left === 0 && bottom === 0 && right === 0) {\n return undefined;\n }\n if (top + bottom >= 1 || left + right >= 1) {\n return undefined;\n }\n return { top, left, bottom, right };\n};\n"],"names":["normalizeImageOptions","query","acceptHeader","result","width","parseInt","NaN","Number","quality","undefined","clampQuality","format","resolveRequestedFormat","crop","parseCrop","aspectRatio","parseAspectRatio","focal","parseFocal","raw","w","h","v","parseFloat","value","parts","n","clamp01","Math","top","left","bottom","right"],"mappings":";AAOO,MAAMA,wBAAwB,CACjCC,OACAC;IAEA,MAAMC,SAA8B;QAChC,UAAU,cAAcF;IAC5B;IAEA,MAAMG,QAAQH,MAAM,KAAK,GAAGI,SAASJ,MAAM,KAAK,EAAE,MAAMK,KAAG;IAC3D,IAAI,CAACC,OAAO,KAAK,CAACH,UAAUA,QAAQ,GAChCD,OAAO,KAAK,GAAGC;IAGnB,MAAMI,UACFP,AAAkBQ,WAAlBR,MAAM,OAAO,GAAiBS,aAAaL,SAASJ,MAAM,OAAO,EAAE,OAAOQ;IAC9E,IAAID,AAAYC,WAAZD,SACAL,OAAO,OAAO,GAAGK;IAGrB,MAAMG,SAASC,uBAAuBX,MAAM,MAAM,EAAEC;IACpD,IAAIS,QACAR,OAAO,MAAM,GAAGQ;IAGpB,MAAME,OAAOC,UAAUb,MAAM,IAAI;IACjC,IAAIY,MACAV,OAAO,IAAI,GAAGU;IAGlB,MAAME,cAAcC,iBAAiBf,MAAM,WAAW;IACtD,IAAIc,aACAZ,OAAO,WAAW,GAAGY;IAGzB,MAAME,QAAQC,WAAWjB,MAAM,KAAK;IACpC,IAAIgB,OACAd,OAAO,KAAK,GAAGc;IAGnB,OAAOd;AACX;AAEA,MAAMa,mBAAmB,CAACG;IACtB,IAAI,AAAe,YAAf,OAAOA,KACP;IAEJ,IAAIA,IAAI,QAAQ,CAAC,MAAM;QACnB,MAAM,CAACC,GAAGC,EAAE,GAAGF,IAAI,KAAK,CAAC,KAAK,GAAG,CAACG,CAAAA,IAAKC,WAAWD;QAClD,OAAOF,IAAI,KAAKC,IAAI,IAAID,IAAIC,IAAIZ;IACpC;IACA,MAAMe,QAAQD,WAAWJ;IACzB,OAAO,CAACZ,OAAO,KAAK,CAACiB,UAAUA,QAAQ,IAAIA,QAAQf;AACvD;AAEA,MAAMS,aAAa,CAACC;IAChB,IAAI,AAAe,YAAf,OAAOA,KACP;IAEJ,MAAMM,QAAQN,IAAI,KAAK,CAAC,KAAK,GAAG,CAACG,CAAAA,IAAKC,WAAWD;IACjD,IAAIG,AAAiB,MAAjBA,MAAM,MAAM,IAAUA,MAAM,IAAI,CAACC,CAAAA,IAAKnB,OAAO,KAAK,CAACmB,KACnD;IAEJ,MAAMC,UAAU,CAACD,IAAcE,KAAK,GAAG,CAAC,GAAGA,KAAK,GAAG,CAAC,GAAGF;IACvD,OAAO;QAAE,GAAGC,QAAQF,KAAK,CAAC,EAAE;QAAG,GAAGE,QAAQF,KAAK,CAAC,EAAE;IAAE;AACxD;AAEA,MAAMX,YAAY,CACdK;IAEA,IAAI,AAAe,YAAf,OAAOA,KACP;IAEJ,MAAMM,QAAQN,IAAI,KAAK,CAAC,KAAK,GAAG,CAACG,CAAAA,IAAKC,WAAWD;IACjD,IAAIG,AAAiB,MAAjBA,MAAM,MAAM,IAAUA,MAAM,IAAI,CAACC,CAAAA,IAAKnB,OAAO,KAAK,CAACmB,KACnD;IAEJ,MAAMC,UAAU,CAACD,IAAcE,KAAK,GAAG,CAAC,GAAGA,KAAK,GAAG,CAAC,GAAGF;IACvD,MAAM,CAACG,KAAKC,MAAMC,QAAQC,MAAM,GAAGP,MAAM,GAAG,CAACE;IAC7C,IAAIE,AAAQ,MAARA,OAAaC,AAAS,MAATA,QAAcC,AAAW,MAAXA,UAAgBC,AAAU,MAAVA,OAC3C;IAEJ,IAAIH,MAAME,UAAU,KAAKD,OAAOE,SAAS,GACrC;IAEJ,OAAO;QAAEH;QAAKC;QAAMC;QAAQC;IAAM;AACtC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type ImageFormat } from "./imageFormat.js";
|
|
2
|
+
export interface TransformImageParams {
|
|
3
|
+
buffer: Buffer;
|
|
4
|
+
animated: boolean;
|
|
5
|
+
sourceContentType: string;
|
|
6
|
+
widths: number[];
|
|
7
|
+
options: {
|
|
8
|
+
width?: number;
|
|
9
|
+
format?: ImageFormat;
|
|
10
|
+
quality?: number;
|
|
11
|
+
};
|
|
12
|
+
qualityDefaults?: Record<ImageFormat, number>;
|
|
13
|
+
}
|
|
14
|
+
export interface TransformImageResult {
|
|
15
|
+
buffer: Buffer;
|
|
16
|
+
contentType: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Single sharp pipeline shared by the S3 and local transform strategies: optional
|
|
20
|
+
* resize (snapped to the configured width ladder) → optional format conversion +
|
|
21
|
+
* quality. Returns the resulting buffer and its content type.
|
|
22
|
+
*/
|
|
23
|
+
interface CropInsets {
|
|
24
|
+
top: number;
|
|
25
|
+
left: number;
|
|
26
|
+
bottom: number;
|
|
27
|
+
right: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extract the crop region (edge insets, 0..1) from an image buffer. Returns the
|
|
31
|
+
* original buffer unchanged if the crop is empty/full or the dimensions are unknown.
|
|
32
|
+
*/
|
|
33
|
+
export declare const cropImageBuffer: (buffer: Buffer, crop: CropInsets) => Promise<Buffer>;
|
|
34
|
+
interface NormalizedRect {
|
|
35
|
+
x: number;
|
|
36
|
+
y: number;
|
|
37
|
+
width: number;
|
|
38
|
+
height: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The visible region (normalized 0–1) for the given framing. The largest rectangle
|
|
42
|
+
* of `aspectRatio` that fits inside the crop, centered on the focal point.
|
|
43
|
+
*/
|
|
44
|
+
export declare const getVisibleRect: (imageWidth: number, imageHeight: number, crop?: CropInsets, focal?: {
|
|
45
|
+
x: number;
|
|
46
|
+
y: number;
|
|
47
|
+
}, aspectRatio?: number) => NormalizedRect;
|
|
48
|
+
export interface Framing {
|
|
49
|
+
crop?: CropInsets;
|
|
50
|
+
focal?: {
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
};
|
|
54
|
+
aspectRatio?: number;
|
|
55
|
+
}
|
|
56
|
+
export declare const hasFraming: (framing: Framing) => boolean;
|
|
57
|
+
export declare const extractFramedRegion: (buffer: Buffer, framing: Framing) => Promise<Buffer>;
|
|
58
|
+
export declare const transformImageBuffer: (params: TransformImageParams) => Promise<TransformImageResult>;
|
|
59
|
+
export {};
|