@strapi/provider-upload-aws-s3 0.0.0-next.c443fb2cf1a0b330fbf8f4bf6b967c3002ccbd92 → 0.0.0-next.de5394e73076ccf7aca1e28dc68894e3c43f8b91
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/README.md +2 -2
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +1 -15
- package/dist/utils.js +35 -17
- package/dist/utils.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ module.exports = ({ env }) => ({
|
|
|
74
74
|
|
|
75
75
|
If your bucket is configured to be private, you will need to set the `ACL` option to `private` in the `params` object. This will ensure that the signed URL is generated with the correct permissions.
|
|
76
76
|
|
|
77
|
-
You can also define the expiration time of the signed URL by setting the `signedUrlExpires` option in the `params` object. The default value is
|
|
77
|
+
You can also define the expiration time of the signed URL by setting the `signedUrlExpires` option in the `params` object. The default value is 15 minutes.
|
|
78
78
|
|
|
79
79
|
`./config/plugins.js`
|
|
80
80
|
|
|
@@ -90,7 +90,7 @@ module.exports = ({ env }) => ({
|
|
|
90
90
|
region: env('AWS_REGION'),
|
|
91
91
|
params: {
|
|
92
92
|
ACL: 'private', // <== set ACL to private
|
|
93
|
-
signedUrlExpires: env('AWS_SIGNED_URL_EXPIRES',
|
|
93
|
+
signedUrlExpires: env('AWS_SIGNED_URL_EXPIRES', 15 * 60),
|
|
94
94
|
Bucket: env('AWS_BUCKET'),
|
|
95
95
|
},
|
|
96
96
|
},
|
package/dist/index.js
CHANGED
|
@@ -28,6 +28,11 @@ module.exports = {
|
|
|
28
28
|
return `${filePrefix}${path}${file.hash}${file.ext}`;
|
|
29
29
|
};
|
|
30
30
|
const ACL = (0, fp_1.getOr)('public-read', ['params', 'ACL'], config);
|
|
31
|
+
// if ACL is private and baseUrl is set, we need to warn the user
|
|
32
|
+
// signed url's will not have the baseUrl prefix
|
|
33
|
+
if (ACL === 'private' && baseUrl) {
|
|
34
|
+
process.emitWarning('You are using a private ACL with a baseUrl. This is not recommended as the files will be accessible without the baseUrl prefix.');
|
|
35
|
+
}
|
|
31
36
|
const upload = (file, customParams = {}) => new Promise((resolve, reject) => {
|
|
32
37
|
const fileKey = getFileKey(file);
|
|
33
38
|
if (!file.stream && !file.buffer) {
|
|
@@ -66,16 +71,16 @@ module.exports = {
|
|
|
66
71
|
},
|
|
67
72
|
async getSignedUrl(file) {
|
|
68
73
|
// Do not sign the url if it does not come from the same bucket.
|
|
69
|
-
|
|
70
|
-
if (bucket !== config.params.Bucket) {
|
|
74
|
+
if (!(0, utils_1.isUrlFromBucket)(file.url, config.params.Bucket, baseUrl)) {
|
|
71
75
|
return { url: file.url };
|
|
72
76
|
}
|
|
77
|
+
const signedUrlExpires = (0, fp_1.getOr)(15 * 60, ['params', 'signedUrlExpires'], config); // 15 minutes
|
|
73
78
|
return new Promise((resolve, reject) => {
|
|
74
79
|
const fileKey = getFileKey(file);
|
|
75
80
|
S3.getSignedUrl('getObject', {
|
|
76
81
|
Bucket: config.params.Bucket,
|
|
77
82
|
Key: fileKey,
|
|
78
|
-
Expires: (
|
|
83
|
+
Expires: parseInt(signedUrlExpires, 10),
|
|
79
84
|
}, (err, url) => {
|
|
80
85
|
if (err) {
|
|
81
86
|
return reject(err);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AACA,kCAAkC;AAClC,sDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,15 +1 @@
|
|
|
1
|
-
|
|
2
|
-
bucket?: string | null;
|
|
3
|
-
err?: string;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Parse the bucket name from a URL.
|
|
7
|
-
* See all URL formats in https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html
|
|
8
|
-
*
|
|
9
|
-
* @param {string} fileUrl - the URL to parse
|
|
10
|
-
* @returns {object} result
|
|
11
|
-
* @returns {string} result.bucket - the bucket name
|
|
12
|
-
* @returns {string} result.err - if any
|
|
13
|
-
*/
|
|
14
|
-
export declare function getBucketFromUrl(fileUrl: string): BucketInfo;
|
|
15
|
-
export {};
|
|
1
|
+
export declare function isUrlFromBucket(fileUrl: string, bucketName: string, bucketBaseUrl?: string): boolean;
|
package/dist/utils.js
CHANGED
|
@@ -1,7 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isUrlFromBucket = void 0;
|
|
4
4
|
const ENDPOINT_PATTERN = /^(.+\.)?s3[.-]([a-z0-9-]+)\./;
|
|
5
|
+
function isUrlFromBucket(fileUrl, bucketName, bucketBaseUrl = '') {
|
|
6
|
+
const url = new URL(fileUrl);
|
|
7
|
+
// Check if the file URL is using a base URL (e.g. a CDN).
|
|
8
|
+
// In this case, check if the file URL starts with the same base URL as the bucket URL.
|
|
9
|
+
if (bucketBaseUrl) {
|
|
10
|
+
const baseUrl = new URL(bucketBaseUrl);
|
|
11
|
+
return url.href.startsWith(baseUrl.href);
|
|
12
|
+
}
|
|
13
|
+
const { bucket } = getBucketFromAwsUrl(fileUrl);
|
|
14
|
+
if (bucket) {
|
|
15
|
+
return bucket === bucketName;
|
|
16
|
+
}
|
|
17
|
+
// File URL might be of an S3-compatible provider. (or an invalid URL)
|
|
18
|
+
// In this case, check if the bucket name appears in the URL host or path.
|
|
19
|
+
// e.g. https://minio.example.com/bucket-name/object-key
|
|
20
|
+
// e.g. https://bucket.nyc3.digitaloceanspaces.com/folder/img.png
|
|
21
|
+
return url.host.startsWith(`${bucketName}.`) || url.pathname.includes(`/${bucketName}/`);
|
|
22
|
+
}
|
|
23
|
+
exports.isUrlFromBucket = isUrlFromBucket;
|
|
5
24
|
/**
|
|
6
25
|
* Parse the bucket name from a URL.
|
|
7
26
|
* See all URL formats in https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-bucket-intro.html
|
|
@@ -11,43 +30,42 @@ const ENDPOINT_PATTERN = /^(.+\.)?s3[.-]([a-z0-9-]+)\./;
|
|
|
11
30
|
* @returns {string} result.bucket - the bucket name
|
|
12
31
|
* @returns {string} result.err - if any
|
|
13
32
|
*/
|
|
14
|
-
function
|
|
15
|
-
const
|
|
33
|
+
function getBucketFromAwsUrl(fileUrl) {
|
|
34
|
+
const url = new URL(fileUrl);
|
|
16
35
|
// S3://<bucket-name>/<key>
|
|
17
|
-
if (
|
|
18
|
-
const bucket =
|
|
36
|
+
if (url.protocol === 's3:') {
|
|
37
|
+
const bucket = url.host;
|
|
19
38
|
if (!bucket) {
|
|
20
|
-
return { err: `Invalid S3
|
|
39
|
+
return { err: `Invalid S3 url: no bucket: ${url}` };
|
|
21
40
|
}
|
|
22
41
|
return { bucket };
|
|
23
42
|
}
|
|
24
|
-
if (!
|
|
25
|
-
return { err: `Invalid S3
|
|
43
|
+
if (!url.host) {
|
|
44
|
+
return { err: `Invalid S3 url: no hostname: ${url}` };
|
|
26
45
|
}
|
|
27
|
-
const matches =
|
|
46
|
+
const matches = url.host.match(ENDPOINT_PATTERN);
|
|
28
47
|
if (!matches) {
|
|
29
|
-
return { err: `Invalid S3
|
|
48
|
+
return { err: `Invalid S3 url: hostname does not appear to be a valid S3 endpoint: ${url}` };
|
|
30
49
|
}
|
|
31
50
|
const prefix = matches[1];
|
|
32
51
|
// https://s3.amazonaws.com/<bucket-name>
|
|
33
52
|
if (!prefix) {
|
|
34
|
-
if (
|
|
53
|
+
if (url.pathname === '/') {
|
|
35
54
|
return { bucket: null };
|
|
36
55
|
}
|
|
37
|
-
const index =
|
|
56
|
+
const index = url.pathname.indexOf('/', 1);
|
|
38
57
|
// https://s3.amazonaws.com/<bucket-name>
|
|
39
58
|
if (index === -1) {
|
|
40
|
-
return { bucket:
|
|
59
|
+
return { bucket: url.pathname.substring(1) };
|
|
41
60
|
}
|
|
42
61
|
// https://s3.amazonaws.com/<bucket-name>/
|
|
43
|
-
if (index ===
|
|
44
|
-
return { bucket:
|
|
62
|
+
if (index === url.pathname.length - 1) {
|
|
63
|
+
return { bucket: url.pathname.substring(1, index) };
|
|
45
64
|
}
|
|
46
65
|
// https://s3.amazonaws.com/<bucket-name>/key
|
|
47
|
-
return { bucket:
|
|
66
|
+
return { bucket: url.pathname.substring(1, index) };
|
|
48
67
|
}
|
|
49
68
|
// https://<bucket-name>.s3.amazonaws.com/
|
|
50
69
|
return { bucket: prefix.substring(0, prefix.length - 1) };
|
|
51
70
|
}
|
|
52
|
-
exports.getBucketFromUrl = getBucketFromUrl;
|
|
53
71
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAOxD;;;;;;;;GAQG;AACH,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;AAOxD,SAAgB,eAAe,CAAC,OAAe,EAAE,UAAkB,EAAE,aAAa,GAAG,EAAE;IACrF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAE7B,0DAA0D;IAC1D,uFAAuF;IACvF,IAAI,aAAa,EAAE;QACjB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QACvC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1C;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAI,MAAM,EAAE;QACV,OAAO,MAAM,KAAK,UAAU,CAAC;KAC9B;IAED,sEAAsE;IACtE,0EAA0E;IAC1E,wDAAwD;IACxD,iEAAiE;IACjE,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AAC3F,CAAC;AArBD,0CAqBC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAE7B,2BAA2B;IAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,EAAE,GAAG,EAAE,8BAA8B,GAAG,EAAE,EAAE,CAAC;SACrD;QACD,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB;IAED,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QACb,OAAO,EAAE,GAAG,EAAE,gCAAgC,GAAG,EAAE,EAAE,CAAC;KACvD;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,EAAE,GAAG,EAAE,uEAAuE,GAAG,EAAE,EAAE,CAAC;KAC9F;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,yCAAyC;IACzC,IAAI,CAAC,MAAM,EAAE;QACX,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE;YACxB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACzB;QAED,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAE3C,yCAAyC;QACzC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C;QAED,0CAA0C;QAC1C,IAAI,KAAK,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;SACrD;QAED,6CAA6C;QAC7C,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;KACrD;IAED,0CAA0C;IAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/provider-upload-aws-s3",
|
|
3
|
-
"version": "0.0.0-next.
|
|
3
|
+
"version": "0.0.0-next.de5394e73076ccf7aca1e28dc68894e3c43f8b91",
|
|
4
4
|
"description": "AWS S3 provider for strapi upload",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"upload",
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
"lint": "run -T eslint ."
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"aws-sdk": "2.
|
|
48
|
+
"aws-sdk": "2.1399.0",
|
|
49
49
|
"lodash": "4.17.21"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/jest": "29.2.0",
|
|
53
|
-
"eslint-config-custom": "0.0.0-next.
|
|
54
|
-
"tsconfig": "0.0.0-next.
|
|
53
|
+
"eslint-config-custom": "0.0.0-next.de5394e73076ccf7aca1e28dc68894e3c43f8b91",
|
|
54
|
+
"tsconfig": "0.0.0-next.de5394e73076ccf7aca1e28dc68894e3c43f8b91"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": ">=14.19.1 <=18.x.x",
|
|
58
58
|
"npm": ">=6.0.0"
|
|
59
59
|
},
|
|
60
|
-
"gitHead": "
|
|
60
|
+
"gitHead": "de5394e73076ccf7aca1e28dc68894e3c43f8b91"
|
|
61
61
|
}
|