@webiny/api-file-manager-s3 6.0.0-beta.0 → 6.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +11 -1
  2. package/assetDelivery/assetDeliveryConfig.d.ts +2 -6
  3. package/assetDelivery/assetDeliveryConfig.js +24 -23
  4. package/assetDelivery/assetDeliveryConfig.js.map +1 -1
  5. package/assetDelivery/createAssetDelivery.d.ts +3 -3
  6. package/assetDelivery/createAssetDelivery.js +15 -12
  7. package/assetDelivery/createAssetDelivery.js.map +1 -1
  8. package/assetDelivery/index.d.ts +8 -9
  9. package/assetDelivery/index.js +8 -68
  10. package/assetDelivery/index.js.map +1 -1
  11. package/assetDelivery/s3/S3AssetResolver.d.ts +8 -5
  12. package/assetDelivery/s3/S3AssetResolver.js +19 -27
  13. package/assetDelivery/s3/S3AssetResolver.js.map +1 -1
  14. package/assetDelivery/s3/S3ContentsReader.d.ts +2 -3
  15. package/assetDelivery/s3/S3ContentsReader.js +1 -8
  16. package/assetDelivery/s3/S3ContentsReader.js.map +1 -1
  17. package/assetDelivery/s3/S3ErrorAssetReply.js +2 -9
  18. package/assetDelivery/s3/S3ErrorAssetReply.js.map +1 -1
  19. package/assetDelivery/s3/S3OutputStrategy.d.ts +4 -3
  20. package/assetDelivery/s3/S3OutputStrategy.js +12 -17
  21. package/assetDelivery/s3/S3OutputStrategy.js.map +1 -1
  22. package/assetDelivery/s3/S3RedirectAssetReply.js +4 -11
  23. package/assetDelivery/s3/S3RedirectAssetReply.js.map +1 -1
  24. package/assetDelivery/s3/S3StreamAssetReply.d.ts +2 -1
  25. package/assetDelivery/s3/S3StreamAssetReply.js +4 -11
  26. package/assetDelivery/s3/S3StreamAssetReply.js.map +1 -1
  27. package/assetDelivery/s3/SharpTransform.d.ts +2 -2
  28. package/assetDelivery/s3/SharpTransform.js +63 -37
  29. package/assetDelivery/s3/SharpTransform.js.map +1 -1
  30. package/assetDelivery/s3/transformation/AssetKeyGenerator.d.ts +1 -1
  31. package/assetDelivery/s3/transformation/AssetKeyGenerator.js +3 -12
  32. package/assetDelivery/s3/transformation/AssetKeyGenerator.js.map +1 -1
  33. package/assetDelivery/s3/transformation/CallableContentsReader.d.ts +1 -2
  34. package/assetDelivery/s3/transformation/CallableContentsReader.js +1 -8
  35. package/assetDelivery/s3/transformation/CallableContentsReader.js.map +1 -1
  36. package/assetDelivery/s3/transformation/WidthCollection.js +1 -8
  37. package/assetDelivery/s3/transformation/WidthCollection.js.map +1 -1
  38. package/assetDelivery/s3/transformation/utils.d.ts +1 -3
  39. package/assetDelivery/s3/transformation/utils.js +23 -19
  40. package/assetDelivery/s3/transformation/utils.js.map +1 -1
  41. package/assetDelivery/threatDetection/ObjectKey.d.ts +7 -0
  42. package/assetDelivery/threatDetection/ObjectKey.js +17 -0
  43. package/assetDelivery/threatDetection/ObjectKey.js.map +1 -0
  44. package/assetDelivery/threatDetection/createThreatDetectionEventHandler.d.ts +2 -0
  45. package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js +51 -0
  46. package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js.map +1 -0
  47. package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.d.ts +2 -0
  48. package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.js +6 -0
  49. package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.js.map +1 -0
  50. package/assetDelivery/threatDetection/index.d.ts +2 -0
  51. package/assetDelivery/threatDetection/index.js +4 -0
  52. package/assetDelivery/threatDetection/index.js.map +1 -0
  53. package/assetDelivery/threatDetection/processThreatScanResult.d.ts +3 -0
  54. package/assetDelivery/threatDetection/processThreatScanResult.js +65 -0
  55. package/assetDelivery/threatDetection/processThreatScanResult.js.map +1 -0
  56. package/assetDelivery/threatDetection/types.d.ts +9 -0
  57. package/assetDelivery/threatDetection/types.js +3 -0
  58. package/assetDelivery/threatDetection/types.js.map +1 -0
  59. package/assetDelivery/types.d.ts +10 -0
  60. package/assetDelivery/types.js +3 -0
  61. package/assetDelivery/types.js.map +1 -0
  62. package/enterprise/ApplyThreatScanning/CreateFileWithThreatScanDecorator.d.ts +11 -0
  63. package/enterprise/ApplyThreatScanning/CreateFileWithThreatScanDecorator.js +19 -0
  64. package/enterprise/ApplyThreatScanning/CreateFileWithThreatScanDecorator.js.map +1 -0
  65. package/enterprise/ApplyThreatScanning/feature.d.ts +1 -0
  66. package/enterprise/ApplyThreatScanning/feature.js +10 -0
  67. package/enterprise/ApplyThreatScanning/feature.js.map +1 -0
  68. package/features/DeleteFileFromBucket/DeleteFileFromBucketHandler.d.ts +15 -0
  69. package/features/DeleteFileFromBucket/DeleteFileFromBucketHandler.js +36 -0
  70. package/features/DeleteFileFromBucket/DeleteFileFromBucketHandler.js.map +1 -0
  71. package/features/DeleteFileFromBucket/DeleteS3FolderTask.d.ts +31 -0
  72. package/features/DeleteFileFromBucket/DeleteS3FolderTask.js +60 -0
  73. package/features/DeleteFileFromBucket/DeleteS3FolderTask.js.map +1 -0
  74. package/features/DeleteFileFromBucket/feature.d.ts +1 -0
  75. package/features/DeleteFileFromBucket/feature.js +12 -0
  76. package/features/DeleteFileFromBucket/feature.js.map +1 -0
  77. package/features/ExtractMetadata/ExtractMetadataHandler.d.ts +11 -0
  78. package/features/ExtractMetadata/ExtractMetadataHandler.js +26 -0
  79. package/features/ExtractMetadata/ExtractMetadataHandler.js.map +1 -0
  80. package/features/ExtractMetadata/ExtractMetadataTask.d.ts +23 -0
  81. package/features/ExtractMetadata/ExtractMetadataTask.js +128 -0
  82. package/features/ExtractMetadata/ExtractMetadataTask.js.map +1 -0
  83. package/features/ExtractMetadata/feature.d.ts +1 -0
  84. package/features/ExtractMetadata/feature.js +12 -0
  85. package/features/ExtractMetadata/feature.js.map +1 -0
  86. package/features/FlushCache/FlushCacheOnFileDeleteHandler.d.ts +12 -0
  87. package/features/FlushCache/FlushCacheOnFileDeleteHandler.js +27 -0
  88. package/features/FlushCache/FlushCacheOnFileDeleteHandler.js.map +1 -0
  89. package/features/FlushCache/FlushCacheOnFileUpdateHandler.d.ts +12 -0
  90. package/features/FlushCache/FlushCacheOnFileUpdateHandler.js +35 -0
  91. package/features/FlushCache/FlushCacheOnFileUpdateHandler.js.map +1 -0
  92. package/features/FlushCache/InvalidateCacheTask.d.ts +25 -0
  93. package/features/FlushCache/InvalidateCacheTask.js +86 -0
  94. package/features/FlushCache/InvalidateCacheTask.js.map +1 -0
  95. package/features/FlushCache/feature.d.ts +1 -0
  96. package/features/FlushCache/feature.js +14 -0
  97. package/features/FlushCache/feature.js.map +1 -0
  98. package/features/WriteFileMetadata/MetadataReader.d.ts +14 -0
  99. package/features/WriteFileMetadata/MetadataReader.js +14 -0
  100. package/features/WriteFileMetadata/MetadataReader.js.map +1 -0
  101. package/features/WriteFileMetadata/MetadataWriter.d.ts +10 -0
  102. package/features/WriteFileMetadata/MetadataWriter.js +28 -0
  103. package/features/WriteFileMetadata/MetadataWriter.js.map +1 -0
  104. package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.d.ts +12 -0
  105. package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js +21 -0
  106. package/features/WriteFileMetadata/WriteMetadataAfterBatchCreateHandler.js.map +1 -0
  107. package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.d.ts +12 -0
  108. package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.js +21 -0
  109. package/features/WriteFileMetadata/WriteMetadataAfterCreateHandler.js.map +1 -0
  110. package/features/WriteFileMetadata/feature.d.ts +1 -0
  111. package/features/WriteFileMetadata/feature.js +12 -0
  112. package/features/WriteFileMetadata/feature.js.map +1 -0
  113. package/graphql/checkPermissions.d.ts +5 -0
  114. package/{plugins → graphql}/checkPermissions.js +4 -11
  115. package/graphql/checkPermissions.js.map +1 -0
  116. package/graphql/schema.d.ts +1 -0
  117. package/{plugins/graphqlFileStorageS3.js → graphql/schema.js} +49 -57
  118. package/graphql/schema.js.map +1 -0
  119. package/index.d.ts +4 -5
  120. package/index.js +21 -32
  121. package/index.js.map +1 -1
  122. package/multiPartUpload/CompleteMultiPartUploadUseCase.d.ts +1 -1
  123. package/multiPartUpload/CompleteMultiPartUploadUseCase.js +4 -11
  124. package/multiPartUpload/CompleteMultiPartUploadUseCase.js.map +1 -1
  125. package/multiPartUpload/CreateMultiPartUploadUseCase.d.ts +2 -2
  126. package/multiPartUpload/CreateMultiPartUploadUseCase.js +3 -10
  127. package/multiPartUpload/CreateMultiPartUploadUseCase.js.map +1 -1
  128. package/package.json +23 -29
  129. package/types.d.ts +1 -1
  130. package/types.js +1 -5
  131. package/types.js.map +1 -1
  132. package/utils/CdnPathsGenerator.d.ts +3 -0
  133. package/utils/CdnPathsGenerator.js +7 -0
  134. package/utils/CdnPathsGenerator.js.map +1 -0
  135. package/utils/FileExtension.d.ts +1 -1
  136. package/utils/FileExtension.js +3 -10
  137. package/utils/FileExtension.js.map +1 -1
  138. package/utils/FileKey.d.ts +1 -1
  139. package/utils/FileKey.js +5 -13
  140. package/utils/FileKey.js.map +1 -1
  141. package/utils/FileKey.test.js +8 -9
  142. package/utils/FileKey.test.js.map +1 -1
  143. package/utils/FileNormalizer.d.ts +2 -2
  144. package/utils/FileNormalizer.js +5 -12
  145. package/utils/FileNormalizer.js.map +1 -1
  146. package/utils/FileUploadModifier.d.ts +1 -1
  147. package/utils/FileUploadModifier.js +6 -16
  148. package/utils/FileUploadModifier.js.map +1 -1
  149. package/utils/createFileNormalizerFromContext.d.ts +2 -2
  150. package/utils/createFileNormalizerFromContext.js +5 -12
  151. package/utils/createFileNormalizerFromContext.js.map +1 -1
  152. package/utils/getPresignedPostPayload.d.ts +4 -3
  153. package/utils/getPresignedPostPayload.js +10 -15
  154. package/utils/getPresignedPostPayload.js.map +1 -1
  155. package/utils/mimeTypes.js +5 -13
  156. package/utils/mimeTypes.js.map +1 -1
  157. package/utils/uploadFileToS3.d.ts +1 -3
  158. package/utils/uploadFileToS3.js +7 -20
  159. package/utils/uploadFileToS3.js.map +1 -1
  160. package/assetDelivery/createCustomAssetDelivery.d.ts +0 -12
  161. package/assetDelivery/createCustomAssetDelivery.js +0 -28
  162. package/assetDelivery/createCustomAssetDelivery.js.map +0 -1
  163. package/assetDelivery/customAssets/CustomAsset.d.ts +0 -6
  164. package/assetDelivery/customAssets/CustomAsset.js +0 -14
  165. package/assetDelivery/customAssets/CustomAsset.js.map +0 -1
  166. package/assetDelivery/customAssets/CustomAssetProcessor.d.ts +0 -10
  167. package/assetDelivery/customAssets/CustomAssetProcessor.js +0 -25
  168. package/assetDelivery/customAssets/CustomAssetProcessor.js.map +0 -1
  169. package/assetDelivery/customAssets/S3CustomAssetResolver.d.ts +0 -15
  170. package/assetDelivery/customAssets/S3CustomAssetResolver.js +0 -90
  171. package/assetDelivery/customAssets/S3CustomAssetResolver.js.map +0 -1
  172. package/assetDelivery/customAssets/customAssetDeliveryConfig.d.ts +0 -1
  173. package/assetDelivery/customAssets/customAssetDeliveryConfig.js +0 -30
  174. package/assetDelivery/customAssets/customAssetDeliveryConfig.js.map +0 -1
  175. package/assetDelivery/s3/S3AssetMetadataReader.d.ts +0 -15
  176. package/assetDelivery/s3/S3AssetMetadataReader.js +0 -36
  177. package/assetDelivery/s3/S3AssetMetadataReader.js.map +0 -1
  178. package/assetDelivery/s3/transformation/legacyUtils.d.ts +0 -12
  179. package/assetDelivery/s3/transformation/legacyUtils.js +0 -34
  180. package/assetDelivery/s3/transformation/legacyUtils.js.map +0 -1
  181. package/flushCdnCache/CdnPathsGenerator.d.ts +0 -4
  182. package/flushCdnCache/CdnPathsGenerator.js +0 -14
  183. package/flushCdnCache/CdnPathsGenerator.js.map +0 -1
  184. package/flushCdnCache/InvalidateCacheTask.d.ts +0 -18
  185. package/flushCdnCache/InvalidateCacheTask.js +0 -78
  186. package/flushCdnCache/InvalidateCacheTask.js.map +0 -1
  187. package/flushCdnCache/flushCacheOnFileDelete.d.ts +0 -3
  188. package/flushCdnCache/flushCacheOnFileDelete.js +0 -34
  189. package/flushCdnCache/flushCacheOnFileDelete.js.map +0 -1
  190. package/flushCdnCache/flushCacheOnFileUpdate.d.ts +0 -3
  191. package/flushCdnCache/flushCacheOnFileUpdate.js +0 -40
  192. package/flushCdnCache/flushCacheOnFileUpdate.js.map +0 -1
  193. package/flushCdnCache/index.d.ts +0 -1
  194. package/flushCdnCache/index.js +0 -15
  195. package/flushCdnCache/index.js.map +0 -1
  196. package/flushCdnCache/invalidateCacheTaskDefinition.d.ts +0 -2
  197. package/flushCdnCache/invalidateCacheTaskDefinition.js +0 -22
  198. package/flushCdnCache/invalidateCacheTaskDefinition.js.map +0 -1
  199. package/plugins/addFileMetadata.d.ts +0 -10
  200. package/plugins/addFileMetadata.js +0 -67
  201. package/plugins/addFileMetadata.js.map +0 -1
  202. package/plugins/checkPermissions.d.ts +0 -4
  203. package/plugins/checkPermissions.js.map +0 -1
  204. package/plugins/fileStorageS3.d.ts +0 -3
  205. package/plugins/fileStorageS3.js +0 -60
  206. package/plugins/fileStorageS3.js.map +0 -1
  207. package/plugins/graphqlFileStorageS3.d.ts +0 -4
  208. package/plugins/graphqlFileStorageS3.js.map +0 -1
@@ -1,23 +1,17 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _clientS = require("@webiny/aws-sdk/client-s3");
9
- var _pMap = _interopRequireDefault(require("p-map"));
10
- var _responses = require("@webiny/handler-graphql/responses");
11
- var _getPresignedPostPayload = require("../utils/getPresignedPostPayload");
12
- var _error = _interopRequireDefault(require("@webiny/error"));
13
- var _checkPermissions = require("./checkPermissions");
14
- var _CreateMultiPartUploadUseCase = require("../multiPartUpload/CreateMultiPartUploadUseCase");
15
- var _CompleteMultiPartUploadUseCase = require("../multiPartUpload/CompleteMultiPartUploadUseCase");
16
- var _createFileNormalizerFromContext = require("../utils/createFileNormalizerFromContext");
17
- const plugin = {
18
- type: "graphql-schema",
19
- name: "graphql-schema-api-file-manager-s3",
20
- schema: {
1
+ import pMap from "p-map";
2
+ import { createGraphQLSchemaPlugin } from "@webiny/handler-graphql";
3
+ import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
4
+ import { S3 } from "@webiny/aws-sdk/client-s3/index.js";
5
+ import { ErrorResponse, Response } from "@webiny/handler-graphql/responses.js";
6
+ import { getPresignedPostPayload } from "../utils/getPresignedPostPayload.js";
7
+ import { checkPermissions } from "./checkPermissions.js";
8
+ import { CreateMultiPartUploadUseCase } from "../multiPartUpload/CreateMultiPartUploadUseCase.js";
9
+ import { CompleteMultiPartUploadUseCase } from "../multiPartUpload/CompleteMultiPartUploadUseCase.js";
10
+ import { createFileNormalizerFromContext } from "../utils/createFileNormalizerFromContext.js";
11
+ import { GetSettingsUseCase } from "@webiny/api-file-manager/features/settings/GetSettings/abstractions.js";
12
+ import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
13
+ export const createS3GraphQLSchema = () => {
14
+ return createGraphQLSchemaPlugin({
21
15
  typeDefs: /* GraphQL */`
22
16
  type UploadFileResponseDataFile {
23
17
  id: ID!
@@ -28,6 +22,7 @@ const plugin = {
28
22
  }
29
23
 
30
24
  input PreSignedPostPayloadInput {
25
+ id: ID
31
26
  name: String!
32
27
  type: String!
33
28
  size: Long!
@@ -109,22 +104,20 @@ const plugin = {
109
104
  resolvers: {
110
105
  FmQuery: {
111
106
  getPreSignedPostPayload: async (_, args, context) => {
107
+ const identityContext = context.container.resolve(IdentityContext);
108
+ const getSettings = context.container.resolve(GetSettingsUseCase);
112
109
  try {
113
- await (0, _checkPermissions.checkPermissions)(context, {
110
+ await checkPermissions(identityContext, {
114
111
  rwd: "w"
115
112
  });
116
113
  const data = args.data;
117
- const settings = await context.fileManager.getSettings();
118
- if (!settings) {
119
- throw new _error.default("Missing File Manager Settings.", "FILE_MANAGER_SETTINGS_ERROR", {
120
- file: data
121
- });
122
- }
123
- const normalizer = (0, _createFileNormalizerFromContext.createFileNormalizerFromContext)(context);
124
- const presignedPayload = await (0, _getPresignedPostPayload.getPresignedPostPayload)(await normalizer.normalizeFile(data), settings);
125
- return new _responses.Response(presignedPayload);
114
+ const settingsResult = await getSettings.execute();
115
+ const settings = settingsResult.value;
116
+ const normalizer = createFileNormalizerFromContext(context);
117
+ const presignedPayload = await getPresignedPostPayload(await normalizer.normalizeFile(data), settings, context.container.resolve(TenantContext));
118
+ return new Response(presignedPayload);
126
119
  } catch (e) {
127
- return new _responses.ErrorResponse({
120
+ return new ErrorResponse({
128
121
  message: e.message,
129
122
  code: e.code,
130
123
  data: e.data
@@ -132,24 +125,22 @@ const plugin = {
132
125
  }
133
126
  },
134
127
  getPreSignedPostPayloads: async (_, args, context) => {
135
- await (0, _checkPermissions.checkPermissions)(context, {
128
+ const identityContext = context.container.resolve(IdentityContext);
129
+ const getSettings = context.container.resolve(GetSettingsUseCase);
130
+ await checkPermissions(identityContext, {
136
131
  rwd: "w"
137
132
  });
138
133
  const files = args.data;
139
134
  try {
140
- const settings = await context.fileManager.getSettings();
141
- if (!settings) {
142
- throw new _error.default("Missing File Manager Settings.", "FILE_MANAGER_SETTINGS_ERROR", {
143
- files
144
- });
145
- }
146
- const normalizer = (0, _createFileNormalizerFromContext.createFileNormalizerFromContext)(context);
147
- const presignedPayloads = await (0, _pMap.default)(files, async data => {
148
- return (0, _getPresignedPostPayload.getPresignedPostPayload)(await normalizer.normalizeFile(data), settings);
135
+ const settingsResult = await getSettings.execute();
136
+ const settings = settingsResult.value;
137
+ const normalizer = createFileNormalizerFromContext(context);
138
+ const presignedPayloads = await pMap(files, async data => {
139
+ return getPresignedPostPayload(await normalizer.normalizeFile(data), settings, context.container.resolve(TenantContext));
149
140
  });
150
- return new _responses.Response(presignedPayloads);
141
+ return new Response(presignedPayloads);
151
142
  } catch (e) {
152
- return new _responses.ErrorResponse({
143
+ return new ErrorResponse({
153
144
  message: e.message,
154
145
  code: e.code,
155
146
  data: e.data
@@ -159,22 +150,23 @@ const plugin = {
159
150
  },
160
151
  FmMutation: {
161
152
  createMultiPartUpload: async (_, args, context) => {
162
- await (0, _checkPermissions.checkPermissions)(context, {
153
+ const identityContext = context.container.resolve(IdentityContext);
154
+ await checkPermissions(identityContext, {
163
155
  rwd: "w"
164
156
  });
165
- const s3Client = new _clientS.S3({
157
+ const s3Client = new S3({
166
158
  region: process.env.AWS_REGION
167
159
  });
168
160
  try {
169
- const useCase = new _CreateMultiPartUploadUseCase.CreateMultiPartUploadUseCase(String(process.env.S3_BUCKET), s3Client);
170
- const normalizer = (0, _createFileNormalizerFromContext.createFileNormalizerFromContext)(context);
161
+ const useCase = new CreateMultiPartUploadUseCase(String(process.env.S3_BUCKET), s3Client);
162
+ const normalizer = createFileNormalizerFromContext(context);
171
163
  const multiPartUpload = await useCase.execute({
172
164
  file: await normalizer.normalizeFile(args.data),
173
165
  numberOfParts: args.numberOfParts
174
166
  });
175
- return new _responses.Response(multiPartUpload);
167
+ return new Response(multiPartUpload);
176
168
  } catch (e) {
177
- return new _responses.ErrorResponse({
169
+ return new ErrorResponse({
178
170
  message: e.message,
179
171
  code: e.code,
180
172
  data: e.data
@@ -182,21 +174,22 @@ const plugin = {
182
174
  }
183
175
  },
184
176
  completeMultiPartUpload: async (_, args, context) => {
185
- await (0, _checkPermissions.checkPermissions)(context, {
177
+ const identityContext = context.container.resolve(IdentityContext);
178
+ await checkPermissions(identityContext, {
186
179
  rwd: "w"
187
180
  });
188
- const s3Client = new _clientS.S3({
181
+ const s3Client = new S3({
189
182
  region: process.env.AWS_REGION
190
183
  });
191
184
  try {
192
- const useCase = new _CompleteMultiPartUploadUseCase.CompleteMultiPartUploadUseCase(String(process.env.S3_BUCKET), s3Client);
185
+ const useCase = new CompleteMultiPartUploadUseCase(String(process.env.S3_BUCKET), s3Client);
193
186
  await useCase.execute({
194
187
  fileKey: args.fileKey,
195
188
  uploadId: args.uploadId
196
189
  });
197
- return new _responses.Response(true);
190
+ return new Response(true);
198
191
  } catch (e) {
199
- return new _responses.ErrorResponse({
192
+ return new ErrorResponse({
200
193
  message: e.message,
201
194
  code: e.code,
202
195
  data: e.data
@@ -205,8 +198,7 @@ const plugin = {
205
198
  }
206
199
  }
207
200
  }
208
- }
201
+ });
209
202
  };
210
- var _default = exports.default = plugin;
211
203
 
212
- //# sourceMappingURL=graphqlFileStorageS3.js.map
204
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pMap","createGraphQLSchemaPlugin","IdentityContext","S3","ErrorResponse","Response","getPresignedPostPayload","checkPermissions","CreateMultiPartUploadUseCase","CompleteMultiPartUploadUseCase","createFileNormalizerFromContext","GetSettingsUseCase","TenantContext","createS3GraphQLSchema","typeDefs","resolvers","FmQuery","getPreSignedPostPayload","_","args","context","identityContext","container","resolve","getSettings","rwd","data","settingsResult","execute","settings","value","normalizer","presignedPayload","normalizeFile","e","message","code","getPreSignedPostPayloads","files","presignedPayloads","FmMutation","createMultiPartUpload","s3Client","region","process","env","AWS_REGION","useCase","String","S3_BUCKET","multiPartUpload","file","numberOfParts","completeMultiPartUpload","fileKey","uploadId"],"sources":["schema.ts"],"sourcesContent":["import pMap from \"p-map\";\nimport { createGraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { ErrorResponse, Response } from \"@webiny/handler-graphql/responses.js\";\nimport { getPresignedPostPayload } from \"~/utils/getPresignedPostPayload.js\";\nimport { checkPermissions } from \"./checkPermissions.js\";\nimport type { PresignedPostPayloadData } from \"~/types.js\";\nimport { CreateMultiPartUploadUseCase } from \"~/multiPartUpload/CreateMultiPartUploadUseCase.js\";\nimport { CompleteMultiPartUploadUseCase } from \"~/multiPartUpload/CompleteMultiPartUploadUseCase.js\";\nimport { createFileNormalizerFromContext } from \"~/utils/createFileNormalizerFromContext.js\";\nimport { GetSettingsUseCase } from \"@webiny/api-file-manager/features/settings/GetSettings/abstractions.js\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\n\nexport const createS3GraphQLSchema = () => {\n return createGraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n type UploadFileResponseDataFile {\n id: ID!\n name: String!\n type: String!\n size: Long!\n key: String!\n }\n\n input PreSignedPostPayloadInput {\n id: ID\n name: String!\n type: String!\n size: Long!\n key: String\n keyPrefix: String\n }\n\n type GetPreSignedPostPayloadResponseDataFile {\n id: ID!\n name: String!\n type: String!\n size: Long!\n key: String!\n }\n\n type GetPreSignedPostPayloadResponseData {\n # Contains data that is necessary for initiating a file upload.\n data: JSON!\n file: UploadFileResponseDataFile!\n }\n\n type GetPreSignedPostPayloadResponse {\n error: FmError\n data: GetPreSignedPostPayloadResponseData\n }\n\n type MultiPartUploadFilePart {\n partNumber: Int!\n url: String!\n }\n\n type CreateMultiPartUploadResponseData {\n file: GetPreSignedPostPayloadResponseDataFile!\n uploadId: String!\n parts: [MultiPartUploadFilePart!]!\n }\n\n type CompleteMultiPartUploadResponse {\n data: Boolean\n error: FmError\n }\n\n type GetPreSignedPostPayloadsResponse {\n error: FmError\n data: [GetPreSignedPostPayloadResponseData!]!\n }\n\n extend type FmQuery {\n getPreSignedPostPayload(\n data: PreSignedPostPayloadInput!\n ): GetPreSignedPostPayloadResponse\n getPreSignedPostPayloads(\n data: [PreSignedPostPayloadInput]!\n ): GetPreSignedPostPayloadsResponse\n }\n\n type CreateMultiPartUploadResponse {\n data: CreateMultiPartUploadResponseData\n error: FmError\n }\n\n input MultiPartUploadFilePartInput {\n partNumber: Int!\n etag: String!\n }\n\n extend type FmMutation {\n createMultiPartUpload(\n data: PreSignedPostPayloadInput!\n numberOfParts: Number!\n ): CreateMultiPartUploadResponse\n\n completeMultiPartUpload(\n fileKey: String!\n uploadId: String!\n ): CompleteMultiPartUploadResponse\n }\n `,\n resolvers: {\n FmQuery: {\n getPreSignedPostPayload: async (_, args: any, context) => {\n const identityContext = context.container.resolve(IdentityContext);\n const getSettings = context.container.resolve(GetSettingsUseCase);\n\n try {\n await checkPermissions(identityContext, { rwd: \"w\" });\n\n const data = args.data as PresignedPostPayloadData;\n\n const settingsResult = await getSettings.execute();\n const settings = settingsResult.value;\n\n const normalizer = createFileNormalizerFromContext(context);\n const presignedPayload = await getPresignedPostPayload(\n await normalizer.normalizeFile(data),\n settings,\n context.container.resolve(TenantContext)\n );\n\n return new Response(presignedPayload);\n } catch (e) {\n return new ErrorResponse({\n message: e.message,\n code: e.code,\n data: e.data\n });\n }\n },\n getPreSignedPostPayloads: async (_, args, context) => {\n const identityContext = context.container.resolve(IdentityContext);\n const getSettings = context.container.resolve(GetSettingsUseCase);\n await checkPermissions(identityContext, { rwd: \"w\" });\n\n const files = args.data as PresignedPostPayloadData[];\n\n try {\n const settingsResult = await getSettings.execute();\n const settings = settingsResult.value;\n\n const normalizer = createFileNormalizerFromContext(context);\n\n const presignedPayloads = await pMap(files, async data => {\n return getPresignedPostPayload(\n await normalizer.normalizeFile(data),\n settings,\n context.container.resolve(TenantContext)\n );\n });\n\n return new Response(presignedPayloads);\n } catch (e) {\n return new ErrorResponse({\n message: e.message,\n code: e.code,\n data: e.data\n });\n }\n }\n },\n FmMutation: {\n createMultiPartUpload: async (_, args, context) => {\n const identityContext = context.container.resolve(IdentityContext);\n await checkPermissions(identityContext, { rwd: \"w\" });\n\n const s3Client = new S3({\n region: process.env.AWS_REGION\n });\n\n try {\n const useCase = new CreateMultiPartUploadUseCase(\n String(process.env.S3_BUCKET),\n s3Client\n );\n\n const normalizer = createFileNormalizerFromContext(context);\n\n const multiPartUpload = await useCase.execute({\n file: await normalizer.normalizeFile(args.data),\n numberOfParts: args.numberOfParts\n });\n\n return new Response(multiPartUpload);\n } catch (e) {\n return new ErrorResponse({\n message: e.message,\n code: e.code,\n data: e.data\n });\n }\n },\n completeMultiPartUpload: async (_, args, context) => {\n const identityContext = context.container.resolve(IdentityContext);\n await checkPermissions(identityContext, { rwd: \"w\" });\n\n const s3Client = new S3({\n region: process.env.AWS_REGION\n });\n\n try {\n const useCase = new CompleteMultiPartUploadUseCase(\n String(process.env.S3_BUCKET),\n s3Client\n );\n\n await useCase.execute({\n fileKey: args.fileKey,\n uploadId: args.uploadId\n });\n\n return new Response(true);\n } catch (e) {\n return new ErrorResponse({\n message: e.message,\n code: e.code,\n data: e.data\n });\n }\n }\n }\n }\n });\n};\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,OAAO;AACxB,SAASC,yBAAyB,QAAQ,yBAAyB;AACnE,SAASC,eAAe,QAAQ,2CAA2C;AAC3E,SAASC,EAAE,QAAQ,oCAAoC;AACvD,SAASC,aAAa,EAAEC,QAAQ,QAAQ,sCAAsC;AAC9E,SAASC,uBAAuB;AAChC,SAASC,gBAAgB;AAEzB,SAASC,4BAA4B;AACrC,SAASC,8BAA8B;AACvC,SAASC,+BAA+B;AACxC,SAASC,kBAAkB,QAAQ,wEAAwE;AAC3G,SAASC,aAAa,QAAQ,0DAA0D;AAExF,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACvC,OAAOZ,yBAAyB,CAAC;IAC7Ba,QAAQ,EAAE,aAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;IACDC,SAAS,EAAE;MACPC,OAAO,EAAE;QACLC,uBAAuB,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;UACtD,MAAMC,eAAe,GAAGD,OAAO,CAACE,SAAS,CAACC,OAAO,CAACrB,eAAe,CAAC;UAClE,MAAMsB,WAAW,GAAGJ,OAAO,CAACE,SAAS,CAACC,OAAO,CAACZ,kBAAkB,CAAC;UAEjE,IAAI;YACA,MAAMJ,gBAAgB,CAACc,eAAe,EAAE;cAAEI,GAAG,EAAE;YAAI,CAAC,CAAC;YAErD,MAAMC,IAAI,GAAGP,IAAI,CAACO,IAAgC;YAElD,MAAMC,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","ignoreList":[]}
package/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export { createFileUploadModifier } from "./utils/FileUploadModifier";
2
- export { createAssetDelivery } from "./assetDelivery/createAssetDelivery";
3
- export { createCustomAssetDelivery } from "./assetDelivery/createCustomAssetDelivery";
4
- declare const _default: () => (import("@webiny/handler-graphql/types").GraphQLSchemaPlugin<import("@webiny/api-file-manager/types").FileManagerContext> | import("@webiny/api").ContextPlugin<import("@webiny/api/types").Context> | (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>)[])[];
5
- export default _default;
1
+ import { ContextPlugin } from "@webiny/api";
2
+ export { createFileUploadModifier } from "./utils/FileUploadModifier.js";
3
+ export { createAssetDelivery } from "./assetDelivery/createAssetDelivery.js";
4
+ export declare const createFileManagerS3: () => (import("@webiny/handler-graphql/index.js").GraphQLSchemaPlugin<import("@webiny/api/types.js").Context> | ContextPlugin<import("@webiny/api/types.js").Context>)[];
package/index.js CHANGED
@@ -1,36 +1,25 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- Object.defineProperty(exports, "createAssetDelivery", {
8
- enumerable: true,
9
- get: function () {
10
- return _createAssetDelivery.createAssetDelivery;
11
- }
12
- });
13
- Object.defineProperty(exports, "createCustomAssetDelivery", {
14
- enumerable: true,
15
- get: function () {
16
- return _createCustomAssetDelivery.createCustomAssetDelivery;
17
- }
18
- });
19
- Object.defineProperty(exports, "createFileUploadModifier", {
20
- enumerable: true,
21
- get: function () {
22
- return _FileUploadModifier.createFileUploadModifier;
1
+ import { ContextPlugin } from "@webiny/api";
2
+ import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
3
+ import { createS3GraphQLSchema } from "./graphql/schema.js";
4
+ import { DeleteFileFromBucketFeature } from "./features/DeleteFileFromBucket/feature.js";
5
+ import { WriteFileMetadataFeature } from "./features/WriteFileMetadata/feature.js";
6
+ import { ApplyThreatScanningFeature } from "./enterprise/ApplyThreatScanning/feature.js";
7
+ import { FlushCacheFeature } from "./features/FlushCache/feature.js";
8
+ import { ExtractMetadataFeature } from "./features/ExtractMetadata/feature.js";
9
+ export { createFileUploadModifier } from "./utils/FileUploadModifier.js";
10
+ export { createAssetDelivery } from "./assetDelivery/createAssetDelivery.js";
11
+ const contextPlugin = new ContextPlugin(context => {
12
+ const container = context.container;
13
+ FlushCacheFeature.register(container);
14
+ DeleteFileFromBucketFeature.register(container);
15
+ ExtractMetadataFeature.register(container);
16
+ WriteFileMetadataFeature.register(container);
17
+ const wcp = container.resolve(WcpContext);
18
+ if (wcp.canUseFileManagerThreatDetection()) {
19
+ ApplyThreatScanningFeature.register(container);
23
20
  }
24
21
  });
25
- exports.default = void 0;
26
- var _graphqlFileStorageS = _interopRequireDefault(require("./plugins/graphqlFileStorageS3"));
27
- var _fileStorageS = _interopRequireDefault(require("./plugins/fileStorageS3"));
28
- var _addFileMetadata = require("./plugins/addFileMetadata");
29
- var _flushCdnCache = require("./flushCdnCache");
30
- var _FileUploadModifier = require("./utils/FileUploadModifier");
31
- var _createAssetDelivery = require("./assetDelivery/createAssetDelivery");
32
- var _createCustomAssetDelivery = require("./assetDelivery/createCustomAssetDelivery");
33
- var _default = () => [(0, _fileStorageS.default)(), _graphqlFileStorageS.default, (0, _addFileMetadata.addFileMetadata)(), (0, _flushCdnCache.flushCdnCache)()];
34
- exports.default = _default;
22
+ contextPlugin.name = `fileManagerS3.context`;
23
+ export const createFileManagerS3 = () => [contextPlugin, createS3GraphQLSchema()];
35
24
 
36
25
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
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
+ {"version":3,"names":["ContextPlugin","WcpContext","createS3GraphQLSchema","DeleteFileFromBucketFeature","WriteFileMetadataFeature","ApplyThreatScanningFeature","FlushCacheFeature","ExtractMetadataFeature","createFileUploadModifier","createAssetDelivery","contextPlugin","context","container","register","wcp","resolve","canUseFileManagerThreatDetection","name","createFileManagerS3"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/api\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { createS3GraphQLSchema } from \"./graphql/schema.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\";\nexport { createFileUploadModifier } from \"./utils/FileUploadModifier.js\";\nexport { createAssetDelivery } from \"./assetDelivery/createAssetDelivery.js\";\n\nconst contextPlugin = new ContextPlugin(context => {\n const container = context.container;\n\n FlushCacheFeature.register(container);\n DeleteFileFromBucketFeature.register(container);\n ExtractMetadataFeature.register(container);\n WriteFileMetadataFeature.register(container);\n\n const wcp = container.resolve(WcpContext);\n if (wcp.canUseFileManagerThreatDetection()) {\n ApplyThreatScanningFeature.register(container);\n }\n});\n\ncontextPlugin.name = `fileManagerS3.context`;\n\nexport const createFileManagerS3 = () => [contextPlugin, createS3GraphQLSchema()];\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,aAAa;AAC3C,SAASC,UAAU,QAAQ,mDAAmD;AAC9E,SAASC,qBAAqB;AAC9B,SAASC,2BAA2B;AACpC,SAASC,wBAAwB;AACjC,SAASC,0BAA0B;AACnC,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,wBAAwB;AACjC,SAASC,mBAAmB;AAE5B,MAAMC,aAAa,GAAG,IAAIV,aAAa,CAACW,OAAO,IAAI;EAC/C,MAAMC,SAAS,GAAGD,OAAO,CAACC,SAAS;EAEnCN,iBAAiB,CAACO,QAAQ,CAACD,SAAS,CAAC;EACrCT,2BAA2B,CAACU,QAAQ,CAACD,SAAS,CAAC;EAC/CL,sBAAsB,CAACM,QAAQ,CAACD,SAAS,CAAC;EAC1CR,wBAAwB,CAACS,QAAQ,CAACD,SAAS,CAAC;EAE5C,MAAME,GAAG,GAAGF,SAAS,CAACG,OAAO,CAACd,UAAU,CAAC;EACzC,IAAIa,GAAG,CAACE,gCAAgC,CAAC,CAAC,EAAE;IACxCX,0BAA0B,CAACQ,QAAQ,CAACD,SAAS,CAAC;EAClD;AACJ,CAAC,CAAC;AAEFF,aAAa,CAACO,IAAI,GAAG,uBAAuB;AAE5C,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM,CAACR,aAAa,EAAER,qBAAqB,CAAC,CAAC,CAAC","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { S3 } from "@webiny/aws-sdk/client-s3";
1
+ import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
2
2
  interface CompleteMultiPartUploadParams {
3
3
  fileKey: string;
4
4
  uploadId: string;
@@ -1,11 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CompleteMultiPartUploadUseCase = void 0;
7
- var _clientS = require("@webiny/aws-sdk/client-s3");
8
- class CompleteMultiPartUploadUseCase {
1
+ import { ListPartsCommand, CompleteMultipartUploadCommand } from "@webiny/aws-sdk/client-s3/index.js";
2
+ export class CompleteMultiPartUploadUseCase {
9
3
  emptyMarkerValues = [undefined, "0"];
10
4
  constructor(bucket, s3Client) {
11
5
  this.bucket = bucket;
@@ -25,7 +19,7 @@ class CompleteMultiPartUploadUseCase {
25
19
  }
26
20
  };
27
21
  try {
28
- const command = new _clientS.CompleteMultipartUploadCommand(s3Params);
22
+ const command = new CompleteMultipartUploadCommand(s3Params);
29
23
  await this.s3.send(command);
30
24
  } catch (err) {
31
25
  console.error(err);
@@ -39,7 +33,7 @@ class CompleteMultiPartUploadUseCase {
39
33
  const {
40
34
  Parts,
41
35
  PartNumberMarker
42
- } = await this.s3.send(new _clientS.ListPartsCommand({
36
+ } = await this.s3.send(new ListPartsCommand({
43
37
  ...params,
44
38
  PartNumberMarker: marker
45
39
  }));
@@ -60,6 +54,5 @@ class CompleteMultiPartUploadUseCase {
60
54
  return this.emptyMarkerValues.includes(marker);
61
55
  }
62
56
  }
63
- exports.CompleteMultiPartUploadUseCase = CompleteMultiPartUploadUseCase;
64
57
 
65
58
  //# sourceMappingURL=CompleteMultiPartUploadUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_clientS","require","CompleteMultiPartUploadUseCase","emptyMarkerValues","undefined","constructor","bucket","s3Client","s3","execute","params","uploadParams","Bucket","Key","fileKey","UploadId","uploadId","allParts","getAllUploadParts","s3Params","MultipartUpload","Parts","command","CompleteMultipartUploadCommand","send","err","console","error","parts","marker","PartNumberMarker","ListPartsCommand","forEach","part","push","isMarkerEmpty","map","ETag","PartNumber","includes","exports"],"sources":["CompleteMultiPartUploadUseCase.ts"],"sourcesContent":["import {\n S3,\n Part,\n ListPartsOutput,\n ListPartsCommand,\n CompleteMultipartUploadCommand\n} from \"@webiny/aws-sdk/client-s3\";\n\ninterface CompleteMultiPartUploadParams {\n fileKey: string;\n uploadId: string;\n}\n\ninterface GetAllUploadPartsParams {\n Bucket: string;\n Key: string;\n UploadId: string;\n}\n\nexport class CompleteMultiPartUploadUseCase {\n private readonly s3: S3;\n private readonly bucket: string;\n private readonly emptyMarkerValues = [undefined, \"0\"];\n\n constructor(bucket: string, s3Client: S3) {\n this.bucket = bucket;\n this.s3 = s3Client;\n }\n\n async execute(params: CompleteMultiPartUploadParams) {\n const uploadParams = {\n Bucket: this.bucket,\n Key: params.fileKey,\n UploadId: params.uploadId\n };\n\n const allParts = await this.getAllUploadParts(uploadParams);\n\n const s3Params = {\n ...uploadParams,\n MultipartUpload: {\n Parts: allParts\n }\n };\n\n try {\n const command = new CompleteMultipartUploadCommand(s3Params);\n await this.s3.send(command);\n } catch (err) {\n console.error(err);\n throw err;\n }\n }\n\n private async getAllUploadParts(params: GetAllUploadPartsParams) {\n const parts: Part[] = [];\n\n let marker: string | undefined = undefined;\n while (true) {\n const { Parts, PartNumberMarker }: ListPartsOutput = await this.s3.send(\n new ListPartsCommand({\n ...params,\n PartNumberMarker: marker\n })\n );\n\n if (Parts) {\n Parts.forEach(part => parts.push(part));\n }\n\n marker = PartNumberMarker || undefined;\n if (this.isMarkerEmpty(marker)) {\n break;\n }\n }\n\n return parts.map(part => ({\n ETag: part.ETag as string,\n PartNumber: part.PartNumber as number\n }));\n }\n\n private isMarkerEmpty(marker: string | undefined) {\n return this.emptyMarkerValues.includes(marker);\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAmBO,MAAMC,8BAA8B,CAAC;EAGvBC,iBAAiB,GAAG,CAACC,SAAS,EAAE,GAAG,CAAC;EAErDC,WAAWA,CAACC,MAAc,EAAEC,QAAY,EAAE;IACtC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,EAAE,GAAGD,QAAQ;EACtB;EAEA,MAAME,OAAOA,CAACC,MAAqC,EAAE;IACjD,MAAMC,YAAY,GAAG;MACjBC,MAAM,EAAE,IAAI,CAACN,MAAM;MACnBO,GAAG,EAAEH,MAAM,CAACI,OAAO;MACnBC,QAAQ,EAAEL,MAAM,CAACM;IACrB,CAAC;IAED,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAACP,YAAY,CAAC;IAE3D,MAAMQ,QAAQ,GAAG;MACb,GAAGR,YAAY;MACfS,eAAe,EAAE;QACbC,KAAK,EAAEJ;MACX;IACJ,CAAC;IAED,IAAI;MACA,MAAMK,OAAO,GAAG,IAAIC,uCAA8B,CAACJ,QAAQ,CAAC;MAC5D,MAAM,IAAI,CAACX,EAAE,CAACgB,IAAI,CAACF,OAAO,CAAC;IAC/B,CAAC,CAAC,OAAOG,GAAG,EAAE;MACVC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClB,MAAMA,GAAG;IACb;EACJ;EAEA,MAAcP,iBAAiBA,CAACR,MAA+B,EAAE;IAC7D,MAAMkB,KAAa,GAAG,EAAE;IAExB,IAAIC,MAA0B,GAAGzB,SAAS;IAC1C,OAAO,IAAI,EAAE;MACT,MAAM;QAAEiB,KAAK;QAAES;MAAkC,CAAC,GAAG,MAAM,IAAI,CAACtB,EAAE,CAACgB,IAAI,CACnE,IAAIO,yBAAgB,CAAC;QACjB,GAAGrB,MAAM;QACToB,gBAAgB,EAAED;MACtB,CAAC,CACL,CAAC;MAED,IAAIR,KAAK,EAAE;QACPA,KAAK,CAACW,OAAO,CAACC,IAAI,IAAIL,KAAK,CAACM,IAAI,CAACD,IAAI,CAAC,CAAC;MAC3C;MAEAJ,MAAM,GAAGC,gBAAgB,IAAI1B,SAAS;MACtC,IAAI,IAAI,CAAC+B,aAAa,CAACN,MAAM,CAAC,EAAE;QAC5B;MACJ;IACJ;IAEA,OAAOD,KAAK,CAACQ,GAAG,CAACH,IAAI,KAAK;MACtBI,IAAI,EAAEJ,IAAI,CAACI,IAAc;MACzBC,UAAU,EAAEL,IAAI,CAACK;IACrB,CAAC,CAAC,CAAC;EACP;EAEQH,aAAaA,CAACN,MAA0B,EAAE;IAC9C,OAAO,IAAI,CAAC1B,iBAAiB,CAACoC,QAAQ,CAACV,MAAM,CAAC;EAClD;AACJ;AAACW,OAAA,CAAAtC,8BAAA,GAAAA,8BAAA","ignoreList":[]}
1
+ {"version":3,"names":["ListPartsCommand","CompleteMultipartUploadCommand","CompleteMultiPartUploadUseCase","emptyMarkerValues","undefined","constructor","bucket","s3Client","s3","execute","params","uploadParams","Bucket","Key","fileKey","UploadId","uploadId","allParts","getAllUploadParts","s3Params","MultipartUpload","Parts","command","send","err","console","error","parts","marker","PartNumberMarker","forEach","part","push","isMarkerEmpty","map","ETag","PartNumber","includes"],"sources":["CompleteMultiPartUploadUseCase.ts"],"sourcesContent":["import type { S3, Part, ListPartsOutput } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport {\n ListPartsCommand,\n CompleteMultipartUploadCommand\n} from \"@webiny/aws-sdk/client-s3/index.js\";\n\ninterface CompleteMultiPartUploadParams {\n fileKey: string;\n uploadId: string;\n}\n\ninterface GetAllUploadPartsParams {\n Bucket: string;\n Key: string;\n UploadId: string;\n}\n\nexport class CompleteMultiPartUploadUseCase {\n private readonly s3: S3;\n private readonly bucket: string;\n private readonly emptyMarkerValues = [undefined, \"0\"];\n\n constructor(bucket: string, s3Client: S3) {\n this.bucket = bucket;\n this.s3 = s3Client;\n }\n\n async execute(params: CompleteMultiPartUploadParams) {\n const uploadParams = {\n Bucket: this.bucket,\n Key: params.fileKey,\n UploadId: params.uploadId\n };\n\n const allParts = await this.getAllUploadParts(uploadParams);\n\n const s3Params = {\n ...uploadParams,\n MultipartUpload: {\n Parts: allParts\n }\n };\n\n try {\n const command = new CompleteMultipartUploadCommand(s3Params);\n await this.s3.send(command);\n } catch (err) {\n console.error(err);\n throw err;\n }\n }\n\n private async getAllUploadParts(params: GetAllUploadPartsParams) {\n const parts: Part[] = [];\n\n let marker: string | undefined = undefined;\n while (true) {\n const { Parts, PartNumberMarker }: ListPartsOutput = await this.s3.send(\n new ListPartsCommand({\n ...params,\n PartNumberMarker: marker\n })\n );\n\n if (Parts) {\n Parts.forEach(part => parts.push(part));\n }\n\n marker = PartNumberMarker || undefined;\n if (this.isMarkerEmpty(marker)) {\n break;\n }\n }\n\n return parts.map(part => ({\n ETag: part.ETag as string,\n PartNumber: part.PartNumber as number\n }));\n }\n\n private isMarkerEmpty(marker: string | undefined) {\n return this.emptyMarkerValues.includes(marker);\n }\n}\n"],"mappings":"AACA,SACIA,gBAAgB,EAChBC,8BAA8B,QAC3B,oCAAoC;AAa3C,OAAO,MAAMC,8BAA8B,CAAC;EAGvBC,iBAAiB,GAAG,CAACC,SAAS,EAAE,GAAG,CAAC;EAErDC,WAAWA,CAACC,MAAc,EAAEC,QAAY,EAAE;IACtC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,EAAE,GAAGD,QAAQ;EACtB;EAEA,MAAME,OAAOA,CAACC,MAAqC,EAAE;IACjD,MAAMC,YAAY,GAAG;MACjBC,MAAM,EAAE,IAAI,CAACN,MAAM;MACnBO,GAAG,EAAEH,MAAM,CAACI,OAAO;MACnBC,QAAQ,EAAEL,MAAM,CAACM;IACrB,CAAC;IAED,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,iBAAiB,CAACP,YAAY,CAAC;IAE3D,MAAMQ,QAAQ,GAAG;MACb,GAAGR,YAAY;MACfS,eAAe,EAAE;QACbC,KAAK,EAAEJ;MACX;IACJ,CAAC;IAED,IAAI;MACA,MAAMK,OAAO,GAAG,IAAIrB,8BAA8B,CAACkB,QAAQ,CAAC;MAC5D,MAAM,IAAI,CAACX,EAAE,CAACe,IAAI,CAACD,OAAO,CAAC;IAC/B,CAAC,CAAC,OAAOE,GAAG,EAAE;MACVC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClB,MAAMA,GAAG;IACb;EACJ;EAEA,MAAcN,iBAAiBA,CAACR,MAA+B,EAAE;IAC7D,MAAMiB,KAAa,GAAG,EAAE;IAExB,IAAIC,MAA0B,GAAGxB,SAAS;IAC1C,OAAO,IAAI,EAAE;MACT,MAAM;QAAEiB,KAAK;QAAEQ;MAAkC,CAAC,GAAG,MAAM,IAAI,CAACrB,EAAE,CAACe,IAAI,CACnE,IAAIvB,gBAAgB,CAAC;QACjB,GAAGU,MAAM;QACTmB,gBAAgB,EAAED;MACtB,CAAC,CACL,CAAC;MAED,IAAIP,KAAK,EAAE;QACPA,KAAK,CAACS,OAAO,CAACC,IAAI,IAAIJ,KAAK,CAACK,IAAI,CAACD,IAAI,CAAC,CAAC;MAC3C;MAEAH,MAAM,GAAGC,gBAAgB,IAAIzB,SAAS;MACtC,IAAI,IAAI,CAAC6B,aAAa,CAACL,MAAM,CAAC,EAAE;QAC5B;MACJ;IACJ;IAEA,OAAOD,KAAK,CAACO,GAAG,CAACH,IAAI,KAAK;MACtBI,IAAI,EAAEJ,IAAI,CAACI,IAAc;MACzBC,UAAU,EAAEL,IAAI,CAACK;IACrB,CAAC,CAAC,CAAC;EACP;EAEQH,aAAaA,CAACL,MAA0B,EAAE;IAC9C,OAAO,IAAI,CAACzB,iBAAiB,CAACkC,QAAQ,CAACT,MAAM,CAAC;EAClD;AACJ","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import { S3 } from "@webiny/aws-sdk/client-s3";
2
- import { FileData } from "../types";
1
+ import type { S3 } from "@webiny/aws-sdk/client-s3/index.js";
2
+ import type { FileData } from "../types.js";
3
3
  interface CreateMultiPartUploadParams {
4
4
  file: FileData;
5
5
  numberOfParts: number;
@@ -1,11 +1,5 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.CreateMultiPartUploadUseCase = void 0;
7
- var _clientS = require("@webiny/aws-sdk/client-s3");
8
- class CreateMultiPartUploadUseCase {
1
+ import { getSignedUrl, UploadPartCommand } from "@webiny/aws-sdk/client-s3/index.js";
2
+ export class CreateMultiPartUploadUseCase {
9
3
  constructor(bucket, s3Client) {
10
4
  this.bucket = bucket;
11
5
  this.s3 = s3Client;
@@ -24,7 +18,7 @@ class CreateMultiPartUploadUseCase {
24
18
  const parts = await Promise.all(Array.from({
25
19
  length: numberOfParts
26
20
  }).map((_, index) => {
27
- return (0, _clientS.getSignedUrl)(this.s3, new _clientS.UploadPartCommand({
21
+ return getSignedUrl(this.s3, new UploadPartCommand({
28
22
  ...s3Params,
29
23
  UploadId,
30
24
  PartNumber: index + 1
@@ -43,6 +37,5 @@ class CreateMultiPartUploadUseCase {
43
37
  };
44
38
  }
45
39
  }
46
- exports.CreateMultiPartUploadUseCase = CreateMultiPartUploadUseCase;
47
40
 
48
41
  //# sourceMappingURL=CreateMultiPartUploadUseCase.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_clientS","require","CreateMultiPartUploadUseCase","constructor","bucket","s3Client","s3","execute","file","numberOfParts","s3Params","Bucket","Key","key","UploadId","createMultipartUpload","parts","Promise","all","Array","from","length","map","_","index","getSignedUrl","UploadPartCommand","PartNumber","expiresIn","then","url","partNumber","uploadId","exports"],"sources":["CreateMultiPartUploadUseCase.ts"],"sourcesContent":["import { S3, getSignedUrl, UploadPartCommand } from \"@webiny/aws-sdk/client-s3\";\nimport { FileData } from \"~/types\";\n\ninterface CreateMultiPartUploadParams {\n file: FileData;\n numberOfParts: number;\n}\n\nexport class CreateMultiPartUploadUseCase {\n private readonly s3: S3;\n private readonly bucket: string;\n\n constructor(bucket: string, s3Client: S3) {\n this.bucket = bucket;\n this.s3 = s3Client;\n }\n\n async execute({ file, numberOfParts }: CreateMultiPartUploadParams) {\n const s3Params = { Bucket: this.bucket, Key: file.key };\n\n const { UploadId } = await this.s3.createMultipartUpload(s3Params);\n\n const parts = await Promise.all(\n Array.from({ length: numberOfParts }).map((_, index) => {\n return getSignedUrl(\n this.s3,\n new UploadPartCommand({ ...s3Params, UploadId, PartNumber: index + 1 }),\n {\n // URL expires after 24 hours.\n expiresIn: 86400\n }\n ).then(url => ({\n url,\n partNumber: index + 1\n }));\n })\n );\n\n return {\n file,\n uploadId: UploadId,\n parts\n };\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAQO,MAAMC,4BAA4B,CAAC;EAItCC,WAAWA,CAACC,MAAc,EAAEC,QAAY,EAAE;IACtC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,EAAE,GAAGD,QAAQ;EACtB;EAEA,MAAME,OAAOA,CAAC;IAAEC,IAAI;IAAEC;EAA2C,CAAC,EAAE;IAChE,MAAMC,QAAQ,GAAG;MAAEC,MAAM,EAAE,IAAI,CAACP,MAAM;MAAEQ,GAAG,EAAEJ,IAAI,CAACK;IAAI,CAAC;IAEvD,MAAM;MAAEC;IAAS,CAAC,GAAG,MAAM,IAAI,CAACR,EAAE,CAACS,qBAAqB,CAACL,QAAQ,CAAC;IAElE,MAAMM,KAAK,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC3BC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEZ;IAAc,CAAC,CAAC,CAACa,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAK;MACpD,OAAO,IAAAC,qBAAY,EACf,IAAI,CAACnB,EAAE,EACP,IAAIoB,0BAAiB,CAAC;QAAE,GAAGhB,QAAQ;QAAEI,QAAQ;QAAEa,UAAU,EAAEH,KAAK,GAAG;MAAE,CAAC,CAAC,EACvE;QACI;QACAI,SAAS,EAAE;MACf,CACJ,CAAC,CAACC,IAAI,CAACC,GAAG,KAAK;QACXA,GAAG;QACHC,UAAU,EAAEP,KAAK,GAAG;MACxB,CAAC,CAAC,CAAC;IACP,CAAC,CACL,CAAC;IAED,OAAO;MACHhB,IAAI;MACJwB,QAAQ,EAAElB,QAAQ;MAClBE;IACJ,CAAC;EACL;AACJ;AAACiB,OAAA,CAAA/B,4BAAA,GAAAA,4BAAA","ignoreList":[]}
1
+ {"version":3,"names":["getSignedUrl","UploadPartCommand","CreateMultiPartUploadUseCase","constructor","bucket","s3Client","s3","execute","file","numberOfParts","s3Params","Bucket","Key","key","UploadId","createMultipartUpload","parts","Promise","all","Array","from","length","map","_","index","PartNumber","expiresIn","then","url","partNumber","uploadId"],"sources":["CreateMultiPartUploadUseCase.ts"],"sourcesContent":["import type { S3 } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport { getSignedUrl, UploadPartCommand } from \"@webiny/aws-sdk/client-s3/index.js\";\nimport type { FileData } from \"~/types.js\";\n\ninterface CreateMultiPartUploadParams {\n file: FileData;\n numberOfParts: number;\n}\n\nexport class CreateMultiPartUploadUseCase {\n private readonly s3: S3;\n private readonly bucket: string;\n\n constructor(bucket: string, s3Client: S3) {\n this.bucket = bucket;\n this.s3 = s3Client;\n }\n\n async execute({ file, numberOfParts }: CreateMultiPartUploadParams) {\n const s3Params = { Bucket: this.bucket, Key: file.key };\n\n const { UploadId } = await this.s3.createMultipartUpload(s3Params);\n\n const parts = await Promise.all(\n Array.from({ length: numberOfParts }).map((_, index) => {\n return getSignedUrl(\n this.s3,\n new UploadPartCommand({ ...s3Params, UploadId, PartNumber: index + 1 }),\n {\n // URL expires after 24 hours.\n expiresIn: 86400\n }\n ).then(url => ({\n url,\n partNumber: index + 1\n }));\n })\n );\n\n return {\n file,\n uploadId: UploadId,\n parts\n };\n }\n}\n"],"mappings":"AACA,SAASA,YAAY,EAAEC,iBAAiB,QAAQ,oCAAoC;AAQpF,OAAO,MAAMC,4BAA4B,CAAC;EAItCC,WAAWA,CAACC,MAAc,EAAEC,QAAY,EAAE;IACtC,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACE,EAAE,GAAGD,QAAQ;EACtB;EAEA,MAAME,OAAOA,CAAC;IAAEC,IAAI;IAAEC;EAA2C,CAAC,EAAE;IAChE,MAAMC,QAAQ,GAAG;MAAEC,MAAM,EAAE,IAAI,CAACP,MAAM;MAAEQ,GAAG,EAAEJ,IAAI,CAACK;IAAI,CAAC;IAEvD,MAAM;MAAEC;IAAS,CAAC,GAAG,MAAM,IAAI,CAACR,EAAE,CAACS,qBAAqB,CAACL,QAAQ,CAAC;IAElE,MAAMM,KAAK,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC3BC,KAAK,CAACC,IAAI,CAAC;MAAEC,MAAM,EAAEZ;IAAc,CAAC,CAAC,CAACa,GAAG,CAAC,CAACC,CAAC,EAAEC,KAAK,KAAK;MACpD,OAAOxB,YAAY,CACf,IAAI,CAACM,EAAE,EACP,IAAIL,iBAAiB,CAAC;QAAE,GAAGS,QAAQ;QAAEI,QAAQ;QAAEW,UAAU,EAAED,KAAK,GAAG;MAAE,CAAC,CAAC,EACvE;QACI;QACAE,SAAS,EAAE;MACf,CACJ,CAAC,CAACC,IAAI,CAACC,GAAG,KAAK;QACXA,GAAG;QACHC,UAAU,EAAEL,KAAK,GAAG;MACxB,CAAC,CAAC,CAAC;IACP,CAAC,CACL,CAAC;IAED,OAAO;MACHhB,IAAI;MACJsB,QAAQ,EAAEhB,QAAQ;MAClBE;IACJ,CAAC;EACL;AACJ","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@webiny/api-file-manager-s3",
3
- "version": "6.0.0-beta.0",
3
+ "version": "6.0.0-rc.0",
4
+ "type": "module",
4
5
  "main": "index.js",
5
6
  "repository": {
6
7
  "type": "git",
@@ -10,42 +11,35 @@
10
11
  "author": "Webiny Ltd",
11
12
  "license": "MIT",
12
13
  "dependencies": {
13
- "@webiny/api": "6.0.0-beta.0",
14
- "@webiny/api-file-manager": "6.0.0-beta.0",
15
- "@webiny/api-security": "6.0.0-beta.0",
16
- "@webiny/aws-sdk": "6.0.0-beta.0",
17
- "@webiny/error": "6.0.0-beta.0",
18
- "@webiny/handler": "6.0.0-beta.0",
19
- "@webiny/handler-graphql": "6.0.0-beta.0",
20
- "@webiny/plugins": "6.0.0-beta.0",
21
- "@webiny/tasks": "6.0.0-beta.0",
22
- "@webiny/utils": "6.0.0-beta.0",
23
- "@webiny/validation": "6.0.0-beta.0",
24
- "form-data": "4.0.0",
14
+ "@webiny/api": "6.0.0-rc.0",
15
+ "@webiny/api-core": "6.0.0-rc.0",
16
+ "@webiny/api-file-manager": "6.0.0-rc.0",
17
+ "@webiny/api-websockets": "6.0.0-rc.0",
18
+ "@webiny/aws-sdk": "6.0.0-rc.0",
19
+ "@webiny/feature": "6.0.0-rc.0",
20
+ "@webiny/handler": "6.0.0-rc.0",
21
+ "@webiny/handler-aws": "6.0.0-rc.0",
22
+ "@webiny/handler-graphql": "6.0.0-rc.0",
23
+ "@webiny/plugins": "6.0.0-rc.0",
24
+ "@webiny/utils": "6.0.0-rc.0",
25
+ "@webiny/validation": "6.0.0-rc.0",
26
+ "exifreader": "4.36.2",
25
27
  "mime": "3.0.0",
26
- "node-fetch": "2.7.0",
27
28
  "object-hash": "3.0.0",
28
- "p-map": "4.0.0",
29
- "p-reduce": "2.1.0",
29
+ "p-map": "7.0.4",
30
+ "p-reduce": "3.0.0",
30
31
  "sanitize-filename": "1.6.3",
31
- "sharp": "0.32.6"
32
+ "sharp": "0.34.5"
32
33
  },
33
34
  "devDependencies": {
34
- "@babel/cli": "7.24.1",
35
- "@babel/core": "7.24.3",
36
- "@types/node-fetch": "2.6.2",
37
- "@webiny/cli": "6.0.0-beta.0",
38
- "@webiny/project-utils": "6.0.0-beta.0",
39
- "rimraf": "5.0.5",
40
- "typescript": "4.7.4"
35
+ "@webiny/build-tools": "6.0.0-rc.0",
36
+ "rimraf": "6.1.3",
37
+ "typescript": "5.9.3",
38
+ "vitest": "4.0.18"
41
39
  },
42
40
  "publishConfig": {
43
41
  "access": "public",
44
42
  "directory": "dist"
45
43
  },
46
- "scripts": {
47
- "build": "yarn webiny run build",
48
- "watch": "yarn webiny run watch"
49
- },
50
- "gitHead": "aa8dbfbbd5ad13ec271adba6f2431e02991a300f"
44
+ "gitHead": "0f2aa699f4642e550ab62c96fcd050e8d02345c9"
51
45
  }
package/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { PresignedPost } from "@webiny/aws-sdk/client-s3";
1
+ import type { PresignedPost } from "@webiny/aws-sdk/client-s3/index.js";
2
2
  export interface PresignedPostPayloadData {
3
3
  name: string;
4
4
  type: string;
package/types.js CHANGED
@@ -1,7 +1,3 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
1
+ export {};
6
2
 
7
3
  //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import { PresignedPost } from \"@webiny/aws-sdk/client-s3\";\n\nexport interface PresignedPostPayloadData {\n name: string;\n type: string;\n size: number;\n id?: string;\n key?: string;\n keyPrefix?: string;\n}\n\nexport interface FileData {\n id: string;\n key: string;\n name: string;\n size: number;\n type: string;\n}\n\nexport interface PresignedPostPayloadDataResponse {\n data: PresignedPost;\n file: FileData;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { PresignedPost } from \"@webiny/aws-sdk/client-s3/index.js\";\n\nexport interface PresignedPostPayloadData {\n name: string;\n type: string;\n size: number;\n id?: string;\n key?: string;\n keyPrefix?: string;\n}\n\nexport interface FileData {\n id: string;\n key: string;\n name: string;\n size: number;\n type: string;\n}\n\nexport interface PresignedPostPayloadDataResponse {\n data: PresignedPost;\n file: FileData;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export declare class CdnPathsGenerator {
2
+ generate(fileId: string): string[];
3
+ }
@@ -0,0 +1,7 @@
1
+ export class CdnPathsGenerator {
2
+ generate(fileId) {
3
+ return [`/files/${fileId}/*`, `/private/${fileId}/*`];
4
+ }
5
+ }
6
+
7
+ //# sourceMappingURL=CdnPathsGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CdnPathsGenerator","generate","fileId"],"sources":["CdnPathsGenerator.ts"],"sourcesContent":["export class CdnPathsGenerator {\n generate(fileId: string): string[] {\n return [`/files/${fileId}/*`, `/private/${fileId}/*`];\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,iBAAiB,CAAC;EAC3BC,QAAQA,CAACC,MAAc,EAAY;IAC/B,OAAO,CAAC,UAAUA,MAAM,IAAI,EAAE,YAAYA,MAAM,IAAI,CAAC;EACzD;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { PresignedPostPayloadData } from "../types";
1
+ import type { PresignedPostPayloadData } from "../types.js";
2
2
  export declare class FileExtension {
3
3
  private data;
4
4
  constructor(data: PresignedPostPayloadData);
@@ -1,24 +1,17 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.FileExtension = void 0;
7
- var _mimeTypes = require("./mimeTypes");
8
- class FileExtension {
1
+ import { mimeTypes } from "./mimeTypes.js";
2
+ export class FileExtension {
9
3
  constructor(data) {
10
4
  this.data = data;
11
5
  }
12
6
  getValue() {
13
7
  const name = (this.data.key || this.data.name).toLowerCase();
14
8
  const maybeExt = name.split(".").pop();
15
- const extensions = _mimeTypes.mimeTypes[this.data.type];
9
+ const extensions = mimeTypes[this.data.type];
16
10
  if (extensions && !extensions.includes(maybeExt)) {
17
11
  return extensions[0];
18
12
  }
19
13
  return "";
20
14
  }
21
15
  }
22
- exports.FileExtension = FileExtension;
23
16
 
24
17
  //# sourceMappingURL=FileExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_mimeTypes","require","FileExtension","constructor","data","getValue","name","key","toLowerCase","maybeExt","split","pop","extensions","mimeTypes","type","includes","exports"],"sources":["FileExtension.ts"],"sourcesContent":["import { mimeTypes } from \"~/utils/mimeTypes\";\nimport { PresignedPostPayloadData } from \"~/types\";\n\nexport class FileExtension {\n private data: PresignedPostPayloadData;\n\n constructor(data: PresignedPostPayloadData) {\n this.data = data;\n }\n\n getValue() {\n const name = (this.data.key || this.data.name).toLowerCase();\n\n const maybeExt = name.split(\".\").pop() as string;\n const extensions = mimeTypes[this.data.type];\n if (extensions && !extensions.includes(maybeExt)) {\n return extensions[0];\n }\n\n return \"\";\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAGO,MAAMC,aAAa,CAAC;EAGvBC,WAAWA,CAACC,IAA8B,EAAE;IACxC,IAAI,CAACA,IAAI,GAAGA,IAAI;EACpB;EAEAC,QAAQA,CAAA,EAAG;IACP,MAAMC,IAAI,GAAG,CAAC,IAAI,CAACF,IAAI,CAACG,GAAG,IAAI,IAAI,CAACH,IAAI,CAACE,IAAI,EAAEE,WAAW,CAAC,CAAC;IAE5D,MAAMC,QAAQ,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAW;IAChD,MAAMC,UAAU,GAAGC,oBAAS,CAAC,IAAI,CAACT,IAAI,CAACU,IAAI,CAAC;IAC5C,IAAIF,UAAU,IAAI,CAACA,UAAU,CAACG,QAAQ,CAACN,QAAQ,CAAC,EAAE;MAC9C,OAAOG,UAAU,CAAC,CAAC,CAAC;IACxB;IAEA,OAAO,EAAE;EACb;AACJ;AAACI,OAAA,CAAAd,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["mimeTypes","FileExtension","constructor","data","getValue","name","key","toLowerCase","maybeExt","split","pop","extensions","type","includes"],"sources":["FileExtension.ts"],"sourcesContent":["import { mimeTypes } from \"~/utils/mimeTypes.js\";\nimport type { PresignedPostPayloadData } from \"~/types.js\";\n\nexport class FileExtension {\n private data: PresignedPostPayloadData;\n\n constructor(data: PresignedPostPayloadData) {\n this.data = data;\n }\n\n getValue() {\n const name = (this.data.key || this.data.name).toLowerCase();\n\n const maybeExt = name.split(\".\").pop() as string;\n const extensions = mimeTypes[this.data.type];\n if (extensions && !extensions.includes(maybeExt)) {\n return extensions[0];\n }\n\n return \"\";\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS;AAGlB,OAAO,MAAMC,aAAa,CAAC;EAGvBC,WAAWA,CAACC,IAA8B,EAAE;IACxC,IAAI,CAACA,IAAI,GAAGA,IAAI;EACpB;EAEAC,QAAQA,CAAA,EAAG;IACP,MAAMC,IAAI,GAAG,CAAC,IAAI,CAACF,IAAI,CAACG,GAAG,IAAI,IAAI,CAACH,IAAI,CAACE,IAAI,EAAEE,WAAW,CAAC,CAAC;IAE5D,MAAMC,QAAQ,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,CAAC,CAACC,GAAG,CAAC,CAAW;IAChD,MAAMC,UAAU,GAAGX,SAAS,CAAC,IAAI,CAACG,IAAI,CAACS,IAAI,CAAC;IAC5C,IAAID,UAAU,IAAI,CAACA,UAAU,CAACE,QAAQ,CAACL,QAAQ,CAAC,EAAE;MAC9C,OAAOG,UAAU,CAAC,CAAC,CAAC;IACxB;IAEA,OAAO,EAAE;EACb;AACJ","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { PresignedPostPayloadData } from "../types";
1
+ import type { PresignedPostPayloadData } from "../types.js";
2
2
  export declare class FileKey {
3
3
  private data;
4
4
  private extension;