@webiny/api-file-manager-s3 0.0.0-unstable.eb196ccd2f → 0.0.0-unstable.eb81deee7e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/FileManagerS3Feature.d.ts +9 -0
  2. package/FileManagerS3Feature.js +27 -0
  3. package/FileManagerS3Feature.js.map +1 -0
  4. package/README.md +11 -1
  5. package/assetDelivery/abstractions.d.ts +11 -0
  6. package/assetDelivery/abstractions.js +7 -0
  7. package/assetDelivery/abstractions.js.map +1 -0
  8. package/assetDelivery/assetDeliveryConfig.d.ts +2 -2
  9. package/assetDelivery/assetDeliveryConfig.js +10 -49
  10. package/assetDelivery/assetDeliveryConfig.js.map +1 -1
  11. package/assetDelivery/createAssetDelivery.d.ts +3 -3
  12. package/assetDelivery/createAssetDelivery.js +7 -28
  13. package/assetDelivery/createAssetDelivery.js.map +1 -1
  14. package/assetDelivery/feature.d.ts +5 -0
  15. package/assetDelivery/feature.js +36 -0
  16. package/assetDelivery/feature.js.map +1 -0
  17. package/assetDelivery/index.d.ts +8 -9
  18. package/assetDelivery/index.js +8 -70
  19. package/assetDelivery/s3/LazySharpTransform.d.ts +34 -0
  20. package/assetDelivery/s3/LazySharpTransform.js +34 -0
  21. package/assetDelivery/s3/LazySharpTransform.js.map +1 -0
  22. package/assetDelivery/s3/S3AssetResolver.d.ts +9 -4
  23. package/assetDelivery/s3/S3AssetResolver.js +34 -32
  24. package/assetDelivery/s3/S3AssetResolver.js.map +1 -1
  25. package/assetDelivery/s3/S3ContentsReader.d.ts +1 -3
  26. package/assetDelivery/s3/S3ContentsReader.js +12 -22
  27. package/assetDelivery/s3/S3ContentsReader.js.map +1 -1
  28. package/assetDelivery/s3/S3ErrorAssetReply.js +11 -17
  29. package/assetDelivery/s3/S3ErrorAssetReply.js.map +1 -1
  30. package/assetDelivery/s3/S3OutputStrategy.d.ts +6 -6
  31. package/assetDelivery/s3/S3OutputStrategy.js +35 -35
  32. package/assetDelivery/s3/S3OutputStrategy.js.map +1 -1
  33. package/assetDelivery/s3/S3RedirectAssetReply.js +14 -20
  34. package/assetDelivery/s3/S3RedirectAssetReply.js.map +1 -1
  35. package/assetDelivery/s3/S3StreamAssetReply.js +14 -20
  36. package/assetDelivery/s3/S3StreamAssetReply.js.map +1 -1
  37. package/assetDelivery/s3/SharpTransform.d.ts +22 -14
  38. package/assetDelivery/s3/SharpTransform.js +163 -182
  39. package/assetDelivery/s3/SharpTransform.js.map +1 -1
  40. package/assetDelivery/s3/transformation/AssetKeyGenerator.js +17 -25
  41. package/assetDelivery/s3/transformation/AssetKeyGenerator.js.map +1 -1
  42. package/assetDelivery/s3/transformation/CallableContentsReader.d.ts +0 -2
  43. package/assetDelivery/s3/transformation/CallableContentsReader.js +7 -13
  44. package/assetDelivery/s3/transformation/CallableContentsReader.js.map +1 -1
  45. package/assetDelivery/s3/transformation/WidthCollection.js +14 -22
  46. package/assetDelivery/s3/transformation/WidthCollection.js.map +1 -1
  47. package/assetDelivery/s3/transformation/utils.d.ts +1 -3
  48. package/assetDelivery/s3/transformation/utils.js +26 -28
  49. package/assetDelivery/s3/transformation/utils.js.map +1 -1
  50. package/assetDelivery/threatDetection/ObjectKey.d.ts +7 -0
  51. package/assetDelivery/threatDetection/ObjectKey.js +18 -0
  52. package/assetDelivery/threatDetection/ObjectKey.js.map +1 -0
  53. package/assetDelivery/threatDetection/createThreatDetectionEventHandler.d.ts +22 -2
  54. package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js +49 -58
  55. package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js.map +1 -1
  56. package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.d.ts +1 -1
  57. package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.js +3 -11
  58. package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.js.map +1 -1
  59. package/assetDelivery/threatDetection/index.d.ts +2 -2
  60. package/assetDelivery/threatDetection/index.js +2 -29
  61. package/assetDelivery/threatDetection/processThreatScanResult.d.ts +3 -2
  62. package/assetDelivery/threatDetection/processThreatScanResult.js +56 -61
  63. package/assetDelivery/threatDetection/processThreatScanResult.js.map +1 -1
  64. package/assetDelivery/threatDetection/types.d.ts +0 -4
  65. package/assetDelivery/threatDetection/types.js +0 -7
  66. package/assetDelivery/types.d.ts +4 -2
  67. package/assetDelivery/types.js +0 -7
  68. package/enterprise/ApplyThreatScanning/CreateFileWithThreatScanDecorator.d.ts +13 -0
  69. package/enterprise/ApplyThreatScanning/CreateFileWithThreatScanDecorator.js +28 -0
  70. package/enterprise/ApplyThreatScanning/CreateFileWithThreatScanDecorator.js.map +1 -0
  71. package/enterprise/ApplyThreatScanning/feature.d.ts +4 -0
  72. package/enterprise/ApplyThreatScanning/feature.js +11 -0
  73. package/enterprise/ApplyThreatScanning/feature.js.map +1 -0
  74. package/features/DeleteFileFromBucket/DeleteFileFromBucketHandler.d.ts +15 -0
  75. package/features/DeleteFileFromBucket/DeleteFileFromBucketHandler.js +35 -0
  76. package/features/DeleteFileFromBucket/DeleteFileFromBucketHandler.js.map +1 -0
  77. package/features/DeleteFileFromBucket/DeleteS3FolderTask.d.ts +37 -0
  78. package/features/DeleteFileFromBucket/DeleteS3FolderTask.js +57 -0
  79. package/features/DeleteFileFromBucket/DeleteS3FolderTask.js.map +1 -0
  80. package/features/DeleteFileFromBucket/feature.d.ts +4 -0
  81. package/features/DeleteFileFromBucket/feature.js +13 -0
  82. package/features/DeleteFileFromBucket/feature.js.map +1 -0
  83. package/features/ExtractMetadata/ExtractMetadataHandler.d.ts +11 -0
  84. package/features/ExtractMetadata/ExtractMetadataHandler.js +25 -0
  85. package/features/ExtractMetadata/ExtractMetadataHandler.js.map +1 -0
  86. package/features/ExtractMetadata/ExtractMetadataTask.d.ts +29 -0
  87. package/features/ExtractMetadata/ExtractMetadataTask.js +99 -0
  88. package/features/ExtractMetadata/ExtractMetadataTask.js.map +1 -0
  89. package/features/ExtractMetadata/feature.d.ts +4 -0
  90. package/features/ExtractMetadata/feature.js +13 -0
  91. package/features/ExtractMetadata/feature.js.map +1 -0
  92. package/features/FlushCache/FlushCacheOnFileDeleteHandler.d.ts +12 -0
  93. package/features/FlushCache/FlushCacheOnFileDeleteHandler.js +28 -0
  94. package/features/FlushCache/FlushCacheOnFileDeleteHandler.js.map +1 -0
  95. package/features/FlushCache/FlushCacheOnFileUpdateHandler.d.ts +12 -0
  96. package/features/FlushCache/FlushCacheOnFileUpdateHandler.js +31 -0
  97. package/features/FlushCache/FlushCacheOnFileUpdateHandler.js.map +1 -0
  98. package/features/FlushCache/InvalidateCacheTask.d.ts +31 -0
  99. package/features/FlushCache/InvalidateCacheTask.js +84 -0
  100. package/features/FlushCache/InvalidateCacheTask.js.map +1 -0
  101. package/features/FlushCache/feature.d.ts +4 -0
  102. package/features/FlushCache/feature.js +15 -0
  103. package/features/FlushCache/feature.js.map +1 -0
  104. package/features/GetFileContentsById/GetFileContentsByIdUseCase.d.ts +13 -0
  105. package/features/GetFileContentsById/GetFileContentsByIdUseCase.js +40 -0
  106. package/features/GetFileContentsById/GetFileContentsByIdUseCase.js.map +1 -0
  107. package/features/GetFileContentsById/feature.d.ts +4 -0
  108. package/features/GetFileContentsById/feature.js +11 -0
  109. package/features/GetFileContentsById/feature.js.map +1 -0
  110. package/features/GetFileContentsByKey/GetFileContentsByKeyUseCase.d.ts +13 -0
  111. package/features/GetFileContentsByKey/GetFileContentsByKeyUseCase.js +40 -0
  112. package/features/GetFileContentsByKey/GetFileContentsByKeyUseCase.js.map +1 -0
  113. package/features/GetFileContentsByKey/feature.d.ts +4 -0
  114. package/features/GetFileContentsByKey/feature.js +11 -0
  115. package/features/GetFileContentsByKey/feature.js.map +1 -0
  116. package/features/WriteFileMetadata/MetadataReader.d.ts +14 -0
  117. package/features/WriteFileMetadata/MetadataReader.js +13 -0
  118. package/features/WriteFileMetadata/MetadataReader.js.map +1 -0
  119. package/features/WriteFileMetadata/MetadataWriter.d.ts +10 -0
  120. package/features/WriteFileMetadata/MetadataWriter.js +28 -0
  121. package/features/WriteFileMetadata/MetadataWriter.js.map +1 -0
  122. package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +12 -0
  123. package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +23 -0
  124. package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +1 -0
  125. package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +12 -0
  126. package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +25 -0
  127. package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +1 -0
  128. package/features/WriteFileMetadata/feature.d.ts +4 -0
  129. package/features/WriteFileMetadata/feature.js +13 -0
  130. package/features/WriteFileMetadata/feature.js.map +1 -0
  131. package/graphql/S3GraphQLSchema.d.ts +10 -0
  132. package/graphql/S3GraphQLSchema.js +233 -0
  133. package/graphql/S3GraphQLSchema.js.map +1 -0
  134. package/graphql/checkPermissions.d.ts +5 -0
  135. package/graphql/checkPermissions.js +22 -0
  136. package/graphql/checkPermissions.js.map +1 -0
  137. package/index.d.ts +4 -5
  138. package/index.js +3 -36
  139. package/multiPartUpload/CompleteMultiPartUploadUseCase.d.ts +1 -1
  140. package/multiPartUpload/CompleteMultiPartUploadUseCase.js +49 -59
  141. package/multiPartUpload/CompleteMultiPartUploadUseCase.js.map +1 -1
  142. package/multiPartUpload/CreateMultiPartUploadUseCase.d.ts +2 -2
  143. package/multiPartUpload/CreateMultiPartUploadUseCase.js +30 -44
  144. package/multiPartUpload/CreateMultiPartUploadUseCase.js.map +1 -1
  145. package/package.json +36 -34
  146. package/types.d.ts +2 -1
  147. package/types.js +1 -7
  148. package/utils/CdnPathsGenerator.d.ts +3 -0
  149. package/utils/CdnPathsGenerator.js +11 -0
  150. package/utils/CdnPathsGenerator.js.map +1 -0
  151. package/utils/FileExtension.d.ts +1 -1
  152. package/utils/FileExtension.js +11 -19
  153. package/utils/FileExtension.js.map +1 -1
  154. package/utils/FileKey.d.ts +1 -1
  155. package/utils/FileKey.js +29 -29
  156. package/utils/FileKey.js.map +1 -1
  157. package/utils/FileKey.test.js +50 -51
  158. package/utils/FileKey.test.js.map +1 -1
  159. package/utils/FileNormalizer.d.ts +2 -2
  160. package/utils/FileNormalizer.js +35 -43
  161. package/utils/FileNormalizer.js.map +1 -1
  162. package/utils/FileUploadModifier.d.ts +9 -3
  163. package/utils/FileUploadModifier.js +36 -44
  164. package/utils/FileUploadModifier.js.map +1 -1
  165. package/utils/createFileNormalizerFromContext.d.ts +2 -2
  166. package/utils/createFileNormalizerFromContext.js +6 -12
  167. package/utils/createFileNormalizerFromContext.js.map +1 -1
  168. package/utils/getPresignedPostPayload.d.ts +4 -3
  169. package/utils/getPresignedPostPayload.js +38 -40
  170. package/utils/getPresignedPostPayload.js.map +1 -1
  171. package/utils/mimeTypes.js +6 -20
  172. package/utils/mimeTypes.js.map +1 -1
  173. package/utils/uploadFileToS3.d.ts +2 -5
  174. package/utils/uploadFileToS3.js +11 -23
  175. package/utils/uploadFileToS3.js.map +1 -1
  176. package/assetDelivery/createCustomAssetDelivery.d.ts +0 -12
  177. package/assetDelivery/createCustomAssetDelivery.js +0 -28
  178. package/assetDelivery/createCustomAssetDelivery.js.map +0 -1
  179. package/assetDelivery/customAssets/CustomAsset.d.ts +0 -6
  180. package/assetDelivery/customAssets/CustomAsset.js +0 -14
  181. package/assetDelivery/customAssets/CustomAsset.js.map +0 -1
  182. package/assetDelivery/customAssets/CustomAssetProcessor.d.ts +0 -10
  183. package/assetDelivery/customAssets/CustomAssetProcessor.js +0 -25
  184. package/assetDelivery/customAssets/CustomAssetProcessor.js.map +0 -1
  185. package/assetDelivery/customAssets/S3CustomAssetResolver.d.ts +0 -15
  186. package/assetDelivery/customAssets/S3CustomAssetResolver.js +0 -90
  187. package/assetDelivery/customAssets/S3CustomAssetResolver.js.map +0 -1
  188. package/assetDelivery/customAssets/customAssetDeliveryConfig.d.ts +0 -1
  189. package/assetDelivery/customAssets/customAssetDeliveryConfig.js +0 -30
  190. package/assetDelivery/customAssets/customAssetDeliveryConfig.js.map +0 -1
  191. package/assetDelivery/index.js.map +0 -1
  192. package/assetDelivery/s3/S3AssetMetadataReader.d.ts +0 -15
  193. package/assetDelivery/s3/S3AssetMetadataReader.js +0 -36
  194. package/assetDelivery/s3/S3AssetMetadataReader.js.map +0 -1
  195. package/assetDelivery/s3/transformation/legacyUtils.d.ts +0 -12
  196. package/assetDelivery/s3/transformation/legacyUtils.js +0 -34
  197. package/assetDelivery/s3/transformation/legacyUtils.js.map +0 -1
  198. package/assetDelivery/threatDetection/index.js.map +0 -1
  199. package/assetDelivery/threatDetection/types.js.map +0 -1
  200. package/assetDelivery/types.js.map +0 -1
  201. package/flushCdnCache/CdnPathsGenerator.d.ts +0 -4
  202. package/flushCdnCache/CdnPathsGenerator.js +0 -14
  203. package/flushCdnCache/CdnPathsGenerator.js.map +0 -1
  204. package/flushCdnCache/InvalidateCacheTask.d.ts +0 -18
  205. package/flushCdnCache/InvalidateCacheTask.js +0 -78
  206. package/flushCdnCache/InvalidateCacheTask.js.map +0 -1
  207. package/flushCdnCache/flushCacheOnFileDelete.d.ts +0 -3
  208. package/flushCdnCache/flushCacheOnFileDelete.js +0 -34
  209. package/flushCdnCache/flushCacheOnFileDelete.js.map +0 -1
  210. package/flushCdnCache/flushCacheOnFileUpdate.d.ts +0 -3
  211. package/flushCdnCache/flushCacheOnFileUpdate.js +0 -40
  212. package/flushCdnCache/flushCacheOnFileUpdate.js.map +0 -1
  213. package/flushCdnCache/index.d.ts +0 -1
  214. package/flushCdnCache/index.js +0 -15
  215. package/flushCdnCache/index.js.map +0 -1
  216. package/flushCdnCache/invalidateCacheTaskDefinition.d.ts +0 -2
  217. package/flushCdnCache/invalidateCacheTaskDefinition.js +0 -22
  218. package/flushCdnCache/invalidateCacheTaskDefinition.js.map +0 -1
  219. package/index.js.map +0 -1
  220. package/plugins/addFileMetadata.d.ts +0 -10
  221. package/plugins/addFileMetadata.js +0 -67
  222. package/plugins/addFileMetadata.js.map +0 -1
  223. package/plugins/checkPermissions.d.ts +0 -4
  224. package/plugins/checkPermissions.js +0 -44
  225. package/plugins/checkPermissions.js.map +0 -1
  226. package/plugins/fileStorageS3.d.ts +0 -3
  227. package/plugins/fileStorageS3.js +0 -60
  228. package/plugins/fileStorageS3.js.map +0 -1
  229. package/plugins/graphqlFileStorageS3.d.ts +0 -4
  230. package/plugins/graphqlFileStorageS3.js +0 -213
  231. package/plugins/graphqlFileStorageS3.js.map +0 -1
  232. package/types.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ import { type Container } from "@webiny/feature/api";
2
+ import type { AssetDeliveryParams } from "./assetDelivery/types.js";
3
+ export interface FileManagerS3FeatureConfig {
4
+ assetDelivery?: AssetDeliveryParams;
5
+ }
6
+ export declare const FileManagerS3Feature: {
7
+ name: string;
8
+ register(container: Container, context?: FileManagerS3FeatureConfig | undefined): void;
9
+ };
@@ -0,0 +1,27 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { S3GraphQLSchema } from "./graphql/S3GraphQLSchema.js";
3
+ import { DeleteFileFromBucketFeature } from "./features/DeleteFileFromBucket/feature.js";
4
+ import { WriteFileMetadataFeature } from "./features/WriteFileMetadata/feature.js";
5
+ import { ApplyThreatScanningFeature } from "./enterprise/ApplyThreatScanning/feature.js";
6
+ import { FlushCacheFeature } from "./features/FlushCache/feature.js";
7
+ import { ExtractMetadataFeature } from "./features/ExtractMetadata/feature.js";
8
+ import { GetFileContentsByIdFeature } from "./features/GetFileContentsById/feature.js";
9
+ import { GetFileContentsByKeyFeature } from "./features/GetFileContentsByKey/feature.js";
10
+ import { createS3AssetDeliveryFeature } from "./assetDelivery/feature.js";
11
+ const FileManagerS3Feature = createFeature({
12
+ name: "FileManagerS3",
13
+ register (container, config = {}) {
14
+ createS3AssetDeliveryFeature(config.assetDelivery).register(container);
15
+ FlushCacheFeature.register(container);
16
+ DeleteFileFromBucketFeature.register(container);
17
+ ExtractMetadataFeature.register(container);
18
+ WriteFileMetadataFeature.register(container);
19
+ GetFileContentsByIdFeature.register(container);
20
+ GetFileContentsByKeyFeature.register(container);
21
+ container.register(S3GraphQLSchema);
22
+ ApplyThreatScanningFeature.register(container);
23
+ }
24
+ });
25
+ export { FileManagerS3Feature };
26
+
27
+ //# sourceMappingURL=FileManagerS3Feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileManagerS3Feature.js","sources":["../src/FileManagerS3Feature.ts"],"sourcesContent":["import { type Container, createFeature } from \"@webiny/feature/api\";\nimport { S3GraphQLSchema } from \"./graphql/S3GraphQLSchema.js\";\nimport { DeleteFileFromBucketFeature } from \"~/features/DeleteFileFromBucket/feature.js\";\nimport { WriteFileMetadataFeature } from \"~/features/WriteFileMetadata/feature.js\";\nimport { ApplyThreatScanningFeature } from \"~/enterprise/ApplyThreatScanning/feature.js\";\nimport { FlushCacheFeature } from \"~/features/FlushCache/feature.js\";\nimport { ExtractMetadataFeature } from \"~/features/ExtractMetadata/feature.js\";\nimport { GetFileContentsByIdFeature } from \"~/features/GetFileContentsById/feature.js\";\nimport { GetFileContentsByKeyFeature } from \"~/features/GetFileContentsByKey/feature.js\";\nimport { createS3AssetDeliveryFeature } from \"./assetDelivery/feature.js\";\nimport type { AssetDeliveryParams } from \"./assetDelivery/types.js\";\n\nexport interface FileManagerS3FeatureConfig {\n assetDelivery?: AssetDeliveryParams;\n}\n\nexport const FileManagerS3Feature = createFeature({\n name: \"FileManagerS3\",\n register(container: Container, config: FileManagerS3FeatureConfig = {}) {\n // Register S3-specific asset delivery implementations (S3AssetResolver, S3OutputStrategy).\n // These replace the null implementations from AssetDeliveryFeature in FileManagerAppFeature.\n createS3AssetDeliveryFeature(config.assetDelivery).register(container);\n\n // S3 file-operation features.\n FlushCacheFeature.register(container);\n DeleteFileFromBucketFeature.register(container);\n ExtractMetadataFeature.register(container);\n WriteFileMetadataFeature.register(container);\n GetFileContentsByIdFeature.register(container);\n GetFileContentsByKeyFeature.register(container);\n\n // Static S3 GraphQL schema (extends FmQuery/FmMutation) — a DI-native\n // CoreGraphQLSchemaFactory contributor (declares its resolver dependencies).\n container.register(S3GraphQLSchema);\n\n // Threat scanning is WCP-gated, but the license is per-request (loaded post-register). Register\n // unconditionally; CreateFileWithThreatScanDecorator + the GuardDuty event handler both guard\n // on canUseFileManagerThreatDetection() at request time and no-op/pass-through when unlicensed.\n ApplyThreatScanningFeature.register(container);\n }\n});\n"],"names":["FileManagerS3Feature","createFeature","container","config","createS3AssetDeliveryFeature","FlushCacheFeature","DeleteFileFromBucketFeature","ExtractMetadataFeature","WriteFileMetadataFeature","GetFileContentsByIdFeature","GetFileContentsByKeyFeature","S3GraphQLSchema","ApplyThreatScanningFeature"],"mappings":";;;;;;;;;;AAgBO,MAAMA,uBAAuBC,cAAc;IAC9C,MAAM;IACN,UAASC,SAAoB,EAAEC,SAAqC,CAAC,CAAC;QAGlEC,6BAA6BD,OAAO,aAAa,EAAE,QAAQ,CAACD;QAG5DG,kBAAkB,QAAQ,CAACH;QAC3BI,4BAA4B,QAAQ,CAACJ;QACrCK,uBAAuB,QAAQ,CAACL;QAChCM,yBAAyB,QAAQ,CAACN;QAClCO,2BAA2B,QAAQ,CAACP;QACpCQ,4BAA4B,QAAQ,CAACR;QAIrCA,UAAU,QAAQ,CAACS;QAKnBC,2BAA2B,QAAQ,CAACV;IACxC;AACJ"}
package/README.md CHANGED
@@ -1 +1,11 @@
1
- # @webiny/api-file-manager-s3
1
+ # @webiny/api-file-manager-s3
2
+
3
+ > [!NOTE]
4
+ > This package is part of the [Webiny](https://www.webiny.com) monorepo.
5
+ > It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
6
+
7
+ 📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
8
+
9
+ ---
10
+
11
+ _This README file is automatically generated during the publish process._
@@ -0,0 +1,11 @@
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";
3
+ export interface IS3AssetDeliveryConfig {
4
+ presignedUrlTtl: number;
5
+ imageResizeWidths: number[];
6
+ imageQuality?: Partial<Record<ImageFormat, number>>;
7
+ assetStreamingMaxSize: number;
8
+ }
9
+ export declare const S3AssetDeliveryConfig: import("@webiny/di").Abstraction<IS3AssetDeliveryConfig>;
10
+ export declare const S3Client: import("@webiny/di").Abstraction<S3>;
11
+ export declare const S3Bucket: import("@webiny/di").Abstraction<string>;
@@ -0,0 +1,7 @@
1
+ import { createAbstraction } from "@webiny/feature/api";
2
+ const S3AssetDeliveryConfig = createAbstraction("AssetDelivery/S3Config");
3
+ const S3Client = createAbstraction("AssetDelivery/S3Client");
4
+ const S3Bucket = createAbstraction("AssetDelivery/S3Bucket");
5
+ export { S3AssetDeliveryConfig, S3Bucket, S3Client };
6
+
7
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +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\";\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
- import type { AssetDeliveryParams } from "./types";
2
- export declare const assetDeliveryConfig: (params: AssetDeliveryParams) => (import("@webiny/api-file-manager").AssetDeliveryConfigModifierPlugin | (import("@webiny/api-file-manager").AssetDeliveryConfigModifierPlugin | import("@webiny/handler").ModifyFastifyPlugin)[])[];
1
+ import type { AssetDeliveryParams } from "../assetDelivery/types.js";
2
+ export declare const assetDeliveryConfig: (params: AssetDeliveryParams) => import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types").Context>[];
@@ -1,52 +1,13 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.assetDeliveryConfig = void 0;
7
- var _apiFileManager = require("@webiny/api-file-manager");
8
- var _clientS = require("@webiny/aws-sdk/client-s3");
9
- var _S3AssetResolver = require("./s3/S3AssetResolver");
10
- var _S3OutputStrategy = require("./s3/S3OutputStrategy");
11
- var _SharpTransform = require("./s3/SharpTransform");
12
- const assetDeliveryConfig = params => {
13
- const bucket = process.env.S3_BUCKET;
14
- const region = process.env.AWS_REGION;
15
- const {
16
- // Presigned URLs last 1 hour
17
- presignedUrlTtl = 3600,
18
- imageResizeWidths = [100, 300, 500, 750, 1000, 1500, 2500],
19
- /**
20
- * Even though Lambda's response payload limit is 6,291,556 bytes, we leave some room for the response envelope.
21
- * We had situations where a 4.7MB file would cause the payload to go over the limit, so let's be on the safe side.
22
- */
23
- assetStreamingMaxSize = 4718592,
24
- ...baseParams
25
- } = params;
26
- return [
27
- // Base asset delivery
28
- (0, _apiFileManager.createAssetDelivery)(baseParams),
29
- // S3 plugins
30
- (0, _apiFileManager.createAssetDeliveryConfig)(config => {
31
- const s3 = new _clientS.S3({
32
- region
33
- });
34
- config.decorateAssetResolver(() => {
35
- // This resolver loads file information from the `.metadata` file.
36
- return new _S3AssetResolver.S3AssetResolver(s3, bucket);
37
- });
38
- config.decorateAssetOutputStrategy(() => {
39
- return new _S3OutputStrategy.S3OutputStrategy(s3, bucket, presignedUrlTtl, assetStreamingMaxSize);
40
- });
41
- config.decorateAssetTransformationStrategy(() => {
42
- return new _SharpTransform.SharpTransform({
43
- s3,
44
- bucket,
45
- imageResizeWidths
46
- });
47
- });
48
- })];
1
+ import { createRegisterExtensionPlugin } from "@webiny/handler";
2
+ import { createS3AssetDeliveryFeature } from "./feature.js";
3
+ const assetDeliveryConfig = (params)=>{
4
+ const feature = createS3AssetDeliveryFeature(params);
5
+ return [
6
+ createRegisterExtensionPlugin((context)=>{
7
+ feature.register(context.container);
8
+ })
9
+ ];
49
10
  };
50
- exports.assetDeliveryConfig = assetDeliveryConfig;
11
+ export { assetDeliveryConfig };
51
12
 
52
13
  //# sourceMappingURL=assetDeliveryConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_apiFileManager","require","_clientS","_S3AssetResolver","_S3OutputStrategy","_SharpTransform","assetDeliveryConfig","params","bucket","process","env","S3_BUCKET","region","AWS_REGION","presignedUrlTtl","imageResizeWidths","assetStreamingMaxSize","baseParams","createBaseAssetDelivery","createAssetDeliveryConfig","config","s3","S3","decorateAssetResolver","S3AssetResolver","decorateAssetOutputStrategy","S3OutputStrategy","decorateAssetTransformationStrategy","SharpTransform","exports"],"sources":["assetDeliveryConfig.ts"],"sourcesContent":["import {\n createAssetDelivery as createBaseAssetDelivery,\n createAssetDeliveryConfig\n} from \"@webiny/api-file-manager\";\nimport { S3 } from \"@webiny/aws-sdk/client-s3\";\nimport { S3AssetResolver } from \"~/assetDelivery/s3/S3AssetResolver\";\nimport { S3OutputStrategy } from \"~/assetDelivery/s3/S3OutputStrategy\";\nimport { SharpTransform } from \"~/assetDelivery/s3/SharpTransform\";\nimport type { AssetDeliveryParams } from \"~/assetDelivery/types\";\n\nexport const assetDeliveryConfig = (params: AssetDeliveryParams) => {\n const bucket = process.env.S3_BUCKET as string;\n const region = process.env.AWS_REGION as string;\n\n const {\n // Presigned URLs last 1 hour\n presignedUrlTtl = 3600,\n imageResizeWidths = [100, 300, 500, 750, 1000, 1500, 2500],\n /**\n * Even though Lambda's response payload limit is 6,291,556 bytes, we leave some room for the response envelope.\n * We had situations where a 4.7MB file would cause the payload to go over the limit, so let's be on the safe side.\n */\n assetStreamingMaxSize = 4718592,\n ...baseParams\n } = params;\n\n return [\n // Base asset delivery\n createBaseAssetDelivery(baseParams),\n // S3 plugins\n createAssetDeliveryConfig(config => {\n const s3 = new S3({ region });\n\n config.decorateAssetResolver(() => {\n // This resolver loads file information from the `.metadata` file.\n return new S3AssetResolver(s3, bucket);\n });\n\n config.decorateAssetOutputStrategy(() => {\n return new S3OutputStrategy(s3, bucket, presignedUrlTtl, assetStreamingMaxSize);\n });\n\n config.decorateAssetTransformationStrategy(() => {\n return new SharpTransform({ s3, bucket, imageResizeWidths });\n });\n })\n ];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAIA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AAGO,MAAMK,mBAAmB,GAAIC,MAA2B,IAAK;EAChE,MAAMC,MAAM,GAAGC,OAAO,CAACC,GAAG,CAACC,SAAmB;EAC9C,MAAMC,MAAM,GAAGH,OAAO,CAACC,GAAG,CAACG,UAAoB;EAE/C,MAAM;IACF;IACAC,eAAe,GAAG,IAAI;IACtBC,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IAC1D;AACR;AACA;AACA;IACQC,qBAAqB,GAAG,OAAO;IAC/B,GAAGC;EACP,CAAC,GAAGV,MAAM;EAEV,OAAO;EACH;EACA,IAAAW,mCAAuB,EAACD,UAAU,CAAC;EACnC;EACA,IAAAE,yCAAyB,EAACC,MAAM,IAAI;IAChC,MAAMC,EAAE,GAAG,IAAIC,WAAE,CAAC;MAAEV;IAAO,CAAC,CAAC;IAE7BQ,MAAM,CAACG,qBAAqB,CAAC,MAAM;MAC/B;MACA,OAAO,IAAIC,gCAAe,CAACH,EAAE,EAAEb,MAAM,CAAC;IAC1C,CAAC,CAAC;IAEFY,MAAM,CAACK,2BAA2B,CAAC,MAAM;MACrC,OAAO,IAAIC,kCAAgB,CAACL,EAAE,EAAEb,MAAM,EAAEM,eAAe,EAAEE,qBAAqB,CAAC;IACnF,CAAC,CAAC;IAEFI,MAAM,CAACO,mCAAmC,CAAC,MAAM;MAC7C,OAAO,IAAIC,8BAAc,CAAC;QAAEP,EAAE;QAAEb,MAAM;QAAEO;MAAkB,CAAC,CAAC;IAChE,CAAC,CAAC;EACN,CAAC,CAAC,CACL;AACL,CAAC;AAACc,OAAA,CAAAvB,mBAAA,GAAAA,mBAAA","ignoreList":[]}
1
+ {"version":3,"file":"assetDelivery/assetDeliveryConfig.js","sources":["../../src/assetDelivery/assetDeliveryConfig.ts"],"sourcesContent":["import { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport type { AssetDeliveryParams } from \"~/assetDelivery/types.js\";\nimport { createS3AssetDeliveryFeature } from \"~/assetDelivery/feature.js\";\n\nexport const assetDeliveryConfig = (params: AssetDeliveryParams) => {\n const feature = createS3AssetDeliveryFeature(params);\n\n return [\n createRegisterExtensionPlugin(context => {\n feature.register(context.container);\n })\n ];\n};\n"],"names":["assetDeliveryConfig","params","feature","createS3AssetDeliveryFeature","createRegisterExtensionPlugin","context"],"mappings":";;AAIO,MAAMA,sBAAsB,CAACC;IAChC,MAAMC,UAAUC,6BAA6BF;IAE7C,OAAO;QACHG,8BAA8BC,CAAAA;YAC1BH,QAAQ,QAAQ,CAACG,QAAQ,SAAS;QACtC;KACH;AACL"}
@@ -1,3 +1,3 @@
1
- import type { PluginFactory } from "@webiny/plugins/types";
2
- import type { AssetDeliveryParams } from "./types";
3
- export declare const createAssetDelivery: (params: AssetDeliveryParams) => PluginFactory[];
1
+ import type { PluginFactory } from "@webiny/plugins/types.js";
2
+ import type { AssetDeliveryParams } from "../assetDelivery/types.js";
3
+ export declare const createAssetDelivery: (params?: AssetDeliveryParams) => PluginFactory[];
@@ -1,30 +1,9 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createAssetDelivery = void 0;
7
- var _apiFileManager = require("@webiny/api-file-manager");
8
- var _threatDetection = require("./threatDetection");
9
- const createAssetDelivery = params => {
10
- return [
11
- /**
12
- * We only want to load this plugin in the context of the Asset Delivery Lambda function.
13
- */
14
- (0, _apiFileManager.createAssetDeliveryPluginLoader)(() => {
15
- return import(/* webpackChunkName: "s3AssetDelivery" */"./assetDeliveryConfig").then(({
16
- assetDeliveryConfig
17
- }) => assetDeliveryConfig(params));
18
- }),
19
- /**
20
- * We only want to load this plugin in the context of the Threat Detection Lambda function.
21
- */
22
- (0, _threatDetection.createThreatDetectionPluginLoader)(() => {
23
- return import(/* webpackChunkName: "threatDetectionEventHandler" */"./threatDetection/createThreatDetectionEventHandler").then(({
24
- createThreatDetectionEventHandler
25
- }) => createThreatDetectionEventHandler());
26
- })];
27
- };
28
- exports.createAssetDelivery = createAssetDelivery;
1
+ import { createAssetDeliveryPluginLoader } from "@webiny/api-file-manager";
2
+ import { createThreatDetectionPluginLoader } from "./threatDetection/index.js";
3
+ const createAssetDelivery = (params = {})=>[
4
+ createAssetDeliveryPluginLoader(()=>import("./assetDeliveryConfig.js").then(({ assetDeliveryConfig })=>assetDeliveryConfig(params))),
5
+ createThreatDetectionPluginLoader(()=>import("./threatDetection/createThreatDetectionEventHandler.js").then(({ createThreatDetectionEventHandler })=>createThreatDetectionEventHandler()))
6
+ ];
7
+ export { createAssetDelivery };
29
8
 
30
9
  //# sourceMappingURL=createAssetDelivery.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_apiFileManager","require","_threatDetection","createAssetDelivery","params","createAssetDeliveryPluginLoader","then","assetDeliveryConfig","createThreatDetectionPluginLoader","createThreatDetectionEventHandler","exports"],"sources":["createAssetDelivery.ts"],"sourcesContent":["import { createAssetDeliveryPluginLoader } from \"@webiny/api-file-manager\";\nimport type { PluginFactory } from \"@webiny/plugins/types\";\nimport { createThreatDetectionPluginLoader } from \"~/assetDelivery/threatDetection\";\nimport type { AssetDeliveryParams } from \"~/assetDelivery/types\";\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(/* webpackChunkName: \"s3AssetDelivery\" */ \"./assetDeliveryConfig\").then(\n ({ assetDeliveryConfig }) => assetDeliveryConfig(params)\n );\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\"\n ).then(({ createThreatDetectionEventHandler }) => createThreatDetectionEventHandler());\n })\n ];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AAGO,MAAME,mBAAmB,GAAIC,MAA2B,IAAsB;EACjF,OAAO;EACH;AACR;AACA;EACQ,IAAAC,+CAA+B,EAAC,MAAM;IAClC,OAAO,MAAM,CAAC,gEAAiE,CAAC,CAACC,IAAI,CACjF,CAAC;MAAEC;IAAoB,CAAC,KAAKA,mBAAmB,CAACH,MAAM,CAC3D,CAAC;EACL,CAAC,CAAC;EACF;AACR;AACA;EACQ,IAAAI,kDAAiC,EAAC,MAAM;IACpC,OAAO,MAAM,CACT,0GACJ,CAAC,CAACF,IAAI,CAAC,CAAC;MAAEG;IAAkC,CAAC,KAAKA,iCAAiC,CAAC,CAAC,CAAC;EAC1F,CAAC,CAAC,CACL;AACL,CAAC;AAACC,OAAA,CAAAP,mBAAA,GAAAA,mBAAA","ignoreList":[]}
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"}
@@ -0,0 +1,5 @@
1
+ import type { AssetDeliveryParams } from "./types.js";
2
+ export declare const createS3AssetDeliveryFeature: (params?: AssetDeliveryParams) => {
3
+ name: string;
4
+ register(container: import("@webiny/di").Container): void;
5
+ };
@@ -0,0 +1,36 @@
1
+ import { createFeature } from "@webiny/feature/api";
2
+ import { createS3 } from "@webiny/aws-sdk/client-s3/index.js";
3
+ import { S3AssetDeliveryConfig, S3Bucket, S3Client } from "./abstractions.js";
4
+ import { S3AssetResolverImpl } from "./s3/S3AssetResolver.js";
5
+ import { S3OutputStrategyImpl } from "./s3/S3OutputStrategy.js";
6
+ import { LazySharpTransformImpl } from "./s3/LazySharpTransform.js";
7
+ const createS3AssetDeliveryFeature = (params = {})=>createFeature({
8
+ name: "AssetDelivery/S3",
9
+ register (container) {
10
+ container.registerFactory(S3Client, ()=>createS3());
11
+ container.registerInstance(S3Bucket, process.env.S3_BUCKET);
12
+ container.registerInstance(S3AssetDeliveryConfig, {
13
+ presignedUrlTtl: params.presignedUrlTtl ?? 3600,
14
+ imageResizeWidths: params.imageResizeWidths ?? [
15
+ 128,
16
+ 384,
17
+ 640,
18
+ 750,
19
+ 828,
20
+ 1080,
21
+ 1200,
22
+ 1920,
23
+ 2048,
24
+ 3840
25
+ ],
26
+ imageQuality: params.imageQuality ?? {},
27
+ assetStreamingMaxSize: params.assetStreamingMaxSize ?? 4718592
28
+ });
29
+ container.register(S3AssetResolverImpl);
30
+ container.register(S3OutputStrategyImpl);
31
+ if ("asset-delivery" === process.env.WEBINY_FUNCTION_TYPE) container.register(LazySharpTransformImpl).inSingletonScope();
32
+ }
33
+ });
34
+ export { createS3AssetDeliveryFeature };
35
+
36
+ //# sourceMappingURL=feature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetDelivery/feature.js","sources":["../../src/assetDelivery/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api\";\nimport { createS3 } 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 { LazySharpTransformImpl } from \"./s3/LazySharpTransform.js\";\n\nexport const createS3AssetDeliveryFeature = (params: AssetDeliveryParams = {}) => {\n return createFeature({\n name: \"AssetDelivery/S3\",\n register(container) {\n // register() runs for every request, so build the client only when something resolves\n // it, and reuse it across requests. Building it here cost every request an S3 client.\n container.registerFactory(S3Client, () => createS3());\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\n if (process.env.WEBINY_FUNCTION_TYPE === \"asset-delivery\") {\n // Registered eagerly; `sharp` is still loaded lazily, inside the handler.\n container.register(LazySharpTransformImpl).inSingletonScope();\n }\n }\n });\n};\n"],"names":["createS3AssetDeliveryFeature","params","createFeature","container","S3Client","createS3","S3Bucket","process","S3AssetDeliveryConfig","S3AssetResolverImpl","S3OutputStrategyImpl","LazySharpTransformImpl"],"mappings":";;;;;;AAQO,MAAMA,+BAA+B,CAACC,SAA8B,CAAC,CAAC,GAClEC,cAAc;QACjB,MAAM;QACN,UAASC,SAAS;YAGdA,UAAU,eAAe,CAACC,UAAU,IAAMC;YAC1CF,UAAU,gBAAgB,CAACG,UAAUC,QAAQ,GAAG,CAAC,SAAS;YAC1DJ,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;YAEnB,IAAIH,AAAqC,qBAArCA,QAAQ,GAAG,CAAC,oBAAoB,EAEhCJ,UAAU,QAAQ,CAACQ,wBAAwB,gBAAgB;QAEnE;IACJ"}
@@ -1,9 +1,8 @@
1
- export { S3AssetResolver } from "./s3/S3AssetResolver";
2
- export { S3AssetMetadataReader } from "./s3/S3AssetMetadataReader";
3
- export { S3OutputStrategy } from "./s3/S3OutputStrategy";
4
- export { S3ContentsReader } from "./s3/S3ContentsReader";
5
- export { S3ErrorAssetReply } from "./s3/S3ErrorAssetReply";
6
- export { S3RedirectAssetReply } from "./s3/S3RedirectAssetReply";
7
- export { S3StreamAssetReply } from "./s3/S3StreamAssetReply";
8
- export { SharpTransform } from "./s3/SharpTransform";
9
- export { CallableContentsReader } from "./s3/transformation/CallableContentsReader";
1
+ export { S3AssetResolver } from "./s3/S3AssetResolver.js";
2
+ export { S3OutputStrategy } from "./s3/S3OutputStrategy.js";
3
+ export { S3ContentsReader } from "./s3/S3ContentsReader.js";
4
+ export { S3ErrorAssetReply } from "./s3/S3ErrorAssetReply.js";
5
+ export { S3RedirectAssetReply } from "./s3/S3RedirectAssetReply.js";
6
+ export { S3StreamAssetReply } from "./s3/S3StreamAssetReply.js";
7
+ export { SharpTransform } from "./s3/SharpTransform.js";
8
+ export { CallableContentsReader } from "./s3/transformation/CallableContentsReader.js";
@@ -1,70 +1,8 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "CallableContentsReader", {
7
- enumerable: true,
8
- get: function () {
9
- return _CallableContentsReader.CallableContentsReader;
10
- }
11
- });
12
- Object.defineProperty(exports, "S3AssetMetadataReader", {
13
- enumerable: true,
14
- get: function () {
15
- return _S3AssetMetadataReader.S3AssetMetadataReader;
16
- }
17
- });
18
- Object.defineProperty(exports, "S3AssetResolver", {
19
- enumerable: true,
20
- get: function () {
21
- return _S3AssetResolver.S3AssetResolver;
22
- }
23
- });
24
- Object.defineProperty(exports, "S3ContentsReader", {
25
- enumerable: true,
26
- get: function () {
27
- return _S3ContentsReader.S3ContentsReader;
28
- }
29
- });
30
- Object.defineProperty(exports, "S3ErrorAssetReply", {
31
- enumerable: true,
32
- get: function () {
33
- return _S3ErrorAssetReply.S3ErrorAssetReply;
34
- }
35
- });
36
- Object.defineProperty(exports, "S3OutputStrategy", {
37
- enumerable: true,
38
- get: function () {
39
- return _S3OutputStrategy.S3OutputStrategy;
40
- }
41
- });
42
- Object.defineProperty(exports, "S3RedirectAssetReply", {
43
- enumerable: true,
44
- get: function () {
45
- return _S3RedirectAssetReply.S3RedirectAssetReply;
46
- }
47
- });
48
- Object.defineProperty(exports, "S3StreamAssetReply", {
49
- enumerable: true,
50
- get: function () {
51
- return _S3StreamAssetReply.S3StreamAssetReply;
52
- }
53
- });
54
- Object.defineProperty(exports, "SharpTransform", {
55
- enumerable: true,
56
- get: function () {
57
- return _SharpTransform.SharpTransform;
58
- }
59
- });
60
- var _S3AssetResolver = require("./s3/S3AssetResolver");
61
- var _S3AssetMetadataReader = require("./s3/S3AssetMetadataReader");
62
- var _S3OutputStrategy = require("./s3/S3OutputStrategy");
63
- var _S3ContentsReader = require("./s3/S3ContentsReader");
64
- var _S3ErrorAssetReply = require("./s3/S3ErrorAssetReply");
65
- var _S3RedirectAssetReply = require("./s3/S3RedirectAssetReply");
66
- var _S3StreamAssetReply = require("./s3/S3StreamAssetReply");
67
- var _SharpTransform = require("./s3/SharpTransform");
68
- var _CallableContentsReader = require("./s3/transformation/CallableContentsReader");
69
-
70
- //# sourceMappingURL=index.js.map
1
+ export { S3AssetResolver } from "./s3/S3AssetResolver.js";
2
+ export { S3OutputStrategy } from "./s3/S3OutputStrategy.js";
3
+ export { S3ContentsReader } from "./s3/S3ContentsReader.js";
4
+ export { S3ErrorAssetReply } from "./s3/S3ErrorAssetReply.js";
5
+ export { S3RedirectAssetReply } from "./s3/S3RedirectAssetReply.js";
6
+ export { S3StreamAssetReply } from "./s3/S3StreamAssetReply.js";
7
+ export { SharpTransform } from "./s3/SharpTransform.js";
8
+ export { CallableContentsReader } from "./s3/transformation/CallableContentsReader.js";
@@ -0,0 +1,34 @@
1
+ import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
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";
7
+ import type { IS3AssetDeliveryConfig } from "../../assetDelivery/abstractions.js";
8
+ /**
9
+ * Defers loading `sharp` until an image is actually transformed.
10
+ *
11
+ * The dynamic import is deliberate — it keeps `sharp` out of the main bundle (note the
12
+ * `webpackChunkName`). That import is async and DI resolution is not, which is why this used to be
13
+ * a per-request `RequestContextInitializer` that imported the module and then registered the real
14
+ * handler. `IAssetTypeHandler` has a single async method, so the import can be awaited there
15
+ * instead.
16
+ *
17
+ * The constructed handler IS memoized: the initializer registered it `.inSingletonScope()`, and
18
+ * nothing below caches the instance (Node caches the module, not the object built from it).
19
+ */
20
+ declare class LazySharpTransform implements ImageAssetTypeHandler.Interface {
21
+ private readonly s3;
22
+ private readonly bucket;
23
+ private readonly config;
24
+ private readonly identityContext;
25
+ private readonly getFile;
26
+ private handler;
27
+ constructor(s3: S3, bucket: string, config: IS3AssetDeliveryConfig, identityContext: IdentityContext.Interface, getFile: GetFileUseCase.Interface);
28
+ private resolveHandler;
29
+ handle(assetRequest: AssetRequest, asset: Asset): Promise<Asset>;
30
+ }
31
+ export declare const LazySharpTransformImpl: typeof LazySharpTransform & {
32
+ __abstraction: import("@webiny/di").Abstraction<import("@webiny/api-file-manager/features/assetDelivery/abstractions/AssetType.js").IAssetTypeHandler>;
33
+ };
34
+ export {};
@@ -0,0 +1,34 @@
1
+ import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
2
+ import { GetFileUseCase } from "@webiny/api-file-manager/features/file/GetFile/index.js";
3
+ import { ImageAssetTypeHandler } from "@webiny/api-file-manager/features/assetDelivery/assetTypes/image/index.js";
4
+ import { S3AssetDeliveryConfig, S3Bucket, S3Client } from "../abstractions.js";
5
+ class LazySharpTransform {
6
+ constructor(s3, bucket, config, identityContext, getFile){
7
+ this.s3 = s3;
8
+ this.bucket = bucket;
9
+ this.config = config;
10
+ this.identityContext = identityContext;
11
+ this.getFile = getFile;
12
+ this.handler = null;
13
+ }
14
+ resolveHandler() {
15
+ if (!this.handler) this.handler = import("./SharpTransform.js").then(({ SharpTransform })=>new SharpTransform(this.s3, this.bucket, this.config, this.identityContext, this.getFile));
16
+ return this.handler;
17
+ }
18
+ async handle(assetRequest, asset) {
19
+ return (await this.resolveHandler()).handle(assetRequest, asset);
20
+ }
21
+ }
22
+ const LazySharpTransformImpl = ImageAssetTypeHandler.createImplementation({
23
+ implementation: LazySharpTransform,
24
+ dependencies: [
25
+ S3Client,
26
+ S3Bucket,
27
+ S3AssetDeliveryConfig,
28
+ IdentityContext,
29
+ GetFileUseCase
30
+ ]
31
+ });
32
+ export { LazySharpTransformImpl };
33
+
34
+ //# sourceMappingURL=LazySharpTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assetDelivery/s3/LazySharpTransform.js","sources":["../../../src/assetDelivery/s3/LazySharpTransform.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { GetFileUseCase } from \"@webiny/api-file-manager/features/file/GetFile/index.js\";\nimport { ImageAssetTypeHandler } from \"@webiny/api-file-manager/features/assetDelivery/assetTypes/image/index.js\";\nimport type { Asset } from \"@webiny/api-file-manager/delivery/AssetDelivery/Asset.js\";\nimport type { AssetRequest } from \"@webiny/api-file-manager/delivery/AssetDelivery/AssetRequest.js\";\nimport { S3AssetDeliveryConfig, S3Bucket, S3Client } from \"~/assetDelivery/abstractions.js\";\nimport type { IS3AssetDeliveryConfig } from \"~/assetDelivery/abstractions.js\";\n\n/**\n * Defers loading `sharp` until an image is actually transformed.\n *\n * The dynamic import is deliberate — it keeps `sharp` out of the main bundle (note the\n * `webpackChunkName`). That import is async and DI resolution is not, which is why this used to be\n * a per-request `RequestContextInitializer` that imported the module and then registered the real\n * handler. `IAssetTypeHandler` has a single async method, so the import can be awaited there\n * instead.\n *\n * The constructed handler IS memoized: the initializer registered it `.inSingletonScope()`, and\n * nothing below caches the instance (Node caches the module, not the object built from it).\n */\nclass LazySharpTransform implements ImageAssetTypeHandler.Interface {\n private handler: Promise<ImageAssetTypeHandler.Interface> | null = null;\n\n constructor(\n private readonly s3: S3,\n private readonly bucket: string,\n private readonly config: IS3AssetDeliveryConfig,\n private readonly identityContext: IdentityContext.Interface,\n private readonly getFile: GetFileUseCase.Interface\n ) {}\n\n private resolveHandler(): Promise<ImageAssetTypeHandler.Interface> {\n if (!this.handler) {\n this.handler = import(\n /* webpackChunkName: \"s3AssetDelivery\" */ \"./SharpTransform.js\"\n ).then(\n ({ SharpTransform }) =>\n new SharpTransform(\n this.s3,\n this.bucket,\n this.config,\n this.identityContext,\n this.getFile\n )\n );\n }\n return this.handler;\n }\n\n async handle(assetRequest: AssetRequest, asset: Asset): Promise<Asset> {\n return (await this.resolveHandler()).handle(assetRequest, asset);\n }\n}\n\nexport const LazySharpTransformImpl = ImageAssetTypeHandler.createImplementation({\n implementation: LazySharpTransform,\n dependencies: [S3Client, S3Bucket, S3AssetDeliveryConfig, IdentityContext, GetFileUseCase]\n});\n"],"names":["LazySharpTransform","s3","bucket","config","identityContext","getFile","SharpTransform","assetRequest","asset","LazySharpTransformImpl","ImageAssetTypeHandler","S3Client","S3Bucket","S3AssetDeliveryConfig","IdentityContext","GetFileUseCase"],"mappings":";;;;AAqBA,MAAMA;IAGF,YACqBC,EAAM,EACNC,MAAc,EACdC,MAA8B,EAC9BC,eAA0C,EAC1CC,OAAiC,CACpD;aALmBJ,EAAE,GAAFA;aACAC,MAAM,GAANA;aACAC,MAAM,GAANA;aACAC,eAAe,GAAfA;aACAC,OAAO,GAAPA;aAPb,OAAO,GAAoD;IAQhE;IAEK,iBAA2D;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,EACb,IAAI,CAAC,OAAO,GAAG,MAAM,CAAN,uBAEb,IAAI,CACF,CAAC,EAAEC,cAAc,EAAE,GACf,IAAIA,eACA,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,OAAO;QAI5B,OAAO,IAAI,CAAC,OAAO;IACvB;IAEA,MAAM,OAAOC,YAA0B,EAAEC,KAAY,EAAkB;QACnE,OAAQ,OAAM,IAAI,CAAC,cAAc,EAAC,EAAG,MAAM,CAACD,cAAcC;IAC9D;AACJ;AAEO,MAAMC,yBAAyBC,sBAAsB,oBAAoB,CAAC;IAC7E,gBAAgBV;IAChB,cAAc;QAACW;QAAUC;QAAUC;QAAuBC;QAAiBC;KAAe;AAC9F"}
@@ -1,9 +1,14 @@
1
- import type { S3 } from "@webiny/aws-sdk/client-s3";
1
+ import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
2
2
  import type { AssetRequest, AssetResolver } from "@webiny/api-file-manager";
3
3
  import { Asset } from "@webiny/api-file-manager";
4
+ import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
4
5
  export declare class S3AssetResolver implements AssetResolver {
5
- private readonly s3;
6
- private readonly bucket;
7
- constructor(s3: S3, bucket: string);
6
+ private keyValueStore;
7
+ private s3;
8
+ private bucket;
9
+ constructor(keyValueStore: GlobalKeyValueStore.Interface, s3: S3, bucket: string);
8
10
  resolve(request: AssetRequest): Promise<Asset | undefined>;
9
11
  }
12
+ export declare const S3AssetResolverImpl: typeof S3AssetResolver & {
13
+ __abstraction: import("@webiny/di").Abstraction<AssetResolver>;
14
+ };
@@ -1,37 +1,39 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.S3AssetResolver = void 0;
7
- var _apiFileManager = require("@webiny/api-file-manager");
8
- var _S3AssetMetadataReader = require("./S3AssetMetadataReader");
9
- var _S3ContentsReader = require("./S3ContentsReader");
1
+ import { Asset } from "@webiny/api-file-manager";
2
+ import { AssetResolver } from "@webiny/api-file-manager/features/assetDelivery/abstractions.js";
3
+ import { GlobalKeyValueStore } from "@webiny/api-core/features/keyValueStore/index.js";
4
+ import { S3ContentsReader } from "../index.js";
5
+ import { ObjectKey } from "../threatDetection/ObjectKey.js";
6
+ import { S3Bucket, S3Client } from "../abstractions.js";
10
7
  class S3AssetResolver {
11
- constructor(s3, bucket) {
12
- this.s3 = s3;
13
- this.bucket = bucket;
14
- }
15
- async resolve(request) {
16
- try {
17
- const metadataReader = new _S3AssetMetadataReader.S3AssetMetadataReader(this.s3, this.bucket);
18
- const metadata = await metadataReader.getMetadata(request.getKey());
19
- const asset = new _apiFileManager.Asset({
20
- id: metadata.id,
21
- tenant: metadata.tenant,
22
- locale: metadata.locale,
23
- size: metadata.size,
24
- contentType: metadata.contentType,
25
- key: request.getKey()
26
- });
27
- asset.setContentsReader(new _S3ContentsReader.S3ContentsReader(this.s3, this.bucket));
28
- return asset;
29
- } catch (error) {
30
- console.log(`S3AssetResolver failed to read metadata: ${error.message}`);
31
- return undefined;
8
+ constructor(keyValueStore, s3, bucket){
9
+ this.keyValueStore = keyValueStore;
10
+ this.s3 = s3;
11
+ this.bucket = bucket;
12
+ }
13
+ async resolve(request) {
14
+ const fileId = ObjectKey.from(request.getKey()).id();
15
+ const result = await this.keyValueStore.get(`FileManager/File/${fileId}/Metadata`);
16
+ if (result.isFail()) return;
17
+ const metadata = result.value;
18
+ const asset = new Asset({
19
+ id: metadata.id,
20
+ tenant: metadata.tenant,
21
+ size: metadata.size,
22
+ contentType: metadata.contentType,
23
+ key: metadata.bucketKey
24
+ });
25
+ asset.setContentsReader(new S3ContentsReader(this.s3, this.bucket));
26
+ return asset;
32
27
  }
33
- }
34
28
  }
35
- exports.S3AssetResolver = S3AssetResolver;
29
+ const S3AssetResolverImpl = AssetResolver.createImplementation({
30
+ implementation: S3AssetResolver,
31
+ dependencies: [
32
+ GlobalKeyValueStore,
33
+ S3Client,
34
+ S3Bucket
35
+ ]
36
+ });
37
+ export { S3AssetResolver, S3AssetResolverImpl };
36
38
 
37
39
  //# sourceMappingURL=S3AssetResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_apiFileManager","require","_S3AssetMetadataReader","_S3ContentsReader","S3AssetResolver","constructor","s3","bucket","resolve","request","metadataReader","S3AssetMetadataReader","metadata","getMetadata","getKey","asset","Asset","id","tenant","locale","size","contentType","key","setContentsReader","S3ContentsReader","error","console","log","message","undefined","exports"],"sources":["S3AssetResolver.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3\";\nimport type { AssetRequest, AssetResolver } from \"@webiny/api-file-manager\";\nimport { Asset } from \"@webiny/api-file-manager\";\nimport { S3AssetMetadataReader } from \"./S3AssetMetadataReader\";\nimport { S3ContentsReader } from \"./S3ContentsReader\";\n\nexport class S3AssetResolver implements AssetResolver {\n private readonly s3: S3;\n private readonly bucket: string;\n\n constructor(s3: S3, bucket: string) {\n this.s3 = s3;\n this.bucket = bucket;\n }\n\n async resolve(request: AssetRequest): Promise<Asset | undefined> {\n try {\n const metadataReader = new S3AssetMetadataReader(this.s3, this.bucket);\n const metadata = await metadataReader.getMetadata(request.getKey());\n\n const asset = new Asset({\n id: metadata.id,\n tenant: metadata.tenant,\n locale: metadata.locale,\n size: metadata.size,\n contentType: metadata.contentType,\n key: request.getKey()\n });\n\n asset.setContentsReader(new S3ContentsReader(this.s3, this.bucket));\n\n return asset;\n } catch (error) {\n console.log(`S3AssetResolver failed to read metadata: ${error.message}`);\n return undefined;\n }\n }\n}\n"],"mappings":";;;;;;AAEA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AAEO,MAAMG,eAAe,CAA0B;EAIlDC,WAAWA,CAACC,EAAM,EAAEC,MAAc,EAAE;IAChC,IAAI,CAACD,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,MAAM,GAAGA,MAAM;EACxB;EAEA,MAAMC,OAAOA,CAACC,OAAqB,EAA8B;IAC7D,IAAI;MACA,MAAMC,cAAc,GAAG,IAAIC,4CAAqB,CAAC,IAAI,CAACL,EAAE,EAAE,IAAI,CAACC,MAAM,CAAC;MACtE,MAAMK,QAAQ,GAAG,MAAMF,cAAc,CAACG,WAAW,CAACJ,OAAO,CAACK,MAAM,CAAC,CAAC,CAAC;MAEnE,MAAMC,KAAK,GAAG,IAAIC,qBAAK,CAAC;QACpBC,EAAE,EAAEL,QAAQ,CAACK,EAAE;QACfC,MAAM,EAAEN,QAAQ,CAACM,MAAM;QACvBC,MAAM,EAAEP,QAAQ,CAACO,MAAM;QACvBC,IAAI,EAAER,QAAQ,CAACQ,IAAI;QACnBC,WAAW,EAAET,QAAQ,CAACS,WAAW;QACjCC,GAAG,EAAEb,OAAO,CAACK,MAAM,CAAC;MACxB,CAAC,CAAC;MAEFC,KAAK,CAACQ,iBAAiB,CAAC,IAAIC,kCAAgB,CAAC,IAAI,CAAClB,EAAE,EAAE,IAAI,CAACC,MAAM,CAAC,CAAC;MAEnE,OAAOQ,KAAK;IAChB,CAAC,CAAC,OAAOU,KAAK,EAAE;MACZC,OAAO,CAACC,GAAG,CAAC,4CAA4CF,KAAK,CAACG,OAAO,EAAE,CAAC;MACxE,OAAOC,SAAS;IACpB;EACJ;AACJ;AAACC,OAAA,CAAA1B,eAAA,GAAAA,eAAA","ignoreList":[]}
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 type { AssetRequest, AssetResolver } from \"@webiny/api-file-manager\";\nimport { Asset } from \"@webiny/api-file-manager\";\nimport { AssetResolver as AssetResolverAbstraction } from \"@webiny/api-file-manager/features/assetDelivery/abstractions.js\";\nimport { GlobalKeyValueStore } from \"@webiny/api-core/features/keyValueStore/index.js\";\nimport { S3ContentsReader } from \"~/assetDelivery/index.js\";\nimport { ObjectKey } from \"~/assetDelivery/threatDetection/ObjectKey.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 AssetResolver {\n constructor(\n private keyValueStore: GlobalKeyValueStore.Interface,\n private s3: S3,\n private bucket: string\n ) {}\n\n async resolve(request: AssetRequest): Promise<Asset | undefined> {\n const fileId = 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 = new Asset({\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(new S3ContentsReader(this.s3, this.bucket));\n\n return asset;\n }\n}\n\nexport const S3AssetResolverImpl = AssetResolverAbstraction.createImplementation({\n implementation: S3AssetResolver,\n dependencies: [GlobalKeyValueStore, S3Client, S3Bucket]\n});\n"],"names":["S3AssetResolver","keyValueStore","s3","bucket","request","fileId","ObjectKey","result","metadata","asset","Asset","S3ContentsReader","S3AssetResolverImpl","AssetResolverAbstraction","GlobalKeyValueStore","S3Client","S3Bucket"],"mappings":";;;;;;AAiBO,MAAMA;IACT,YACYC,aAA4C,EAC5CC,EAAM,EACNC,MAAc,CACxB;aAHUF,aAAa,GAAbA;aACAC,EAAE,GAAFA;aACAC,MAAM,GAANA;IACT;IAEH,MAAM,QAAQC,OAAqB,EAA8B;QAC7D,MAAMC,SAASC,UAAU,IAAI,CAACF,QAAQ,MAAM,IAAI,EAAE;QAClD,MAAMG,SAAS,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CACvC,CAAC,iBAAiB,EAAEF,OAAO,SAAS,CAAC;QAGzC,IAAIE,OAAO,MAAM,IACb;QAGJ,MAAMC,WAAWD,OAAO,KAAK;QAE7B,MAAME,QAAQ,IAAIC,MAAM;YACpB,IAAIF,SAAS,EAAE;YACf,QAAQA,SAAS,MAAM;YACvB,MAAMA,SAAS,IAAI;YACnB,aAAaA,SAAS,WAAW;YACjC,KAAKA,SAAS,SAAS;QAC3B;QAEAC,MAAM,iBAAiB,CAAC,IAAIE,iBAAiB,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM;QAEjE,OAAOF;IACX;AACJ;AAEO,MAAMG,sBAAsBC,cAAAA,oBAA6C,CAAC;IAC7E,gBAAgBb;IAChB,cAAc;QAACc;QAAqBC;QAAUC;KAAS;AAC3D"}
@@ -1,6 +1,4 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import type { S3 } from "@webiny/aws-sdk/client-s3";
1
+ import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
4
2
  import type { Asset, AssetContentsReader } from "@webiny/api-file-manager";
5
3
  export declare class S3ContentsReader implements AssetContentsReader {
6
4
  private s3;