@webiny/api-file-manager-s3 6.4.12-beta.5 → 6.5.0-beta.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/assetDelivery/abstractions.d.ts +2 -0
- package/assetDelivery/abstractions.js.map +1 -1
- package/assetDelivery/assetDeliveryConfig.d.ts +1 -1
- package/assetDelivery/createAssetDelivery.js +1 -1
- package/assetDelivery/createAssetDelivery.js.map +1 -1
- package/assetDelivery/feature.js +2 -1
- package/assetDelivery/feature.js.map +1 -1
- package/assetDelivery/index.d.ts +1 -2
- package/assetDelivery/index.js +1 -2
- package/assetDelivery/s3/S3AssetResolver.d.ts +10 -9
- package/assetDelivery/s3/S3AssetResolver.js +10 -8
- package/assetDelivery/s3/S3AssetResolver.js.map +1 -1
- package/assetDelivery/s3/S3ContentsReader.d.ts +6 -5
- package/assetDelivery/s3/S3ContentsReader.js +3 -0
- package/assetDelivery/s3/S3ContentsReader.js.map +1 -1
- package/assetDelivery/s3/S3ErrorAssetReply.d.ts +3 -2
- package/assetDelivery/s3/S3ErrorAssetReply.js +4 -1
- package/assetDelivery/s3/S3ErrorAssetReply.js.map +1 -1
- package/assetDelivery/s3/S3OutputStrategy.d.ts +8 -6
- package/assetDelivery/s3/S3OutputStrategy.js +6 -5
- package/assetDelivery/s3/S3OutputStrategy.js.map +1 -1
- package/assetDelivery/s3/S3RedirectAssetReply.d.ts +1 -1
- package/assetDelivery/s3/S3RedirectAssetReply.js +1 -1
- package/assetDelivery/s3/S3RedirectAssetReply.js.map +1 -1
- package/assetDelivery/s3/SharpTransform.d.ts +13 -5
- package/assetDelivery/s3/SharpTransform.js +98 -74
- package/assetDelivery/s3/SharpTransform.js.map +1 -1
- package/assetDelivery/threatDetection/createThreatDetectionEventHandler.d.ts +1 -1
- package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js +4 -3
- package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js.map +1 -1
- package/assetDelivery/threatDetection/processThreatScanResult.js +10 -8
- package/assetDelivery/threatDetection/processThreatScanResult.js.map +1 -1
- package/assetDelivery/types.d.ts +3 -0
- package/features/CompleteMultiPartUpload/CompleteMultiPartUploadUseCase.d.ts +8 -0
- package/features/CompleteMultiPartUpload/CompleteMultiPartUploadUseCase.js +51 -0
- package/features/CompleteMultiPartUpload/CompleteMultiPartUploadUseCase.js.map +1 -0
- package/features/CompleteMultiPartUpload/feature.d.ts +4 -0
- package/features/CompleteMultiPartUpload/feature.js +11 -0
- package/features/CompleteMultiPartUpload/feature.js.map +1 -0
- package/features/CreateMultiPartUpload/CreateMultiPartUploadUseCase.d.ts +9 -0
- package/features/CreateMultiPartUpload/CreateMultiPartUploadUseCase.js +40 -0
- package/features/CreateMultiPartUpload/CreateMultiPartUploadUseCase.js.map +1 -0
- package/features/CreateMultiPartUpload/feature.d.ts +4 -0
- package/features/CreateMultiPartUpload/feature.js +11 -0
- package/features/CreateMultiPartUpload/feature.js.map +1 -0
- package/features/DeleteFileFromBucket/DeleteS3FolderTask.d.ts +1 -1
- package/features/ExtractMetadata/ExtractMetadataHandler.d.ts +1 -11
- package/features/ExtractMetadata/ExtractMetadataHandler.js +1 -25
- package/features/ExtractMetadata/ExtractMetadataTask.d.ts +15 -17
- package/features/ExtractMetadata/ExtractMetadataTask.js +8 -10
- package/features/ExtractMetadata/ExtractMetadataTask.js.map +1 -1
- package/features/FlushCache/InvalidateCacheTask.d.ts +2 -2
- package/features/FlushCache/InvalidateCacheTask.js +1 -1
- package/features/FlushCache/InvalidateCacheTask.js.map +1 -1
- package/features/GetFileContentsById/GetFileContentsByIdUseCase.d.ts +3 -3
- package/features/GetFileContentsById/GetFileContentsByIdUseCase.js +4 -5
- package/features/GetFileContentsById/GetFileContentsByIdUseCase.js.map +1 -1
- package/features/GetUploadPayload/GetUploadPayloadUseCase.d.ts +14 -0
- package/features/GetUploadPayload/GetUploadPayloadUseCase.js +54 -0
- package/features/GetUploadPayload/GetUploadPayloadUseCase.js.map +1 -0
- package/features/{WriteFileMetadata → GetUploadPayload}/feature.d.ts +1 -1
- package/features/GetUploadPayload/feature.js +11 -0
- package/features/GetUploadPayload/feature.js.map +1 -0
- package/index.d.ts +2 -2
- package/index.js +8 -6
- package/index.js.map +1 -1
- package/package.json +18 -24
- package/types.d.ts +2 -20
- package/utils/uploadFileToS3.d.ts +1 -1
- package/assetDelivery/s3/S3StreamAssetReply.d.ts +0 -5
- package/assetDelivery/s3/S3StreamAssetReply.js +0 -17
- package/assetDelivery/s3/S3StreamAssetReply.js.map +0 -1
- package/assetDelivery/s3/transformation/AssetKeyGenerator.d.ts +0 -8
- package/assetDelivery/s3/transformation/AssetKeyGenerator.js +0 -21
- package/assetDelivery/s3/transformation/AssetKeyGenerator.js.map +0 -1
- package/assetDelivery/s3/transformation/CallableContentsReader.d.ts +0 -10
- package/assetDelivery/s3/transformation/CallableContentsReader.js +0 -11
- package/assetDelivery/s3/transformation/CallableContentsReader.js.map +0 -1
- package/assetDelivery/s3/transformation/WidthCollection.d.ts +0 -7
- package/assetDelivery/s3/transformation/WidthCollection.js +0 -19
- package/assetDelivery/s3/transformation/WidthCollection.js.map +0 -1
- package/assetDelivery/s3/transformation/utils.d.ts +0 -9
- package/assetDelivery/s3/transformation/utils.js +0 -31
- package/assetDelivery/s3/transformation/utils.js.map +0 -1
- package/assetDelivery/threatDetection/ObjectKey.d.ts +0 -7
- package/assetDelivery/threatDetection/ObjectKey.js +0 -18
- package/assetDelivery/threatDetection/ObjectKey.js.map +0 -1
- package/features/ExtractMetadata/ExtractMetadataHandler.js.map +0 -1
- package/features/WriteFileMetadata/MetadataReader.d.ts +0 -14
- package/features/WriteFileMetadata/MetadataReader.js +0 -13
- package/features/WriteFileMetadata/MetadataReader.js.map +0 -1
- package/features/WriteFileMetadata/MetadataWriter.d.ts +0 -10
- package/features/WriteFileMetadata/MetadataWriter.js +0 -26
- package/features/WriteFileMetadata/MetadataWriter.js.map +0 -1
- package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +0 -12
- package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +0 -23
- package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +0 -1
- package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +0 -12
- package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +0 -25
- package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +0 -1
- package/features/WriteFileMetadata/feature.js +0 -13
- package/features/WriteFileMetadata/feature.js.map +0 -1
- package/graphql/checkPermissions.d.ts +0 -5
- package/graphql/checkPermissions.js +0 -22
- package/graphql/checkPermissions.js.map +0 -1
- package/graphql/schema.d.ts +0 -1
- package/graphql/schema.js +0 -203
- package/graphql/schema.js.map +0 -1
- package/multiPartUpload/CompleteMultiPartUploadUseCase.d.ts +0 -15
- package/multiPartUpload/CompleteMultiPartUploadUseCase.js +0 -55
- package/multiPartUpload/CompleteMultiPartUploadUseCase.js.map +0 -1
- package/multiPartUpload/CreateMultiPartUploadUseCase.d.ts +0 -20
- package/multiPartUpload/CreateMultiPartUploadUseCase.js +0 -34
- package/multiPartUpload/CreateMultiPartUploadUseCase.js.map +0 -1
- package/utils/FileExtension.d.ts +0 -6
- package/utils/FileExtension.js +0 -16
- package/utils/FileExtension.js.map +0 -1
- package/utils/FileKey.d.ts +0 -11
- package/utils/FileKey.js +0 -33
- package/utils/FileKey.js.map +0 -1
- package/utils/FileKey.test.d.ts +0 -1
- package/utils/FileKey.test.js +0 -59
- package/utils/FileKey.test.js.map +0 -1
- package/utils/FileNormalizer.d.ts +0 -18
- package/utils/FileNormalizer.js +0 -41
- package/utils/FileNormalizer.js.map +0 -1
- package/utils/FileUploadModifier.d.ts +0 -30
- package/utils/FileUploadModifier.js +0 -39
- package/utils/FileUploadModifier.js.map +0 -1
- package/utils/createFileNormalizerFromContext.d.ts +0 -3
- package/utils/createFileNormalizerFromContext.js +0 -9
- package/utils/createFileNormalizerFromContext.js.map +0 -1
- package/utils/getPresignedPostPayload.d.ts +0 -4
- package/utils/getPresignedPostPayload.js +0 -43
- package/utils/getPresignedPostPayload.js.map +0 -1
- package/utils/mimeTypes.d.ts +0 -5
- package/utils/mimeTypes.js +0 -9
- package/utils/mimeTypes.js.map +0 -1
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
+
import type { ImageFormat } from "@webiny/api-file-manager/features/assetDelivery/transformation/index.js";
|
|
2
3
|
export interface IS3AssetDeliveryConfig {
|
|
3
4
|
presignedUrlTtl: number;
|
|
4
5
|
imageResizeWidths: number[];
|
|
6
|
+
imageQuality?: Partial<Record<ImageFormat, number>>;
|
|
5
7
|
assetStreamingMaxSize: number;
|
|
6
8
|
}
|
|
7
9
|
export declare const S3AssetDeliveryConfig: import("@webiny/di").Abstraction<IS3AssetDeliveryConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/abstractions.js","sources":["../../src/assetDelivery/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\n\nexport interface IS3AssetDeliveryConfig {\n presignedUrlTtl: number;\n imageResizeWidths: number[];\n assetStreamingMaxSize: number;\n}\n\nexport const S3AssetDeliveryConfig =\n createAbstraction<IS3AssetDeliveryConfig>(\"AssetDelivery/S3Config\");\n\nexport const S3Client = createAbstraction<S3>(\"AssetDelivery/S3Client\");\n\nexport const S3Bucket = createAbstraction<string>(\"AssetDelivery/S3Bucket\");\n"],"names":["S3AssetDeliveryConfig","createAbstraction","S3Client","S3Bucket"],"mappings":";
|
|
1
|
+
{"version":3,"file":"assetDelivery/abstractions.js","sources":["../../src/assetDelivery/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api\";\nimport type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport type { ImageFormat } from \"@webiny/api-file-manager/features/assetDelivery/transformation/index.js\";\n\nexport interface IS3AssetDeliveryConfig {\n presignedUrlTtl: number;\n imageResizeWidths: number[];\n imageQuality?: Partial<Record<ImageFormat, number>>;\n assetStreamingMaxSize: number;\n}\n\nexport const S3AssetDeliveryConfig =\n createAbstraction<IS3AssetDeliveryConfig>(\"AssetDelivery/S3Config\");\n\nexport const S3Client = createAbstraction<S3>(\"AssetDelivery/S3Client\");\n\nexport const S3Bucket = createAbstraction<string>(\"AssetDelivery/S3Bucket\");\n"],"names":["S3AssetDeliveryConfig","createAbstraction","S3Client","S3Bucket"],"mappings":";AAWO,MAAMA,wBACTC,kBAA0C;AAEvC,MAAMC,WAAWD,kBAAsB;AAEvC,MAAME,WAAWF,kBAA0B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { AssetDeliveryParams } from "../assetDelivery/types.js";
|
|
2
|
-
export declare const assetDeliveryConfig: (params: AssetDeliveryParams) => (import("@webiny/handler").
|
|
2
|
+
export declare const assetDeliveryConfig: (params: AssetDeliveryParams) => ((import("@webiny/handler").ModifyFastifyPlugin | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types").Context>)[] | import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types").Context>)[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createAssetDeliveryPluginLoader } from "@webiny/api-file-manager";
|
|
1
|
+
import { createAssetDeliveryPluginLoader } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
import { createThreatDetectionPluginLoader } from "./threatDetection/index.js";
|
|
3
3
|
const createAssetDelivery = (params = {})=>[
|
|
4
4
|
createAssetDeliveryPluginLoader(()=>import("./assetDeliveryConfig.js").then(({ assetDeliveryConfig })=>assetDeliveryConfig(params))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/createAssetDelivery.js","sources":["../../src/assetDelivery/createAssetDelivery.ts"],"sourcesContent":["import { createAssetDeliveryPluginLoader } from \"@webiny/api-file-manager\";\nimport type { PluginFactory } from \"@webiny/plugins/types.js\";\nimport { createThreatDetectionPluginLoader } from \"~/assetDelivery/threatDetection/index.js\";\nimport type { AssetDeliveryParams } from \"~/assetDelivery/types.js\";\n\nexport const createAssetDelivery = (params: AssetDeliveryParams = {}): PluginFactory[] => {\n return [\n /**\n * We only want to load this plugin in the context of the Asset Delivery Lambda function.\n */\n createAssetDeliveryPluginLoader(() => {\n return import(\n /* webpackChunkName: \"s3AssetDelivery\" */ \"./assetDeliveryConfig.js\"\n ).then(({ assetDeliveryConfig }) => assetDeliveryConfig(params));\n }),\n /**\n * We only want to load this plugin in the context of the Threat Detection Lambda function.\n */\n createThreatDetectionPluginLoader(() => {\n return import(\n /* webpackChunkName: \"threatDetectionEventHandler\" */ \"./threatDetection/createThreatDetectionEventHandler.js\"\n ).then(({ createThreatDetectionEventHandler }) => createThreatDetectionEventHandler());\n })\n ];\n};\n"],"names":["createAssetDelivery","params","createAssetDeliveryPluginLoader","assetDeliveryConfig","createThreatDetectionPluginLoader","createThreatDetectionEventHandler"],"mappings":";;AAKO,MAAMA,sBAAsB,CAACC,SAA8B,CAAC,CAAC,GACzD;QAIHC,gCAAgC,IACrB,MAAM,CAAN,4BAEL,IAAI,CAAC,CAAC,EAAEC,mBAAmB,EAAE,GAAKA,oBAAoBF;QAK5DG,kCAAkC,IACvB,MAAM,CAAN,0DAEL,IAAI,CAAC,CAAC,EAAEC,iCAAiC,EAAE,GAAKA;KAEzD"}
|
|
1
|
+
{"version":3,"file":"assetDelivery/createAssetDelivery.js","sources":["../../src/assetDelivery/createAssetDelivery.ts"],"sourcesContent":["import { createAssetDeliveryPluginLoader } from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\nimport type { PluginFactory } from \"@webiny/plugins/types.js\";\nimport { createThreatDetectionPluginLoader } from \"~/assetDelivery/threatDetection/index.js\";\nimport type { AssetDeliveryParams } from \"~/assetDelivery/types.js\";\n\nexport const createAssetDelivery = (params: AssetDeliveryParams = {}): PluginFactory[] => {\n return [\n /**\n * We only want to load this plugin in the context of the Asset Delivery Lambda function.\n */\n createAssetDeliveryPluginLoader(() => {\n return import(\n /* webpackChunkName: \"s3AssetDelivery\" */ \"./assetDeliveryConfig.js\"\n ).then(({ assetDeliveryConfig }) => assetDeliveryConfig(params));\n }),\n /**\n * We only want to load this plugin in the context of the Threat Detection Lambda function.\n */\n createThreatDetectionPluginLoader(() => {\n return import(\n /* webpackChunkName: \"threatDetectionEventHandler\" */ \"./threatDetection/createThreatDetectionEventHandler.js\"\n ).then(({ createThreatDetectionEventHandler }) => createThreatDetectionEventHandler());\n })\n ];\n};\n"],"names":["createAssetDelivery","params","createAssetDeliveryPluginLoader","assetDeliveryConfig","createThreatDetectionPluginLoader","createThreatDetectionEventHandler"],"mappings":";;AAKO,MAAMA,sBAAsB,CAACC,SAA8B,CAAC,CAAC,GACzD;QAIHC,gCAAgC,IACrB,MAAM,CAAN,4BAEL,IAAI,CAAC,CAAC,EAAEC,mBAAmB,EAAE,GAAKA,oBAAoBF;QAK5DG,kCAAkC,IACvB,MAAM,CAAN,0DAEL,IAAI,CAAC,CAAC,EAAEC,iCAAiC,EAAE,GAAKA;KAEzD"}
|
package/assetDelivery/feature.js
CHANGED
|
@@ -25,11 +25,12 @@ const createS3AssetDeliveryFeature = (params = {})=>createFeature({
|
|
|
25
25
|
2048,
|
|
26
26
|
3840
|
|
27
27
|
],
|
|
28
|
+
imageQuality: params.imageQuality ?? {},
|
|
28
29
|
assetStreamingMaxSize: params.assetStreamingMaxSize ?? 4718592
|
|
29
30
|
});
|
|
30
31
|
container.register(S3AssetResolverImpl);
|
|
31
32
|
container.register(S3OutputStrategyImpl);
|
|
32
|
-
container.register(SharpTransformImpl);
|
|
33
|
+
container.register(SharpTransformImpl).inSingletonScope();
|
|
33
34
|
}
|
|
34
35
|
});
|
|
35
36
|
export { createS3AssetDeliveryFeature };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/feature.js","sources":["../../src/assetDelivery/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { S3Client, S3Bucket, S3AssetDeliveryConfig } from \"./abstractions.js\";\nimport type { AssetDeliveryParams } from \"./types.js\";\nimport { S3AssetResolverImpl } from \"./s3/S3AssetResolver.js\";\nimport { S3OutputStrategyImpl } from \"./s3/S3OutputStrategy.js\";\nimport { SharpTransformImpl } from \"./s3/SharpTransform.js\";\n\nexport const createS3AssetDeliveryFeature = (params: AssetDeliveryParams = {}) => {\n return createFeature({\n name: \"AssetDelivery/S3\",\n register(container) {\n container.registerInstance(\n S3Client,\n new S3({ region: process.env.AWS_REGION as string })\n );\n container.registerInstance(S3Bucket, process.env.S3_BUCKET as string);\n container.registerInstance(S3AssetDeliveryConfig, {\n presignedUrlTtl: params.presignedUrlTtl ?? 3600,\n imageResizeWidths: params.imageResizeWidths ?? [\n 128, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840\n ],\n assetStreamingMaxSize: params.assetStreamingMaxSize ?? 4718592\n });\n\n container.register(S3AssetResolverImpl);\n container.register(S3OutputStrategyImpl);\n container.register(SharpTransformImpl);\n }\n });\n};\n"],"names":["createS3AssetDeliveryFeature","params","createFeature","container","S3Client","S3","process","S3Bucket","S3AssetDeliveryConfig","S3AssetResolverImpl","S3OutputStrategyImpl","SharpTransformImpl"],"mappings":";;;;;;AAQO,MAAMA,+BAA+B,CAACC,SAA8B,CAAC,CAAC,GAClEC,cAAc;QACjB,MAAM;QACN,UAASC,SAAS;YACdA,UAAU,gBAAgB,CACtBC,UACA,IAAIC,GAAG;gBAAE,QAAQC,QAAQ,GAAG,CAAC,UAAU;YAAW;YAEtDH,UAAU,gBAAgB,CAACI,UAAUD,QAAQ,GAAG,CAAC,SAAS;YAC1DH,UAAU,gBAAgB,CAACK,uBAAuB;gBAC9C,iBAAiBP,OAAO,eAAe,IAAI;gBAC3C,mBAAmBA,OAAO,iBAAiB,IAAI;oBAC3C;oBAAK;oBAAK;oBAAK;oBAAK;oBAAK;oBAAM;oBAAM;oBAAM;oBAAM;iBACpD;gBACD,uBAAuBA,OAAO,qBAAqB,IAAI;YAC3D;YAEAE,UAAU,QAAQ,CAACM;YACnBN,UAAU,QAAQ,CAACO;YACnBP,UAAU,QAAQ,CAACQ;
|
|
1
|
+
{"version":3,"file":"assetDelivery/feature.js","sources":["../../src/assetDelivery/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { S3Client, S3Bucket, S3AssetDeliveryConfig } from \"./abstractions.js\";\nimport type { AssetDeliveryParams } from \"./types.js\";\nimport { S3AssetResolverImpl } from \"./s3/S3AssetResolver.js\";\nimport { S3OutputStrategyImpl } from \"./s3/S3OutputStrategy.js\";\nimport { SharpTransformImpl } from \"./s3/SharpTransform.js\";\n\nexport const createS3AssetDeliveryFeature = (params: AssetDeliveryParams = {}) => {\n return createFeature({\n name: \"AssetDelivery/S3\",\n register(container) {\n container.registerInstance(\n S3Client,\n new S3({ region: process.env.AWS_REGION as string })\n );\n container.registerInstance(S3Bucket, process.env.S3_BUCKET as string);\n container.registerInstance(S3AssetDeliveryConfig, {\n presignedUrlTtl: params.presignedUrlTtl ?? 3600,\n imageResizeWidths: params.imageResizeWidths ?? [\n 128, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840\n ],\n imageQuality: params.imageQuality ?? {},\n assetStreamingMaxSize: params.assetStreamingMaxSize ?? 4718592\n });\n\n container.register(S3AssetResolverImpl);\n container.register(S3OutputStrategyImpl);\n container.register(SharpTransformImpl).inSingletonScope();\n }\n });\n};\n"],"names":["createS3AssetDeliveryFeature","params","createFeature","container","S3Client","S3","process","S3Bucket","S3AssetDeliveryConfig","S3AssetResolverImpl","S3OutputStrategyImpl","SharpTransformImpl"],"mappings":";;;;;;AAQO,MAAMA,+BAA+B,CAACC,SAA8B,CAAC,CAAC,GAClEC,cAAc;QACjB,MAAM;QACN,UAASC,SAAS;YACdA,UAAU,gBAAgB,CACtBC,UACA,IAAIC,GAAG;gBAAE,QAAQC,QAAQ,GAAG,CAAC,UAAU;YAAW;YAEtDH,UAAU,gBAAgB,CAACI,UAAUD,QAAQ,GAAG,CAAC,SAAS;YAC1DH,UAAU,gBAAgB,CAACK,uBAAuB;gBAC9C,iBAAiBP,OAAO,eAAe,IAAI;gBAC3C,mBAAmBA,OAAO,iBAAiB,IAAI;oBAC3C;oBAAK;oBAAK;oBAAK;oBAAK;oBAAK;oBAAM;oBAAM;oBAAM;oBAAM;iBACpD;gBACD,cAAcA,OAAO,YAAY,IAAI,CAAC;gBACtC,uBAAuBA,OAAO,qBAAqB,IAAI;YAC3D;YAEAE,UAAU,QAAQ,CAACM;YACnBN,UAAU,QAAQ,CAACO;YACnBP,UAAU,QAAQ,CAACQ,oBAAoB,gBAAgB;QAC3D;IACJ"}
|
package/assetDelivery/index.d.ts
CHANGED
|
@@ -3,6 +3,5 @@ export { S3OutputStrategy } from "./s3/S3OutputStrategy.js";
|
|
|
3
3
|
export { S3ContentsReader } from "./s3/S3ContentsReader.js";
|
|
4
4
|
export { S3ErrorAssetReply } from "./s3/S3ErrorAssetReply.js";
|
|
5
5
|
export { S3RedirectAssetReply } from "./s3/S3RedirectAssetReply.js";
|
|
6
|
-
export { S3StreamAssetReply } from "./s3/S3StreamAssetReply.js";
|
|
7
6
|
export { SharpTransform } from "./s3/SharpTransform.js";
|
|
8
|
-
export { CallableContentsReader } from "
|
|
7
|
+
export { CallableContentsReader } from "@webiny/api-file-manager/features/assetDelivery/transformation/index.js";
|
package/assetDelivery/index.js
CHANGED
|
@@ -3,6 +3,5 @@ export { S3OutputStrategy } from "./s3/S3OutputStrategy.js";
|
|
|
3
3
|
export { S3ContentsReader } from "./s3/S3ContentsReader.js";
|
|
4
4
|
export { S3ErrorAssetReply } from "./s3/S3ErrorAssetReply.js";
|
|
5
5
|
export { S3RedirectAssetReply } from "./s3/S3RedirectAssetReply.js";
|
|
6
|
-
export { S3StreamAssetReply } from "./s3/S3StreamAssetReply.js";
|
|
7
6
|
export { SharpTransform } from "./s3/SharpTransform.js";
|
|
8
|
-
export { CallableContentsReader } from "
|
|
7
|
+
export { CallableContentsReader } from "@webiny/api-file-manager/features/assetDelivery/transformation/index.js";
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
-
import
|
|
3
|
-
import { Asset } from "@webiny/api-file-manager";
|
|
2
|
+
import { AssetFactory, AssetResolver as AssetResolverAbstraction, ObjectKey } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
4
3
|
import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
5
|
-
export declare class S3AssetResolver implements
|
|
6
|
-
private keyValueStore;
|
|
7
|
-
private s3;
|
|
8
|
-
private bucket;
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
export declare class S3AssetResolver implements AssetResolverAbstraction.Interface {
|
|
5
|
+
private readonly keyValueStore;
|
|
6
|
+
private readonly s3;
|
|
7
|
+
private readonly bucket;
|
|
8
|
+
private readonly objectKey;
|
|
9
|
+
private readonly assetFactory;
|
|
10
|
+
constructor(keyValueStore: GlobalKeyValueStore.Interface, s3: S3, bucket: string, objectKey: ObjectKey.Interface, assetFactory: AssetFactory.Interface);
|
|
11
|
+
resolve(request: AssetResolverAbstraction.Request): Promise<AssetFactory.Asset | undefined>;
|
|
11
12
|
}
|
|
12
13
|
export declare const S3AssetResolverImpl: typeof S3AssetResolver & {
|
|
13
|
-
__abstraction: import("@webiny/di").Abstraction<AssetResolver>;
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-file-manager/delivery").AssetResolver>;
|
|
14
15
|
};
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AssetResolver } from "@webiny/api-file-manager/features/assetDelivery/abstractions.js";
|
|
1
|
+
import { AssetFactory, AssetResolver, ObjectKey } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
3
2
|
import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
|
|
4
3
|
import { S3ContentsReader } from "../index.js";
|
|
5
|
-
import { ObjectKey } from "../threatDetection/ObjectKey.js";
|
|
6
4
|
import { S3Bucket, S3Client } from "../abstractions.js";
|
|
7
5
|
class S3AssetResolver {
|
|
8
|
-
constructor(keyValueStore, s3, bucket){
|
|
6
|
+
constructor(keyValueStore, s3, bucket, objectKey, assetFactory){
|
|
9
7
|
this.keyValueStore = keyValueStore;
|
|
10
8
|
this.s3 = s3;
|
|
11
9
|
this.bucket = bucket;
|
|
10
|
+
this.objectKey = objectKey;
|
|
11
|
+
this.assetFactory = assetFactory;
|
|
12
12
|
}
|
|
13
13
|
async resolve(request) {
|
|
14
|
-
const fileId =
|
|
14
|
+
const fileId = this.objectKey.from(request.getKey()).id();
|
|
15
15
|
const result = await this.keyValueStore.get(`FileManager/File/${fileId}/Metadata`);
|
|
16
16
|
if (result.isFail()) return;
|
|
17
17
|
const metadata = result.value;
|
|
18
|
-
const asset =
|
|
18
|
+
const asset = this.assetFactory.create({
|
|
19
19
|
id: metadata.id,
|
|
20
20
|
tenant: metadata.tenant,
|
|
21
21
|
size: metadata.size,
|
|
22
22
|
contentType: metadata.contentType,
|
|
23
23
|
key: metadata.bucketKey
|
|
24
24
|
});
|
|
25
|
-
asset.setContentsReader(
|
|
25
|
+
asset.setContentsReader(S3ContentsReader.create(this.s3, this.bucket));
|
|
26
26
|
return asset;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -31,7 +31,9 @@ const S3AssetResolverImpl = AssetResolver.createImplementation({
|
|
|
31
31
|
dependencies: [
|
|
32
32
|
GlobalKeyValueStore,
|
|
33
33
|
S3Client,
|
|
34
|
-
S3Bucket
|
|
34
|
+
S3Bucket,
|
|
35
|
+
ObjectKey,
|
|
36
|
+
AssetFactory
|
|
35
37
|
]
|
|
36
38
|
});
|
|
37
39
|
export { S3AssetResolver, S3AssetResolverImpl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/s3/S3AssetResolver.js","sources":["../../../src/assetDelivery/s3/S3AssetResolver.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport
|
|
1
|
+
{"version":3,"file":"assetDelivery/s3/S3AssetResolver.js","sources":["../../../src/assetDelivery/s3/S3AssetResolver.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport {\n AssetFactory,\n AssetResolver as AssetResolverAbstraction,\n ObjectKey\n} from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\nimport { GlobalKeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport { S3ContentsReader } from \"~/assetDelivery/index.js\";\nimport { S3Client, S3Bucket } from \"~/assetDelivery/abstractions.js\";\n\ninterface AssetMetadata {\n id: string;\n tenant: string;\n size: number;\n contentType: string;\n bucketKey: string;\n}\n\nexport class S3AssetResolver implements AssetResolverAbstraction.Interface {\n constructor(\n private readonly keyValueStore: GlobalKeyValueStore.Interface,\n private readonly s3: S3,\n private readonly bucket: string,\n private readonly objectKey: ObjectKey.Interface,\n private readonly assetFactory: AssetFactory.Interface\n ) {}\n\n async resolve(\n request: AssetResolverAbstraction.Request\n ): Promise<AssetFactory.Asset | undefined> {\n const fileId = this.objectKey.from(request.getKey()).id();\n const result = await this.keyValueStore.get<AssetMetadata>(\n `FileManager/File/${fileId}/Metadata`\n );\n\n if (result.isFail()) {\n return undefined;\n }\n\n const metadata = result.value;\n\n const asset = this.assetFactory.create({\n id: metadata.id,\n tenant: metadata.tenant,\n size: metadata.size,\n contentType: metadata.contentType,\n key: metadata.bucketKey\n });\n\n asset.setContentsReader(S3ContentsReader.create(this.s3, this.bucket));\n\n return asset;\n }\n}\n\nexport const S3AssetResolverImpl = AssetResolverAbstraction.createImplementation({\n implementation: S3AssetResolver,\n dependencies: [GlobalKeyValueStore, S3Client, S3Bucket, ObjectKey, AssetFactory]\n});\n"],"names":["S3AssetResolver","keyValueStore","s3","bucket","objectKey","assetFactory","request","fileId","result","metadata","asset","S3ContentsReader","S3AssetResolverImpl","AssetResolverAbstraction","GlobalKeyValueStore","S3Client","S3Bucket","ObjectKey","AssetFactory"],"mappings":";;;;AAkBO,MAAMA;IACT,YACqBC,aAA4C,EAC5CC,EAAM,EACNC,MAAc,EACdC,SAA8B,EAC9BC,YAAoC,CACvD;aALmBJ,aAAa,GAAbA;aACAC,EAAE,GAAFA;aACAC,MAAM,GAANA;aACAC,SAAS,GAATA;aACAC,YAAY,GAAZA;IAClB;IAEH,MAAM,QACFC,OAAyC,EACF;QACvC,MAAMC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAACD,QAAQ,MAAM,IAAI,EAAE;QACvD,MAAME,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CACvC,CAAC,iBAAiB,EAAED,OAAO,SAAS,CAAC;QAGzC,IAAIC,OAAO,MAAM,IACb;QAGJ,MAAMC,WAAWD,OAAO,KAAK;QAE7B,MAAME,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACnC,IAAID,SAAS,EAAE;YACf,QAAQA,SAAS,MAAM;YACvB,MAAMA,SAAS,IAAI;YACnB,aAAaA,SAAS,WAAW;YACjC,KAAKA,SAAS,SAAS;QAC3B;QAEAC,MAAM,iBAAiB,CAACC,iBAAiB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM;QAEpE,OAAOD;IACX;AACJ;AAEO,MAAME,sBAAsBC,cAAAA,oBAA6C,CAAC;IAC7E,gBAAgBb;IAChB,cAAc;QAACc;QAAqBC;QAAUC;QAAUC;QAAWC;KAAa;AACpF"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
-
import
|
|
3
|
-
export declare class S3ContentsReader implements AssetContentsReader {
|
|
4
|
-
private s3;
|
|
2
|
+
import { AssetContentsReader } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
3
|
+
export declare class S3ContentsReader implements AssetContentsReader.Interface {
|
|
4
|
+
private readonly s3;
|
|
5
5
|
private readonly bucket;
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
static create(s3: S3, bucket: string): S3ContentsReader;
|
|
7
|
+
private constructor();
|
|
8
|
+
read(asset: AssetContentsReader.Asset): Promise<Buffer>;
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/s3/S3ContentsReader.js","sources":["../../../src/assetDelivery/s3/S3ContentsReader.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport
|
|
1
|
+
{"version":3,"file":"assetDelivery/s3/S3ContentsReader.js","sources":["../../../src/assetDelivery/s3/S3ContentsReader.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { AssetContentsReader } from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\n\nexport class S3ContentsReader implements AssetContentsReader.Interface {\n private readonly s3: S3;\n private readonly bucket: string;\n\n public static create(s3: S3, bucket: string) {\n return new S3ContentsReader(s3, bucket);\n }\n\n private constructor(s3: S3, bucket: string) {\n this.s3 = s3;\n this.bucket = bucket;\n }\n\n public async read(asset: AssetContentsReader.Asset): Promise<Buffer> {\n const { Body } = await this.s3.getObject({\n Bucket: this.bucket,\n Key: asset.getKey()\n });\n\n if (!Body) {\n throw Error(`Unable to read ${asset.getKey()}!`);\n }\n\n return Buffer.from(await Body.transformToByteArray());\n }\n}\n"],"names":["S3ContentsReader","s3","bucket","asset","Body","Error","Buffer"],"mappings":"AAGO,MAAMA;IAIT,OAAc,OAAOC,EAAM,EAAEC,MAAc,EAAE;QACzC,OAAO,IAAIF,iBAAiBC,IAAIC;IACpC;IAEA,YAAoBD,EAAM,EAAEC,MAAc,CAAE;QACxC,IAAI,CAAC,EAAE,GAAGD;QACV,IAAI,CAAC,MAAM,GAAGC;IAClB;IAEA,MAAa,KAAKC,KAAgC,EAAmB;QACjE,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;YACrC,QAAQ,IAAI,CAAC,MAAM;YACnB,KAAKD,MAAM,MAAM;QACrB;QAEA,IAAI,CAACC,MACD,MAAMC,MAAM,CAAC,eAAe,EAAEF,MAAM,MAAM,GAAG,CAAC,CAAC;QAGnD,OAAOG,OAAO,IAAI,CAAC,MAAMF,KAAK,oBAAoB;IACtD;AACJ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { AssetReply } from "@webiny/api-file-manager";
|
|
1
|
+
import { AssetReply } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
export declare class S3ErrorAssetReply extends AssetReply {
|
|
3
|
-
|
|
3
|
+
static fromMessage(message: string): S3ErrorAssetReply;
|
|
4
|
+
private constructor();
|
|
4
5
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { AssetReply } from "@webiny/api-file-manager";
|
|
1
|
+
import { AssetReply } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
class S3ErrorAssetReply extends AssetReply {
|
|
3
|
+
static fromMessage(message) {
|
|
4
|
+
return new S3ErrorAssetReply(message);
|
|
5
|
+
}
|
|
3
6
|
constructor(message){
|
|
4
7
|
super({
|
|
5
8
|
code: 400,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/s3/S3ErrorAssetReply.js","sources":["../../../src/assetDelivery/s3/S3ErrorAssetReply.ts"],"sourcesContent":["import { AssetReply } from \"@webiny/api-file-manager\";\n\nexport class S3ErrorAssetReply extends AssetReply {\n constructor(message: string) {\n super({\n code: 400,\n body: () => ({ error: message })\n });\n }\n}\n"],"names":["S3ErrorAssetReply","AssetReply","message"],"mappings":";AAEO,MAAMA,0BAA0BC;IACnC,YAAYC,OAAe,CAAE;
|
|
1
|
+
{"version":3,"file":"assetDelivery/s3/S3ErrorAssetReply.js","sources":["../../../src/assetDelivery/s3/S3ErrorAssetReply.ts"],"sourcesContent":["import { AssetReply } from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\n\nexport class S3ErrorAssetReply extends AssetReply {\n public static fromMessage(message: string) {\n return new S3ErrorAssetReply(message);\n }\n\n private constructor(message: string) {\n super({\n code: 400,\n body: () => ({ error: message })\n });\n }\n}\n"],"names":["S3ErrorAssetReply","AssetReply","message"],"mappings":";AAEO,MAAMA,0BAA0BC;IACnC,OAAc,YAAYC,OAAe,EAAE;QACvC,OAAO,IAAIF,kBAAkBE;IACjC;IAEA,YAAoBA,OAAe,CAAE;QACjC,KAAK,CAAC;YACF,MAAM;YACN,MAAM,IAAO;oBAAE,OAAOA;gBAAQ;QAClC;IACJ;AACJ"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { AssetOutputStrategy as AssetOutputStrategyAbstraction } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
|
|
3
|
+
import { StreamAssetReply } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
3
4
|
import type { IS3AssetDeliveryConfig } from "../../assetDelivery/abstractions.js";
|
|
4
|
-
export declare class S3OutputStrategy implements
|
|
5
|
+
export declare class S3OutputStrategy implements AssetOutputStrategyAbstraction.Interface {
|
|
5
6
|
private readonly s3;
|
|
6
7
|
private readonly bucket;
|
|
7
8
|
private readonly presignedUrlTtl;
|
|
8
9
|
private readonly assetStreamingMaxSize;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
private readonly streamAssetReply;
|
|
11
|
+
constructor(s3: S3, bucket: string, config: IS3AssetDeliveryConfig, streamAssetReply: StreamAssetReply.Interface);
|
|
12
|
+
output(asset: AssetOutputStrategyAbstraction.Asset): Promise<AssetOutputStrategyAbstraction.AssetReply>;
|
|
13
|
+
protected getPresignedUrl(asset: AssetOutputStrategyAbstraction.Asset): Promise<string>;
|
|
12
14
|
}
|
|
13
15
|
export declare const S3OutputStrategyImpl: typeof S3OutputStrategy & {
|
|
14
|
-
__abstraction: import("@webiny/di").Abstraction<AssetOutputStrategy>;
|
|
16
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-file-manager/delivery").AssetOutputStrategy>;
|
|
15
17
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { AssetOutputStrategy } from "@webiny/api-file-manager/
|
|
1
|
+
import { AssetOutputStrategy, StreamAssetReply } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
import { GetObjectCommand, getSignedUrl } from "@webiny/aws-sdk/client-s3/index.js";
|
|
3
3
|
import { S3RedirectAssetReply } from "./S3RedirectAssetReply.js";
|
|
4
|
-
import { S3StreamAssetReply } from "./S3StreamAssetReply.js";
|
|
5
4
|
import { S3AssetDeliveryConfig, S3Bucket, S3Client } from "../abstractions.js";
|
|
6
5
|
class S3OutputStrategy {
|
|
7
|
-
constructor(s3, bucket, config){
|
|
6
|
+
constructor(s3, bucket, config, streamAssetReply){
|
|
8
7
|
this.s3 = s3;
|
|
9
8
|
this.bucket = bucket;
|
|
10
9
|
this.presignedUrlTtl = config.presignedUrlTtl;
|
|
11
10
|
this.assetStreamingMaxSize = config.assetStreamingMaxSize;
|
|
11
|
+
this.streamAssetReply = streamAssetReply;
|
|
12
12
|
}
|
|
13
13
|
async output(asset) {
|
|
14
14
|
if (asset.getSize() > this.assetStreamingMaxSize) {
|
|
@@ -16,7 +16,7 @@ class S3OutputStrategy {
|
|
|
16
16
|
return new S3RedirectAssetReply(await this.getPresignedUrl(asset), this.presignedUrlTtl);
|
|
17
17
|
}
|
|
18
18
|
console.log(`Asset size is smaller than ${this.assetStreamingMaxSize}; streaming directly from Lambda function.`);
|
|
19
|
-
return
|
|
19
|
+
return this.streamAssetReply.create(asset);
|
|
20
20
|
}
|
|
21
21
|
getPresignedUrl(asset) {
|
|
22
22
|
return getSignedUrl(this.s3, new GetObjectCommand({
|
|
@@ -32,7 +32,8 @@ const S3OutputStrategyImpl = AssetOutputStrategy.createImplementation({
|
|
|
32
32
|
dependencies: [
|
|
33
33
|
S3Client,
|
|
34
34
|
S3Bucket,
|
|
35
|
-
S3AssetDeliveryConfig
|
|
35
|
+
S3AssetDeliveryConfig,
|
|
36
|
+
StreamAssetReply
|
|
36
37
|
]
|
|
37
38
|
});
|
|
38
39
|
export { S3OutputStrategy, S3OutputStrategyImpl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/s3/S3OutputStrategy.js","sources":["../../../src/assetDelivery/s3/S3OutputStrategy.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"assetDelivery/s3/S3OutputStrategy.js","sources":["../../../src/assetDelivery/s3/S3OutputStrategy.ts"],"sourcesContent":["import { AssetOutputStrategy as AssetOutputStrategyAbstraction } from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\nimport type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { GetObjectCommand, getSignedUrl } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { StreamAssetReply } from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\nimport { S3RedirectAssetReply } from \"~/assetDelivery/s3/S3RedirectAssetReply.js\";\nimport { S3Client, S3Bucket, S3AssetDeliveryConfig } from \"~/assetDelivery/abstractions.js\";\nimport type { IS3AssetDeliveryConfig } from \"~/assetDelivery/abstractions.js\";\n\nexport class S3OutputStrategy implements AssetOutputStrategyAbstraction.Interface {\n private readonly s3: S3;\n private readonly bucket: string;\n private readonly presignedUrlTtl: number;\n private readonly assetStreamingMaxSize: number;\n private readonly streamAssetReply: StreamAssetReply.Interface;\n\n constructor(\n s3: S3,\n bucket: string,\n config: IS3AssetDeliveryConfig,\n streamAssetReply: StreamAssetReply.Interface\n ) {\n this.s3 = s3;\n this.bucket = bucket;\n this.presignedUrlTtl = config.presignedUrlTtl;\n this.assetStreamingMaxSize = config.assetStreamingMaxSize;\n this.streamAssetReply = streamAssetReply;\n }\n\n async output(\n asset: AssetOutputStrategyAbstraction.Asset\n ): Promise<AssetOutputStrategyAbstraction.AssetReply> {\n if (asset.getSize() > this.assetStreamingMaxSize) {\n console.log(\n `Asset size is greater than ${this.assetStreamingMaxSize}; redirecting to a presigned S3 URL.`\n );\n\n return new S3RedirectAssetReply(\n await this.getPresignedUrl(asset),\n this.presignedUrlTtl\n );\n }\n\n console.log(\n `Asset size is smaller than ${this.assetStreamingMaxSize}; streaming directly from Lambda function.`\n );\n return this.streamAssetReply.create(asset);\n }\n\n protected getPresignedUrl(asset: AssetOutputStrategyAbstraction.Asset) {\n return getSignedUrl(\n this.s3,\n new GetObjectCommand({\n Bucket: this.bucket,\n Key: asset.getKey()\n }),\n { expiresIn: this.presignedUrlTtl }\n );\n }\n}\n\nexport const S3OutputStrategyImpl = AssetOutputStrategyAbstraction.createImplementation({\n implementation: S3OutputStrategy,\n dependencies: [S3Client, S3Bucket, S3AssetDeliveryConfig, StreamAssetReply]\n});\n"],"names":["S3OutputStrategy","s3","bucket","config","streamAssetReply","asset","console","S3RedirectAssetReply","getSignedUrl","GetObjectCommand","S3OutputStrategyImpl","AssetOutputStrategyAbstraction","S3Client","S3Bucket","S3AssetDeliveryConfig","StreamAssetReply"],"mappings":";;;;AAQO,MAAMA;IAOT,YACIC,EAAM,EACNC,MAAc,EACdC,MAA8B,EAC9BC,gBAA4C,CAC9C;QACE,IAAI,CAAC,EAAE,GAAGH;QACV,IAAI,CAAC,MAAM,GAAGC;QACd,IAAI,CAAC,eAAe,GAAGC,OAAO,eAAe;QAC7C,IAAI,CAAC,qBAAqB,GAAGA,OAAO,qBAAqB;QACzD,IAAI,CAAC,gBAAgB,GAAGC;IAC5B;IAEA,MAAM,OACFC,KAA2C,EACO;QAClD,IAAIA,MAAM,OAAO,KAAK,IAAI,CAAC,qBAAqB,EAAE;YAC9CC,QAAQ,GAAG,CACP,CAAC,2BAA2B,EAAE,IAAI,CAAC,qBAAqB,CAAC,oCAAoC,CAAC;YAGlG,OAAO,IAAIC,qBACP,MAAM,IAAI,CAAC,eAAe,CAACF,QAC3B,IAAI,CAAC,eAAe;QAE5B;QAEAC,QAAQ,GAAG,CACP,CAAC,2BAA2B,EAAE,IAAI,CAAC,qBAAqB,CAAC,0CAA0C,CAAC;QAExG,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAACD;IACxC;IAEU,gBAAgBA,KAA2C,EAAE;QACnE,OAAOG,aACH,IAAI,CAAC,EAAE,EACP,IAAIC,iBAAiB;YACjB,QAAQ,IAAI,CAAC,MAAM;YACnB,KAAKJ,MAAM,MAAM;QACrB,IACA;YAAE,WAAW,IAAI,CAAC,eAAe;QAAC;IAE1C;AACJ;AAEO,MAAMK,uBAAuBC,oBAAAA,oBAAmD,CAAC;IACpF,gBAAgBX;IAChB,cAAc;QAACY;QAAUC;QAAUC;QAAuBC;KAAiB;AAC/E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetReply } from "@webiny/api-file-manager";
|
|
1
|
+
import { AssetReply } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
export declare class S3RedirectAssetReply extends AssetReply {
|
|
3
3
|
constructor(url: string, cacheDuration: number);
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetReply } from "@webiny/api-file-manager";
|
|
1
|
+
import { AssetReply } from "@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js";
|
|
2
2
|
import { ResponseHeaders } from "@webiny/handler";
|
|
3
3
|
class S3RedirectAssetReply extends AssetReply {
|
|
4
4
|
constructor(url, cacheDuration){
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assetDelivery/s3/S3RedirectAssetReply.js","sources":["../../../src/assetDelivery/s3/S3RedirectAssetReply.ts"],"sourcesContent":["import { AssetReply } from \"@webiny/api-file-manager\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport class S3RedirectAssetReply extends AssetReply {\n constructor(url: string, cacheDuration: number) {\n super({\n code: 301,\n headers: ResponseHeaders.create({\n location: url,\n \"cache-control\": \"public, max-age=\" + cacheDuration\n }),\n body: () => \"\"\n });\n }\n}\n"],"names":["S3RedirectAssetReply","AssetReply","url","cacheDuration","ResponseHeaders"],"mappings":";;AAGO,MAAMA,6BAA6BC;IACtC,YAAYC,GAAW,EAAEC,aAAqB,CAAE;QAC5C,KAAK,CAAC;YACF,MAAM;YACN,SAASC,gBAAgB,MAAM,CAAC;gBAC5B,UAAUF;gBACV,iBAAiB,qBAAqBC;YAC1C;YACA,MAAM,IAAM;QAChB;IACJ;AACJ"}
|
|
1
|
+
{"version":3,"file":"assetDelivery/s3/S3RedirectAssetReply.js","sources":["../../../src/assetDelivery/s3/S3RedirectAssetReply.ts"],"sourcesContent":["import { AssetReply } from \"@webiny/api-file-manager/exports/api/file-manager/assetDelivery.js\";\nimport { ResponseHeaders } from \"@webiny/handler\";\n\nexport class S3RedirectAssetReply extends AssetReply {\n constructor(url: string, cacheDuration: number) {\n super({\n code: 301,\n headers: ResponseHeaders.create({\n location: url,\n \"cache-control\": \"public, max-age=\" + cacheDuration\n }),\n body: () => \"\"\n });\n }\n}\n"],"names":["S3RedirectAssetReply","AssetReply","url","cacheDuration","ResponseHeaders"],"mappings":";;AAGO,MAAMA,6BAA6BC;IACtC,YAAYC,GAAW,EAAEC,aAAqB,CAAE;QAC5C,KAAK,CAAC;YACF,MAAM;YACN,SAASC,gBAAgB,MAAM,CAAC;gBAC5B,UAAUF;gBACV,iBAAiB,qBAAqBC;YAC1C;YACA,MAAM,IAAM;QAChB;IACJ;AACJ"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
|
|
2
|
-
import
|
|
2
|
+
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
3
|
+
import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
|
|
4
|
+
import { ImageAssetTypeHandler } from "@webiny/api-file-manager/features/assetDelivery/assetTypes/image/index.js";
|
|
5
|
+
import type { Asset } from "@webiny/api-file-manager/delivery/AssetDelivery/Asset.js";
|
|
6
|
+
import type { AssetRequest } from "@webiny/api-file-manager/delivery/AssetDelivery/AssetRequest.js";
|
|
3
7
|
import type { IS3AssetDeliveryConfig } from "../../assetDelivery/abstractions.js";
|
|
4
|
-
export declare class SharpTransform implements
|
|
8
|
+
export declare class SharpTransform implements ImageAssetTypeHandler.Interface {
|
|
5
9
|
private readonly s3;
|
|
6
10
|
private readonly bucket;
|
|
7
11
|
private readonly imageResizeWidths;
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
private readonly imageQuality;
|
|
13
|
+
private readonly identityContext;
|
|
14
|
+
private readonly getFile;
|
|
15
|
+
constructor(s3: S3, bucket: string, config: IS3AssetDeliveryConfig, identityContext: IdentityContext.Interface, getFile: GetFileUseCase.Interface);
|
|
16
|
+
handle(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
|
|
17
|
+
private loadAssetCrop;
|
|
10
18
|
private transformAsset;
|
|
11
19
|
private optimizeAsset;
|
|
12
20
|
private isAssetAnimated;
|
|
@@ -14,5 +22,5 @@ export declare class SharpTransform implements AssetTransformationStrategy {
|
|
|
14
22
|
private optimizeJpeg;
|
|
15
23
|
}
|
|
16
24
|
export declare const SharpTransformImpl: typeof SharpTransform & {
|
|
17
|
-
__abstraction: import("@webiny/di").Abstraction<
|
|
25
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-file-manager/features/assetDelivery/abstractions/AssetType").IAssetTypeHandler>;
|
|
18
26
|
};
|