@webiny/api-file-manager-s3 0.0.0-mt-3 → 0.0.0-unstable.06b2ede40f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assetDelivery/assetDeliveryConfig.d.ts +2 -0
- package/assetDelivery/assetDeliveryConfig.js +52 -0
- package/assetDelivery/assetDeliveryConfig.js.map +1 -0
- package/assetDelivery/createAssetDelivery.d.ts +3 -0
- package/assetDelivery/createAssetDelivery.js +30 -0
- package/assetDelivery/createAssetDelivery.js.map +1 -0
- package/assetDelivery/createCustomAssetDelivery.d.ts +12 -0
- package/assetDelivery/createCustomAssetDelivery.js +28 -0
- package/assetDelivery/createCustomAssetDelivery.js.map +1 -0
- package/assetDelivery/customAssets/CustomAsset.d.ts +6 -0
- package/assetDelivery/customAssets/CustomAsset.js +14 -0
- package/assetDelivery/customAssets/CustomAsset.js.map +1 -0
- package/assetDelivery/customAssets/CustomAssetProcessor.d.ts +10 -0
- package/assetDelivery/customAssets/CustomAssetProcessor.js +25 -0
- package/assetDelivery/customAssets/CustomAssetProcessor.js.map +1 -0
- package/assetDelivery/customAssets/S3CustomAssetResolver.d.ts +15 -0
- package/assetDelivery/customAssets/S3CustomAssetResolver.js +90 -0
- package/assetDelivery/customAssets/S3CustomAssetResolver.js.map +1 -0
- package/assetDelivery/customAssets/customAssetDeliveryConfig.d.ts +1 -0
- package/assetDelivery/customAssets/customAssetDeliveryConfig.js +30 -0
- package/assetDelivery/customAssets/customAssetDeliveryConfig.js.map +1 -0
- package/assetDelivery/index.d.ts +9 -0
- package/assetDelivery/index.js +70 -0
- package/assetDelivery/index.js.map +1 -0
- package/assetDelivery/s3/S3AssetMetadataReader.d.ts +15 -0
- package/assetDelivery/s3/S3AssetMetadataReader.js +36 -0
- package/assetDelivery/s3/S3AssetMetadataReader.js.map +1 -0
- package/assetDelivery/s3/S3AssetResolver.d.ts +9 -0
- package/assetDelivery/s3/S3AssetResolver.js +37 -0
- package/assetDelivery/s3/S3AssetResolver.js.map +1 -0
- package/assetDelivery/s3/S3ContentsReader.d.ts +10 -0
- package/assetDelivery/s3/S3ContentsReader.js +27 -0
- package/assetDelivery/s3/S3ContentsReader.js.map +1 -0
- package/assetDelivery/s3/S3ErrorAssetReply.d.ts +4 -0
- package/assetDelivery/s3/S3ErrorAssetReply.js +20 -0
- package/assetDelivery/s3/S3ErrorAssetReply.js.map +1 -0
- package/assetDelivery/s3/S3OutputStrategy.d.ts +15 -0
- package/assetDelivery/s3/S3OutputStrategy.js +40 -0
- package/assetDelivery/s3/S3OutputStrategy.js.map +1 -0
- package/assetDelivery/s3/S3RedirectAssetReply.d.ts +4 -0
- package/assetDelivery/s3/S3RedirectAssetReply.js +23 -0
- package/assetDelivery/s3/S3RedirectAssetReply.js.map +1 -0
- package/assetDelivery/s3/S3StreamAssetReply.d.ts +5 -0
- package/assetDelivery/s3/S3StreamAssetReply.js +23 -0
- package/assetDelivery/s3/S3StreamAssetReply.js.map +1 -0
- package/assetDelivery/s3/SharpTransform.d.ts +18 -0
- package/assetDelivery/s3/SharpTransform.js +192 -0
- package/assetDelivery/s3/SharpTransform.js.map +1 -0
- package/assetDelivery/s3/transformation/AssetKeyGenerator.d.ts +8 -0
- package/assetDelivery/s3/transformation/AssetKeyGenerator.js +29 -0
- package/assetDelivery/s3/transformation/AssetKeyGenerator.js.map +1 -0
- package/assetDelivery/s3/transformation/CallableContentsReader.d.ts +12 -0
- package/assetDelivery/s3/transformation/CallableContentsReader.js +17 -0
- package/assetDelivery/s3/transformation/CallableContentsReader.js.map +1 -0
- package/assetDelivery/s3/transformation/WidthCollection.d.ts +7 -0
- package/assetDelivery/s3/transformation/WidthCollection.js +27 -0
- package/assetDelivery/s3/transformation/WidthCollection.js.map +1 -0
- package/assetDelivery/s3/transformation/legacyUtils.d.ts +12 -0
- package/assetDelivery/s3/transformation/legacyUtils.js +34 -0
- package/assetDelivery/s3/transformation/legacyUtils.js.map +1 -0
- package/assetDelivery/s3/transformation/utils.d.ts +11 -0
- package/assetDelivery/s3/transformation/utils.js +33 -0
- package/assetDelivery/s3/transformation/utils.js.map +1 -0
- package/assetDelivery/threatDetection/createThreatDetectionEventHandler.d.ts +2 -0
- package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js +62 -0
- package/assetDelivery/threatDetection/createThreatDetectionEventHandler.js.map +1 -0
- package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.d.ts +2 -0
- package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.js +13 -0
- package/assetDelivery/threatDetection/createThreatDetectionPluginLoader.js.map +1 -0
- package/assetDelivery/threatDetection/index.d.ts +2 -0
- package/assetDelivery/threatDetection/index.js +29 -0
- package/assetDelivery/threatDetection/index.js.map +1 -0
- package/assetDelivery/threatDetection/processThreatScanResult.d.ts +2 -0
- package/assetDelivery/threatDetection/processThreatScanResult.js +66 -0
- package/assetDelivery/threatDetection/processThreatScanResult.js.map +1 -0
- package/assetDelivery/threatDetection/types.d.ts +13 -0
- package/assetDelivery/threatDetection/types.js +7 -0
- package/assetDelivery/threatDetection/types.js.map +1 -0
- package/assetDelivery/types.d.ts +11 -0
- package/assetDelivery/types.js +7 -0
- package/assetDelivery/types.js.map +1 -0
- package/flushCdnCache/CdnPathsGenerator.d.ts +4 -0
- package/flushCdnCache/CdnPathsGenerator.js +14 -0
- package/flushCdnCache/CdnPathsGenerator.js.map +1 -0
- package/flushCdnCache/InvalidateCacheTask.d.ts +18 -0
- package/flushCdnCache/InvalidateCacheTask.js +78 -0
- package/flushCdnCache/InvalidateCacheTask.js.map +1 -0
- package/flushCdnCache/flushCacheOnFileDelete.d.ts +3 -0
- package/flushCdnCache/flushCacheOnFileDelete.js +34 -0
- package/flushCdnCache/flushCacheOnFileDelete.js.map +1 -0
- package/flushCdnCache/flushCacheOnFileUpdate.d.ts +3 -0
- package/flushCdnCache/flushCacheOnFileUpdate.js +40 -0
- package/flushCdnCache/flushCacheOnFileUpdate.js.map +1 -0
- package/flushCdnCache/index.d.ts +1 -0
- package/flushCdnCache/index.js +15 -0
- package/flushCdnCache/index.js.map +1 -0
- package/flushCdnCache/invalidateCacheTaskDefinition.d.ts +2 -0
- package/flushCdnCache/invalidateCacheTaskDefinition.js +22 -0
- package/flushCdnCache/invalidateCacheTaskDefinition.js.map +1 -0
- package/index.d.ts +4 -1
- package/index.js +27 -7
- package/index.js.map +1 -0
- package/multiPartUpload/CompleteMultiPartUploadUseCase.d.ts +15 -0
- package/multiPartUpload/CompleteMultiPartUploadUseCase.js +65 -0
- package/multiPartUpload/CompleteMultiPartUploadUseCase.js.map +1 -0
- package/multiPartUpload/CreateMultiPartUploadUseCase.d.ts +20 -0
- package/multiPartUpload/CreateMultiPartUploadUseCase.js +48 -0
- package/multiPartUpload/CreateMultiPartUploadUseCase.js.map +1 -0
- package/package.json +29 -16
- package/plugins/addFileMetadata.d.ts +10 -0
- package/plugins/addFileMetadata.js +67 -0
- package/plugins/addFileMetadata.js.map +1 -0
- package/plugins/checkPermissions.d.ts +4 -0
- package/plugins/checkPermissions.js +44 -0
- package/plugins/checkPermissions.js.map +1 -0
- package/plugins/fileStorageS3.d.ts +2 -2
- package/plugins/fileStorageS3.js +47 -46
- package/plugins/fileStorageS3.js.map +1 -0
- package/plugins/graphqlFileStorageS3.d.ts +2 -2
- package/plugins/graphqlFileStorageS3.js +137 -59
- package/plugins/graphqlFileStorageS3.js.map +1 -0
- package/types.d.ts +20 -0
- package/types.js +7 -1
- package/types.js.map +1 -0
- package/utils/FileExtension.d.ts +6 -0
- package/utils/FileExtension.js +24 -0
- package/utils/FileExtension.js.map +1 -0
- package/utils/FileKey.d.ts +11 -0
- package/utils/FileKey.js +33 -0
- package/utils/FileKey.js.map +1 -0
- package/utils/FileKey.test.d.ts +1 -0
- package/utils/FileKey.test.js +60 -0
- package/utils/FileKey.test.js.map +1 -0
- package/utils/FileNormalizer.d.ts +18 -0
- package/utils/FileNormalizer.js +49 -0
- package/utils/FileNormalizer.js.map +1 -0
- package/utils/FileUploadModifier.d.ts +30 -0
- package/utils/FileUploadModifier.js +49 -0
- package/utils/FileUploadModifier.js.map +1 -0
- package/utils/createFileNormalizerFromContext.d.ts +3 -0
- package/utils/createFileNormalizerFromContext.js +15 -0
- package/utils/createFileNormalizerFromContext.js.map +1 -0
- package/utils/getPresignedPostPayload.d.ts +3 -11
- package/utils/getPresignedPostPayload.js +14 -55
- package/utils/getPresignedPostPayload.js.map +1 -0
- package/utils/mimeTypes.d.ts +5 -0
- package/utils/mimeTypes.js +23 -0
- package/utils/mimeTypes.js.map +1 -0
- package/utils/uploadFileToS3.d.ts +5 -1
- package/utils/uploadFileToS3.js +9 -12
- package/utils/uploadFileToS3.js.map +1 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createModifierFromPlugins = exports.createFileUploadModifier = exports.FileUploadModifierPlugin = void 0;
|
|
8
|
+
var _pReduce = _interopRequireDefault(require("p-reduce"));
|
|
9
|
+
var _plugins = require("@webiny/plugins");
|
|
10
|
+
class FileUploadModifier {
|
|
11
|
+
fileSetters = [];
|
|
12
|
+
setFile(setter) {
|
|
13
|
+
this.fileSetters.push(setter);
|
|
14
|
+
}
|
|
15
|
+
execute(file) {
|
|
16
|
+
return (0, _pReduce.default)(this.fileSetters, async (file, setter) => {
|
|
17
|
+
// We need to spread the original file, then add (potentially) partial changes.
|
|
18
|
+
return {
|
|
19
|
+
...file,
|
|
20
|
+
...(await setter(file))
|
|
21
|
+
};
|
|
22
|
+
}, file);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
class FileUploadModifierPlugin extends _plugins.Plugin {
|
|
26
|
+
static type = "fm.s3.uploadModifier";
|
|
27
|
+
constructor(cb) {
|
|
28
|
+
super();
|
|
29
|
+
this.cb = cb;
|
|
30
|
+
}
|
|
31
|
+
execute(params) {
|
|
32
|
+
return this.cb(params);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.FileUploadModifierPlugin = FileUploadModifierPlugin;
|
|
36
|
+
const createFileUploadModifier = cb => {
|
|
37
|
+
return new FileUploadModifierPlugin(cb);
|
|
38
|
+
};
|
|
39
|
+
exports.createFileUploadModifier = createFileUploadModifier;
|
|
40
|
+
const createModifierFromPlugins = (plugins = []) => {
|
|
41
|
+
const modifier = new FileUploadModifier();
|
|
42
|
+
plugins.forEach(pl => pl.execute({
|
|
43
|
+
modifier
|
|
44
|
+
}));
|
|
45
|
+
return file => modifier.execute(file);
|
|
46
|
+
};
|
|
47
|
+
exports.createModifierFromPlugins = createModifierFromPlugins;
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=FileUploadModifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_pReduce","_interopRequireDefault","require","_plugins","FileUploadModifier","fileSetters","setFile","setter","push","execute","file","pReduce","FileUploadModifierPlugin","Plugin","type","constructor","cb","params","exports","createFileUploadModifier","createModifierFromPlugins","plugins","modifier","forEach","pl"],"sources":["FileUploadModifier.ts"],"sourcesContent":["import pReduce from \"p-reduce\";\nimport { Plugin } from \"@webiny/plugins\";\nimport type { FileToSign } from \"~/utils/FileNormalizer\";\n\ninterface Setter<T> {\n (param: T): T;\n}\n\nclass FileUploadModifier {\n private fileSetters: Setter<FileToSign>[] = [];\n\n setFile(setter: Setter<FileToSign>): void {\n this.fileSetters.push(setter);\n }\n\n execute(file: FileToSign) {\n return pReduce(\n this.fileSetters,\n async (file, setter) => {\n // We need to spread the original file, then add (potentially) partial changes.\n return { ...file, ...(await setter(file)) };\n },\n file\n );\n }\n}\n\ninterface FileUploadModifierCallbackParams {\n modifier: {\n setFile: FileUploadModifier[\"setFile\"];\n };\n}\n\nexport class FileUploadModifierPlugin extends Plugin {\n public static override type = \"fm.s3.uploadModifier\";\n private readonly cb: FileUploadModifierCallable;\n\n constructor(cb: FileUploadModifierCallable) {\n super();\n this.cb = cb;\n }\n\n execute(params: FileUploadModifierCallbackParams) {\n return this.cb(params);\n }\n}\n\ninterface FileUploadModifierCallable {\n (params: FileUploadModifierCallbackParams): void;\n}\n\nexport const createFileUploadModifier = (cb: FileUploadModifierCallable) => {\n return new FileUploadModifierPlugin(cb);\n};\n\nexport interface FileModifier {\n (file: FileToSign): Promise<Partial<FileToSign>> | Partial<FileToSign>;\n}\n\nexport const createModifierFromPlugins = (\n plugins: FileUploadModifierPlugin[] = []\n): FileModifier => {\n const modifier = new FileUploadModifier();\n plugins.forEach(pl => pl.execute({ modifier }));\n\n return (file: FileToSign) => modifier.execute(file);\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAOA,MAAME,kBAAkB,CAAC;EACbC,WAAW,GAAyB,EAAE;EAE9CC,OAAOA,CAACC,MAA0B,EAAQ;IACtC,IAAI,CAACF,WAAW,CAACG,IAAI,CAACD,MAAM,CAAC;EACjC;EAEAE,OAAOA,CAACC,IAAgB,EAAE;IACtB,OAAO,IAAAC,gBAAO,EACV,IAAI,CAACN,WAAW,EAChB,OAAOK,IAAI,EAAEH,MAAM,KAAK;MACpB;MACA,OAAO;QAAE,GAAGG,IAAI;QAAE,IAAI,MAAMH,MAAM,CAACG,IAAI,CAAC;MAAE,CAAC;IAC/C,CAAC,EACDA,IACJ,CAAC;EACL;AACJ;AAQO,MAAME,wBAAwB,SAASC,eAAM,CAAC;EACjD,OAAuBC,IAAI,GAAG,sBAAsB;EAGpDC,WAAWA,CAACC,EAA8B,EAAE;IACxC,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,EAAE,GAAGA,EAAE;EAChB;EAEAP,OAAOA,CAACQ,MAAwC,EAAE;IAC9C,OAAO,IAAI,CAACD,EAAE,CAACC,MAAM,CAAC;EAC1B;AACJ;AAACC,OAAA,CAAAN,wBAAA,GAAAA,wBAAA;AAMM,MAAMO,wBAAwB,GAAIH,EAA8B,IAAK;EACxE,OAAO,IAAIJ,wBAAwB,CAACI,EAAE,CAAC;AAC3C,CAAC;AAACE,OAAA,CAAAC,wBAAA,GAAAA,wBAAA;AAMK,MAAMC,yBAAyB,GAAGA,CACrCC,OAAmC,GAAG,EAAE,KACzB;EACf,MAAMC,QAAQ,GAAG,IAAIlB,kBAAkB,CAAC,CAAC;EACzCiB,OAAO,CAACE,OAAO,CAACC,EAAE,IAAIA,EAAE,CAACf,OAAO,CAAC;IAAEa;EAAS,CAAC,CAAC,CAAC;EAE/C,OAAQZ,IAAgB,IAAKY,QAAQ,CAACb,OAAO,CAACC,IAAI,CAAC;AACvD,CAAC;AAACQ,OAAA,CAAAE,yBAAA,GAAAA,yBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createFileNormalizerFromContext = void 0;
|
|
7
|
+
var _FileNormalizer = require("./FileNormalizer");
|
|
8
|
+
var _FileUploadModifier = require("./FileUploadModifier");
|
|
9
|
+
const createFileNormalizerFromContext = context => {
|
|
10
|
+
const modifierPlugins = context.plugins.byType(_FileUploadModifier.FileUploadModifierPlugin.type);
|
|
11
|
+
return new _FileNormalizer.FileNormalizer((0, _FileUploadModifier.createModifierFromPlugins)(modifierPlugins));
|
|
12
|
+
};
|
|
13
|
+
exports.createFileNormalizerFromContext = createFileNormalizerFromContext;
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=createFileNormalizerFromContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_FileNormalizer","require","_FileUploadModifier","createFileNormalizerFromContext","context","modifierPlugins","plugins","byType","FileUploadModifierPlugin","type","FileNormalizer","createModifierFromPlugins","exports"],"sources":["createFileNormalizerFromContext.ts"],"sourcesContent":["import type { Context } from \"@webiny/api/types\";\nimport { FileNormalizer } from \"~/utils/FileNormalizer\";\nimport { createModifierFromPlugins, FileUploadModifierPlugin } from \"~/utils/FileUploadModifier\";\n\nexport const createFileNormalizerFromContext = (context: Context) => {\n const modifierPlugins = context.plugins.byType<FileUploadModifierPlugin>(\n FileUploadModifierPlugin.type\n );\n\n return new FileNormalizer(createModifierFromPlugins(modifierPlugins));\n};\n"],"mappings":";;;;;;AACA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AAEO,MAAME,+BAA+B,GAAIC,OAAgB,IAAK;EACjE,MAAMC,eAAe,GAAGD,OAAO,CAACE,OAAO,CAACC,MAAM,CAC1CC,4CAAwB,CAACC,IAC7B,CAAC;EAED,OAAO,IAAIC,8BAAc,CAAC,IAAAC,6CAAyB,EAACN,eAAe,CAAC,CAAC;AACzE,CAAC;AAACO,OAAA,CAAAT,+BAAA,GAAAA,+BAAA","ignoreList":[]}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
file: {
|
|
5
|
-
name: string;
|
|
6
|
-
key: string;
|
|
7
|
-
type: any;
|
|
8
|
-
size: any;
|
|
9
|
-
};
|
|
10
|
-
}>;
|
|
11
|
-
export default _default;
|
|
1
|
+
import type { FileManagerSettings } from "@webiny/api-file-manager/types";
|
|
2
|
+
import type { FileData, PresignedPostPayloadDataResponse } from "../types";
|
|
3
|
+
export declare const getPresignedPostPayload: (file: FileData, settings: FileManagerSettings) => Promise<PresignedPostPayloadDataResponse>;
|
|
@@ -1,86 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
|
-
exports.
|
|
9
|
-
|
|
10
|
-
var _uniqid = _interopRequireDefault(require("uniqid"));
|
|
11
|
-
|
|
12
|
-
var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
|
|
13
|
-
|
|
14
|
-
var _s = _interopRequireDefault(require("aws-sdk/clients/s3"));
|
|
15
|
-
|
|
6
|
+
exports.getPresignedPostPayload = void 0;
|
|
7
|
+
var _clientS = require("@webiny/aws-sdk/client-s3");
|
|
16
8
|
var _validation = require("@webiny/validation");
|
|
17
|
-
|
|
18
9
|
const S3_BUCKET = process.env.S3_BUCKET;
|
|
19
|
-
const UPLOAD_MAX_FILE_SIZE_DEFAULT =
|
|
10
|
+
const UPLOAD_MAX_FILE_SIZE_DEFAULT = 1099511627776; // 1TB
|
|
20
11
|
|
|
21
12
|
const sanitizeFileSizeValue = (value, defaultValue) => {
|
|
22
13
|
try {
|
|
23
14
|
_validation.validation.validateSync(value, "required,numeric,gte:0");
|
|
24
|
-
|
|
25
15
|
return value;
|
|
26
16
|
} catch (e) {
|
|
17
|
+
// TODO @ts-refactor No need to log the error?
|
|
27
18
|
return defaultValue;
|
|
28
19
|
}
|
|
29
20
|
};
|
|
30
|
-
|
|
31
|
-
var _default = async (data, settings) => {
|
|
32
|
-
// If type is missing, let's use the default "application/octet-stream" type,
|
|
33
|
-
// which is also the default type that the Amazon S3 would use.
|
|
34
|
-
if (!data.type) {
|
|
35
|
-
data.type = "application/octet-stream";
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const contentType = data.type;
|
|
39
|
-
|
|
40
|
-
if (!contentType) {
|
|
41
|
-
throw Error(`File's content type could not be resolved.`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
let key = (0, _sanitizeFilename.default)(data.name);
|
|
45
|
-
|
|
46
|
-
if (key) {
|
|
47
|
-
key = (0, _uniqid.default)() + "-" + key;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (data.keyPrefix) {
|
|
51
|
-
key = `${(0, _sanitizeFilename.default)(data.keyPrefix)}-${key}`;
|
|
52
|
-
} // Replace all whitespace.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
key = key.replace(/\s/g, "");
|
|
21
|
+
const getPresignedPostPayload = async (file, settings) => {
|
|
56
22
|
const uploadMinFileSize = sanitizeFileSizeValue(settings.uploadMinFileSize, 0);
|
|
57
23
|
const uploadMaxFileSize = sanitizeFileSizeValue(settings.uploadMaxFileSize, UPLOAD_MAX_FILE_SIZE_DEFAULT);
|
|
58
24
|
const params = {
|
|
25
|
+
Key: file.key,
|
|
59
26
|
Expires: 60,
|
|
60
27
|
Bucket: S3_BUCKET,
|
|
61
28
|
Conditions: [["content-length-range", uploadMinFileSize, uploadMaxFileSize]],
|
|
62
|
-
// 0 Bytes - 25MB
|
|
63
29
|
Fields: {
|
|
64
|
-
"Content-Type":
|
|
65
|
-
key
|
|
30
|
+
"Content-Type": file.type
|
|
66
31
|
}
|
|
67
32
|
};
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
params.Fields.key = params.Fields.key.substr(1);
|
|
33
|
+
if (params.Key.startsWith("/")) {
|
|
34
|
+
params.Key = params.Key.slice(1);
|
|
71
35
|
}
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
const payload = s3.createPresignedPost(params);
|
|
36
|
+
const s3 = new _clientS.S3Client();
|
|
37
|
+
const payload = await (0, _clientS.createPresignedPost)(s3, params);
|
|
75
38
|
return {
|
|
76
39
|
data: payload,
|
|
77
|
-
file
|
|
78
|
-
name: key,
|
|
79
|
-
key,
|
|
80
|
-
type: contentType,
|
|
81
|
-
size: data.size
|
|
82
|
-
}
|
|
40
|
+
file
|
|
83
41
|
};
|
|
84
42
|
};
|
|
43
|
+
exports.getPresignedPostPayload = getPresignedPostPayload;
|
|
85
44
|
|
|
86
|
-
|
|
45
|
+
//# sourceMappingURL=getPresignedPostPayload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_clientS","require","_validation","S3_BUCKET","process","env","UPLOAD_MAX_FILE_SIZE_DEFAULT","sanitizeFileSizeValue","value","defaultValue","validation","validateSync","e","getPresignedPostPayload","file","settings","uploadMinFileSize","uploadMaxFileSize","params","Key","key","Expires","Bucket","Conditions","Fields","type","startsWith","slice","s3","S3Client","payload","createPresignedPost","data","exports"],"sources":["getPresignedPostPayload.ts"],"sourcesContent":["import type { PresignedPostOptions } from \"@webiny/aws-sdk/client-s3\";\nimport { S3Client, createPresignedPost } from \"@webiny/aws-sdk/client-s3\";\nimport { validation } from \"@webiny/validation\";\nimport type { FileManagerSettings } from \"@webiny/api-file-manager/types\";\nimport type { FileData, PresignedPostPayloadDataResponse } from \"~/types\";\n\nconst S3_BUCKET = process.env.S3_BUCKET;\nconst UPLOAD_MAX_FILE_SIZE_DEFAULT = 1099511627776; // 1TB\n\nconst sanitizeFileSizeValue = (value: number, defaultValue: number): number => {\n try {\n validation.validateSync(value, \"required,numeric,gte:0\");\n return value;\n } catch (e) {\n // TODO @ts-refactor No need to log the error?\n return defaultValue;\n }\n};\n\nexport const getPresignedPostPayload = async (\n file: FileData,\n settings: FileManagerSettings\n): Promise<PresignedPostPayloadDataResponse> => {\n const uploadMinFileSize = sanitizeFileSizeValue(settings.uploadMinFileSize, 0);\n const uploadMaxFileSize = sanitizeFileSizeValue(\n settings.uploadMaxFileSize,\n UPLOAD_MAX_FILE_SIZE_DEFAULT\n );\n\n const params = {\n Key: file.key,\n Expires: 60,\n Bucket: S3_BUCKET as string,\n Conditions: [\n [\"content-length-range\", uploadMinFileSize, uploadMaxFileSize]\n ] as PresignedPostOptions[\"Conditions\"],\n Fields: {\n \"Content-Type\": file.type\n }\n };\n\n if (params.Key.startsWith(\"/\")) {\n params.Key = params.Key.slice(1);\n }\n\n const s3 = new S3Client();\n const payload = await createPresignedPost(s3, params);\n\n return {\n data: payload,\n file\n };\n};\n"],"mappings":";;;;;;AACA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAIA,MAAME,SAAS,GAAGC,OAAO,CAACC,GAAG,CAACF,SAAS;AACvC,MAAMG,4BAA4B,GAAG,aAAa,CAAC,CAAC;;AAEpD,MAAMC,qBAAqB,GAAGA,CAACC,KAAa,EAAEC,YAAoB,KAAa;EAC3E,IAAI;IACAC,sBAAU,CAACC,YAAY,CAACH,KAAK,EAAE,wBAAwB,CAAC;IACxD,OAAOA,KAAK;EAChB,CAAC,CAAC,OAAOI,CAAC,EAAE;IACR;IACA,OAAOH,YAAY;EACvB;AACJ,CAAC;AAEM,MAAMI,uBAAuB,GAAG,MAAAA,CACnCC,IAAc,EACdC,QAA6B,KACe;EAC5C,MAAMC,iBAAiB,GAAGT,qBAAqB,CAACQ,QAAQ,CAACC,iBAAiB,EAAE,CAAC,CAAC;EAC9E,MAAMC,iBAAiB,GAAGV,qBAAqB,CAC3CQ,QAAQ,CAACE,iBAAiB,EAC1BX,4BACJ,CAAC;EAED,MAAMY,MAAM,GAAG;IACXC,GAAG,EAAEL,IAAI,CAACM,GAAG;IACbC,OAAO,EAAE,EAAE;IACXC,MAAM,EAAEnB,SAAmB;IAC3BoB,UAAU,EAAE,CACR,CAAC,sBAAsB,EAAEP,iBAAiB,EAAEC,iBAAiB,CAAC,CAC3B;IACvCO,MAAM,EAAE;MACJ,cAAc,EAAEV,IAAI,CAACW;IACzB;EACJ,CAAC;EAED,IAAIP,MAAM,CAACC,GAAG,CAACO,UAAU,CAAC,GAAG,CAAC,EAAE;IAC5BR,MAAM,CAACC,GAAG,GAAGD,MAAM,CAACC,GAAG,CAACQ,KAAK,CAAC,CAAC,CAAC;EACpC;EAEA,MAAMC,EAAE,GAAG,IAAIC,iBAAQ,CAAC,CAAC;EACzB,MAAMC,OAAO,GAAG,MAAM,IAAAC,4BAAmB,EAACH,EAAE,EAAEV,MAAM,CAAC;EAErD,OAAO;IACHc,IAAI,EAAEF,OAAO;IACbhB;EACJ,CAAC;AACL,CAAC;AAACmB,OAAA,CAAApB,uBAAA,GAAAA,uBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.mimeTypes = void 0;
|
|
8
|
+
var _other = _interopRequireDefault(require("mime/types/other"));
|
|
9
|
+
var _standard = _interopRequireDefault(require("mime/types/standard"));
|
|
10
|
+
// @ts-expect-error
|
|
11
|
+
|
|
12
|
+
// @ts-expect-error
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* We need to get all extensions that are defined for a specific content type.
|
|
16
|
+
* This operation is not available via the `mime` package, so we create such an object ourselves.
|
|
17
|
+
*/
|
|
18
|
+
const mimeTypes = exports.mimeTypes = {
|
|
19
|
+
..._other.default,
|
|
20
|
+
..._standard.default
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=mimeTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_other","_interopRequireDefault","require","_standard","mimeTypes","exports","vendorTypes","standardTypes"],"sources":["mimeTypes.ts"],"sourcesContent":["// @ts-expect-error\nimport vendorTypes from \"mime/types/other\";\n// @ts-expect-error\nimport standardTypes from \"mime/types/standard\";\n\n/**\n * We need to get all extensions that are defined for a specific content type.\n * This operation is not available via the `mime` package, so we create such an object ourselves.\n */\nexport const mimeTypes: Record<string, string[]> = {\n ...vendorTypes,\n ...standardTypes\n};\n"],"mappings":";;;;;;;AACA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AAHA;;AAEA;;AAGA;AACA;AACA;AACA;AACO,MAAME,SAAmC,GAAAC,OAAA,CAAAD,SAAA,GAAG;EAC/C,GAAGE,cAAW;EACd,GAAGC;AACP,CAAC","ignoreList":[]}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import type { Response } from "node-fetch";
|
|
4
|
+
import type { PresignedPost } from "@webiny/aws-sdk/client-s3";
|
|
5
|
+
declare const _default: (buffer: Buffer, preSignedPostPayload: PresignedPost) => Promise<Response>;
|
|
2
6
|
export default _default;
|
package/utils/uploadFileToS3.js
CHANGED
|
@@ -1,29 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _formData = _interopRequireDefault(require("form-data"));
|
|
11
|
-
|
|
12
9
|
var _nodeFetch = _interopRequireDefault(require("node-fetch"));
|
|
13
|
-
|
|
14
10
|
var _default = async (buffer, preSignedPostPayload) => {
|
|
15
|
-
const formData = new _formData.default();
|
|
16
|
-
|
|
11
|
+
const formData = new _formData.default();
|
|
12
|
+
// Add all pre signed payload field to "FormData".
|
|
17
13
|
Object.keys(preSignedPostPayload.fields).forEach(key => {
|
|
18
14
|
formData.append(key, preSignedPostPayload.fields[key]);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
formData.append("file", buffer);
|
|
22
|
-
|
|
15
|
+
});
|
|
16
|
+
// Add file content to "FormData".
|
|
17
|
+
formData.append("file", buffer);
|
|
18
|
+
// Finally make the upload request to S3.
|
|
23
19
|
return (0, _nodeFetch.default)(preSignedPostPayload.url, {
|
|
24
20
|
method: "POST",
|
|
25
21
|
body: formData
|
|
26
22
|
});
|
|
27
23
|
};
|
|
24
|
+
exports.default = _default;
|
|
28
25
|
|
|
29
|
-
|
|
26
|
+
//# sourceMappingURL=uploadFileToS3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_formData","_interopRequireDefault","require","_nodeFetch","_default","buffer","preSignedPostPayload","formData","FormData","Object","keys","fields","forEach","key","append","fetch","url","method","body","exports","default"],"sources":["uploadFileToS3.ts"],"sourcesContent":["import FormData from \"form-data\";\nimport type { Response } from \"node-fetch\";\nimport fetch from \"node-fetch\";\nimport type { PresignedPost } from \"@webiny/aws-sdk/client-s3\";\n\nexport default async (buffer: Buffer, preSignedPostPayload: PresignedPost): Promise<Response> => {\n const formData = new FormData();\n // Add all pre signed payload field to \"FormData\".\n Object.keys(preSignedPostPayload.fields).forEach(key => {\n formData.append(key, preSignedPostPayload.fields[key]);\n });\n // Add file content to \"FormData\".\n formData.append(\"file\", buffer);\n // Finally make the upload request to S3.\n return fetch(preSignedPostPayload.url, {\n method: \"POST\",\n body: formData\n });\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA+B,IAAAE,QAAA,GAGhB,MAAAA,CAAOC,MAAc,EAAEC,oBAAmC,KAAwB;EAC7F,MAAMC,QAAQ,GAAG,IAAIC,iBAAQ,CAAC,CAAC;EAC/B;EACAC,MAAM,CAACC,IAAI,CAACJ,oBAAoB,CAACK,MAAM,CAAC,CAACC,OAAO,CAACC,GAAG,IAAI;IACpDN,QAAQ,CAACO,MAAM,CAACD,GAAG,EAAEP,oBAAoB,CAACK,MAAM,CAACE,GAAG,CAAC,CAAC;EAC1D,CAAC,CAAC;EACF;EACAN,QAAQ,CAACO,MAAM,CAAC,MAAM,EAAET,MAAM,CAAC;EAC/B;EACA,OAAO,IAAAU,kBAAK,EAACT,oBAAoB,CAACU,GAAG,EAAE;IACnCC,MAAM,EAAE,MAAM;IACdC,IAAI,EAAEX;EACV,CAAC,CAAC;AACN,CAAC;AAAAY,OAAA,CAAAC,OAAA,GAAAhB,QAAA","ignoreList":[]}
|