@contember/engine-s3-plugin 1.1.0-alpha.5 → 1.1.0-alpha.8
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/dist/src/Config.d.ts +3 -2
- package/dist/src/Config.d.ts.map +1 -1
- package/dist/src/Config.js +46 -15
- package/dist/src/Config.js.map +1 -1
- package/dist/src/ObjectKeyVerifier.js +2 -2
- package/dist/src/ObjectKeyVerifier.js.map +1 -1
- package/dist/src/S3ConfigProcessor.d.ts +1 -1
- package/dist/src/S3ConfigProcessor.d.ts.map +1 -1
- package/dist/src/S3ConfigProcessor.js +26 -2
- package/dist/src/S3ConfigProcessor.js.map +1 -1
- package/dist/src/S3Service.d.ts +1 -1
- package/dist/src/S3Service.d.ts.map +1 -1
- package/dist/src/S3Service.js +4 -4
- package/dist/src/S3Service.js.map +1 -1
- package/dist/src/index.js +5 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/tests/cases/signRequest.test.js +7 -28
- package/dist/tests/cases/signRequest.test.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -9
- package/src/Config.ts +11 -4
- package/src/ObjectKeyVerifier.ts +1 -1
- package/src/S3ConfigProcessor.ts +3 -2
- package/src/S3Service.ts +6 -5
- package/src/tsconfig.json +1 -1
- package/tests/cases/signRequest.test.ts +1 -3
- package/vite.config.js +3 -0
package/dist/src/Config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ProjectConfig } from '@contember/engine-plugins';
|
|
2
|
-
import
|
|
2
|
+
import * as Typesafe from '@contember/typesafe';
|
|
3
3
|
export declare enum S3Providers {
|
|
4
4
|
aws = "aws",
|
|
5
5
|
minio = "minio",
|
|
@@ -17,6 +17,7 @@ export declare const s3ConfigSchema: Typesafe.Type<{
|
|
|
17
17
|
};
|
|
18
18
|
} & {
|
|
19
19
|
readonly endpoint?: string | undefined;
|
|
20
|
+
readonly cdnEndpoint?: string | undefined;
|
|
20
21
|
readonly provider?: S3Providers | undefined;
|
|
21
22
|
readonly noAcl?: boolean | undefined;
|
|
22
23
|
}>;
|
|
@@ -28,6 +29,6 @@ export declare const resolveS3Config: (config: S3Config) => S3Config;
|
|
|
28
29
|
export declare const resolveS3Endpoint: (config: S3Config) => {
|
|
29
30
|
endpoint: string;
|
|
30
31
|
basePath: string;
|
|
31
|
-
baseUrl: string;
|
|
32
32
|
};
|
|
33
|
+
export declare const resolveS3PublicBaseUrl: (config: S3Config) => string;
|
|
33
34
|
//# sourceMappingURL=Config.d.ts.map
|
package/dist/src/Config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,oBAAY,WAAW;IACtB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,WAAW,gBAAgB;CAC3B;AAGD,eAAO,MAAM,cAAc;;;;;;;;;;;;;EAgB1B,CAAA;AAED,oBAAY,QAAQ,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAA;AAExD,oBAAY,mBAAmB,GAAG,aAAa,CAAC;IAAE,EAAE,CAAC,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA;AAKlE,eAAO,MAAM,eAAe,WAAY,QAAQ,KAAG,QAKlD,CAAA;AAID,eAAO,MAAM,iBAAiB,WACrB,QAAQ;cAEN,MAAM;cACN,MAAM;CAOhB,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,QAAQ,KAAG,MAMzD,CAAA"}
|
package/dist/src/Config.js
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveS3Endpoint = exports.resolveS3Config = exports.s3ConfigSchema = exports.S3Providers = void 0;
|
|
4
|
-
const
|
|
26
|
+
exports.resolveS3PublicBaseUrl = exports.resolveS3Endpoint = exports.resolveS3Config = exports.s3ConfigSchema = exports.S3Providers = void 0;
|
|
27
|
+
const Typesafe = __importStar(require("@contember/typesafe"));
|
|
5
28
|
var S3Providers;
|
|
6
29
|
(function (S3Providers) {
|
|
7
30
|
S3Providers["aws"] = "aws";
|
|
@@ -10,18 +33,19 @@ var S3Providers;
|
|
|
10
33
|
S3Providers["localstack"] = "localstack";
|
|
11
34
|
S3Providers["cloudserver"] = "cloudserver";
|
|
12
35
|
})(S3Providers = exports.S3Providers || (exports.S3Providers = {}));
|
|
13
|
-
exports.s3ConfigSchema =
|
|
14
|
-
bucket:
|
|
15
|
-
region:
|
|
16
|
-
prefix:
|
|
17
|
-
credentials:
|
|
18
|
-
key:
|
|
19
|
-
secret:
|
|
36
|
+
exports.s3ConfigSchema = Typesafe.intersection(Typesafe.object({
|
|
37
|
+
bucket: Typesafe.string,
|
|
38
|
+
region: Typesafe.string,
|
|
39
|
+
prefix: Typesafe.string,
|
|
40
|
+
credentials: Typesafe.object({
|
|
41
|
+
key: Typesafe.string,
|
|
42
|
+
secret: Typesafe.string,
|
|
20
43
|
}),
|
|
21
|
-
}),
|
|
22
|
-
endpoint:
|
|
23
|
-
|
|
24
|
-
|
|
44
|
+
}), Typesafe.partial({
|
|
45
|
+
endpoint: Typesafe.string,
|
|
46
|
+
cdnEndpoint: Typesafe.string,
|
|
47
|
+
provider: Typesafe.enumeration(S3Providers.aws, S3Providers.minio, S3Providers.ceph, S3Providers.localstack, S3Providers.cloudserver),
|
|
48
|
+
noAcl: Typesafe.boolean,
|
|
25
49
|
}));
|
|
26
50
|
// todo
|
|
27
51
|
const serversWithoutAclSupport = [S3Providers.minio];
|
|
@@ -37,8 +61,15 @@ const resolveS3Endpoint = (config) => {
|
|
|
37
61
|
const hasLegacyPath = !!config.endpoint || config.bucket.includes('.');
|
|
38
62
|
const endpoint = config.endpoint || `https://${hasLegacyPath ? '' : `${config.bucket}.`}s3.${config.region || defaultRegion}.amazonaws.com`;
|
|
39
63
|
const basePath = hasLegacyPath ? `/${config.bucket}` : '';
|
|
40
|
-
|
|
41
|
-
return { endpoint, basePath, baseUrl };
|
|
64
|
+
return { endpoint, basePath };
|
|
42
65
|
};
|
|
43
66
|
exports.resolveS3Endpoint = resolveS3Endpoint;
|
|
67
|
+
const resolveS3PublicBaseUrl = (config) => {
|
|
68
|
+
if (config.cdnEndpoint) {
|
|
69
|
+
return config.cdnEndpoint;
|
|
70
|
+
}
|
|
71
|
+
const { endpoint, basePath } = (0, exports.resolveS3Endpoint)(config);
|
|
72
|
+
return endpoint + basePath;
|
|
73
|
+
};
|
|
74
|
+
exports.resolveS3PublicBaseUrl = resolveS3PublicBaseUrl;
|
|
44
75
|
//# sourceMappingURL=Config.js.map
|
package/dist/src/Config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,8DAA+C;AAE/C,IAAY,WAMX;AAND,WAAY,WAAW;IACtB,0BAAW,CAAA;IACX,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,wCAAyB,CAAA;IACzB,0CAA2B,CAAA;AAC5B,CAAC,EANW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAMtB;AAGY,QAAA,cAAc,GAAG,QAAQ,CAAC,YAAY,CAClD,QAAQ,CAAC,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;IACvB,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM;QACpB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAC;CACF,CAAC,EACF,QAAQ,CAAC,OAAO,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM;IACzB,WAAW,EAAE,QAAQ,CAAC,MAAM;IAC5B,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC;IACrI,KAAK,EAAE,QAAQ,CAAC,OAAO;CACvB,CAAC,CACF,CAAA;AAMD,OAAO;AACP,MAAM,wBAAwB,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;AAE7C,MAAM,eAAe,GAAG,CAAC,MAAgB,EAAY,EAAE;IAC7D,OAAO;QACN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9E,GAAG,MAAM;KACT,CAAA;AACF,CAAC,CAAA;AALY,QAAA,eAAe,mBAK3B;AAED,MAAM,aAAa,GAAG,WAAW,CAAA;AAE1B,MAAM,iBAAiB,GAAG,CAChC,MAAgB,EAIf,EAAE;IACH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,WAAW,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,IAAI,aAAa,gBAAgB,CAAA;IAC3I,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAEzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC,CAAA;AAXY,QAAA,iBAAiB,qBAW7B;AAEM,MAAM,sBAAsB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAClE,IAAI,MAAM,CAAC,WAAW,EAAE;QACvB,OAAO,MAAM,CAAC,WAAW,CAAA;KACzB;IACD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAA;IACxD,OAAO,QAAQ,GAAG,QAAQ,CAAA;AAC3B,CAAC,CAAA;AANY,QAAA,sBAAsB,0BAMlC"}
|
|
@@ -5,12 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createObjectKeyVerifier = void 0;
|
|
7
7
|
const picomatch_1 = __importDefault(require("picomatch"));
|
|
8
|
-
const
|
|
8
|
+
const graphql_utils_1 = require("@contember/graphql-utils");
|
|
9
9
|
const createObjectKeyVerifier = (patterns) => {
|
|
10
10
|
const matchers = patterns.map(it => (0, picomatch_1.default)(it));
|
|
11
11
|
return key => {
|
|
12
12
|
if (!matchers.find(it => it(key))) {
|
|
13
|
-
throw new
|
|
13
|
+
throw new graphql_utils_1.ForbiddenError(`You are not allowed to use object key ${key}`);
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectKeyVerifier.js","sourceRoot":"","sources":["../../src/ObjectKeyVerifier.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAuC;AACvC
|
|
1
|
+
{"version":3,"file":"ObjectKeyVerifier.js","sourceRoot":"","sources":["../../src/ObjectKeyVerifier.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAuC;AACvC,4DAAyD;AAIlD,MAAM,uBAAuB,GAAG,CAAC,QAAkB,EAAqB,EAAE;IAChF,MAAM,QAAQ,GAAc,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAA,mBAAE,EAAC,EAAE,CAAC,CAAC,CAAA;IAEtD,OAAO,GAAG,CAAC,EAAE;QACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAClC,MAAM,IAAI,8BAAc,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAA;SACxE;IACF,CAAC,CAAA;AACF,CAAC,CAAA;AARY,QAAA,uBAAuB,2BAQnC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins';
|
|
2
2
|
import { ProjectWithS3Config } from './Config';
|
|
3
|
-
import
|
|
3
|
+
import * as Typesafe from '@contember/typesafe';
|
|
4
4
|
export declare class S3ConfigProcessor implements ConfigProcessor<ProjectWithS3Config> {
|
|
5
5
|
getDefaultEnv(): Record<string, string>;
|
|
6
6
|
prepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3ConfigProcessor.d.ts","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAkB,MAAM,UAAU,CAAA;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"S3ConfigProcessor.d.ts","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAClG,OAAO,EAAE,mBAAmB,EAAkB,MAAM,UAAU,CAAA;AAC9D,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,qBAAa,iBAAkB,YAAW,eAAe,CAAC,mBAAmB,CAAC;IAC7E,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQvC,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,EAAE,qBAAqB;IAqB9E,sBAAsB,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CASzE"}
|
|
@@ -1,8 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.S3ConfigProcessor = void 0;
|
|
4
27
|
const Config_1 = require("./Config");
|
|
5
|
-
const
|
|
28
|
+
const Typesafe = __importStar(require("@contember/typesafe"));
|
|
6
29
|
class S3ConfigProcessor {
|
|
7
30
|
getDefaultEnv() {
|
|
8
31
|
return {
|
|
@@ -21,6 +44,7 @@ class S3ConfigProcessor {
|
|
|
21
44
|
prefix: `%?project.env.S3_PREFIX||project.slug%`,
|
|
22
45
|
region: `%project.env.S3_REGION%`,
|
|
23
46
|
endpoint: `%project.env.S3_ENDPOINT%`,
|
|
47
|
+
cdnEndpoint: `%?project.env.S3_CDN%`,
|
|
24
48
|
provider: '%project.env.S3_PROVIDER%',
|
|
25
49
|
credentials: {
|
|
26
50
|
key: `%?project.secret.s3.key||project.env.S3_KEY%`,
|
|
@@ -31,7 +55,7 @@ class S3ConfigProcessor {
|
|
|
31
55
|
};
|
|
32
56
|
}
|
|
33
57
|
getProjectConfigSchema(slug) {
|
|
34
|
-
return
|
|
58
|
+
return Typesafe.union((input, path = []) => Typesafe.valueAt(input, ['s3', 'credentials', 'key']) === undefined ? {} : Typesafe.fail(path), Typesafe.object({
|
|
35
59
|
s3: Config_1.s3ConfigSchema,
|
|
36
60
|
}));
|
|
37
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3ConfigProcessor.js","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"S3ConfigProcessor.js","sourceRoot":"","sources":["../../src/S3ConfigProcessor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAA8D;AAC9D,8DAA+C;AAE/C,MAAa,iBAAiB;IAC7B,aAAa;QACZ,OAAO;YACN,mBAAmB,EAAE,EAAE;YACvB,iBAAiB,EAAE,WAAW;YAC9B,mBAAmB,EAAE,KAAK;SAC1B,CAAA;IACF,CAAC;IAED,qBAAqB,CAAC,QAAwB,EAAE,EAAE,GAAG,EAAyB;QAC7E,OAAO;YACN,GAAG,QAAQ;YACX,eAAe,EAAE;gBAChB,GAAG,QAAQ,CAAC,eAAe;gBAC3B,EAAE,EAAE;oBACH,MAAM,EAAE,0BAA0B;oBAClC,MAAM,EAAE,wCAAwC;oBAChD,MAAM,EAAE,yBAAyB;oBACjC,QAAQ,EAAE,2BAA2B;oBACrC,WAAW,EAAE,uBAAuB;oBACpC,QAAQ,EAAE,2BAA2B;oBACrC,WAAW,EAAE;wBACZ,GAAG,EAAE,8CAA8C;wBACnD,MAAM,EAAE,oDAAoD;qBAC5D;iBACD;aACD;SACD,CAAA;IACF,CAAC;IAED,sBAAsB,CAAE,IAAY;QACnC,OAAO,QAAQ,CAAC,KAAK,CACpB,CAAC,KAAc,EAAE,OAAsB,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5I,QAAQ,CAAC,MAAM,CAAC;YACf,EAAE,EAAE,uBAAc;SAClB,CAAC,CACF,CAAA;IACF,CAAC;CAED;AAvCD,8CAuCC"}
|
package/dist/src/S3Service.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ declare type SignedUploadUrl = {
|
|
|
30
30
|
export declare class S3Service {
|
|
31
31
|
readonly config: S3Config;
|
|
32
32
|
private readonly providers;
|
|
33
|
-
private readonly
|
|
33
|
+
private readonly publicBaseUrl;
|
|
34
34
|
private readonly signer;
|
|
35
35
|
constructor(config: S3Config, providers: Providers);
|
|
36
36
|
getSignedUploadUrl(contentType: string, verifyKey: ObjectKeyVerifier, acl?: S3Acl, expiration?: number, prefix?: string): SignedUploadUrl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3Service.d.ts","sourceRoot":"","sources":["../../src/S3Service.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"S3Service.d.ts","sourceRoot":"","sources":["../../src/S3Service.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAGrD,oBAAY,KAAK;IAChB,IAAI,SAAS;IACb,UAAU,gBAAgB;IAC1B,OAAO,YAAY;CACnB;AAED,aAAK,aAAa,GAAG;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,aAAK,eAAe,GAAG;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACzC,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAGD,qBAAa,SAAS;aAKO,MAAM,EAAE,QAAQ;IAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJxE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IAEtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAEL,MAAM,EAAE,QAAQ,EAAmB,SAAS,EAAE,SAAS;IAK5E,kBAAkB,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,iBAAiB,EAC5B,GAAG,CAAC,EAAE,KAAK,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACb,eAAe;IA4CX,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa;IA8BrG,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG3C;AAED,qBAAa,gBAAgB;IACrB,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;CAGpD"}
|
package/dist/src/S3Service.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.S3ServiceFactory = exports.S3Service = exports.S3Acl = void 0;
|
|
4
4
|
const mime_types_1 = require("mime-types");
|
|
5
5
|
const Config_1 = require("./Config");
|
|
6
|
-
const
|
|
6
|
+
const graphql_utils_1 = require("@contember/graphql-utils");
|
|
7
7
|
const S3Signer_1 = require("./S3Signer");
|
|
8
8
|
var S3Acl;
|
|
9
9
|
(function (S3Acl) {
|
|
@@ -15,7 +15,7 @@ class S3Service {
|
|
|
15
15
|
constructor(config, providers) {
|
|
16
16
|
this.config = config;
|
|
17
17
|
this.providers = providers;
|
|
18
|
-
this.
|
|
18
|
+
this.publicBaseUrl = (0, Config_1.resolveS3PublicBaseUrl)(config);
|
|
19
19
|
this.signer = new S3Signer_1.S3Signer(config, providers);
|
|
20
20
|
}
|
|
21
21
|
getSignedUploadUrl(contentType, verifyKey, acl, expiration, prefix) {
|
|
@@ -66,7 +66,7 @@ class S3Service {
|
|
|
66
66
|
objectKey = objectKey.substr(publicPrefix.length);
|
|
67
67
|
}
|
|
68
68
|
if (this.config.prefix && !objectKey.startsWith(this.config.prefix)) {
|
|
69
|
-
throw new
|
|
69
|
+
throw new graphql_utils_1.ForbiddenError(`Given object key "${objectKey}" does not start with a project prefix "${this.config.prefix}"`);
|
|
70
70
|
}
|
|
71
71
|
objectKey = objectKey.substr(this.config.prefix.length + 1);
|
|
72
72
|
verifyKey(objectKey);
|
|
@@ -85,7 +85,7 @@ class S3Service {
|
|
|
85
85
|
};
|
|
86
86
|
}
|
|
87
87
|
formatPublicUrl(key) {
|
|
88
|
-
return `${this.
|
|
88
|
+
return `${this.publicBaseUrl}/${key}`;
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
exports.S3Service = S3Service;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"S3Service.js","sourceRoot":"","sources":["../../src/S3Service.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AACtC,
|
|
1
|
+
{"version":3,"file":"S3Service.js","sourceRoot":"","sources":["../../src/S3Service.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,2DAAuD;AACvD,+DAA2D;AAC3D,2CAA8C;AAG9C,wDAAqC;AACrC,8CAA2B;AAE3B,MAAqB,EAAE;IACtB,kBAAkB;QACjB,OAAO,IAAI,qCAAiB,EAAE,CAAA;IAC/B,CAAC;IAED,oBAAoB,CAAC,SAAgD;QACpE,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAA;QACvC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;YACtB,OAAO,SAAS,CAAA;SAChB;QACD,MAAM,gBAAgB,GAAG,IAAI,4BAAgB,EAAE,CAAA;QAC/C,OAAO,IAAI,yCAAmB,CAAC,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACxF,CAAC;CACD;AAbD,qBAaC"}
|