@webiny/api-file-manager 6.4.5 → 6.6.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FileManagerAppFeature.d.ts +5 -0
- package/FileManagerAppFeature.js +21 -0
- package/FileManagerAppFeature.js.map +1 -0
- package/delivery/AssetDeliveryRoute.d.ts +14 -0
- package/delivery/AssetDeliveryRoute.js +65 -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/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/FileModelContextualSchema.d.ts +13 -0
- package/features/FileModelContextualSchema.js +31 -0
- package/features/FileModelContextualSchema.js.map +1 -0
- 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.d.ts +23 -12
- package/features/assetDelivery/abstractions.js.map +1 -1
- package/features/assetDelivery/feature.js +6 -0
- 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/transformation/AssetKeyGenerator.d.ts +9 -0
- package/features/assetDelivery/transformation/AssetKeyGenerator.js +24 -0
- package/features/assetDelivery/transformation/AssetKeyGenerator.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/WidthCollection.d.ts +8 -0
- package/features/assetDelivery/transformation/WidthCollection.js +22 -0
- package/features/assetDelivery/transformation/WidthCollection.js.map +1 -0
- package/features/assetDelivery/transformation/index.d.ts +4 -0
- package/features/assetDelivery/transformation/index.js +4 -0
- package/features/assetDelivery/transformation/utils.d.ts +9 -0
- package/features/assetDelivery/transformation/utils.js +31 -0
- package/features/assetDelivery/transformation/utils.js.map +1 -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/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/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/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/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/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 +15 -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 +451 -0
- package/graphql/FmGraphQLSchema.js.map +1 -0
- package/index.d.ts +3 -6
- package/index.js +3 -32
- package/index.js.map +1 -1
- package/package.json +24 -17
- 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 -96
- package/graphql/filesSchema.js.map +0 -1
- package/graphql/getFileByUrl.d.ts +0 -3
- package/graphql/getFileByUrl.js +0 -61
- package/graphql/getFileByUrl.js.map +0 -1
- package/graphql/index.d.ts +0 -4
- package/graphql/index.js +0 -47
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/StreamAssetReply/abstractions.js","sources":["../../../../src/features/assetDelivery/StreamAssetReply/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { Asset as IAsset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetReply as IAssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\n\nexport interface IStreamAssetReply {\n create(asset: IAsset): IAssetReply;\n}\n\nexport const StreamAssetReply = createAbstraction<IStreamAssetReply>(\n \"AssetDelivery/StreamAssetReply\"\n);\n\nexport namespace StreamAssetReply {\n export type Interface = IStreamAssetReply;\n export type Asset = IAsset;\n export type AssetReply = IAssetReply;\n}\n"],"names":["StreamAssetReply","createAbstraction"],"mappings":";AAQO,MAAMA,mBAAmBC,kBAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { StreamAssetReply } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { StreamAssetReply } from "./abstractions.js";
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import type { Request } from "@webiny/handler/types.js";
|
|
2
|
-
import type { AssetRequest } from "../../delivery/AssetDelivery/AssetRequest.js";
|
|
3
|
-
import type { Asset } from "../../delivery/AssetDelivery/Asset.js";
|
|
4
|
-
import type { AssetReply } from "../../delivery/AssetDelivery/abstractions/AssetReply.js";
|
|
5
|
-
import type { File } from "../../domain/file/types.js";
|
|
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
6
|
export interface IAssetRequestResolver {
|
|
7
|
-
resolve(request:
|
|
7
|
+
resolve(request: IRequest): Promise<IAssetRequest | undefined>;
|
|
8
8
|
}
|
|
9
9
|
export interface IAssetResolver {
|
|
10
|
-
resolve(request:
|
|
10
|
+
resolve(request: IAssetRequest): Promise<IAsset | undefined>;
|
|
11
11
|
}
|
|
12
12
|
export interface IAssetProcessor {
|
|
13
|
-
process(assetRequest:
|
|
13
|
+
process(assetRequest: IAssetRequest, asset: IAsset): Promise<IAsset>;
|
|
14
14
|
}
|
|
15
15
|
export interface IAssetOutputStrategy {
|
|
16
|
-
output(asset:
|
|
16
|
+
output(asset: IAsset): Promise<IAssetReply>;
|
|
17
17
|
}
|
|
18
18
|
export interface IAssetTransformationStrategy {
|
|
19
|
-
transform(assetRequest:
|
|
19
|
+
transform(assetRequest: IAssetRequest, asset: IAsset): Promise<IAsset>;
|
|
20
20
|
}
|
|
21
21
|
export interface IAssetContentsReader {
|
|
22
|
-
read(asset:
|
|
22
|
+
read(asset: IAsset): Promise<Buffer>;
|
|
23
23
|
}
|
|
24
24
|
export interface IAssetAuthorizer {
|
|
25
|
-
authorize(file:
|
|
25
|
+
authorize(file: IFile): Promise<void>;
|
|
26
26
|
}
|
|
27
27
|
export declare const AssetRequestResolver: import("@webiny/di").Abstraction<IAssetRequestResolver>;
|
|
28
28
|
export declare const AssetResolver: import("@webiny/di").Abstraction<IAssetResolver>;
|
|
@@ -33,21 +33,32 @@ export declare const AssetContentsReader: import("@webiny/di").Abstraction<IAsse
|
|
|
33
33
|
export declare const AssetAuthorizer: import("@webiny/di").Abstraction<IAssetAuthorizer>;
|
|
34
34
|
export declare namespace AssetRequestResolver {
|
|
35
35
|
type Interface = IAssetRequestResolver;
|
|
36
|
+
type AssetRequest = IAssetRequest;
|
|
37
|
+
type Request = IRequest;
|
|
36
38
|
}
|
|
37
39
|
export declare namespace AssetResolver {
|
|
38
40
|
type Interface = IAssetResolver;
|
|
41
|
+
type Asset = IAsset;
|
|
42
|
+
type Request = IAssetRequest;
|
|
39
43
|
}
|
|
40
44
|
export declare namespace AssetProcessor {
|
|
41
45
|
type Interface = IAssetProcessor;
|
|
46
|
+
type AssetRequest = IAssetRequest;
|
|
47
|
+
type Asset = IAsset;
|
|
42
48
|
}
|
|
43
49
|
export declare namespace AssetOutputStrategy {
|
|
44
50
|
type Interface = IAssetOutputStrategy;
|
|
51
|
+
type Asset = IAsset;
|
|
52
|
+
type AssetReply = IAssetReply;
|
|
45
53
|
}
|
|
46
54
|
export declare namespace AssetTransformationStrategy {
|
|
47
55
|
type Interface = IAssetTransformationStrategy;
|
|
56
|
+
type AssetRequest = IAssetRequest;
|
|
57
|
+
type Asset = IAsset;
|
|
48
58
|
}
|
|
49
59
|
export declare namespace AssetContentsReader {
|
|
50
60
|
type Interface = IAssetContentsReader;
|
|
61
|
+
type Asset = IAsset;
|
|
51
62
|
}
|
|
52
63
|
export declare namespace AssetAuthorizer {
|
|
53
64
|
type Interface = IAssetAuthorizer;
|
|
@@ -1 +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 } from \"@webiny/handler/types.js\";\nimport type { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport type { Asset } from \"~/delivery/AssetDelivery/Asset.js\";\nimport type { AssetReply } from \"~/delivery/AssetDelivery/abstractions/AssetReply.js\";\nimport type { File } from \"~/domain/file/types.js\";\n\nexport interface IAssetRequestResolver {\n resolve(request:
|
|
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"}
|
|
@@ -3,6 +3,9 @@ import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
|
|
|
3
3
|
import { FilesAssetRequestResolverImpl } from "./FilesAssetRequestResolver.js";
|
|
4
4
|
import { NullAssetResolverImpl } from "./NullAssetResolver.js";
|
|
5
5
|
import { NullAssetOutputStrategyImpl } from "./NullAssetOutputStrategy.js";
|
|
6
|
+
import { AssetFactory } from "./Asset/Asset.js";
|
|
7
|
+
import { ObjectKey } from "./ObjectKey/ObjectKey.js";
|
|
8
|
+
import { StreamAssetReply } from "./StreamAssetReply/StreamAssetReply.js";
|
|
6
9
|
import { PassthroughAssetTransformationStrategyImpl } from "./transformation/PassthroughAssetTransformationStrategy.js";
|
|
7
10
|
import { TransformationAssetProcessorImpl } from "./transformation/TransformationAssetProcessor.js";
|
|
8
11
|
import { PrivateFileAssetRequestResolverDecorator } from "./privateFiles/PrivateFileAssetRequestResolver.js";
|
|
@@ -14,6 +17,9 @@ const AssetDeliveryFeature = createFeature({
|
|
|
14
17
|
container.register(FilesAssetRequestResolverImpl);
|
|
15
18
|
container.register(NullAssetResolverImpl);
|
|
16
19
|
container.register(NullAssetOutputStrategyImpl);
|
|
20
|
+
container.register(AssetFactory).inSingletonScope();
|
|
21
|
+
container.register(ObjectKey).inSingletonScope();
|
|
22
|
+
container.register(StreamAssetReply).inSingletonScope();
|
|
17
23
|
container.register(PassthroughAssetTransformationStrategyImpl);
|
|
18
24
|
container.register(TransformationAssetProcessorImpl);
|
|
19
25
|
container.registerDecorator(PrivateFileAssetRequestResolverDecorator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/assetDelivery/feature.js","sources":["../../../src/features/assetDelivery/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { FilesAssetRequestResolverImpl } from \"./FilesAssetRequestResolver.js\";\nimport { NullAssetResolverImpl } from \"./NullAssetResolver.js\";\nimport { NullAssetOutputStrategyImpl } from \"./NullAssetOutputStrategy.js\";\nimport { PassthroughAssetTransformationStrategyImpl } from \"./transformation/PassthroughAssetTransformationStrategy.js\";\nimport { TransformationAssetProcessorImpl } from \"./transformation/TransformationAssetProcessor.js\";\nimport { PrivateFileAssetRequestResolverDecorator } from \"./privateFiles/PrivateFileAssetRequestResolver.js\";\nimport { PrivateAuthenticatedAuthorizerImpl } from \"./privateFiles/PrivateAuthenticatedAuthorizer.js\";\nimport { PrivateFilesAssetProcessorDecorator } from \"./privateFiles/PrivateFilesAssetProcessor.js\";\n\nexport const AssetDeliveryFeature = createFeature({\n name: \"AssetDelivery\",\n register(container) {\n container.register(FilesAssetRequestResolverImpl);\n container.register(NullAssetResolverImpl);\n container.register(NullAssetOutputStrategyImpl);\n container.register(PassthroughAssetTransformationStrategyImpl);\n container.register(TransformationAssetProcessorImpl);\n\n container.registerDecorator(PrivateFileAssetRequestResolverDecorator);\n\n const wcp = container.resolve(WcpContext);\n if (wcp.canUsePrivateFiles()) {\n container.register(PrivateAuthenticatedAuthorizerImpl);\n container.registerDecorator(PrivateFilesAssetProcessorDecorator);\n }\n }\n});\n"],"names":["AssetDeliveryFeature","createFeature","container","FilesAssetRequestResolverImpl","NullAssetResolverImpl","NullAssetOutputStrategyImpl","PassthroughAssetTransformationStrategyImpl","TransformationAssetProcessorImpl","PrivateFileAssetRequestResolverDecorator","wcp","WcpContext","PrivateAuthenticatedAuthorizerImpl","PrivateFilesAssetProcessorDecorator"],"mappings":"
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/feature.js","sources":["../../../src/features/assetDelivery/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { FilesAssetRequestResolverImpl } from \"./FilesAssetRequestResolver.js\";\nimport { NullAssetResolverImpl } from \"./NullAssetResolver.js\";\nimport { NullAssetOutputStrategyImpl } from \"./NullAssetOutputStrategy.js\";\nimport { AssetFactory } from \"./Asset/Asset.js\";\nimport { ObjectKey } from \"./ObjectKey/ObjectKey.js\";\nimport { StreamAssetReply } from \"./StreamAssetReply/StreamAssetReply.js\";\nimport { PassthroughAssetTransformationStrategyImpl } from \"./transformation/PassthroughAssetTransformationStrategy.js\";\nimport { TransformationAssetProcessorImpl } from \"./transformation/TransformationAssetProcessor.js\";\nimport { PrivateFileAssetRequestResolverDecorator } from \"./privateFiles/PrivateFileAssetRequestResolver.js\";\nimport { PrivateAuthenticatedAuthorizerImpl } from \"./privateFiles/PrivateAuthenticatedAuthorizer.js\";\nimport { PrivateFilesAssetProcessorDecorator } from \"./privateFiles/PrivateFilesAssetProcessor.js\";\n\nexport const AssetDeliveryFeature = createFeature({\n name: \"AssetDelivery\",\n register(container) {\n container.register(FilesAssetRequestResolverImpl);\n container.register(NullAssetResolverImpl);\n container.register(NullAssetOutputStrategyImpl);\n // Shared upload/delivery primitives consumed by storage variants (e.g. self-hosted server).\n container.register(AssetFactory).inSingletonScope();\n container.register(ObjectKey).inSingletonScope();\n container.register(StreamAssetReply).inSingletonScope();\n container.register(PassthroughAssetTransformationStrategyImpl);\n container.register(TransformationAssetProcessorImpl);\n\n container.registerDecorator(PrivateFileAssetRequestResolverDecorator);\n\n const wcp = container.resolve(WcpContext);\n if (wcp.canUsePrivateFiles()) {\n container.register(PrivateAuthenticatedAuthorizerImpl);\n container.registerDecorator(PrivateFilesAssetProcessorDecorator);\n }\n }\n});\n"],"names":["AssetDeliveryFeature","createFeature","container","FilesAssetRequestResolverImpl","NullAssetResolverImpl","NullAssetOutputStrategyImpl","AssetFactory","ObjectKey","StreamAssetReply","PassthroughAssetTransformationStrategyImpl","TransformationAssetProcessorImpl","PrivateFileAssetRequestResolverDecorator","wcp","WcpContext","PrivateAuthenticatedAuthorizerImpl","PrivateFilesAssetProcessorDecorator"],"mappings":";;;;;;;;;;;;;AAcO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QAEnBH,UAAU,QAAQ,CAACI,cAAc,gBAAgB;QACjDJ,UAAU,QAAQ,CAACK,WAAW,gBAAgB;QAC9CL,UAAU,QAAQ,CAACM,kBAAkB,gBAAgB;QACrDN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QAEnBR,UAAU,iBAAiB,CAACS;QAE5B,MAAMC,MAAMV,UAAU,OAAO,CAACW;QAC9B,IAAID,IAAI,kBAAkB,IAAI;YAC1BV,UAAU,QAAQ,CAACY;YACnBZ,UAAU,iBAAiB,CAACa;QAChC;IACJ;AACJ"}
|
|
@@ -5,14 +5,14 @@ class PrivateFileAssetRequestResolver {
|
|
|
5
5
|
this.resolver = resolver;
|
|
6
6
|
}
|
|
7
7
|
async resolve(request) {
|
|
8
|
-
if (!request.url
|
|
8
|
+
if (!request.url?.startsWith("/private/")) return this.resolver.resolve(request);
|
|
9
9
|
const params = request.params ?? {};
|
|
10
10
|
const query = request.query ?? {};
|
|
11
11
|
const path = params["*"];
|
|
12
12
|
return new AssetRequest({
|
|
13
13
|
key: decodeURI(path).replace("/private/", ""),
|
|
14
14
|
context: {
|
|
15
|
-
url: request.url,
|
|
15
|
+
url: request.url ?? "",
|
|
16
16
|
private: true
|
|
17
17
|
},
|
|
18
18
|
options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js","sources":["../../../../src/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.ts"],"sourcesContent":["import type { Request } from \"@webiny/handler/types.js\";\nimport { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetRequestResolver, type IAssetRequestResolver } from \"../abstractions.js\";\n\nexport class PrivateFileAssetRequestResolver implements IAssetRequestResolver {\n private readonly resolver: IAssetRequestResolver;\n\n constructor(resolver: IAssetRequestResolver) {\n this.resolver = resolver;\n }\n\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n if (!request.url
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.js","sources":["../../../../src/features/assetDelivery/privateFiles/PrivateFileAssetRequestResolver.ts"],"sourcesContent":["import type { Request } from \"@webiny/handler/types.js\";\nimport { AssetRequest } from \"~/delivery/AssetDelivery/AssetRequest.js\";\nimport { AssetRequestResolver, type IAssetRequestResolver } from \"../abstractions.js\";\n\nexport class PrivateFileAssetRequestResolver implements IAssetRequestResolver {\n private readonly resolver: IAssetRequestResolver;\n\n constructor(resolver: IAssetRequestResolver) {\n this.resolver = resolver;\n }\n\n async resolve(request: Request): Promise<AssetRequest | undefined> {\n if (!request.url?.startsWith(\"/private/\")) {\n return this.resolver.resolve(request);\n }\n\n const params = (request.params ?? {}) as Record<string, any>;\n const query = (request.query ?? {}) as Record<string, any>;\n\n const path = params[\"*\"];\n\n return new AssetRequest({\n key: decodeURI(path).replace(\"/private/\", \"\"),\n context: {\n url: request.url ?? \"\",\n private: true\n },\n options: {\n ...query,\n width: query.width ? parseInt(query.width) : undefined\n }\n });\n }\n}\n\nexport const PrivateFileAssetRequestResolverDecorator = AssetRequestResolver.createDecorator({\n decorator: PrivateFileAssetRequestResolver,\n dependencies: []\n});\n"],"names":["PrivateFileAssetRequestResolver","resolver","request","params","query","path","AssetRequest","decodeURI","parseInt","undefined","PrivateFileAssetRequestResolverDecorator","AssetRequestResolver"],"mappings":";;AAIO,MAAMA;IAGT,YAAYC,QAA+B,CAAE;QACzC,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAM,QAAQC,OAAgB,EAAqC;QAC/D,IAAI,CAACA,QAAQ,GAAG,EAAE,WAAW,cACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAACA;QAGjC,MAAMC,SAAUD,QAAQ,MAAM,IAAI,CAAC;QACnC,MAAME,QAASF,QAAQ,KAAK,IAAI,CAAC;QAEjC,MAAMG,OAAOF,MAAM,CAAC,IAAI;QAExB,OAAO,IAAIG,aAAa;YACpB,KAAKC,UAAUF,MAAM,OAAO,CAAC,aAAa;YAC1C,SAAS;gBACL,KAAKH,QAAQ,GAAG,IAAI;gBACpB,SAAS;YACb;YACA,SAAS;gBACL,GAAGE,KAAK;gBACR,OAAOA,MAAM,KAAK,GAAGI,SAASJ,MAAM,KAAK,IAAIK;YACjD;QACJ;IACJ;AACJ;AAEO,MAAMC,2CAA2CC,qBAAqB,eAAe,CAAC;IACzF,WAAWX;IACX,cAAc,EAAE;AACpB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Asset } from "../../../delivery/index.js";
|
|
2
|
+
export declare class AssetKeyGenerator {
|
|
3
|
+
private readonly utils;
|
|
4
|
+
private readonly asset;
|
|
5
|
+
static create(asset: Asset): AssetKeyGenerator;
|
|
6
|
+
private constructor();
|
|
7
|
+
getOptimizedImageKey(): string;
|
|
8
|
+
getTransformedImageKey(transformations: Record<string, any>): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as __rspack_external__utils_js_a9c81ddd from "./utils.js";
|
|
2
|
+
class AssetKeyGenerator {
|
|
3
|
+
static create(asset) {
|
|
4
|
+
return new AssetKeyGenerator(asset);
|
|
5
|
+
}
|
|
6
|
+
constructor(asset){
|
|
7
|
+
this.asset = asset;
|
|
8
|
+
this.utils = __rspack_external__utils_js_a9c81ddd;
|
|
9
|
+
}
|
|
10
|
+
getOptimizedImageKey() {
|
|
11
|
+
return this.utils.getImageKey({
|
|
12
|
+
key: this.asset.getKey()
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
getTransformedImageKey(transformations) {
|
|
16
|
+
return this.utils.getImageKey({
|
|
17
|
+
key: this.asset.getKey(),
|
|
18
|
+
transformations
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export { AssetKeyGenerator };
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=AssetKeyGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/transformation/AssetKeyGenerator.js","sources":["../../../../src/features/assetDelivery/transformation/AssetKeyGenerator.ts"],"sourcesContent":["import type { Asset } from \"../../../delivery/index.js\";\nimport * as newUtils from \"./utils.js\";\n\nexport class AssetKeyGenerator {\n private readonly utils: typeof newUtils;\n private readonly asset: Asset;\n\n public static create(asset: Asset) {\n return new AssetKeyGenerator(asset);\n }\n\n private constructor(asset: Asset) {\n this.asset = asset;\n this.utils = newUtils;\n }\n\n public getOptimizedImageKey() {\n return this.utils.getImageKey({ key: this.asset.getKey() });\n }\n\n public getTransformedImageKey(transformations: Record<string, any>) {\n return this.utils.getImageKey({ key: this.asset.getKey(), transformations });\n }\n}\n"],"names":["AssetKeyGenerator","asset","newUtils","transformations"],"mappings":";AAGO,MAAMA;IAIT,OAAc,OAAOC,KAAY,EAAE;QAC/B,OAAO,IAAID,kBAAkBC;IACjC;IAEA,YAAoBA,KAAY,CAAE;QAC9B,IAAI,CAAC,KAAK,GAAGA;QACb,IAAI,CAAC,KAAK,GAAGC;IACjB;IAEO,uBAAuB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;QAAG;IAC7D;IAEO,uBAAuBC,eAAoC,EAAE;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;YAAIA;QAAgB;IAC9E;AACJ"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AssetContentsReader } from "../../../features/assetDelivery/abstractions.js";
|
|
2
|
+
interface ContentsCallable {
|
|
3
|
+
(): Promise<Buffer> | Buffer;
|
|
4
|
+
}
|
|
5
|
+
export declare class CallableContentsReader implements AssetContentsReader.Interface {
|
|
6
|
+
private readonly callable;
|
|
7
|
+
static create(callable: ContentsCallable): CallableContentsReader;
|
|
8
|
+
private constructor();
|
|
9
|
+
read(): Promise<Buffer>;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
class CallableContentsReader {
|
|
2
|
+
static create(callable) {
|
|
3
|
+
return new CallableContentsReader(callable);
|
|
4
|
+
}
|
|
5
|
+
constructor(callable){
|
|
6
|
+
this.callable = callable;
|
|
7
|
+
}
|
|
8
|
+
async read() {
|
|
9
|
+
return this.callable();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export { CallableContentsReader };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=CallableContentsReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/transformation/CallableContentsReader.js","sources":["../../../../src/features/assetDelivery/transformation/CallableContentsReader.ts"],"sourcesContent":["import { AssetContentsReader } from \"~/features/assetDelivery/abstractions.js\";\n\ninterface ContentsCallable {\n (): Promise<Buffer> | Buffer;\n}\n\nexport class CallableContentsReader implements AssetContentsReader.Interface {\n private readonly callable: ContentsCallable;\n\n public static create(callable: ContentsCallable) {\n return new CallableContentsReader(callable);\n }\n\n private constructor(callable: ContentsCallable) {\n this.callable = callable;\n }\n\n public async read(): Promise<Buffer> {\n return this.callable();\n }\n}\n"],"names":["CallableContentsReader","callable"],"mappings":"AAMO,MAAMA;IAGT,OAAc,OAAOC,QAA0B,EAAE;QAC7C,OAAO,IAAID,uBAAuBC;IACtC;IAEA,YAAoBA,QAA0B,CAAE;QAC5C,IAAI,CAAC,QAAQ,GAAGA;IACpB;IAEA,MAAa,OAAwB;QACjC,OAAO,IAAI,CAAC,QAAQ;IACxB;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/transformation/WidthCollection.js","sources":["../../../../src/features/assetDelivery/transformation/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,4 @@
|
|
|
1
|
+
export { AssetKeyGenerator } from "./AssetKeyGenerator.js";
|
|
2
|
+
export { CallableContentsReader } from "./CallableContentsReader.js";
|
|
3
|
+
export { WidthCollection } from "./WidthCollection.js";
|
|
4
|
+
export { SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix } from "./utils.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AssetKeyGenerator } from "./AssetKeyGenerator.js";
|
|
2
|
+
export { CallableContentsReader } from "./CallableContentsReader.js";
|
|
3
|
+
export { WidthCollection } from "./WidthCollection.js";
|
|
4
|
+
export { SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix } from "./utils.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const SUPPORTED_TRANSFORMABLE_IMAGES: string[];
|
|
2
|
+
declare const getOptimizedImageKeyPrefix: (key: string) => string;
|
|
3
|
+
declare const getOptimizedTransformedImageKeyPrefix: (key: string, transformationsHash: string) => string;
|
|
4
|
+
interface GetImageKeyParams {
|
|
5
|
+
key: string;
|
|
6
|
+
transformations?: any;
|
|
7
|
+
}
|
|
8
|
+
declare const getImageKey: ({ key, transformations }: GetImageKeyParams) => string;
|
|
9
|
+
export { SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import object_hash from "object-hash";
|
|
2
|
+
import node_path from "node:path";
|
|
3
|
+
const SUPPORTED_TRANSFORMABLE_IMAGES = [
|
|
4
|
+
"jpg",
|
|
5
|
+
"jpeg",
|
|
6
|
+
"png",
|
|
7
|
+
"webp"
|
|
8
|
+
];
|
|
9
|
+
const parseKey = (key)=>{
|
|
10
|
+
const filename = node_path.basename(key);
|
|
11
|
+
const dirname = node_path.dirname(key);
|
|
12
|
+
return {
|
|
13
|
+
filename,
|
|
14
|
+
dirname
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
const getOptimizedImageKeyPrefix = (key)=>{
|
|
18
|
+
const { filename, dirname } = parseKey(key);
|
|
19
|
+
return `${dirname}/optimized/${filename}`;
|
|
20
|
+
};
|
|
21
|
+
const getOptimizedTransformedImageKeyPrefix = (key, transformationsHash)=>{
|
|
22
|
+
const { filename, dirname } = parseKey(key);
|
|
23
|
+
return `${dirname}/optimized/${transformationsHash}-${filename}`;
|
|
24
|
+
};
|
|
25
|
+
const getImageKey = ({ key, transformations })=>{
|
|
26
|
+
if (!transformations) return getOptimizedImageKeyPrefix(key);
|
|
27
|
+
return getOptimizedTransformedImageKeyPrefix(key, object_hash(transformations));
|
|
28
|
+
};
|
|
29
|
+
export { SUPPORTED_TRANSFORMABLE_IMAGES, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/assetDelivery/transformation/utils.js","sources":["../../../../src/features/assetDelivery/transformation/utils.ts"],"sourcesContent":["import objectHash from \"object-hash\";\nimport path from \"node:path\";\n\nconst SUPPORTED_TRANSFORMABLE_IMAGES = [\"jpg\", \"jpeg\", \"png\", \"webp\"];\n\nconst parseKey = (key: string) => {\n const filename = path.basename(key);\n const dirname = path.dirname(key);\n\n return { filename, dirname };\n};\n\nconst getOptimizedImageKeyPrefix = (key: string): string => {\n const { filename, dirname } = parseKey(key);\n\n return `${dirname}/optimized/${filename}`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = (\n key: string,\n transformationsHash: string\n): string => {\n const { filename, dirname } = parseKey(key);\n\n return `${dirname}/optimized/${transformationsHash}-${filename}`;\n};\n\ninterface GetImageKeyParams {\n key: string;\n transformations?: any;\n}\n\nconst getImageKey = ({ key, transformations }: GetImageKeyParams): string => {\n if (!transformations) {\n return getOptimizedImageKeyPrefix(key);\n }\n\n return getOptimizedTransformedImageKeyPrefix(key, objectHash(transformations));\n};\n\nexport {\n SUPPORTED_TRANSFORMABLE_IMAGES,\n getImageKey,\n getOptimizedImageKeyPrefix,\n getOptimizedTransformedImageKeyPrefix\n};\n"],"names":["SUPPORTED_TRANSFORMABLE_IMAGES","parseKey","key","filename","path","dirname","getOptimizedImageKeyPrefix","getOptimizedTransformedImageKeyPrefix","transformationsHash","getImageKey","transformations","objectHash"],"mappings":";;AAGA,MAAMA,iCAAiC;IAAC;IAAO;IAAQ;IAAO;CAAO;AAErE,MAAMC,WAAW,CAACC;IACd,MAAMC,WAAWC,UAAAA,QAAa,CAACF;IAC/B,MAAMG,UAAUD,UAAAA,OAAY,CAACF;IAE7B,OAAO;QAAEC;QAAUE;IAAQ;AAC/B;AAEA,MAAMC,6BAA6B,CAACJ;IAChC,MAAM,EAAEC,QAAQ,EAAEE,OAAO,EAAE,GAAGJ,SAASC;IAEvC,OAAO,GAAGG,QAAQ,WAAW,EAAEF,UAAU;AAC7C;AAEA,MAAMI,wCAAwC,CAC1CL,KACAM;IAEA,MAAM,EAAEL,QAAQ,EAAEE,OAAO,EAAE,GAAGJ,SAASC;IAEvC,OAAO,GAAGG,QAAQ,WAAW,EAAEG,oBAAoB,CAAC,EAAEL,UAAU;AACpE;AAOA,MAAMM,cAAc,CAAC,EAAEP,GAAG,EAAEQ,eAAe,EAAqB;IAC5D,IAAI,CAACA,iBACD,OAAOJ,2BAA2BJ;IAGtC,OAAOK,sCAAsCL,KAAKS,YAAWD;AACjE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FileAfterCreateEventHandler } from "../file/CreateFile/events.js";
|
|
2
|
+
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
|
+
declare class ExtractMetadataHandlerImpl implements FileAfterCreateEventHandler.Interface {
|
|
4
|
+
private readonly taskService;
|
|
5
|
+
constructor(taskService: TaskService.Interface);
|
|
6
|
+
handle(event: FileAfterCreateEventHandler.Event): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare const ExtractMetadataHandler: typeof ExtractMetadataHandlerImpl & {
|
|
9
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-core/features/eventPublisher/abstractions.js").IEventHandler<import("../file/CreateFile/events.js").FileAfterCreateEvent>>;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FileAfterCreateEventHandler } from "../file/CreateFile/events.js";
|
|
2
|
+
import { TaskService } from "@webiny/api-core/features/task/TaskService/index.js";
|
|
3
|
+
class ExtractMetadataHandlerImpl {
|
|
4
|
+
constructor(taskService){
|
|
5
|
+
this.taskService = taskService;
|
|
6
|
+
}
|
|
7
|
+
async handle(event) {
|
|
8
|
+
const { file } = event.payload;
|
|
9
|
+
await this.taskService.trigger({
|
|
10
|
+
definition: "fileManagerExtractMetadata",
|
|
11
|
+
input: {
|
|
12
|
+
fileId: file.id
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const ExtractMetadataHandler = FileAfterCreateEventHandler.createImplementation({
|
|
18
|
+
implementation: ExtractMetadataHandlerImpl,
|
|
19
|
+
dependencies: [
|
|
20
|
+
TaskService
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
export { ExtractMetadataHandler };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=ExtractMetadataHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/extractMetadata/ExtractMetadataHandler.js","sources":["../../../src/features/extractMetadata/ExtractMetadataHandler.ts"],"sourcesContent":["import { FileAfterCreateEventHandler } from \"../file/CreateFile/events.js\";\nimport { TaskService } from \"@webiny/api-core/features/task/TaskService/index.js\";\nimport type { ExtractMetadataInput } from \"./ExtractMetadataInput.js\";\n\nclass ExtractMetadataHandlerImpl implements FileAfterCreateEventHandler.Interface {\n constructor(private readonly taskService: TaskService.Interface) {}\n\n async handle(event: FileAfterCreateEventHandler.Event): Promise<void> {\n const { file } = event.payload;\n\n await this.taskService.trigger<ExtractMetadataInput>({\n definition: \"fileManagerExtractMetadata\",\n input: {\n fileId: file.id\n }\n });\n }\n}\n\nexport const ExtractMetadataHandler = FileAfterCreateEventHandler.createImplementation({\n implementation: ExtractMetadataHandlerImpl,\n dependencies: [TaskService]\n});\n"],"names":["ExtractMetadataHandlerImpl","taskService","event","file","ExtractMetadataHandler","FileAfterCreateEventHandler","TaskService"],"mappings":";;AAIA,MAAMA;IACF,YAA6BC,WAAkC,CAAE;aAApCA,WAAW,GAAXA;IAAqC;IAElE,MAAM,OAAOC,KAAwC,EAAiB;QAClE,MAAM,EAAEC,IAAI,EAAE,GAAGD,MAAM,OAAO;QAE9B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAuB;YACjD,YAAY;YACZ,OAAO;gBACH,QAAQC,KAAK,EAAE;YACnB;QACJ;IACJ;AACJ;AAEO,MAAMC,yBAAyBC,4BAA4B,oBAAoB,CAAC;IACnF,gBAAgBL;IAChB,cAAc;QAACM;KAAY;AAC/B"}
|
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FileUrlGenerator as Abstraction } from "./abstractions.js";
|
|
2
|
+
import { GetSettingsUseCase } from "../../../features/settings/GetSettings/abstractions.js";
|
|
3
|
+
import type { File } from "../../../domain/file/types.js";
|
|
4
|
+
declare class FileUrlGeneratorImpl implements Abstraction.Interface {
|
|
5
|
+
private readonly getSettings;
|
|
6
|
+
private srcPrefix;
|
|
7
|
+
constructor(getSettings: GetSettingsUseCase.Interface);
|
|
8
|
+
generateUrl(file: File): string;
|
|
9
|
+
init(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const FileUrlGenerator: typeof FileUrlGeneratorImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IFileUrlGenerator>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FileUrlGenerator } from "./abstractions.js";
|
|
2
|
+
import { GetSettingsUseCase } from "../../settings/GetSettings/abstractions.js";
|
|
3
|
+
class FileUrlGeneratorImpl {
|
|
4
|
+
constructor(getSettings){
|
|
5
|
+
this.getSettings = getSettings;
|
|
6
|
+
this.srcPrefix = "";
|
|
7
|
+
}
|
|
8
|
+
generateUrl(file) {
|
|
9
|
+
return this.srcPrefix + file.key;
|
|
10
|
+
}
|
|
11
|
+
async init() {
|
|
12
|
+
const result = await this.getSettings.execute();
|
|
13
|
+
const settings = result.value;
|
|
14
|
+
this.srcPrefix = settings?.srcPrefix ?? "";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const FileUrlGenerator_FileUrlGenerator = FileUrlGenerator.createImplementation({
|
|
18
|
+
implementation: FileUrlGeneratorImpl,
|
|
19
|
+
dependencies: [
|
|
20
|
+
GetSettingsUseCase
|
|
21
|
+
]
|
|
22
|
+
});
|
|
23
|
+
export { FileUrlGenerator_FileUrlGenerator as FileUrlGenerator };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=FileUrlGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/file/FileUrlGenerator/FileUrlGenerator.js","sources":["../../../../src/features/file/FileUrlGenerator/FileUrlGenerator.ts"],"sourcesContent":["import { FileUrlGenerator as Abstraction } from \"./abstractions.js\";\nimport { GetSettingsUseCase } from \"~/features/settings/GetSettings/abstractions.js\";\nimport type { File } from \"~/domain/file/types.js\";\n\nclass FileUrlGeneratorImpl implements Abstraction.Interface {\n private srcPrefix = \"\";\n\n public constructor(private readonly getSettings: GetSettingsUseCase.Interface) {}\n\n public generateUrl(file: File): string {\n return this.srcPrefix + file.key;\n }\n\n public async init(): Promise<void> {\n const result = await this.getSettings.execute();\n const settings = result.value;\n this.srcPrefix = settings?.srcPrefix ?? \"\";\n }\n}\n\nexport const FileUrlGenerator = Abstraction.createImplementation({\n implementation: FileUrlGeneratorImpl,\n dependencies: [GetSettingsUseCase]\n});\n"],"names":["FileUrlGeneratorImpl","getSettings","file","result","settings","FileUrlGenerator","Abstraction","GetSettingsUseCase"],"mappings":";;AAIA,MAAMA;IAGF,YAAoCC,WAAyC,CAAE;aAA3CA,WAAW,GAAXA;aAF5B,SAAS,GAAG;IAE4D;IAEzE,YAAYC,IAAU,EAAU;QACnC,OAAO,IAAI,CAAC,SAAS,GAAGA,KAAK,GAAG;IACpC;IAEA,MAAa,OAAsB;QAC/B,MAAMC,SAAS,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;QAC7C,MAAMC,WAAWD,OAAO,KAAK;QAC7B,IAAI,CAAC,SAAS,GAAGC,UAAU,aAAa;IAC5C;AACJ;AAEO,MAAMC,oCAAmBC,iBAAAA,oBAAgC,CAAC;IAC7D,gBAAgBN;IAChB,cAAc;QAACO;KAAmB;AACtC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import type { File } from "../../../domain/file/types.js";
|
|
2
|
+
export interface IFileUrlGenerator {
|
|
2
3
|
generateUrl(file: File): string;
|
|
4
|
+
init?(): Promise<void>;
|
|
3
5
|
}
|
|
4
|
-
/** Generate URLs for uploaded files. */
|
|
5
6
|
export declare const FileUrlGenerator: import("@webiny/di").Abstraction<IFileUrlGenerator>;
|
|
6
7
|
export declare namespace FileUrlGenerator {
|
|
7
8
|
type Interface = IFileUrlGenerator;
|
|
8
9
|
}
|
|
9
|
-
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createAbstraction } from "@webiny/feature/api";
|
|
2
|
-
const FileUrlGenerator = createAbstraction("
|
|
2
|
+
const FileUrlGenerator = createAbstraction("FileManager/FileUrlGenerator");
|
|
3
3
|
export { FileUrlGenerator };
|
|
4
4
|
|
|
5
5
|
//# sourceMappingURL=abstractions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/file/FileUrlGenerator/abstractions.js","sources":["../../../../src/features/file/FileUrlGenerator/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\n\
|
|
1
|
+
{"version":3,"file":"features/file/FileUrlGenerator/abstractions.js","sources":["../../../../src/features/file/FileUrlGenerator/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { File } from \"~/domain/file/types.js\";\n\nexport interface IFileUrlGenerator {\n generateUrl(file: File): string;\n init?(): Promise<void>;\n}\n\n/* Generate URLs for uploaded files. */\nexport const FileUrlGenerator = createAbstraction<IFileUrlGenerator>(\n \"FileManager/FileUrlGenerator\"\n);\n\nexport namespace FileUrlGenerator {\n export type Interface = IFileUrlGenerator;\n}\n"],"names":["FileUrlGenerator","createAbstraction"],"mappings":";AASO,MAAMA,mBAAmBC,kBAC5B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api";
|
|
2
|
+
import { FileUrlGenerator } from "./FileUrlGenerator.js";
|
|
3
|
+
const FileUrlGeneratorFeature = createFeature({
|
|
4
|
+
name: "FileManager/FileUrlGenerator",
|
|
5
|
+
register (container) {
|
|
6
|
+
container.register(FileUrlGenerator).inSingletonScope();
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
export { FileUrlGeneratorFeature };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/file/FileUrlGenerator/feature.js","sources":["../../../../src/features/file/FileUrlGenerator/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { FileUrlGenerator } from \"./FileUrlGenerator.js\";\n\nexport const FileUrlGeneratorFeature = createFeature({\n name: \"FileManager/FileUrlGenerator\",\n register(container) {\n container.register(FileUrlGenerator).inSingletonScope();\n }\n});\n"],"names":["FileUrlGeneratorFeature","createFeature","container","FileUrlGenerator"],"mappings":";;AAGO,MAAMA,0BAA0BC,cAAc;IACjD,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC,kBAAkB,gBAAgB;IACzD;AACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FileUrlGenerator } from "./abstractions.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { FileUrlGenerator } from "./abstractions.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetFileByUrlUseCase as Abstraction } from "./abstractions.js";
|
|
3
|
+
import { ListFilesUseCase } from "../../../features/file/ListFiles/abstractions.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
5
|
+
import type { File } from "../../../domain/file/types.js";
|
|
6
|
+
declare class GetFileByUrlUseCaseImpl implements Abstraction.Interface {
|
|
7
|
+
private readonly identityContext;
|
|
8
|
+
private readonly listFiles;
|
|
9
|
+
constructor(identityContext: IdentityContext.Interface, listFiles: ListFilesUseCase.Interface);
|
|
10
|
+
execute(url: string): Promise<Result<File | undefined, Abstraction.Error>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const GetFileByUrlUseCase: typeof GetFileByUrlUseCaseImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("./abstractions.js").IGetFileByUrlUseCase>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Result } from "@webiny/feature/api";
|
|
2
|
+
import { GetFileByUrlUseCase } from "./abstractions.js";
|
|
3
|
+
import { ListFilesUseCase } from "../ListFiles/abstractions.js";
|
|
4
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
5
|
+
import { FileNotAuthorizedError } from "../../../domain/file/errors.js";
|
|
6
|
+
class GetFileByUrlUseCaseImpl {
|
|
7
|
+
constructor(identityContext, listFiles){
|
|
8
|
+
this.identityContext = identityContext;
|
|
9
|
+
this.listFiles = listFiles;
|
|
10
|
+
}
|
|
11
|
+
async execute(url) {
|
|
12
|
+
const identity = this.identityContext.getIdentity();
|
|
13
|
+
if (identity.isAnonymous()) return Result.fail(new FileNotAuthorizedError());
|
|
14
|
+
const { pathname } = new URL(url);
|
|
15
|
+
const query = pathname.replace("/files/", "").replace("/private/", "");
|
|
16
|
+
const filesResult = await this.listFiles.execute({
|
|
17
|
+
where: {
|
|
18
|
+
key: query
|
|
19
|
+
},
|
|
20
|
+
limit: 1
|
|
21
|
+
});
|
|
22
|
+
if (filesResult.isFail()) return Result.fail(filesResult.error);
|
|
23
|
+
const files = filesResult.value.items;
|
|
24
|
+
const file = files.length ? files[0] : void 0;
|
|
25
|
+
return Result.ok(file);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const GetFileByUrlUseCase_GetFileByUrlUseCase = GetFileByUrlUseCase.createImplementation({
|
|
29
|
+
implementation: GetFileByUrlUseCaseImpl,
|
|
30
|
+
dependencies: [
|
|
31
|
+
IdentityContext,
|
|
32
|
+
ListFilesUseCase
|
|
33
|
+
]
|
|
34
|
+
});
|
|
35
|
+
export { GetFileByUrlUseCase_GetFileByUrlUseCase as GetFileByUrlUseCase };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=GetFileByUrlUseCase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"features/file/GetFileByUrl/GetFileByUrlUseCase.js","sources":["../../../../src/features/file/GetFileByUrl/GetFileByUrlUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { GetFileByUrlUseCase as Abstraction } from \"./abstractions.js\";\nimport { ListFilesUseCase } from \"~/features/file/ListFiles/abstractions.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { FileNotAuthorizedError } from \"~/domain/file/errors.js\";\nimport type { File } from \"~/domain/file/types.js\";\n\nclass GetFileByUrlUseCaseImpl implements Abstraction.Interface {\n public constructor(\n private readonly identityContext: IdentityContext.Interface,\n private readonly listFiles: ListFilesUseCase.Interface\n ) {}\n\n public async execute(url: string): Promise<Result<File | undefined, Abstraction.Error>> {\n const identity = this.identityContext.getIdentity();\n if (identity.isAnonymous()) {\n return Result.fail(new FileNotAuthorizedError());\n }\n\n const { pathname } = new URL(url);\n const query = pathname.replace(\"/files/\", \"\").replace(\"/private/\", \"\");\n\n const filesResult = await this.listFiles.execute({\n where: { key: query },\n limit: 1\n });\n\n if (filesResult.isFail()) {\n return Result.fail(filesResult.error);\n }\n\n const files = filesResult.value.items;\n const file = files.length ? files[0] : undefined;\n\n return Result.ok(file);\n }\n}\n\nexport const GetFileByUrlUseCase = Abstraction.createImplementation({\n implementation: GetFileByUrlUseCaseImpl,\n dependencies: [IdentityContext, ListFilesUseCase]\n});\n"],"names":["GetFileByUrlUseCaseImpl","identityContext","listFiles","url","identity","Result","FileNotAuthorizedError","pathname","URL","query","filesResult","files","file","undefined","GetFileByUrlUseCase","Abstraction","IdentityContext","ListFilesUseCase"],"mappings":";;;;;AAOA,MAAMA;IACF,YACqBC,eAA0C,EAC1CC,SAAqC,CACxD;aAFmBD,eAAe,GAAfA;aACAC,SAAS,GAATA;IAClB;IAEH,MAAa,QAAQC,GAAW,EAAwD;QACpF,MAAMC,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW;QACjD,IAAIA,SAAS,WAAW,IACpB,OAAOC,OAAO,IAAI,CAAC,IAAIC;QAG3B,MAAM,EAAEC,QAAQ,EAAE,GAAG,IAAIC,IAAIL;QAC7B,MAAMM,QAAQF,SAAS,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa;QAEnE,MAAMG,cAAc,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7C,OAAO;gBAAE,KAAKD;YAAM;YACpB,OAAO;QACX;QAEA,IAAIC,YAAY,MAAM,IAClB,OAAOL,OAAO,IAAI,CAACK,YAAY,KAAK;QAGxC,MAAMC,QAAQD,YAAY,KAAK,CAAC,KAAK;QACrC,MAAME,OAAOD,MAAM,MAAM,GAAGA,KAAK,CAAC,EAAE,GAAGE;QAEvC,OAAOR,OAAO,EAAE,CAACO;IACrB;AACJ;AAEO,MAAME,0CAAsBC,oBAAAA,oBAAgC,CAAC;IAChE,gBAAgBf;IAChB,cAAc;QAACgB;QAAiBC;KAAiB;AACrD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Result } from "@webiny/feature/api";
|
|
2
|
+
import type { File } from "../../../domain/file/types.js";
|
|
3
|
+
import { FileNotAuthorizedError } from "../../../domain/file/errors.js";
|
|
4
|
+
import type { FilePersistenceError } from "../../../domain/file/errors.js";
|
|
5
|
+
export interface IGetFileByUrlUseCase {
|
|
6
|
+
execute(url: string): Promise<Result<File | undefined, UseCaseError>>;
|
|
7
|
+
}
|
|
8
|
+
export interface IGetFileByUrlUseCaseErrors {
|
|
9
|
+
notAuthorized: FileNotAuthorizedError;
|
|
10
|
+
persistence: FilePersistenceError;
|
|
11
|
+
}
|
|
12
|
+
type UseCaseError = IGetFileByUrlUseCaseErrors[keyof IGetFileByUrlUseCaseErrors];
|
|
13
|
+
export declare const GetFileByUrlUseCase: import("@webiny/di").Abstraction<IGetFileByUrlUseCase>;
|
|
14
|
+
export declare namespace GetFileByUrlUseCase {
|
|
15
|
+
type Interface = IGetFileByUrlUseCase;
|
|
16
|
+
type Error = UseCaseError;
|
|
17
|
+
}
|
|
18
|
+
export {};
|