@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
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.customAssetDeliveryConfig = void 0;
7
- var _apiFileManager = require("@webiny/api-file-manager");
8
- var _clientS = require("@webiny/aws-sdk/client-s3");
9
- var _S3CustomAssetResolver = require("./S3CustomAssetResolver");
10
- var _CustomAssetProcessor = require("./CustomAssetProcessor");
11
- const customAssetDeliveryConfig = () => {
12
- return (0, _apiFileManager.createAssetDeliveryConfig)(config => {
13
- config.decorateAssetResolver(({
14
- assetResolver
15
- }) => {
16
- const s3 = new _clientS.S3({
17
- region: process.env.AWS_REGION
18
- });
19
- return new _S3CustomAssetResolver.S3CustomAssetResolver(s3, String(process.env.S3_BUCKET), assetResolver);
20
- });
21
- config.decorateAssetProcessor(({
22
- assetProcessor
23
- }) => {
24
- return new _CustomAssetProcessor.CustomAssetProcessor(assetProcessor);
25
- });
26
- });
27
- };
28
- exports.customAssetDeliveryConfig = customAssetDeliveryConfig;
29
-
30
- //# sourceMappingURL=customAssetDeliveryConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_apiFileManager","require","_clientS","_S3CustomAssetResolver","_CustomAssetProcessor","customAssetDeliveryConfig","createAssetDeliveryConfig","config","decorateAssetResolver","assetResolver","s3","S3","region","process","env","AWS_REGION","S3CustomAssetResolver","String","S3_BUCKET","decorateAssetProcessor","assetProcessor","CustomAssetProcessor","exports"],"sources":["customAssetDeliveryConfig.ts"],"sourcesContent":["import { createAssetDeliveryConfig } from \"@webiny/api-file-manager\";\nimport { S3 } from \"@webiny/aws-sdk/client-s3\";\nimport { S3CustomAssetResolver } from \"./S3CustomAssetResolver\";\nimport { CustomAssetProcessor } from \"~/assetDelivery/customAssets/CustomAssetProcessor\";\n\nexport const customAssetDeliveryConfig = () => {\n return createAssetDeliveryConfig(config => {\n config.decorateAssetResolver(({ assetResolver }) => {\n const s3 = new S3({ region: process.env.AWS_REGION });\n return new S3CustomAssetResolver(s3, String(process.env.S3_BUCKET), assetResolver);\n });\n\n config.decorateAssetProcessor(({ assetProcessor }) => {\n return new CustomAssetProcessor(assetProcessor);\n });\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AAEO,MAAMI,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,OAAO,IAAAC,yCAAyB,EAACC,MAAM,IAAI;IACvCA,MAAM,CAACC,qBAAqB,CAAC,CAAC;MAAEC;IAAc,CAAC,KAAK;MAChD,MAAMC,EAAE,GAAG,IAAIC,WAAE,CAAC;QAAEC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;MAAW,CAAC,CAAC;MACrD,OAAO,IAAIC,4CAAqB,CAACN,EAAE,EAAEO,MAAM,CAACJ,OAAO,CAACC,GAAG,CAACI,SAAS,CAAC,EAAET,aAAa,CAAC;IACtF,CAAC,CAAC;IAEFF,MAAM,CAACY,sBAAsB,CAAC,CAAC;MAAEC;IAAe,CAAC,KAAK;MAClD,OAAO,IAAIC,0CAAoB,CAACD,cAAc,CAAC;IACnD,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAACE,OAAA,CAAAjB,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_S3AssetResolver","require","_S3AssetMetadataReader","_S3OutputStrategy","_S3ContentsReader","_S3ErrorAssetReply","_S3RedirectAssetReply","_S3StreamAssetReply","_SharpTransform","_CallableContentsReader"],"sources":["index.ts"],"sourcesContent":["export { S3AssetResolver } from \"./s3/S3AssetResolver\";\nexport { S3AssetMetadataReader } from \"./s3/S3AssetMetadataReader\";\nexport { S3OutputStrategy } from \"./s3/S3OutputStrategy\";\nexport { S3ContentsReader } from \"./s3/S3ContentsReader\";\nexport { S3ErrorAssetReply } from \"./s3/S3ErrorAssetReply\";\nexport { S3RedirectAssetReply } from \"./s3/S3RedirectAssetReply\";\nexport { S3StreamAssetReply } from \"./s3/S3StreamAssetReply\";\nexport { SharpTransform } from \"./s3/SharpTransform\";\nexport { CallableContentsReader } from \"./s3/transformation/CallableContentsReader\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AACA,IAAAE,iBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AACA,IAAAK,qBAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AACA,IAAAO,eAAA,GAAAP,OAAA;AACA,IAAAQ,uBAAA,GAAAR,OAAA","ignoreList":[]}
@@ -1,15 +0,0 @@
1
- import type { S3 } from "@webiny/aws-sdk/client-s3";
2
- interface AssetMetadata {
3
- id: string;
4
- tenant: string;
5
- locale: string;
6
- size: number;
7
- contentType: string;
8
- }
9
- export declare class S3AssetMetadataReader {
10
- private readonly s3;
11
- private readonly bucket;
12
- constructor(s3: S3, bucket: string);
13
- getMetadata(key: string): Promise<AssetMetadata>;
14
- }
15
- export {};
@@ -1,36 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.S3AssetMetadataReader = void 0;
7
- class S3AssetMetadataReader {
8
- constructor(s3, bucket) {
9
- this.bucket = bucket;
10
- this.s3 = s3;
11
- }
12
- async getMetadata(key) {
13
- const metadataKey = `${key}.metadata`;
14
- console.log("Reading metadata", metadataKey);
15
- const {
16
- Body
17
- } = await this.s3.getObject({
18
- Bucket: this.bucket,
19
- Key: metadataKey
20
- });
21
- if (!Body) {
22
- throw Error(`Missing or corrupted ${metadataKey} file!`);
23
- }
24
- const metadata = JSON.parse(await Body.transformToString());
25
- return {
26
- id: metadata.id,
27
- tenant: metadata.tenant,
28
- locale: metadata.locale,
29
- size: metadata.size,
30
- contentType: metadata.contentType
31
- };
32
- }
33
- }
34
- exports.S3AssetMetadataReader = S3AssetMetadataReader;
35
-
36
- //# sourceMappingURL=S3AssetMetadataReader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["S3AssetMetadataReader","constructor","s3","bucket","getMetadata","key","metadataKey","console","log","Body","getObject","Bucket","Key","Error","metadata","JSON","parse","transformToString","id","tenant","locale","size","contentType","exports"],"sources":["S3AssetMetadataReader.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3\";\n\ninterface AssetMetadata {\n id: string;\n tenant: string;\n locale: string;\n size: number;\n contentType: string;\n}\n\nexport class S3AssetMetadataReader {\n private readonly s3: S3;\n private readonly bucket: string;\n\n constructor(s3: S3, bucket: string) {\n this.bucket = bucket;\n this.s3 = s3;\n }\n\n async getMetadata(key: string): Promise<AssetMetadata> {\n const metadataKey = `${key}.metadata`;\n\n console.log(\"Reading metadata\", metadataKey);\n\n const { Body } = await this.s3.getObject({\n Bucket: this.bucket,\n Key: metadataKey\n });\n\n if (!Body) {\n throw Error(`Missing or corrupted ${metadataKey} file!`);\n }\n\n const metadata = JSON.parse(await Body.transformToString());\n\n return {\n id: metadata.id,\n tenant: metadata.tenant,\n locale: metadata.locale,\n size: metadata.size,\n contentType: metadata.contentType\n };\n }\n}\n"],"mappings":";;;;;;AAUO,MAAMA,qBAAqB,CAAC;EAI/BC,WAAWA,CAACC,EAAM,EAAEC,MAAc,EAAE;IAChC,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACD,EAAE,GAAGA,EAAE;EAChB;EAEA,MAAME,WAAWA,CAACC,GAAW,EAA0B;IACnD,MAAMC,WAAW,GAAG,GAAGD,GAAG,WAAW;IAErCE,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEF,WAAW,CAAC;IAE5C,MAAM;MAAEG;IAAK,CAAC,GAAG,MAAM,IAAI,CAACP,EAAE,CAACQ,SAAS,CAAC;MACrCC,MAAM,EAAE,IAAI,CAACR,MAAM;MACnBS,GAAG,EAAEN;IACT,CAAC,CAAC;IAEF,IAAI,CAACG,IAAI,EAAE;MACP,MAAMI,KAAK,CAAC,wBAAwBP,WAAW,QAAQ,CAAC;IAC5D;IAEA,MAAMQ,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAAC,MAAMP,IAAI,CAACQ,iBAAiB,CAAC,CAAC,CAAC;IAE3D,OAAO;MACHC,EAAE,EAAEJ,QAAQ,CAACI,EAAE;MACfC,MAAM,EAAEL,QAAQ,CAACK,MAAM;MACvBC,MAAM,EAAEN,QAAQ,CAACM,MAAM;MACvBC,IAAI,EAAEP,QAAQ,CAACO,IAAI;MACnBC,WAAW,EAAER,QAAQ,CAACQ;IAC1B,CAAC;EACL;AACJ;AAACC,OAAA,CAAAvB,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- declare const SUPPORTED_IMAGES: string[];
2
- declare const SUPPORTED_TRANSFORMABLE_IMAGES: string[];
3
- declare const OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = "img-o-t-";
4
- declare const OPTIMIZED_IMAGE_PREFIX = "img-o-";
5
- declare const getOptimizedImageKeyPrefix: (key: string) => string;
6
- declare const getOptimizedTransformedImageKeyPrefix: (key: string) => string;
7
- interface GetImageKeyParams {
8
- key: string;
9
- transformations?: any;
10
- }
11
- declare const getImageKey: ({ key, transformations }: GetImageKeyParams) => string;
12
- export { SUPPORTED_IMAGES, SUPPORTED_TRANSFORMABLE_IMAGES, OPTIMIZED_TRANSFORMED_IMAGE_PREFIX, OPTIMIZED_IMAGE_PREFIX, getImageKey, getOptimizedImageKeyPrefix, getOptimizedTransformedImageKeyPrefix };
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.getOptimizedTransformedImageKeyPrefix = exports.getOptimizedImageKeyPrefix = exports.getImageKey = exports.SUPPORTED_TRANSFORMABLE_IMAGES = exports.SUPPORTED_IMAGES = exports.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = exports.OPTIMIZED_IMAGE_PREFIX = void 0;
8
- var _objectHash = _interopRequireDefault(require("object-hash"));
9
- const SUPPORTED_IMAGES = exports.SUPPORTED_IMAGES = [".jpg", ".jpeg", ".png", ".svg", ".gif"];
10
- const SUPPORTED_TRANSFORMABLE_IMAGES = exports.SUPPORTED_TRANSFORMABLE_IMAGES = [".jpg", ".jpeg", ".png"];
11
- const OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = exports.OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = "img-o-t-";
12
- const OPTIMIZED_IMAGE_PREFIX = exports.OPTIMIZED_IMAGE_PREFIX = "img-o-";
13
- const getOptimizedImageKeyPrefix = key => {
14
- return `${OPTIMIZED_IMAGE_PREFIX}${(0, _objectHash.default)(key)}-`;
15
- };
16
- exports.getOptimizedImageKeyPrefix = getOptimizedImageKeyPrefix;
17
- const getOptimizedTransformedImageKeyPrefix = key => {
18
- return `${OPTIMIZED_TRANSFORMED_IMAGE_PREFIX}${(0, _objectHash.default)(key)}-`;
19
- };
20
- exports.getOptimizedTransformedImageKeyPrefix = getOptimizedTransformedImageKeyPrefix;
21
- const getImageKey = ({
22
- key,
23
- transformations
24
- }) => {
25
- if (!transformations) {
26
- const prefix = getOptimizedImageKeyPrefix(key);
27
- return prefix + key;
28
- }
29
- const prefix = getOptimizedTransformedImageKeyPrefix(key);
30
- return `${prefix}${(0, _objectHash.default)(transformations)}-${key}`;
31
- };
32
- exports.getImageKey = getImageKey;
33
-
34
- //# sourceMappingURL=legacyUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_objectHash","_interopRequireDefault","require","SUPPORTED_IMAGES","exports","SUPPORTED_TRANSFORMABLE_IMAGES","OPTIMIZED_TRANSFORMED_IMAGE_PREFIX","OPTIMIZED_IMAGE_PREFIX","getOptimizedImageKeyPrefix","key","objectHash","getOptimizedTransformedImageKeyPrefix","getImageKey","transformations","prefix"],"sources":["legacyUtils.ts"],"sourcesContent":["import objectHash from \"object-hash\";\n\nconst SUPPORTED_IMAGES = [\".jpg\", \".jpeg\", \".png\", \".svg\", \".gif\"];\nconst SUPPORTED_TRANSFORMABLE_IMAGES = [\".jpg\", \".jpeg\", \".png\"];\n\nconst OPTIMIZED_TRANSFORMED_IMAGE_PREFIX = \"img-o-t-\";\nconst OPTIMIZED_IMAGE_PREFIX = \"img-o-\";\n\nconst getOptimizedImageKeyPrefix = (key: string): string => {\n return `${OPTIMIZED_IMAGE_PREFIX}${objectHash(key)}-`;\n};\n\nconst getOptimizedTransformedImageKeyPrefix = (key: string): string => {\n return `${OPTIMIZED_TRANSFORMED_IMAGE_PREFIX}${objectHash(key)}-`;\n};\n\ninterface GetImageKeyParams {\n key: string;\n transformations?: any;\n}\n\nconst getImageKey = ({ key, transformations }: GetImageKeyParams): string => {\n if (!transformations) {\n const prefix = getOptimizedImageKeyPrefix(key);\n return prefix + key;\n }\n\n const prefix = getOptimizedTransformedImageKeyPrefix(key);\n return `${prefix}${objectHash(transformations)}-${key}`;\n};\n\nexport {\n SUPPORTED_IMAGES,\n SUPPORTED_TRANSFORMABLE_IMAGES,\n OPTIMIZED_TRANSFORMED_IMAGE_PREFIX,\n OPTIMIZED_IMAGE_PREFIX,\n getImageKey,\n getOptimizedImageKeyPrefix,\n getOptimizedTransformedImageKeyPrefix\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAClE,MAAME,8BAA8B,GAAAD,OAAA,CAAAC,8BAAA,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AAEhE,MAAMC,kCAAkC,GAAAF,OAAA,CAAAE,kCAAA,GAAG,UAAU;AACrD,MAAMC,sBAAsB,GAAAH,OAAA,CAAAG,sBAAA,GAAG,QAAQ;AAEvC,MAAMC,0BAA0B,GAAIC,GAAW,IAAa;EACxD,OAAO,GAAGF,sBAAsB,GAAG,IAAAG,mBAAU,EAACD,GAAG,CAAC,GAAG;AACzD,CAAC;AAACL,OAAA,CAAAI,0BAAA,GAAAA,0BAAA;AAEF,MAAMG,qCAAqC,GAAIF,GAAW,IAAa;EACnE,OAAO,GAAGH,kCAAkC,GAAG,IAAAI,mBAAU,EAACD,GAAG,CAAC,GAAG;AACrE,CAAC;AAACL,OAAA,CAAAO,qCAAA,GAAAA,qCAAA;AAOF,MAAMC,WAAW,GAAGA,CAAC;EAAEH,GAAG;EAAEI;AAAmC,CAAC,KAAa;EACzE,IAAI,CAACA,eAAe,EAAE;IAClB,MAAMC,MAAM,GAAGN,0BAA0B,CAACC,GAAG,CAAC;IAC9C,OAAOK,MAAM,GAAGL,GAAG;EACvB;EAEA,MAAMK,MAAM,GAAGH,qCAAqC,CAACF,GAAG,CAAC;EACzD,OAAO,GAAGK,MAAM,GAAG,IAAAJ,mBAAU,EAACG,eAAe,CAAC,IAAIJ,GAAG,EAAE;AAC3D,CAAC;AAACL,OAAA,CAAAQ,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_createThreatDetectionEventHandler","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_createThreatDetectionPluginLoader"],"sources":["index.ts"],"sourcesContent":["export * from \"./createThreatDetectionEventHandler\";\nexport * from \"./createThreatDetectionPluginLoader\";\n"],"mappings":";;;;;AAAA,IAAAA,kCAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,kCAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,kCAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,kCAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,kCAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,kCAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,kCAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,kCAAA,CAAAL,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { Context as IWebsocketsContext } from \"@webiny/api-websockets\";\nimport type { WcpContext } from \"@webiny/api-wcp/types\";\nimport type { FileManagerContext } from \"@webiny/api-file-manager/types\";\n\nexport type ThreatDetectionContext = FileManagerContext & IWebsocketsContext & WcpContext;\n\nexport type GuardDutyEvent = {\n scanResultDetails: {\n scanResultStatus:\n | \"UNSUPPORTED\"\n | \"FAILED\"\n | \"ACCESS_DENIED\"\n | \"THREATS_FOUND\"\n | \"NO_THREATS_FOUND\";\n };\n s3ObjectDetails: {\n bucketName: string;\n objectKey: string;\n };\n};\n"],"mappings":"","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { createAssetDelivery as createBaseAssetDelivery } from \"@webiny/api-file-manager\";\n\nexport type AssetDeliveryParams = Parameters<typeof createBaseAssetDelivery>[0] & {\n imageResizeWidths?: number[];\n /**\n * BE CAREFUL!\n * Setting this to more than 1 hour may cause your URLs to still expire before the desired expiration time.\n * @see https://repost.aws/knowledge-center/presigned-url-s3-bucket-expiration\n */\n presignedUrlTtl?: number;\n assetStreamingMaxSize?: number;\n};\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +0,0 @@
1
- import type { File } from "@webiny/api-file-manager/types";
2
- export declare class CdnPathsGenerator {
3
- generate(file: File): string[];
4
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CdnPathsGenerator = void 0;
7
- class CdnPathsGenerator {
8
- generate(file) {
9
- return [`/files/${file.key}*`, `/private/${file.key}*`, ...file.aliases];
10
- }
11
- }
12
- exports.CdnPathsGenerator = CdnPathsGenerator;
13
-
14
- //# sourceMappingURL=CdnPathsGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["CdnPathsGenerator","generate","file","key","aliases","exports"],"sources":["CdnPathsGenerator.ts"],"sourcesContent":["import type { File } from \"@webiny/api-file-manager/types\";\n\nexport class CdnPathsGenerator {\n generate(file: File) {\n return [`/files/${file.key}*`, `/private/${file.key}*`, ...file.aliases];\n }\n}\n"],"mappings":";;;;;;AAEO,MAAMA,iBAAiB,CAAC;EAC3BC,QAAQA,CAACC,IAAU,EAAE;IACjB,OAAO,CAAC,UAAUA,IAAI,CAACC,GAAG,GAAG,EAAE,YAAYD,IAAI,CAACC,GAAG,GAAG,EAAE,GAAGD,IAAI,CAACE,OAAO,CAAC;EAC5E;AACJ;AAACC,OAAA,CAAAL,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1,18 +0,0 @@
1
- import type { ITaskRunParams } from "@webiny/tasks/types";
2
- import type { FileManagerContext } from "@webiny/api-file-manager/types";
3
- import type { ITaskResponseResult } from "@webiny/tasks/response/abstractions";
4
- export interface InvalidateCacheInput {
5
- /**
6
- * Caller of the task (e.g., `fm-before-update`, `fm-after-delete`).
7
- */
8
- caller: string;
9
- /**
10
- * Cache paths to invalidate.
11
- */
12
- paths: string[];
13
- }
14
- export declare class InvalidateCloudfrontCacheTask {
15
- private continueIfCode;
16
- run({ input, response, isCloseToTimeout }: ITaskRunParams<FileManagerContext, InvalidateCacheInput>): Promise<ITaskResponseResult>;
17
- private invalidateCache;
18
- }
@@ -1,78 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.InvalidateCloudfrontCacheTask = void 0;
7
- var _api = require("@webiny/api");
8
- var _clientCloudfront = require("@webiny/aws-sdk/client-cloudfront");
9
- var _utils = require("@webiny/utils");
10
- class ReturnContinue extends Error {}
11
- class InvalidateCloudfrontCacheTask {
12
- continueIfCode = ["TooManyInvalidationsInProgress", "Throttling"];
13
- async run({
14
- input,
15
- response,
16
- isCloseToTimeout
17
- }) {
18
- const manifest = await _api.ServiceDiscovery.load();
19
- if (!manifest) {
20
- return response.error({
21
- message: `Unable to invalidate cache due to a missing service manifest.`,
22
- code: "MISSING_SERVICE_MANIFEST",
23
- data: {
24
- manifest: "api"
25
- }
26
- });
27
- }
28
- const {
29
- distributionId
30
- } = manifest.api.cloudfront;
31
- const invalidateCache = () => {
32
- return this.invalidateCache(input.caller, distributionId, input.paths);
33
- };
34
- try {
35
- await (0, _utils.executeWithRetry)(invalidateCache, {
36
- minTimeout: 2000,
37
- forever: true,
38
- onFailedAttempt: err => {
39
- if (this.continueIfCode.includes(err.name)) {
40
- throw new ReturnContinue();
41
- }
42
- if (err.message.includes("not authorized to perform")) {
43
- throw err;
44
- }
45
- if (isCloseToTimeout()) {
46
- throw new ReturnContinue();
47
- }
48
- }
49
- });
50
- } catch (error) {
51
- if (error instanceof ReturnContinue) {
52
- return response.continue(input);
53
- }
54
- return response.error({
55
- message: error.message,
56
- code: "EXECUTE_WITH_RETRY_FAILED",
57
- data: input.paths
58
- });
59
- }
60
- return response.done();
61
- }
62
- async invalidateCache(caller, distributionId, paths) {
63
- const cloudfront = new _clientCloudfront.CloudFront();
64
- await cloudfront.createInvalidation({
65
- DistributionId: distributionId,
66
- InvalidationBatch: {
67
- CallerReference: `${new Date().getTime()}-${caller}`,
68
- Paths: {
69
- Quantity: paths.length,
70
- Items: paths
71
- }
72
- }
73
- });
74
- }
75
- }
76
- exports.InvalidateCloudfrontCacheTask = InvalidateCloudfrontCacheTask;
77
-
78
- //# sourceMappingURL=InvalidateCacheTask.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_api","require","_clientCloudfront","_utils","ReturnContinue","Error","InvalidateCloudfrontCacheTask","continueIfCode","run","input","response","isCloseToTimeout","manifest","ServiceDiscovery","load","error","message","code","data","distributionId","api","cloudfront","invalidateCache","caller","paths","executeWithRetry","minTimeout","forever","onFailedAttempt","err","includes","name","continue","done","CloudFront","createInvalidation","DistributionId","InvalidationBatch","CallerReference","Date","getTime","Paths","Quantity","length","Items","exports"],"sources":["InvalidateCacheTask.ts"],"sourcesContent":["import { ServiceDiscovery } from \"@webiny/api\";\nimport { CloudFront } from \"@webiny/aws-sdk/client-cloudfront\";\nimport type { ITaskRunParams } from \"@webiny/tasks/types\";\nimport type { FileManagerContext } from \"@webiny/api-file-manager/types\";\nimport { executeWithRetry } from \"@webiny/utils\";\nimport type { ITaskResponseResult } from \"@webiny/tasks/response/abstractions\";\n\nclass ReturnContinue extends Error {}\n\nexport interface InvalidateCacheInput {\n /**\n * Caller of the task (e.g., `fm-before-update`, `fm-after-delete`).\n */\n caller: string;\n /**\n * Cache paths to invalidate.\n */\n paths: string[];\n}\n\nexport class InvalidateCloudfrontCacheTask {\n private continueIfCode = [\"TooManyInvalidationsInProgress\", \"Throttling\"];\n\n public async run({\n input,\n response,\n isCloseToTimeout\n }: ITaskRunParams<FileManagerContext, InvalidateCacheInput>): Promise<ITaskResponseResult> {\n const manifest = await ServiceDiscovery.load();\n\n if (!manifest) {\n return response.error({\n message: `Unable to invalidate cache due to a missing service manifest.`,\n code: \"MISSING_SERVICE_MANIFEST\",\n data: {\n manifest: \"api\"\n }\n });\n }\n\n const { distributionId } = manifest.api.cloudfront;\n\n const invalidateCache = () => {\n return this.invalidateCache(input.caller, distributionId as string, input.paths);\n };\n\n try {\n await executeWithRetry(invalidateCache, {\n minTimeout: 2000,\n forever: true,\n onFailedAttempt: err => {\n if (this.continueIfCode.includes(err.name)) {\n throw new ReturnContinue();\n }\n\n if (err.message.includes(\"not authorized to perform\")) {\n throw err;\n }\n\n if (isCloseToTimeout()) {\n throw new ReturnContinue();\n }\n }\n });\n } catch (error) {\n if (error instanceof ReturnContinue) {\n return response.continue(input);\n }\n\n return response.error({\n message: error.message,\n code: \"EXECUTE_WITH_RETRY_FAILED\",\n data: input.paths\n });\n }\n\n return response.done();\n }\n\n private async invalidateCache(\n caller: string,\n distributionId: string,\n paths: string[]\n ): Promise<void> {\n const cloudfront = new CloudFront();\n await cloudfront.createInvalidation({\n DistributionId: distributionId,\n InvalidationBatch: {\n CallerReference: `${new Date().getTime()}-${caller}`,\n Paths: {\n Quantity: paths.length,\n Items: paths\n }\n }\n });\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AAGA,IAAAE,MAAA,GAAAF,OAAA;AAGA,MAAMG,cAAc,SAASC,KAAK,CAAC;AAa5B,MAAMC,6BAA6B,CAAC;EAC/BC,cAAc,GAAG,CAAC,gCAAgC,EAAE,YAAY,CAAC;EAEzE,MAAaC,GAAGA,CAAC;IACbC,KAAK;IACLC,QAAQ;IACRC;EACsD,CAAC,EAAgC;IACvF,MAAMC,QAAQ,GAAG,MAAMC,qBAAgB,CAACC,IAAI,CAAC,CAAC;IAE9C,IAAI,CAACF,QAAQ,EAAE;MACX,OAAOF,QAAQ,CAACK,KAAK,CAAC;QAClBC,OAAO,EAAE,+DAA+D;QACxEC,IAAI,EAAE,0BAA0B;QAChCC,IAAI,EAAE;UACFN,QAAQ,EAAE;QACd;MACJ,CAAC,CAAC;IACN;IAEA,MAAM;MAAEO;IAAe,CAAC,GAAGP,QAAQ,CAACQ,GAAG,CAACC,UAAU;IAElD,MAAMC,eAAe,GAAGA,CAAA,KAAM;MAC1B,OAAO,IAAI,CAACA,eAAe,CAACb,KAAK,CAACc,MAAM,EAAEJ,cAAc,EAAYV,KAAK,CAACe,KAAK,CAAC;IACpF,CAAC;IAED,IAAI;MACA,MAAM,IAAAC,uBAAgB,EAACH,eAAe,EAAE;QACpCI,UAAU,EAAE,IAAI;QAChBC,OAAO,EAAE,IAAI;QACbC,eAAe,EAAEC,GAAG,IAAI;UACpB,IAAI,IAAI,CAACtB,cAAc,CAACuB,QAAQ,CAACD,GAAG,CAACE,IAAI,CAAC,EAAE;YACxC,MAAM,IAAI3B,cAAc,CAAC,CAAC;UAC9B;UAEA,IAAIyB,GAAG,CAACb,OAAO,CAACc,QAAQ,CAAC,2BAA2B,CAAC,EAAE;YACnD,MAAMD,GAAG;UACb;UAEA,IAAIlB,gBAAgB,CAAC,CAAC,EAAE;YACpB,MAAM,IAAIP,cAAc,CAAC,CAAC;UAC9B;QACJ;MACJ,CAAC,CAAC;IACN,CAAC,CAAC,OAAOW,KAAK,EAAE;MACZ,IAAIA,KAAK,YAAYX,cAAc,EAAE;QACjC,OAAOM,QAAQ,CAACsB,QAAQ,CAACvB,KAAK,CAAC;MACnC;MAEA,OAAOC,QAAQ,CAACK,KAAK,CAAC;QAClBC,OAAO,EAAED,KAAK,CAACC,OAAO;QACtBC,IAAI,EAAE,2BAA2B;QACjCC,IAAI,EAAET,KAAK,CAACe;MAChB,CAAC,CAAC;IACN;IAEA,OAAOd,QAAQ,CAACuB,IAAI,CAAC,CAAC;EAC1B;EAEA,MAAcX,eAAeA,CACzBC,MAAc,EACdJ,cAAsB,EACtBK,KAAe,EACF;IACb,MAAMH,UAAU,GAAG,IAAIa,4BAAU,CAAC,CAAC;IACnC,MAAMb,UAAU,CAACc,kBAAkB,CAAC;MAChCC,cAAc,EAAEjB,cAAc;MAC9BkB,iBAAiB,EAAE;QACfC,eAAe,EAAE,GAAG,IAAIC,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,IAAIjB,MAAM,EAAE;QACpDkB,KAAK,EAAE;UACHC,QAAQ,EAAElB,KAAK,CAACmB,MAAM;UACtBC,KAAK,EAAEpB;QACX;MACJ;IACJ,CAAC,CAAC;EACN;AACJ;AAACqB,OAAA,CAAAvC,6BAAA,GAAAA,6BAAA","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- import type { FileManagerContext } from "@webiny/api-file-manager/types";
3
- export declare const flushCacheOnFileDelete: () => ContextPlugin<FileManagerContext>;
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.flushCacheOnFileDelete = void 0;
7
- var _api = require("@webiny/api");
8
- var _CdnPathsGenerator = require("./CdnPathsGenerator");
9
- class FlushCacheOnFileDelete {
10
- constructor(context) {
11
- this.pathsGenerator = new _CdnPathsGenerator.CdnPathsGenerator();
12
- this.context = context;
13
- context.fileManager.onFileAfterDelete.subscribe(this.onFileAfterDelete);
14
- }
15
- onFileAfterDelete = async ({
16
- file
17
- }) => {
18
- await this.context.tasks.trigger({
19
- definition: "cloudfrontInvalidateCache",
20
- input: {
21
- caller: "fm-before-delete",
22
- paths: this.pathsGenerator.generate(file)
23
- }
24
- });
25
- };
26
- }
27
- const flushCacheOnFileDelete = () => {
28
- return new _api.ContextPlugin(context => {
29
- new FlushCacheOnFileDelete(context);
30
- });
31
- };
32
- exports.flushCacheOnFileDelete = flushCacheOnFileDelete;
33
-
34
- //# sourceMappingURL=flushCacheOnFileDelete.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_api","require","_CdnPathsGenerator","FlushCacheOnFileDelete","constructor","context","pathsGenerator","CdnPathsGenerator","fileManager","onFileAfterDelete","subscribe","file","tasks","trigger","definition","input","caller","paths","generate","flushCacheOnFileDelete","ContextPlugin","exports"],"sources":["flushCacheOnFileDelete.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport type {\n FileManagerContext,\n OnFileBeforeUpdateTopicParams\n} from \"@webiny/api-file-manager/types\";\nimport { CdnPathsGenerator } from \"~/flushCdnCache/CdnPathsGenerator\";\n\nclass FlushCacheOnFileDelete {\n private readonly context: FileManagerContext;\n private readonly pathsGenerator: CdnPathsGenerator;\n\n constructor(context: FileManagerContext) {\n this.pathsGenerator = new CdnPathsGenerator();\n this.context = context;\n context.fileManager.onFileAfterDelete.subscribe(this.onFileAfterDelete);\n }\n\n private onFileAfterDelete = async ({ file }: OnFileBeforeUpdateTopicParams) => {\n await this.context.tasks.trigger({\n definition: \"cloudfrontInvalidateCache\",\n input: {\n caller: \"fm-before-delete\",\n paths: this.pathsGenerator.generate(file)\n }\n });\n };\n}\n\nexport const flushCacheOnFileDelete = () => {\n return new ContextPlugin<FileManagerContext>(context => {\n new FlushCacheOnFileDelete(context);\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAKA,IAAAC,kBAAA,GAAAD,OAAA;AAEA,MAAME,sBAAsB,CAAC;EAIzBC,WAAWA,CAACC,OAA2B,EAAE;IACrC,IAAI,CAACC,cAAc,GAAG,IAAIC,oCAAiB,CAAC,CAAC;IAC7C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtBA,OAAO,CAACG,WAAW,CAACC,iBAAiB,CAACC,SAAS,CAAC,IAAI,CAACD,iBAAiB,CAAC;EAC3E;EAEQA,iBAAiB,GAAG,MAAAA,CAAO;IAAEE;EAAoC,CAAC,KAAK;IAC3E,MAAM,IAAI,CAACN,OAAO,CAACO,KAAK,CAACC,OAAO,CAAC;MAC7BC,UAAU,EAAE,2BAA2B;MACvCC,KAAK,EAAE;QACHC,MAAM,EAAE,kBAAkB;QAC1BC,KAAK,EAAE,IAAI,CAACX,cAAc,CAACY,QAAQ,CAACP,IAAI;MAC5C;IACJ,CAAC,CAAC;EACN,CAAC;AACL;AAEO,MAAMQ,sBAAsB,GAAGA,CAAA,KAAM;EACxC,OAAO,IAAIC,kBAAa,CAAqBf,OAAO,IAAI;IACpD,IAAIF,sBAAsB,CAACE,OAAO,CAAC;EACvC,CAAC,CAAC;AACN,CAAC;AAACgB,OAAA,CAAAF,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- import type { FileManagerContext } from "@webiny/api-file-manager/types";
3
- export declare const flushCacheOnFileUpdate: () => ContextPlugin<FileManagerContext>;
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.flushCacheOnFileUpdate = void 0;
7
- var _api = require("@webiny/api");
8
- var _CdnPathsGenerator = require("./CdnPathsGenerator");
9
- class FlushCacheOnFileUpdate {
10
- constructor(context) {
11
- this.pathsGenerator = new _CdnPathsGenerator.CdnPathsGenerator();
12
- this.context = context;
13
- context.fileManager.onFileBeforeUpdate.subscribe(this.onFileBeforeUpdate);
14
- }
15
- onFileBeforeUpdate = async ({
16
- file,
17
- original
18
- }) => {
19
- const prevAccessControl = original.accessControl;
20
- const newAccessControl = file.accessControl;
21
- if (prevAccessControl?.type === newAccessControl?.type) {
22
- return;
23
- }
24
- await this.context.tasks.trigger({
25
- definition: "cloudfrontInvalidateCache",
26
- input: {
27
- caller: "fm-before-update",
28
- paths: this.pathsGenerator.generate(file)
29
- }
30
- });
31
- };
32
- }
33
- const flushCacheOnFileUpdate = () => {
34
- return new _api.ContextPlugin(context => {
35
- new FlushCacheOnFileUpdate(context);
36
- });
37
- };
38
- exports.flushCacheOnFileUpdate = flushCacheOnFileUpdate;
39
-
40
- //# sourceMappingURL=flushCacheOnFileUpdate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_api","require","_CdnPathsGenerator","FlushCacheOnFileUpdate","constructor","context","pathsGenerator","CdnPathsGenerator","fileManager","onFileBeforeUpdate","subscribe","file","original","prevAccessControl","accessControl","newAccessControl","type","tasks","trigger","definition","input","caller","paths","generate","flushCacheOnFileUpdate","ContextPlugin","exports"],"sources":["flushCacheOnFileUpdate.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport type {\n FileManagerContext,\n OnFileBeforeUpdateTopicParams\n} from \"@webiny/api-file-manager/types\";\nimport { CdnPathsGenerator } from \"~/flushCdnCache/CdnPathsGenerator\";\n\nclass FlushCacheOnFileUpdate {\n private readonly context: FileManagerContext;\n private readonly pathsGenerator: CdnPathsGenerator;\n\n constructor(context: FileManagerContext) {\n this.pathsGenerator = new CdnPathsGenerator();\n this.context = context;\n context.fileManager.onFileBeforeUpdate.subscribe(this.onFileBeforeUpdate);\n }\n\n private onFileBeforeUpdate = async ({ file, original }: OnFileBeforeUpdateTopicParams) => {\n const prevAccessControl = original.accessControl;\n const newAccessControl = file.accessControl;\n\n if (prevAccessControl?.type === newAccessControl?.type) {\n return;\n }\n\n await this.context.tasks.trigger({\n definition: \"cloudfrontInvalidateCache\",\n input: {\n caller: \"fm-before-update\",\n paths: this.pathsGenerator.generate(file)\n }\n });\n };\n}\n\nexport const flushCacheOnFileUpdate = () => {\n return new ContextPlugin<FileManagerContext>(context => {\n new FlushCacheOnFileUpdate(context);\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAKA,IAAAC,kBAAA,GAAAD,OAAA;AAEA,MAAME,sBAAsB,CAAC;EAIzBC,WAAWA,CAACC,OAA2B,EAAE;IACrC,IAAI,CAACC,cAAc,GAAG,IAAIC,oCAAiB,CAAC,CAAC;IAC7C,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtBA,OAAO,CAACG,WAAW,CAACC,kBAAkB,CAACC,SAAS,CAAC,IAAI,CAACD,kBAAkB,CAAC;EAC7E;EAEQA,kBAAkB,GAAG,MAAAA,CAAO;IAAEE,IAAI;IAAEC;EAAwC,CAAC,KAAK;IACtF,MAAMC,iBAAiB,GAAGD,QAAQ,CAACE,aAAa;IAChD,MAAMC,gBAAgB,GAAGJ,IAAI,CAACG,aAAa;IAE3C,IAAID,iBAAiB,EAAEG,IAAI,KAAKD,gBAAgB,EAAEC,IAAI,EAAE;MACpD;IACJ;IAEA,MAAM,IAAI,CAACX,OAAO,CAACY,KAAK,CAACC,OAAO,CAAC;MAC7BC,UAAU,EAAE,2BAA2B;MACvCC,KAAK,EAAE;QACHC,MAAM,EAAE,kBAAkB;QAC1BC,KAAK,EAAE,IAAI,CAAChB,cAAc,CAACiB,QAAQ,CAACZ,IAAI;MAC5C;IACJ,CAAC,CAAC;EACN,CAAC;AACL;AAEO,MAAMa,sBAAsB,GAAGA,CAAA,KAAM;EACxC,OAAO,IAAIC,kBAAa,CAAqBpB,OAAO,IAAI;IACpD,IAAIF,sBAAsB,CAACE,OAAO,CAAC;EACvC,CAAC,CAAC;AACN,CAAC;AAACqB,OAAA,CAAAF,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -1 +0,0 @@
1
- export declare const flushCdnCache: () => (import("@webiny/api").ContextPlugin<import("@webiny/api-file-manager/types").FileManagerContext> | import("@webiny/tasks").TaskDefinitionPlugin<import("@webiny/api-file-manager/types").FileManagerContext, any, import("@webiny/tasks").ITaskResponseDoneResultOutput>)[];
@@ -1,15 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.flushCdnCache = void 0;
7
- var _flushCacheOnFileUpdate = require("./flushCacheOnFileUpdate");
8
- var _flushCacheOnFileDelete = require("./flushCacheOnFileDelete");
9
- var _invalidateCacheTaskDefinition = require("./invalidateCacheTaskDefinition");
10
- const flushCdnCache = () => {
11
- return [(0, _flushCacheOnFileUpdate.flushCacheOnFileUpdate)(), (0, _flushCacheOnFileDelete.flushCacheOnFileDelete)(), (0, _invalidateCacheTaskDefinition.createInvalidateCacheTask)()];
12
- };
13
- exports.flushCdnCache = flushCdnCache;
14
-
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_flushCacheOnFileUpdate","require","_flushCacheOnFileDelete","_invalidateCacheTaskDefinition","flushCdnCache","flushCacheOnFileUpdate","flushCacheOnFileDelete","createInvalidateCacheTask","exports"],"sources":["index.ts"],"sourcesContent":["import { flushCacheOnFileUpdate } from \"~/flushCdnCache/flushCacheOnFileUpdate\";\nimport { flushCacheOnFileDelete } from \"~/flushCdnCache/flushCacheOnFileDelete\";\nimport { createInvalidateCacheTask } from \"./invalidateCacheTaskDefinition\";\n\nexport const flushCdnCache = () => {\n return [flushCacheOnFileUpdate(), flushCacheOnFileDelete(), createInvalidateCacheTask()];\n};\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,8BAAA,GAAAF,OAAA;AAEO,MAAMG,aAAa,GAAGA,CAAA,KAAM;EAC/B,OAAO,CAAC,IAAAC,8CAAsB,EAAC,CAAC,EAAE,IAAAC,8CAAsB,EAAC,CAAC,EAAE,IAAAC,wDAAyB,EAAC,CAAC,CAAC;AAC5F,CAAC;AAACC,OAAA,CAAAJ,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import type { FileManagerContext } from "@webiny/api-file-manager/types";
2
- export declare const createInvalidateCacheTask: () => import("@webiny/tasks").TaskDefinitionPlugin<FileManagerContext, any, import("@webiny/tasks").ITaskResponseDoneResultOutput>;
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createInvalidateCacheTask = void 0;
7
- var _tasks = require("@webiny/tasks");
8
- var _InvalidateCacheTask = require("./InvalidateCacheTask");
9
- const createInvalidateCacheTask = () => {
10
- return (0, _tasks.createPrivateTaskDefinition)({
11
- id: "cloudfrontInvalidateCache",
12
- title: "Invalidate Cloudfront Cache",
13
- description: "A task to invalidate Cloudfront cache by given paths.",
14
- run(params) {
15
- const taskRunner = new _InvalidateCacheTask.InvalidateCloudfrontCacheTask();
16
- return taskRunner.run(params);
17
- }
18
- });
19
- };
20
- exports.createInvalidateCacheTask = createInvalidateCacheTask;
21
-
22
- //# sourceMappingURL=invalidateCacheTaskDefinition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_tasks","require","_InvalidateCacheTask","createInvalidateCacheTask","createPrivateTaskDefinition","id","title","description","run","params","taskRunner","InvalidateCloudfrontCacheTask","exports"],"sources":["invalidateCacheTaskDefinition.ts"],"sourcesContent":["import { createPrivateTaskDefinition } from \"@webiny/tasks\";\nimport type { FileManagerContext } from \"@webiny/api-file-manager/types\";\nimport { InvalidateCloudfrontCacheTask } from \"./InvalidateCacheTask\";\n\nexport const createInvalidateCacheTask = () => {\n return createPrivateTaskDefinition<FileManagerContext>({\n id: \"cloudfrontInvalidateCache\",\n title: \"Invalidate Cloudfront Cache\",\n description: \"A task to invalidate Cloudfront cache by given paths.\",\n run(params) {\n const taskRunner = new InvalidateCloudfrontCacheTask();\n return taskRunner.run(params);\n }\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,oBAAA,GAAAD,OAAA;AAEO,MAAME,yBAAyB,GAAGA,CAAA,KAAM;EAC3C,OAAO,IAAAC,kCAA2B,EAAqB;IACnDC,EAAE,EAAE,2BAA2B;IAC/BC,KAAK,EAAE,6BAA6B;IACpCC,WAAW,EAAE,uDAAuD;IACpEC,GAAGA,CAACC,MAAM,EAAE;MACR,MAAMC,UAAU,GAAG,IAAIC,kDAA6B,CAAC,CAAC;MACtD,OAAOD,UAAU,CAACF,GAAG,CAACC,MAAM,CAAC;IACjC;EACJ,CAAC,CAAC;AACN,CAAC;AAACG,OAAA,CAAAT,yBAAA,GAAAA,yBAAA","ignoreList":[]}
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"names":["_graphqlFileStorageS","_interopRequireDefault","require","_fileStorageS","_addFileMetadata","_flushCdnCache","_FileUploadModifier","_createAssetDelivery","_createCustomAssetDelivery","_default","fileStorageS3","graphqlFileStorageS3","addFileMetadata","flushCdnCache","exports","default"],"sources":["index.ts"],"sourcesContent":["import graphqlFileStorageS3 from \"./plugins/graphqlFileStorageS3\";\nimport fileStorageS3 from \"./plugins/fileStorageS3\";\nimport { addFileMetadata } from \"./plugins/addFileMetadata\";\nimport { flushCdnCache } from \"~/flushCdnCache\";\n\nexport { createFileUploadModifier } from \"./utils/FileUploadModifier\";\nexport { createAssetDelivery } from \"./assetDelivery/createAssetDelivery\";\nexport { createCustomAssetDelivery } from \"./assetDelivery/createCustomAssetDelivery\";\n\nexport default () => [fileStorageS3(), graphqlFileStorageS3, addFileMetadata(), flushCdnCache()];\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAEA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,oBAAA,GAAAL,OAAA;AACA,IAAAM,0BAAA,GAAAN,OAAA;AAAsF,IAAAO,QAAA,GAEvEA,CAAA,KAAM,CAAC,IAAAC,qBAAa,EAAC,CAAC,EAAEC,4BAAoB,EAAE,IAAAC,gCAAe,EAAC,CAAC,EAAE,IAAAC,4BAAa,EAAC,CAAC,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAN,QAAA","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- import { ContextPlugin } from "@webiny/api";
2
- import type { FileManagerContext, File } from "@webiny/api-file-manager/types";
3
- export declare class MetadataWriter {
4
- private readonly bucket;
5
- constructor(bucket: string);
6
- write(files: File[]): Promise<void>;
7
- private getS3;
8
- private getMetadata;
9
- }
10
- export declare const addFileMetadata: () => ContextPlugin<FileManagerContext>;
@@ -1,67 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.addFileMetadata = exports.MetadataWriter = void 0;
7
- var _clientS = require("@webiny/aws-sdk/client-s3");
8
- var _api = require("@webiny/api");
9
- var _utils = require("@webiny/utils");
10
- class MetadataWriter {
11
- constructor(bucket) {
12
- this.bucket = bucket;
13
- }
14
- async write(files) {
15
- const s3 = this.getS3();
16
-
17
- /**
18
- * We need to write each file with retry.
19
- */
20
- const writers = files.map(file => {
21
- const writer = () => {
22
- return s3.putObject({
23
- Bucket: this.bucket,
24
- Key: `${file.key}.metadata`,
25
- Body: JSON.stringify(this.getMetadata(file)),
26
- ContentType: "application/json",
27
- CacheControl: "max-age=31536000"
28
- });
29
- };
30
- return (0, _utils.executeWithRetry)(writer);
31
- });
32
- await Promise.all(writers);
33
- }
34
- getS3() {
35
- return new _clientS.S3({
36
- region: process.env.AWS_REGION
37
- });
38
- }
39
- getMetadata(file) {
40
- return {
41
- id: file.id,
42
- tenant: file.tenant,
43
- locale: file.locale,
44
- size: file.size,
45
- contentType: file.type
46
- };
47
- }
48
- }
49
- exports.MetadataWriter = MetadataWriter;
50
- const addFileMetadata = () => {
51
- return new _api.ContextPlugin(context => {
52
- const metadataWriter = new MetadataWriter(String(process.env.S3_BUCKET));
53
- context.fileManager.onFileAfterCreate.subscribe(({
54
- file
55
- }) => {
56
- return metadataWriter.write([file]);
57
- });
58
- context.fileManager.onFileAfterBatchCreate.subscribe(({
59
- files
60
- }) => {
61
- return metadataWriter.write(files);
62
- });
63
- });
64
- };
65
- exports.addFileMetadata = addFileMetadata;
66
-
67
- //# sourceMappingURL=addFileMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_clientS","require","_api","_utils","MetadataWriter","constructor","bucket","write","files","s3","getS3","writers","map","file","writer","putObject","Bucket","Key","key","Body","JSON","stringify","getMetadata","ContentType","CacheControl","executeWithRetry","Promise","all","S3","region","process","env","AWS_REGION","id","tenant","locale","size","contentType","type","exports","addFileMetadata","ContextPlugin","context","metadataWriter","String","S3_BUCKET","fileManager","onFileAfterCreate","subscribe","onFileAfterBatchCreate"],"sources":["addFileMetadata.ts"],"sourcesContent":["import { S3 } from \"@webiny/aws-sdk/client-s3\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport type { FileManagerContext, File } from \"@webiny/api-file-manager/types\";\nimport { executeWithRetry } from \"@webiny/utils\";\n\nexport class MetadataWriter {\n private readonly bucket: string;\n\n constructor(bucket: string) {\n this.bucket = bucket;\n }\n\n async write(files: File[]) {\n const s3 = this.getS3();\n\n /**\n * We need to write each file with retry.\n */\n const writers = files.map(file => {\n const writer = () => {\n return s3.putObject({\n Bucket: this.bucket,\n Key: `${file.key}.metadata`,\n Body: JSON.stringify(this.getMetadata(file)),\n ContentType: \"application/json\",\n CacheControl: \"max-age=31536000\"\n });\n };\n\n return executeWithRetry(writer);\n });\n\n await Promise.all(writers);\n }\n\n private getS3() {\n return new S3({ region: process.env.AWS_REGION });\n }\n\n private getMetadata(file: File) {\n return {\n id: file.id,\n tenant: file.tenant,\n locale: file.locale,\n size: file.size,\n contentType: file.type\n };\n }\n}\n\nexport const addFileMetadata = () => {\n return new ContextPlugin<FileManagerContext>(context => {\n const metadataWriter = new MetadataWriter(String(process.env.S3_BUCKET));\n\n context.fileManager.onFileAfterCreate.subscribe(({ file }) => {\n return metadataWriter.write([file]);\n });\n\n context.fileManager.onFileAfterBatchCreate.subscribe(({ files }) => {\n return metadataWriter.write(files);\n });\n });\n};\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,IAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AAEO,MAAMG,cAAc,CAAC;EAGxBC,WAAWA,CAACC,MAAc,EAAE;IACxB,IAAI,CAACA,MAAM,GAAGA,MAAM;EACxB;EAEA,MAAMC,KAAKA,CAACC,KAAa,EAAE;IACvB,MAAMC,EAAE,GAAG,IAAI,CAACC,KAAK,CAAC,CAAC;;IAEvB;AACR;AACA;IACQ,MAAMC,OAAO,GAAGH,KAAK,CAACI,GAAG,CAACC,IAAI,IAAI;MAC9B,MAAMC,MAAM,GAAGA,CAAA,KAAM;QACjB,OAAOL,EAAE,CAACM,SAAS,CAAC;UAChBC,MAAM,EAAE,IAAI,CAACV,MAAM;UACnBW,GAAG,EAAE,GAAGJ,IAAI,CAACK,GAAG,WAAW;UAC3BC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACC,WAAW,CAACT,IAAI,CAAC,CAAC;UAC5CU,WAAW,EAAE,kBAAkB;UAC/BC,YAAY,EAAE;QAClB,CAAC,CAAC;MACN,CAAC;MAED,OAAO,IAAAC,uBAAgB,EAACX,MAAM,CAAC;IACnC,CAAC,CAAC;IAEF,MAAMY,OAAO,CAACC,GAAG,CAAChB,OAAO,CAAC;EAC9B;EAEQD,KAAKA,CAAA,EAAG;IACZ,OAAO,IAAIkB,WAAE,CAAC;MAAEC,MAAM,EAAEC,OAAO,CAACC,GAAG,CAACC;IAAW,CAAC,CAAC;EACrD;EAEQV,WAAWA,CAACT,IAAU,EAAE;IAC5B,OAAO;MACHoB,EAAE,EAAEpB,IAAI,CAACoB,EAAE;MACXC,MAAM,EAAErB,IAAI,CAACqB,MAAM;MACnBC,MAAM,EAAEtB,IAAI,CAACsB,MAAM;MACnBC,IAAI,EAAEvB,IAAI,CAACuB,IAAI;MACfC,WAAW,EAAExB,IAAI,CAACyB;IACtB,CAAC;EACL;AACJ;AAACC,OAAA,CAAAnC,cAAA,GAAAA,cAAA;AAEM,MAAMoC,eAAe,GAAGA,CAAA,KAAM;EACjC,OAAO,IAAIC,kBAAa,CAAqBC,OAAO,IAAI;IACpD,MAAMC,cAAc,GAAG,IAAIvC,cAAc,CAACwC,MAAM,CAACd,OAAO,CAACC,GAAG,CAACc,SAAS,CAAC,CAAC;IAExEH,OAAO,CAACI,WAAW,CAACC,iBAAiB,CAACC,SAAS,CAAC,CAAC;MAAEnC;IAAK,CAAC,KAAK;MAC1D,OAAO8B,cAAc,CAACpC,KAAK,CAAC,CAACM,IAAI,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF6B,OAAO,CAACI,WAAW,CAACG,sBAAsB,CAACD,SAAS,CAAC,CAAC;MAAExC;IAAM,CAAC,KAAK;MAChE,OAAOmC,cAAc,CAACpC,KAAK,CAACC,KAAK,CAAC;IACtC,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAC+B,OAAA,CAAAC,eAAA,GAAAA,eAAA","ignoreList":[]}
@@ -1,4 +0,0 @@
1
- import type { FileManagerContext, FilePermission } from "@webiny/api-file-manager/types";
2
- export declare const checkPermissions: (context: FileManagerContext, check?: {
3
- rwd?: string;
4
- }) => Promise<FilePermission[]>;
@@ -1,44 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.checkPermissions = void 0;
7
- var _apiSecurity = require("@webiny/api-security");
8
- const checkPermissions = async (context, check = {}) => {
9
- const filePermissions = await context.security.getPermissions("fm.file");
10
- const relevantFilePermissions = filePermissions.filter(current => {
11
- if (check.rwd && !hasRwd(current, check.rwd)) {
12
- return false;
13
- }
14
- return true;
15
- });
16
- if (relevantFilePermissions.length === 0) {
17
- throw new _apiSecurity.NotAuthorizedError();
18
- }
19
- return relevantFilePermissions;
20
- };
21
- exports.checkPermissions = checkPermissions;
22
- const hasRwd = (filesFilePermissions, rwd) => {
23
- if (!Array.isArray(filesFilePermissions)) {
24
- filesFilePermissions = [filesFilePermissions];
25
- }
26
- if (!rwd) {
27
- return true;
28
- }
29
-
30
- // Is there a permission that doesn't restrict RWD permissions, that means all RWD permissions are allowed.
31
- const permissionWithoutRwdRestrictions = filesFilePermissions.some(permission => {
32
- return typeof permission.rwd !== "string";
33
- });
34
- if (permissionWithoutRwdRestrictions) {
35
- return true;
36
- }
37
-
38
- // If there is no permission that doesn't restrict RWD permissions, that means we need to check if the RWD.
39
- return filesFilePermissions.some(permission => {
40
- return permission.rwd && permission.rwd.includes(rwd);
41
- });
42
- };
43
-
44
- //# sourceMappingURL=checkPermissions.js.map