@webiny/api-file-manager 6.4.11 → 6.6.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FileManagerAppFeature.d.ts +5 -0
- package/FileManagerAppFeature.js +21 -0
- package/FileManagerAppFeature.js.map +1 -0
- package/delivery/AssetDelivery/AssetRequest.d.ts +1 -1
- package/delivery/AssetDelivery/AssetRequest.js.map +1 -1
- package/delivery/AssetDeliveryRoute.d.ts +23 -0
- package/delivery/AssetDeliveryRoute.js +58 -0
- package/delivery/AssetDeliveryRoute.js.map +1 -0
- package/delivery/setupAssetDelivery.d.ts +1 -1
- package/delivery/setupAssetDelivery.js +1 -66
- package/delivery/setupAssetDelivery.js.map +1 -1
- package/domain/file/abstractions.d.ts +13 -5
- package/domain/file/abstractions.js +2 -2
- package/domain/file/abstractions.js.map +1 -1
- package/domain/file/file.model.d.ts +3 -3
- package/domain/file/file.model.js +10 -6
- package/domain/file/file.model.js.map +1 -1
- package/domain/settings/validation.js +1 -1
- 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 +1 -0
- package/exports/api/file-manager/file.js +1 -0
- package/features/FileManagerFeature.js +6 -0
- 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.js +2 -2
- package/features/assetDelivery/FilesAssetRequestResolver.js.map +1 -1
- 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 +23 -12
- package/features/assetDelivery/abstractions.js.map +1 -1
- 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.js +13 -7
- package/features/assetDelivery/feature.js.map +1 -1
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js +2 -2
- package/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js.map +1 -1
- package/features/assetDelivery/privateFiles/PrivateFilesAssetProcessor.js.map +1 -1
- 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 +4 -6
- package/features/assetDelivery/transformation/TransformationAssetProcessor.js +13 -11
- package/features/assetDelivery/transformation/TransformationAssetProcessor.js.map +1 -1
- 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 +6 -5
- package/features/file/CreateFile/CreateFileRepository.js.map +1 -1
- package/features/file/DeleteFile/DeleteFileRepository.d.ts +3 -3
- package/features/file/DeleteFile/DeleteFileRepository.js +6 -5
- package/features/file/DeleteFile/DeleteFileRepository.js.map +1 -1
- 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 +14 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.js +25 -0
- package/features/file/FileUrlGenerator/FileUrlGenerator.js.map +1 -0
- package/features/file/FileUrlGenerator/abstractions.d.ts +3 -3
- package/features/file/FileUrlGenerator/abstractions.js +1 -1
- package/features/file/FileUrlGenerator/abstractions.js.map +1 -1
- package/features/file/FileUrlGenerator/feature.d.ts +4 -0
- package/features/file/FileUrlGenerator/feature.js +11 -0
- package/features/file/FileUrlGenerator/feature.js.map +1 -0
- package/features/file/FileUrlGenerator/index.d.ts +1 -0
- package/features/file/FileUrlGenerator/index.js +1 -0
- package/features/file/GetFile/GetFileRepository.d.ts +3 -3
- package/features/file/GetFile/GetFileRepository.js +6 -5
- package/features/file/GetFile/GetFileRepository.js.map +1 -1
- 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/ListFiles/ListFilesRepository.d.ts +3 -3
- package/features/file/ListFiles/ListFilesRepository.js +8 -7
- package/features/file/ListFiles/ListFilesRepository.js.map +1 -1
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.d.ts +5 -0
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js +5 -0
- package/features/file/ListImagesByTagTool/ListImagesByTagTool.js.map +1 -1
- package/features/file/ListTags/ListTagsRepository.d.ts +3 -3
- package/features/file/ListTags/ListTagsRepository.js +7 -6
- package/features/file/ListTags/ListTagsRepository.js.map +1 -1
- package/features/file/UpdateFile/UpdateFileRepository.d.ts +3 -3
- package/features/file/UpdateFile/UpdateFileRepository.js +6 -5
- package/features/file/UpdateFile/UpdateFileRepository.js.map +1 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.d.ts +3 -1
- package/features/settings/SettingsInstaller/SettingsInstaller.js +7 -4
- package/features/settings/SettingsInstaller/SettingsInstaller.js.map +1 -1
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js +0 -1
- package/features/settings/UpdateSettings/UpdateSettingsUseCase.js.map +1 -1
- 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 +25 -0
- package/graphql/FmGraphQLSchema.js +452 -0
- package/graphql/FmGraphQLSchema.js.map +1 -0
- package/index.d.ts +3 -6
- package/index.js +3 -33
- package/index.js.map +1 -1
- package/package.json +23 -17
- package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.d.ts +0 -9
- package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js +0 -13
- package/features/assetDelivery/transformation/PassthroughAssetTransformationStrategy.js.map +0 -1
- package/graphql/baseSchema.d.ts +0 -3
- package/graphql/baseSchema.js +0 -100
- package/graphql/baseSchema.js.map +0 -1
- package/graphql/createFilesTypeDefs.d.ts +0 -8
- package/graphql/createFilesTypeDefs.js +0 -191
- package/graphql/createFilesTypeDefs.js.map +0 -1
- package/graphql/filesSchema.d.ts +0 -4
- package/graphql/filesSchema.js +0 -97
- package/graphql/filesSchema.js.map +0 -1
- package/graphql/getFileByUrl.d.ts +0 -3
- package/graphql/getFileByUrl.js +0 -64
- package/graphql/getFileByUrl.js.map +0 -1
- package/graphql/index.d.ts +0 -4
- package/graphql/index.js +0 -48
- package/graphql/index.js.map +0 -1
- package/graphql/utils.d.ts +0 -11
- package/graphql/utils.js +0 -12
- package/graphql/utils.js.map +0 -1
- package/modelModifier/CmsModelModifier.d.ts +0 -26
- package/modelModifier/CmsModelModifier.js +0 -51
- package/modelModifier/CmsModelModifier.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
2
|
+
import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
3
|
+
import { MetadataWriter as MetadataWriterAbstraction } from "./abstractions.js";
|
|
4
|
+
declare class MetadataWriterImpl implements MetadataWriterAbstraction.Interface {
|
|
5
|
+
private readonly tenantContext;
|
|
6
|
+
private readonly keyValueStore;
|
|
7
|
+
constructor(tenantContext: TenantContext.Interface, keyValueStore: GlobalKeyValueStore.Interface);
|
|
8
|
+
write(files: MetadataWriterAbstraction.File[]): Promise<void>;
|
|
9
|
+
private getMetadata;
|
|
10
|
+
}
|
|
11
|
+
export declare const MetadataWriter: typeof MetadataWriterImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IMetadataWriter>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
2
|
+
import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
3
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
4
|
+
class MetadataWriterImpl {
|
|
5
|
+
constructor(tenantContext, keyValueStore){
|
|
6
|
+
this.tenantContext = tenantContext;
|
|
7
|
+
this.keyValueStore = keyValueStore;
|
|
8
|
+
}
|
|
9
|
+
async write(files) {
|
|
10
|
+
const writers = files.map(async (file)=>{
|
|
11
|
+
const metadata = this.getMetadata(file);
|
|
12
|
+
await this.keyValueStore.set(`FileManager/File/${file.id}/Metadata`, metadata);
|
|
13
|
+
});
|
|
14
|
+
await Promise.all(writers);
|
|
15
|
+
}
|
|
16
|
+
getMetadata(file) {
|
|
17
|
+
const tenant = this.tenantContext.getTenant();
|
|
18
|
+
return {
|
|
19
|
+
id: file.id,
|
|
20
|
+
bucketKey: `tenants/${tenant.id}/files/${file.key}`,
|
|
21
|
+
tenant: tenant.id,
|
|
22
|
+
size: file.size,
|
|
23
|
+
contentType: file.type
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const MetadataWriter_MetadataWriter = MetadataWriter.createImplementation({
|
|
28
|
+
implementation: MetadataWriterImpl,
|
|
29
|
+
dependencies: [
|
|
30
|
+
TenantContext,
|
|
31
|
+
GlobalKeyValueStore
|
|
32
|
+
]
|
|
33
|
+
});
|
|
34
|
+
export { MetadataWriter_MetadataWriter as MetadataWriter };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=MetadataWriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/WriteFileMetadata/MetadataWriter.js","sources":["../../../../src/features/upload/WriteFileMetadata/MetadataWriter.ts"],"sourcesContent":["import { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { GlobalKeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport { MetadataWriter as MetadataWriterAbstraction } from \"./abstractions.js\";\n\nclass MetadataWriterImpl implements MetadataWriterAbstraction.Interface {\n private readonly tenantContext: TenantContext.Interface;\n private readonly keyValueStore: GlobalKeyValueStore.Interface;\n\n public constructor(\n tenantContext: TenantContext.Interface,\n keyValueStore: GlobalKeyValueStore.Interface\n ) {\n this.tenantContext = tenantContext;\n this.keyValueStore = keyValueStore;\n }\n\n public async write(files: MetadataWriterAbstraction.File[]) {\n const writers = files.map(async file => {\n const metadata = this.getMetadata(file);\n await this.keyValueStore.set(`FileManager/File/${file.id}/Metadata`, metadata);\n });\n\n await Promise.all(writers);\n }\n\n private getMetadata(file: MetadataWriterAbstraction.File) {\n const tenant = this.tenantContext.getTenant();\n return {\n id: file.id,\n bucketKey: `tenants/${tenant.id}/files/${file.key}`,\n tenant: tenant.id,\n size: file.size,\n contentType: file.type\n };\n }\n}\n\nexport const MetadataWriter = MetadataWriterAbstraction.createImplementation({\n implementation: MetadataWriterImpl,\n dependencies: [TenantContext, GlobalKeyValueStore]\n});\n"],"names":["MetadataWriterImpl","tenantContext","keyValueStore","files","writers","file","metadata","Promise","tenant","MetadataWriter","MetadataWriterAbstraction","TenantContext","GlobalKeyValueStore"],"mappings":";;;AAIA,MAAMA;IAIF,YACIC,aAAsC,EACtCC,aAA4C,CAC9C;QACE,IAAI,CAAC,aAAa,GAAGD;QACrB,IAAI,CAAC,aAAa,GAAGC;IACzB;IAEA,MAAa,MAAMC,KAAuC,EAAE;QACxD,MAAMC,UAAUD,MAAM,GAAG,CAAC,OAAME;YAC5B,MAAMC,WAAW,IAAI,CAAC,WAAW,CAACD;YAClC,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAEA,KAAK,EAAE,CAAC,SAAS,CAAC,EAAEC;QACzE;QAEA,MAAMC,QAAQ,GAAG,CAACH;IACtB;IAEQ,YAAYC,IAAoC,EAAE;QACtD,MAAMG,SAAS,IAAI,CAAC,aAAa,CAAC,SAAS;QAC3C,OAAO;YACH,IAAIH,KAAK,EAAE;YACX,WAAW,CAAC,QAAQ,EAAEG,OAAO,EAAE,CAAC,OAAO,EAAEH,KAAK,GAAG,EAAE;YACnD,QAAQG,OAAO,EAAE;YACjB,MAAMH,KAAK,IAAI;YACf,aAAaA,KAAK,IAAI;QAC1B;IACJ;AACJ;AAEO,MAAMI,gCAAiBC,eAAAA,oBAA8C,CAAC;IACzE,gBAAgBV;IAChB,cAAc;QAACW;QAAeC;KAAoB;AACtD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FileAfterBatchCreateEventHandler } from "../../../features/file/CreateFilesInBatch/events.js";
|
|
2
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
3
|
+
declare class WriteMetadataAfterBatchCreateHandlerImpl implements FileAfterBatchCreateEventHandler.Interface {
|
|
4
|
+
private readonly metadataWriter;
|
|
5
|
+
constructor(metadataWriter: MetadataWriter.Interface);
|
|
6
|
+
handle(event: FileAfterBatchCreateEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const WriteMetadataAfterBatchCreateHandler: typeof WriteMetadataAfterBatchCreateHandlerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("~/features/file/CreateFilesInBatch/events.js").FileAfterBatchCreateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FileAfterBatchCreateEventHandler } from "../../file/CreateFilesInBatch/events.js";
|
|
2
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
3
|
+
class WriteMetadataAfterBatchCreateHandlerImpl {
|
|
4
|
+
constructor(metadataWriter){
|
|
5
|
+
this.metadataWriter = metadataWriter;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
const { files } = event.payload;
|
|
9
|
+
await this.metadataWriter.write(files);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const WriteMetadataAfterBatchCreateHandler = FileAfterBatchCreateEventHandler.createImplementation({
|
|
13
|
+
implementation: WriteMetadataAfterBatchCreateHandlerImpl,
|
|
14
|
+
dependencies: [
|
|
15
|
+
MetadataWriter
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
export { WriteMetadataAfterBatchCreateHandler };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=WriteMetadataAfterBatchCreateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js","sources":["../../../../src/features/upload/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.ts"],"sourcesContent":["import { FileAfterBatchCreateEventHandler } from \"~/features/file/CreateFilesInBatch/events.js\";\nimport { MetadataWriter } from \"./abstractions.js\";\n\nclass WriteMetadataAfterBatchCreateHandlerImpl\n implements FileAfterBatchCreateEventHandler.Interface\n{\n private readonly metadataWriter: MetadataWriter.Interface;\n\n public constructor(metadataWriter: MetadataWriter.Interface) {\n this.metadataWriter = metadataWriter;\n }\n\n public async handle(event: FileAfterBatchCreateEventHandler.Event): Promise<void> {\n const { files } = event.payload;\n await this.metadataWriter.write(files);\n }\n}\n\nexport const WriteMetadataAfterBatchCreateHandler =\n FileAfterBatchCreateEventHandler.createImplementation({\n implementation: WriteMetadataAfterBatchCreateHandlerImpl,\n dependencies: [MetadataWriter]\n });\n"],"names":["WriteMetadataAfterBatchCreateHandlerImpl","metadataWriter","event","files","WriteMetadataAfterBatchCreateHandler","FileAfterBatchCreateEventHandler","MetadataWriter"],"mappings":";;AAGA,MAAMA;IAKF,YAAmBC,cAAwC,CAAE;QACzD,IAAI,CAAC,cAAc,GAAGA;IAC1B;IAEA,MAAa,OAAOC,KAA6C,EAAiB;QAC9E,MAAM,EAAEC,KAAK,EAAE,GAAGD,MAAM,OAAO;QAC/B,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAACC;IACpC;AACJ;AAEO,MAAMC,uCACTC,iCAAiC,oBAAoB,CAAC;IAClD,gBAAgBL;IAChB,cAAc;QAACM;KAAe;AAClC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FileAfterCreateEventHandler } from "../../../features/file/CreateFile/events.js";
|
|
2
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
3
|
+
declare class WriteMetadataAfterCreateHandlerImpl implements FileAfterCreateEventHandler.Interface {
|
|
4
|
+
private readonly metadataWriter;
|
|
5
|
+
constructor(metadataWriter: MetadataWriter.Interface);
|
|
6
|
+
handle(event: FileAfterCreateEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const WriteMetadataAfterCreateHandler: typeof WriteMetadataAfterCreateHandlerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("~/features/file/CreateFile/events.js").FileAfterCreateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FileAfterCreateEventHandler } from "../../file/CreateFile/events.js";
|
|
2
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
3
|
+
class WriteMetadataAfterCreateHandlerImpl {
|
|
4
|
+
constructor(metadataWriter){
|
|
5
|
+
this.metadataWriter = metadataWriter;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
const { file } = event.payload;
|
|
9
|
+
await this.metadataWriter.write([
|
|
10
|
+
file
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const WriteMetadataAfterCreateHandler = FileAfterCreateEventHandler.createImplementation({
|
|
15
|
+
implementation: WriteMetadataAfterCreateHandlerImpl,
|
|
16
|
+
dependencies: [
|
|
17
|
+
MetadataWriter
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
export { WriteMetadataAfterCreateHandler };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=WriteMetadataAfterCreateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.js","sources":["../../../../src/features/upload/WriteFileMetadata/WriteMetadataAfterCreateHandler.ts"],"sourcesContent":["import { FileAfterCreateEventHandler } from \"~/features/file/CreateFile/events.js\";\nimport { MetadataWriter } from \"./abstractions.js\";\n\nclass WriteMetadataAfterCreateHandlerImpl implements FileAfterCreateEventHandler.Interface {\n private readonly metadataWriter: MetadataWriter.Interface;\n\n public constructor(metadataWriter: MetadataWriter.Interface) {\n this.metadataWriter = metadataWriter;\n }\n\n public async handle(event: FileAfterCreateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n await this.metadataWriter.write([file]);\n }\n}\n\nexport const WriteMetadataAfterCreateHandler = FileAfterCreateEventHandler.createImplementation({\n implementation: WriteMetadataAfterCreateHandlerImpl,\n dependencies: [MetadataWriter]\n});\n"],"names":["WriteMetadataAfterCreateHandlerImpl","metadataWriter","event","file","WriteMetadataAfterCreateHandler","FileAfterCreateEventHandler","MetadataWriter"],"mappings":";;AAGA,MAAMA;IAGF,YAAmBC,cAAwC,CAAE;QACzD,IAAI,CAAC,cAAc,GAAGA;IAC1B;IAEA,MAAa,OAAOC,KAAwC,EAAiB;QACzE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAC9B,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAACC;SAAK;IAC1C;AACJ;AAEO,MAAMC,kCAAkCC,4BAA4B,oBAAoB,CAAC;IAC5F,gBAAgBL;IAChB,cAAc;QAACM;KAAe;AAClC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FileAfterUpdateEventHandler } from "../../../features/file/UpdateFile/events.js";
|
|
2
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
3
|
+
declare class WriteMetadataAfterUpdateHandlerImpl implements FileAfterUpdateEventHandler.Interface {
|
|
4
|
+
private readonly metadataWriter;
|
|
5
|
+
constructor(metadataWriter: MetadataWriter.Interface);
|
|
6
|
+
handle(event: FileAfterUpdateEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const WriteMetadataAfterUpdateHandler: typeof WriteMetadataAfterUpdateHandlerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("~/features/file/UpdateFile/events.js").FileAfterUpdateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FileAfterUpdateEventHandler } from "../../file/UpdateFile/events.js";
|
|
2
|
+
import { MetadataWriter } from "./abstractions.js";
|
|
3
|
+
class WriteMetadataAfterUpdateHandlerImpl {
|
|
4
|
+
constructor(metadataWriter){
|
|
5
|
+
this.metadataWriter = metadataWriter;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
const { file } = event.payload;
|
|
9
|
+
await this.metadataWriter.write([
|
|
10
|
+
file
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const WriteMetadataAfterUpdateHandler = FileAfterUpdateEventHandler.createImplementation({
|
|
15
|
+
implementation: WriteMetadataAfterUpdateHandlerImpl,
|
|
16
|
+
dependencies: [
|
|
17
|
+
MetadataWriter
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
export { WriteMetadataAfterUpdateHandler };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=WriteMetadataAfterUpdateHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.js","sources":["../../../../src/features/upload/WriteFileMetadata/WriteMetadataAfterUpdateHandler.ts"],"sourcesContent":["import { FileAfterUpdateEventHandler } from \"~/features/file/UpdateFile/events.js\";\nimport { MetadataWriter } from \"./abstractions.js\";\n\nclass WriteMetadataAfterUpdateHandlerImpl implements FileAfterUpdateEventHandler.Interface {\n private readonly metadataWriter: MetadataWriter.Interface;\n\n public constructor(metadataWriter: MetadataWriter.Interface) {\n this.metadataWriter = metadataWriter;\n }\n\n public async handle(event: FileAfterUpdateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n // Re-write the delivery metadata so changes (e.g. the image crop) propagate\n // to the asset-delivery pipeline.\n await this.metadataWriter.write([file]);\n }\n}\n\nexport const WriteMetadataAfterUpdateHandler = FileAfterUpdateEventHandler.createImplementation({\n implementation: WriteMetadataAfterUpdateHandlerImpl,\n dependencies: [MetadataWriter]\n});\n"],"names":["WriteMetadataAfterUpdateHandlerImpl","metadataWriter","event","file","WriteMetadataAfterUpdateHandler","FileAfterUpdateEventHandler","MetadataWriter"],"mappings":";;AAGA,MAAMA;IAGF,YAAmBC,cAAwC,CAAE;QACzD,IAAI,CAAC,cAAc,GAAGA;IAC1B;IAEA,MAAa,OAAOC,KAAwC,EAAiB;QACzE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAG9B,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAACC;SAAK;IAC1C;AACJ;AAEO,MAAMC,kCAAkCC,4BAA4B,oBAAoB,CAAC;IAC5F,gBAAgBL;IAChB,cAAc;QAACM;KAAe;AAClC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { File as IFile } from "../../../domain/file/types.js";
|
|
2
|
+
export interface IMetadataWriter {
|
|
3
|
+
write(files: IFile[]): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare const MetadataWriter: import("@webiny/di").Abstraction<IMetadataWriter>;
|
|
6
|
+
export declare namespace MetadataWriter {
|
|
7
|
+
type Interface = IMetadataWriter;
|
|
8
|
+
type File = IFile;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/WriteFileMetadata/abstractions.js","sources":["../../../../src/features/upload/WriteFileMetadata/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { File as IFile } from \"~/domain/file/types.js\";\n\nexport interface IMetadataWriter {\n write(files: IFile[]): Promise<void>;\n}\n\nexport const MetadataWriter = createAbstraction<IMetadataWriter>(\n \"FileManager/Upload/MetadataWriter\"\n);\n\nexport namespace MetadataWriter {\n export type Interface = IMetadataWriter;\n export type File = IFile;\n}\n"],"names":["MetadataWriter","createAbstraction"],"mappings":";AAOO,MAAMA,iBAAiBC,kBAC1B"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { MetadataWriter } from "./MetadataWriter.js";
|
|
3
|
+
import { WriteMetadataAfterCreateHandler } from "./WriteMetadataAfterCreateHandler.js";
|
|
4
|
+
import { WriteMetadataAfterBatchCreateHandler } from "./WriteMetadataAfterBatchCreateHandler.js";
|
|
5
|
+
import { WriteMetadataAfterUpdateHandler } from "./WriteMetadataAfterUpdateHandler.js";
|
|
6
|
+
const WriteFileMetadataFeature = createFeature({
|
|
7
|
+
name: "FileManager/WriteFileMetadata",
|
|
8
|
+
register (container) {
|
|
9
|
+
container.register(MetadataWriter);
|
|
10
|
+
container.register(WriteMetadataAfterCreateHandler);
|
|
11
|
+
container.register(WriteMetadataAfterBatchCreateHandler);
|
|
12
|
+
container.register(WriteMetadataAfterUpdateHandler);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
export { WriteFileMetadataFeature };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/WriteFileMetadata/feature.js","sources":["../../../../src/features/upload/WriteFileMetadata/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { MetadataWriter } from \"./MetadataWriter.js\";\nimport { WriteMetadataAfterCreateHandler } from \"./WriteMetadataAfterCreateHandler.js\";\nimport { WriteMetadataAfterBatchCreateHandler } from \"./WriteMetadataAfterBatchCreateHandler.js\";\nimport { WriteMetadataAfterUpdateHandler } from \"./WriteMetadataAfterUpdateHandler.js\";\n\nexport const WriteFileMetadataFeature = createFeature({\n name: \"FileManager/WriteFileMetadata\",\n register(container) {\n container.register(MetadataWriter);\n container.register(WriteMetadataAfterCreateHandler);\n container.register(WriteMetadataAfterBatchCreateHandler);\n container.register(WriteMetadataAfterUpdateHandler);\n }\n});\n"],"names":["WriteFileMetadataFeature","createFeature","container","MetadataWriter","WriteMetadataAfterCreateHandler","WriteMetadataAfterBatchCreateHandler","WriteMetadataAfterUpdateHandler"],"mappings":";;;;;AAMO,MAAMA,2BAA2BC,cAAc;IAClD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;IACvB;AACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type { PresignedPostPayloadData } from "./types.js";
|
|
2
|
+
export type { FileData } from "./types.js";
|
|
3
|
+
export type { UploadPayloadResponse } from "./types.js";
|
|
4
|
+
export type { MultiPartUploadFilePart } from "./types.js";
|
|
5
|
+
export type { CreateMultiPartUploadResult } from "./types.js";
|
|
6
|
+
export { checkPermissions } from "./utils/checkPermissions.js";
|
|
7
|
+
export { FileKey } from "./utils/FileKey.js";
|
|
8
|
+
export { FileExtension } from "./utils/FileExtension.js";
|
|
9
|
+
export { mimeTypes } from "./utils/mimeTypes.js";
|
|
10
|
+
export { FileNormalizer } from "./utils/FileNormalizer.js";
|
|
11
|
+
export { createFileUploadModifier } from "./utils/FileUploadModifier.js";
|
|
12
|
+
export { FileUploadModifierPlugin } from "./utils/FileUploadModifier.js";
|
|
13
|
+
export { createModifierFromPlugins } from "./utils/FileUploadModifier.js";
|
|
14
|
+
export { createFileNormalizerFromContext } from "./utils/createFileNormalizerFromContext.js";
|
|
15
|
+
export { GetUploadPayloadUseCase } from "./GetUploadPayload/index.js";
|
|
16
|
+
export { CreateMultiPartUploadUseCase } from "./CreateMultiPartUpload/index.js";
|
|
17
|
+
export { CompleteMultiPartUploadUseCase } from "./CompleteMultiPartUpload/index.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { checkPermissions } from "./utils/checkPermissions.js";
|
|
2
|
+
export { FileKey } from "./utils/FileKey.js";
|
|
3
|
+
export { FileExtension } from "./utils/FileExtension.js";
|
|
4
|
+
export { mimeTypes } from "./utils/mimeTypes.js";
|
|
5
|
+
export { FileNormalizer } from "./utils/FileNormalizer.js";
|
|
6
|
+
export { FileUploadModifierPlugin, createFileUploadModifier, createModifierFromPlugins } from "./utils/FileUploadModifier.js";
|
|
7
|
+
export { createFileNormalizerFromContext } from "./utils/createFileNormalizerFromContext.js";
|
|
8
|
+
export { GetUploadPayloadUseCase } from "./GetUploadPayload/index.js";
|
|
9
|
+
export { CreateMultiPartUploadUseCase } from "./CreateMultiPartUpload/index.js";
|
|
10
|
+
export { CompleteMultiPartUploadUseCase } from "./CompleteMultiPartUpload/index.js";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface PresignedPostPayloadData {
|
|
2
|
+
name: string;
|
|
3
|
+
type: string;
|
|
4
|
+
size: number;
|
|
5
|
+
id?: string;
|
|
6
|
+
key?: string;
|
|
7
|
+
keyPrefix?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FileData {
|
|
10
|
+
id: string;
|
|
11
|
+
key: string;
|
|
12
|
+
name: string;
|
|
13
|
+
size: number;
|
|
14
|
+
type: string;
|
|
15
|
+
}
|
|
16
|
+
export interface UploadPayloadResponse {
|
|
17
|
+
data: Record<string, unknown>;
|
|
18
|
+
file: FileData;
|
|
19
|
+
}
|
|
20
|
+
export interface MultiPartUploadFilePart {
|
|
21
|
+
partNumber: number;
|
|
22
|
+
url: string;
|
|
23
|
+
}
|
|
24
|
+
export interface CreateMultiPartUploadResult {
|
|
25
|
+
file: FileData;
|
|
26
|
+
uploadId: string;
|
|
27
|
+
parts: MultiPartUploadFilePart[];
|
|
28
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { mimeTypes as external_mimeTypes_js_mimeTypes } from "./mimeTypes.js";
|
|
2
|
+
class FileExtension {
|
|
3
|
+
constructor(data){
|
|
4
|
+
this.data = data;
|
|
5
|
+
}
|
|
6
|
+
getValue() {
|
|
7
|
+
const name = (this.data.key || this.data.name).toLowerCase();
|
|
8
|
+
const maybeExt = name.split(".").pop();
|
|
9
|
+
const extensions = external_mimeTypes_js_mimeTypes[this.data.type];
|
|
10
|
+
if (extensions && !extensions.includes(maybeExt)) return extensions[0];
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export { FileExtension };
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=FileExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/FileExtension.js","sources":["../../../../src/features/upload/utils/FileExtension.ts"],"sourcesContent":["import { mimeTypes } from \"./mimeTypes.js\";\nimport type { PresignedPostPayloadData } from \"~/features/upload/types.js\";\n\nexport class FileExtension {\n private data: PresignedPostPayloadData;\n\n constructor(data: PresignedPostPayloadData) {\n this.data = data;\n }\n\n getValue() {\n const name = (this.data.key || this.data.name).toLowerCase();\n\n const maybeExt = name.split(\".\").pop() as string;\n const extensions = mimeTypes[this.data.type];\n if (extensions && !extensions.includes(maybeExt)) {\n return extensions[0];\n }\n\n return \"\";\n }\n}\n"],"names":["FileExtension","data","name","maybeExt","extensions","mimeTypes"],"mappings":";AAGO,MAAMA;IAGT,YAAYC,IAA8B,CAAE;QACxC,IAAI,CAAC,IAAI,GAAGA;IAChB;IAEA,WAAW;QACP,MAAMC,OAAQ,KAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAG,EAAG,WAAW;QAE1D,MAAMC,WAAWD,KAAK,KAAK,CAAC,KAAK,GAAG;QACpC,MAAME,aAAaC,+BAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,IAAID,cAAc,CAACA,WAAW,QAAQ,CAACD,WACnC,OAAOC,UAAU,CAAC,EAAE;QAGxB,OAAO;IACX;AACJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PresignedPostPayloadData } from "../../../features/upload/types.js";
|
|
2
|
+
export declare class FileKey {
|
|
3
|
+
private data;
|
|
4
|
+
private extension;
|
|
5
|
+
private key;
|
|
6
|
+
constructor(data: PresignedPostPayloadData);
|
|
7
|
+
getExtension(): string;
|
|
8
|
+
setKey(key: string): this;
|
|
9
|
+
toString(): string;
|
|
10
|
+
private getSanitizedKey;
|
|
11
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import sanitize_filename from "sanitize-filename";
|
|
2
|
+
import { FileExtension } from "./FileExtension.js";
|
|
3
|
+
class FileKey {
|
|
4
|
+
constructor(data){
|
|
5
|
+
this.data = data;
|
|
6
|
+
this.extension = new FileExtension(data);
|
|
7
|
+
this.key = this.getSanitizedKey();
|
|
8
|
+
}
|
|
9
|
+
getExtension() {
|
|
10
|
+
return this.extension.getValue();
|
|
11
|
+
}
|
|
12
|
+
setKey(key) {
|
|
13
|
+
this.key = key;
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
toString() {
|
|
17
|
+
return [
|
|
18
|
+
this.data.keyPrefix,
|
|
19
|
+
this.data.id,
|
|
20
|
+
this.key
|
|
21
|
+
].filter(Boolean).join("/");
|
|
22
|
+
}
|
|
23
|
+
getSanitizedKey() {
|
|
24
|
+
const key = sanitize_filename(this.data.key || this.data.name).replace(/\s/g, "");
|
|
25
|
+
return [
|
|
26
|
+
key,
|
|
27
|
+
this.getExtension()
|
|
28
|
+
].filter(Boolean).join(".");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export { FileKey };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=FileKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/FileKey.js","sources":["../../../../src/features/upload/utils/FileKey.ts"],"sourcesContent":["import sanitizeFilename from \"sanitize-filename\";\nimport type { PresignedPostPayloadData } from \"~/features/upload/types.js\";\nimport { FileExtension } from \"./FileExtension.js\";\n\nexport class FileKey {\n private data: PresignedPostPayloadData;\n private extension: FileExtension;\n private key: string;\n\n constructor(data: PresignedPostPayloadData) {\n this.data = data;\n this.extension = new FileExtension(data);\n this.key = this.getSanitizedKey();\n }\n\n getExtension() {\n return this.extension.getValue();\n }\n\n setKey(key: string) {\n this.key = key;\n return this;\n }\n\n toString() {\n return [this.data.keyPrefix, this.data.id, this.key].filter(Boolean).join(\"/\");\n }\n\n private getSanitizedKey() {\n const key = sanitizeFilename(this.data.key || this.data.name).replace(/\\s/g, \"\");\n\n return [key, this.getExtension()].filter(Boolean).join(\".\");\n }\n}\n"],"names":["FileKey","data","FileExtension","key","Boolean","sanitizeFilename"],"mappings":";;AAIO,MAAMA;IAKT,YAAYC,IAA8B,CAAE;QACxC,IAAI,CAAC,IAAI,GAAGA;QACZ,IAAI,CAAC,SAAS,GAAG,IAAIC,cAAcD;QACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe;IACnC;IAEA,eAAe;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ;IAClC;IAEA,OAAOE,GAAW,EAAE;QAChB,IAAI,CAAC,GAAG,GAAGA;QACX,OAAO,IAAI;IACf;IAEA,WAAW;QACP,OAAO;YAAC,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,GAAG;SAAC,CAAC,MAAM,CAACC,SAAS,IAAI,CAAC;IAC9E;IAEQ,kBAAkB;QACtB,MAAMD,MAAME,kBAAiB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO;QAE7E,OAAO;YAACF;YAAK,IAAI,CAAC,YAAY;SAAG,CAAC,MAAM,CAACC,SAAS,IAAI,CAAC;IAC3D;AACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { FileData, PresignedPostPayloadData } from "../../../features/upload/types.js";
|
|
2
|
+
import type { FileModifier } from "./FileUploadModifier.js";
|
|
3
|
+
export interface FileToSign {
|
|
4
|
+
name: string;
|
|
5
|
+
key: string;
|
|
6
|
+
type: string;
|
|
7
|
+
size: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class FileNormalizer {
|
|
10
|
+
private readonly modifier;
|
|
11
|
+
constructor(modifier?: FileModifier);
|
|
12
|
+
normalizeFile(payload: PresignedPostPayloadData): Promise<FileData>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { mdbid } from "@webiny/utils";
|
|
2
|
+
import { FileKey } from "./FileKey.js";
|
|
3
|
+
import { mimeTypes as external_mimeTypes_js_mimeTypes } from "./mimeTypes.js";
|
|
4
|
+
const extensionToMime = new Map();
|
|
5
|
+
for (const [mime, extensions] of Object.entries(external_mimeTypes_js_mimeTypes))for (const ext of extensions)if (!extensionToMime.has(ext)) extensionToMime.set(ext, mime);
|
|
6
|
+
function resolveTypeFromName(name) {
|
|
7
|
+
const ext = name.slice(name.lastIndexOf(".") + 1).toLowerCase();
|
|
8
|
+
return extensionToMime.get(ext) || "application/octet-stream";
|
|
9
|
+
}
|
|
10
|
+
class FileNormalizer {
|
|
11
|
+
constructor(modifier){
|
|
12
|
+
this.modifier = modifier;
|
|
13
|
+
}
|
|
14
|
+
async normalizeFile(payload) {
|
|
15
|
+
const data = {
|
|
16
|
+
...payload,
|
|
17
|
+
id: payload.id || mdbid(),
|
|
18
|
+
type: payload.type || resolveTypeFromName(payload.name)
|
|
19
|
+
};
|
|
20
|
+
const key = new FileKey(data);
|
|
21
|
+
const defaultKey = key.toString();
|
|
22
|
+
const file = {
|
|
23
|
+
name: data.name,
|
|
24
|
+
type: data.type,
|
|
25
|
+
key: defaultKey,
|
|
26
|
+
size: data.size
|
|
27
|
+
};
|
|
28
|
+
if (this.modifier) Object.assign(file, await this.modifier(file));
|
|
29
|
+
if (defaultKey !== file.key) key.setKey(file.key);
|
|
30
|
+
return {
|
|
31
|
+
id: data.id,
|
|
32
|
+
key: key.toString(),
|
|
33
|
+
name: file.name,
|
|
34
|
+
size: file.size,
|
|
35
|
+
type: file.type
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export { FileNormalizer };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=FileNormalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/FileNormalizer.js","sources":["../../../../src/features/upload/utils/FileNormalizer.ts"],"sourcesContent":["import { mdbid } from \"@webiny/utils\";\nimport type { FileData, PresignedPostPayloadData } from \"~/features/upload/types.js\";\nimport { FileKey } from \"./FileKey.js\";\nimport { mimeTypes } from \"./mimeTypes.js\";\nimport type { FileModifier } from \"./FileUploadModifier.js\";\n\nexport interface FileToSign {\n name: string;\n key: string;\n type: string;\n size: number;\n}\n\nconst extensionToMime = new Map<string, string>();\nfor (const [mime, extensions] of Object.entries(mimeTypes)) {\n for (const ext of extensions) {\n if (!extensionToMime.has(ext)) {\n extensionToMime.set(ext, mime);\n }\n }\n}\n\nfunction resolveTypeFromName(name: string): string {\n const ext = name.slice(name.lastIndexOf(\".\") + 1).toLowerCase();\n return extensionToMime.get(ext) || \"application/octet-stream\";\n}\n\n/*\n * FileNormalizer normalizes file data, before it's signed for upload.\n * It generates a unique file id, and makes sure that the file key includes the unique id.\n */\nexport class FileNormalizer {\n private readonly modifier: FileModifier | undefined;\n\n constructor(modifier?: FileModifier) {\n this.modifier = modifier;\n }\n\n async normalizeFile(payload: PresignedPostPayloadData): Promise<FileData> {\n const data = {\n ...payload,\n id: payload.id || mdbid(),\n type: payload.type || resolveTypeFromName(payload.name)\n };\n\n const key = new FileKey(data);\n const defaultKey = key.toString();\n\n const file: FileToSign = {\n name: data.name,\n type: data.type,\n key: defaultKey,\n size: data.size\n };\n\n if (this.modifier) {\n Object.assign(file, await this.modifier(file));\n }\n\n if (defaultKey !== file.key) {\n key.setKey(file.key);\n }\n\n return {\n id: data.id,\n key: key.toString(),\n name: file.name,\n size: file.size,\n type: file.type\n };\n }\n}\n"],"names":["extensionToMime","Map","mime","extensions","Object","mimeTypes","ext","resolveTypeFromName","name","FileNormalizer","modifier","payload","data","mdbid","key","FileKey","defaultKey","file"],"mappings":";;;AAaA,MAAMA,kBAAkB,IAAIC;AAC5B,KAAK,MAAM,CAACC,MAAMC,WAAW,IAAIC,OAAO,OAAO,CAACC,iCAC5C,KAAK,MAAMC,OAAOH,WACd,IAAI,CAACH,gBAAgB,GAAG,CAACM,MACrBN,gBAAgB,GAAG,CAACM,KAAKJ;AAKrC,SAASK,oBAAoBC,IAAY;IACrC,MAAMF,MAAME,KAAK,KAAK,CAACA,KAAK,WAAW,CAAC,OAAO,GAAG,WAAW;IAC7D,OAAOR,gBAAgB,GAAG,CAACM,QAAQ;AACvC;AAMO,MAAMG;IAGT,YAAYC,QAAuB,CAAE;QACjC,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAM,cAAcC,OAAiC,EAAqB;QACtE,MAAMC,OAAO;YACT,GAAGD,OAAO;YACV,IAAIA,QAAQ,EAAE,IAAIE;YAClB,MAAMF,QAAQ,IAAI,IAAIJ,oBAAoBI,QAAQ,IAAI;QAC1D;QAEA,MAAMG,MAAM,IAAIC,QAAQH;QACxB,MAAMI,aAAaF,IAAI,QAAQ;QAE/B,MAAMG,OAAmB;YACrB,MAAML,KAAK,IAAI;YACf,MAAMA,KAAK,IAAI;YACf,KAAKI;YACL,MAAMJ,KAAK,IAAI;QACnB;QAEA,IAAI,IAAI,CAAC,QAAQ,EACbR,OAAO,MAAM,CAACa,MAAM,MAAM,IAAI,CAAC,QAAQ,CAACA;QAG5C,IAAID,eAAeC,KAAK,GAAG,EACvBH,IAAI,MAAM,CAACG,KAAK,GAAG;QAGvB,OAAO;YACH,IAAIL,KAAK,EAAE;YACX,KAAKE,IAAI,QAAQ;YACjB,MAAMG,KAAK,IAAI;YACf,MAAMA,KAAK,IAAI;YACf,MAAMA,KAAK,IAAI;QACnB;IACJ;AACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Plugin } from "@webiny/plugins";
|
|
2
|
+
import type { FileToSign } from "./FileNormalizer.js";
|
|
3
|
+
interface Setter<T> {
|
|
4
|
+
(param: T): T;
|
|
5
|
+
}
|
|
6
|
+
declare class FileUploadModifier {
|
|
7
|
+
private fileSetters;
|
|
8
|
+
setFile(setter: Setter<FileToSign>): void;
|
|
9
|
+
execute(file: FileToSign): Promise<FileToSign>;
|
|
10
|
+
}
|
|
11
|
+
interface FileUploadModifierCallbackParams {
|
|
12
|
+
modifier: {
|
|
13
|
+
setFile: FileUploadModifier["setFile"];
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare class FileUploadModifierPlugin extends Plugin {
|
|
17
|
+
static type: string;
|
|
18
|
+
private readonly cb;
|
|
19
|
+
constructor(cb: FileUploadModifierCallable);
|
|
20
|
+
execute(params: FileUploadModifierCallbackParams): void;
|
|
21
|
+
}
|
|
22
|
+
interface FileUploadModifierCallable {
|
|
23
|
+
(params: FileUploadModifierCallbackParams): void;
|
|
24
|
+
}
|
|
25
|
+
export declare const createFileUploadModifier: (cb: FileUploadModifierCallable) => FileUploadModifierPlugin;
|
|
26
|
+
export interface FileModifier {
|
|
27
|
+
(file: FileToSign): Promise<Partial<FileToSign>> | Partial<FileToSign>;
|
|
28
|
+
}
|
|
29
|
+
export declare const createModifierFromPlugins: (plugins?: FileUploadModifierPlugin[]) => FileModifier;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import p_reduce from "p-reduce";
|
|
2
|
+
import { Plugin } from "@webiny/plugins";
|
|
3
|
+
class FileUploadModifier {
|
|
4
|
+
setFile(setter) {
|
|
5
|
+
this.fileSetters.push(setter);
|
|
6
|
+
}
|
|
7
|
+
execute(file) {
|
|
8
|
+
return p_reduce(this.fileSetters, async (file, setter)=>({
|
|
9
|
+
...file,
|
|
10
|
+
...await setter(file)
|
|
11
|
+
}), file);
|
|
12
|
+
}
|
|
13
|
+
constructor(){
|
|
14
|
+
this.fileSetters = [];
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
class FileUploadModifierPlugin extends Plugin {
|
|
18
|
+
static{
|
|
19
|
+
this.type = "fm.uploadModifier";
|
|
20
|
+
}
|
|
21
|
+
constructor(cb){
|
|
22
|
+
super();
|
|
23
|
+
this.cb = cb;
|
|
24
|
+
}
|
|
25
|
+
execute(params) {
|
|
26
|
+
return this.cb(params);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const createFileUploadModifier = (cb)=>new FileUploadModifierPlugin(cb);
|
|
30
|
+
const createModifierFromPlugins = (plugins = [])=>{
|
|
31
|
+
const modifier = new FileUploadModifier();
|
|
32
|
+
plugins.forEach((pl)=>pl.execute({
|
|
33
|
+
modifier
|
|
34
|
+
}));
|
|
35
|
+
return (file)=>modifier.execute(file);
|
|
36
|
+
};
|
|
37
|
+
export { FileUploadModifierPlugin, createFileUploadModifier, createModifierFromPlugins };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=FileUploadModifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/FileUploadModifier.js","sources":["../../../../src/features/upload/utils/FileUploadModifier.ts"],"sourcesContent":["import pReduce from \"p-reduce\";\nimport { Plugin } from \"@webiny/plugins\";\nimport type { FileToSign } from \"./FileNormalizer.js\";\n\ninterface Setter<T> {\n (param: T): T;\n}\n\nclass FileUploadModifier {\n private fileSetters: Setter<FileToSign>[] = [];\n\n setFile(setter: Setter<FileToSign>): void {\n this.fileSetters.push(setter);\n }\n\n execute(file: FileToSign) {\n return pReduce(\n this.fileSetters,\n async (file, setter) => {\n /* We need to spread the original file, then add (potentially) partial changes. */\n return { ...file, ...(await setter(file)) };\n },\n file\n );\n }\n}\n\ninterface FileUploadModifierCallbackParams {\n modifier: {\n setFile: FileUploadModifier[\"setFile\"];\n };\n}\n\nexport class FileUploadModifierPlugin extends Plugin {\n public static override type = \"fm.uploadModifier\";\n private readonly cb: FileUploadModifierCallable;\n\n constructor(cb: FileUploadModifierCallable) {\n super();\n this.cb = cb;\n }\n\n execute(params: FileUploadModifierCallbackParams) {\n return this.cb(params);\n }\n}\n\ninterface FileUploadModifierCallable {\n (params: FileUploadModifierCallbackParams): void;\n}\n\nexport const createFileUploadModifier = (cb: FileUploadModifierCallable) => {\n return new FileUploadModifierPlugin(cb);\n};\n\nexport interface FileModifier {\n (file: FileToSign): Promise<Partial<FileToSign>> | Partial<FileToSign>;\n}\n\nexport const createModifierFromPlugins = (\n plugins: FileUploadModifierPlugin[] = []\n): FileModifier => {\n const modifier = new FileUploadModifier();\n plugins.forEach(pl => pl.execute({ modifier }));\n\n return (file: FileToSign) => modifier.execute(file);\n};\n"],"names":["FileUploadModifier","setter","file","pReduce","FileUploadModifierPlugin","Plugin","cb","params","createFileUploadModifier","createModifierFromPlugins","plugins","modifier","pl"],"mappings":";;AAQA,MAAMA;IAGF,QAAQC,MAA0B,EAAQ;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAACA;IAC1B;IAEA,QAAQC,IAAgB,EAAE;QACtB,OAAOC,SACH,IAAI,CAAC,WAAW,EAChB,OAAOD,MAAMD,SAEF;gBAAE,GAAGC,IAAI;gBAAE,GAAI,MAAMD,OAAOC,KAAK;YAAE,IAE9CA;IAER;;aAfQ,WAAW,GAAyB,EAAE;;AAgBlD;AAQO,MAAME,iCAAiCC;;aACnB,IAAI,GAAG;;IAG9B,YAAYC,EAA8B,CAAE;QACxC,KAAK;QACL,IAAI,CAAC,EAAE,GAAGA;IACd;IAEA,QAAQC,MAAwC,EAAE;QAC9C,OAAO,IAAI,CAAC,EAAE,CAACA;IACnB;AACJ;AAMO,MAAMC,2BAA2B,CAACF,KAC9B,IAAIF,yBAAyBE;AAOjC,MAAMG,4BAA4B,CACrCC,UAAsC,EAAE;IAExC,MAAMC,WAAW,IAAIX;IACrBU,QAAQ,OAAO,CAACE,CAAAA,KAAMA,GAAG,OAAO,CAAC;YAAED;QAAS;IAE5C,OAAO,CAACT,OAAqBS,SAAS,OAAO,CAACT;AAClD"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FilePermission } from "../../../types.js";
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
export declare const checkPermissions: (identityContext: IdentityContext.Interface, check?: {
|
|
4
|
+
rwd?: string;
|
|
5
|
+
}) => Promise<FilePermission[]>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NotAuthorizedError } from "@webiny/api-core/features/security/shared/index.js";
|
|
2
|
+
const checkPermissions = async (identityContext, check = {})=>{
|
|
3
|
+
const filePermissions = await identityContext.getPermissions("fm.file");
|
|
4
|
+
const relevantFilePermissions = filePermissions.filter((current)=>{
|
|
5
|
+
if (check.rwd && !hasRwd(current, check.rwd)) return false;
|
|
6
|
+
return true;
|
|
7
|
+
});
|
|
8
|
+
if (0 === relevantFilePermissions.length) throw new NotAuthorizedError();
|
|
9
|
+
return relevantFilePermissions;
|
|
10
|
+
};
|
|
11
|
+
const hasRwd = (filesFilePermissions, rwd)=>{
|
|
12
|
+
if (!Array.isArray(filesFilePermissions)) filesFilePermissions = [
|
|
13
|
+
filesFilePermissions
|
|
14
|
+
];
|
|
15
|
+
if (!rwd) return true;
|
|
16
|
+
const permissionWithoutRwdRestrictions = filesFilePermissions.some((permission)=>"string" != typeof permission.rwd);
|
|
17
|
+
if (permissionWithoutRwdRestrictions) return true;
|
|
18
|
+
return filesFilePermissions.some((permission)=>permission.rwd && permission.rwd.includes(rwd));
|
|
19
|
+
};
|
|
20
|
+
export { checkPermissions };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=checkPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/checkPermissions.js","sources":["../../../../src/features/upload/utils/checkPermissions.ts"],"sourcesContent":["import type { FilePermission } from \"~/types.js\";\nimport { NotAuthorizedError } from \"@webiny/api-core/features/security/shared/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\n\nexport const checkPermissions = async (\n identityContext: IdentityContext.Interface,\n check: { rwd?: string } = {}\n) => {\n const filePermissions = await identityContext.getPermissions<FilePermission>(\"fm.file\");\n\n const relevantFilePermissions = filePermissions.filter(current => {\n if (check.rwd && !hasRwd(current, check.rwd)) {\n return false;\n }\n\n return true;\n });\n\n if (relevantFilePermissions.length === 0) {\n throw new NotAuthorizedError();\n }\n\n return relevantFilePermissions;\n};\n\nconst hasRwd = (filesFilePermissions: FilePermission | FilePermission[], rwd: string): boolean => {\n if (!Array.isArray(filesFilePermissions)) {\n filesFilePermissions = [filesFilePermissions];\n }\n\n if (!rwd) {\n return true;\n }\n\n /* Is there a permission that doesn't restrict RWD, all RWD permissions are allowed. */\n const permissionWithoutRwdRestrictions = filesFilePermissions.some(permission => {\n return typeof permission.rwd !== \"string\";\n });\n\n if (permissionWithoutRwdRestrictions) {\n return true;\n }\n\n return filesFilePermissions.some(permission => {\n return permission.rwd && permission.rwd.includes(rwd);\n });\n};\n"],"names":["checkPermissions","identityContext","check","filePermissions","relevantFilePermissions","current","hasRwd","NotAuthorizedError","filesFilePermissions","rwd","Array","permissionWithoutRwdRestrictions","permission"],"mappings":";AAIO,MAAMA,mBAAmB,OAC5BC,iBACAC,QAA0B,CAAC,CAAC;IAE5B,MAAMC,kBAAkB,MAAMF,gBAAgB,cAAc,CAAiB;IAE7E,MAAMG,0BAA0BD,gBAAgB,MAAM,CAACE,CAAAA;QACnD,IAAIH,MAAM,GAAG,IAAI,CAACI,OAAOD,SAASH,MAAM,GAAG,GACvC,OAAO;QAGX,OAAO;IACX;IAEA,IAAIE,AAAmC,MAAnCA,wBAAwB,MAAM,EAC9B,MAAM,IAAIG;IAGd,OAAOH;AACX;AAEA,MAAME,SAAS,CAACE,sBAAyDC;IACrE,IAAI,CAACC,MAAM,OAAO,CAACF,uBACfA,uBAAuB;QAACA;KAAqB;IAGjD,IAAI,CAACC,KACD,OAAO;IAIX,MAAME,mCAAmCH,qBAAqB,IAAI,CAACI,CAAAA,aACxD,AAA0B,YAA1B,OAAOA,WAAW,GAAG;IAGhC,IAAID,kCACA,OAAO;IAGX,OAAOH,qBAAqB,IAAI,CAACI,CAAAA,aACtBA,WAAW,GAAG,IAAIA,WAAW,GAAG,CAAC,QAAQ,CAACH;AAEzD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FileNormalizer } from "./FileNormalizer.js";
|
|
2
|
+
import { FileUploadModifierPlugin, createModifierFromPlugins } from "./FileUploadModifier.js";
|
|
3
|
+
const createFileNormalizerFromContext = (context)=>{
|
|
4
|
+
const modifierPlugins = context.plugins.byType(FileUploadModifierPlugin.type);
|
|
5
|
+
return new FileNormalizer(createModifierFromPlugins(modifierPlugins));
|
|
6
|
+
};
|
|
7
|
+
export { createFileNormalizerFromContext };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=createFileNormalizerFromContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/createFileNormalizerFromContext.js","sources":["../../../../src/features/upload/utils/createFileNormalizerFromContext.ts"],"sourcesContent":["import type { Context } from \"@webiny/api/types.js\";\nimport { FileNormalizer } from \"./FileNormalizer.js\";\nimport { createModifierFromPlugins } from \"./FileUploadModifier.js\";\nimport { FileUploadModifierPlugin } from \"./FileUploadModifier.js\";\n\nexport const createFileNormalizerFromContext = (context: Context) => {\n const modifierPlugins = context.plugins.byType<FileUploadModifierPlugin>(\n FileUploadModifierPlugin.type\n );\n\n return new FileNormalizer(createModifierFromPlugins(modifierPlugins));\n};\n"],"names":["createFileNormalizerFromContext","context","modifierPlugins","FileUploadModifierPlugin","FileNormalizer","createModifierFromPlugins"],"mappings":";;AAKO,MAAMA,kCAAkC,CAACC;IAC5C,MAAMC,kBAAkBD,QAAQ,OAAO,CAAC,MAAM,CAC1CE,yBAAyB,IAAI;IAGjC,OAAO,IAAIC,eAAeC,0BAA0BH;AACxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const mimeTypes: Record<string, string[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/upload/utils/mimeTypes.js","sources":["../../../../src/features/upload/utils/mimeTypes.ts"],"sourcesContent":["import vendorTypes from \"mime/types/other.js\";\nimport standardTypes from \"mime/types/standard.js\";\n\n/*\n * We need to get all extensions that are defined for a specific content type.\n * This operation is not available via the `mime` package, so we create such an object ourselves.\n */\nexport const mimeTypes: Record<string, string[]> = {\n ...vendorTypes,\n ...standardTypes\n};\n"],"names":["mimeTypes","vendorTypes","standardTypes"],"mappings":";;AAOO,MAAMA,sBAAsC;IAC/C,GAAGC,KAAW;IACd,GAAGC,QAAa;AACpB"}
|