@contember/engine-s3-plugin 2.1.0-alpha.30 → 2.1.0-alpha.35
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/package.json +19 -14
- package/src/Config.ts +0 -1
- package/src/S3ConfigProcessor.ts +0 -1
- package/src/S3ObjectAuthorizator.ts +0 -1
- package/src/S3SchemaContributor.ts +2 -7
- package/src/S3SchemaTypes.ts +3 -10
- package/src/S3Service.ts +1 -2
- package/src/S3Signer.ts +1 -1
- package/tests/cases/authorizator.test.ts +1 -2
- package/tests/cases/signRequest.test.ts +54 -26
- package/types/picomatch/index.d.ts +1 -1
- package/dist/development/index.cjs +0 -27
- package/dist/development/index.cjs.map +0 -1
- package/dist/development/index.js +0 -28
- package/dist/development/index.js.map +0 -1
- package/dist/development/src/Config.cjs +0 -73
- package/dist/development/src/Config.cjs.map +0 -1
- package/dist/development/src/Config.js +0 -56
- package/dist/development/src/Config.js.map +0 -1
- package/dist/development/src/S3ConfigProcessor.cjs +0 -60
- package/dist/development/src/S3ConfigProcessor.cjs.map +0 -1
- package/dist/development/src/S3ConfigProcessor.js +0 -43
- package/dist/development/src/S3ConfigProcessor.js.map +0 -1
- package/dist/development/src/S3ObjectAuthorizator.cjs +0 -46
- package/dist/development/src/S3ObjectAuthorizator.cjs.map +0 -1
- package/dist/development/src/S3ObjectAuthorizator.js +0 -46
- package/dist/development/src/S3ObjectAuthorizator.js.map +0 -1
- package/dist/development/src/S3SchemaContributor.cjs +0 -107
- package/dist/development/src/S3SchemaContributor.cjs.map +0 -1
- package/dist/development/src/S3SchemaContributor.js +0 -107
- package/dist/development/src/S3SchemaContributor.js.map +0 -1
- package/dist/development/src/S3SchemaTypes.cjs +0 -71
- package/dist/development/src/S3SchemaTypes.cjs.map +0 -1
- package/dist/development/src/S3SchemaTypes.js +0 -71
- package/dist/development/src/S3SchemaTypes.js.map +0 -1
- package/dist/development/src/S3Service.cjs +0 -105
- package/dist/development/src/S3Service.cjs.map +0 -1
- package/dist/development/src/S3Service.js +0 -105
- package/dist/development/src/S3Service.js.map +0 -1
- package/dist/development/src/S3Signer.cjs +0 -84
- package/dist/development/src/S3Signer.cjs.map +0 -1
- package/dist/development/src/S3Signer.js +0 -84
- package/dist/development/src/S3Signer.js.map +0 -1
- package/dist/production/index.cjs +0 -27
- package/dist/production/index.cjs.map +0 -1
- package/dist/production/index.js +0 -28
- package/dist/production/index.js.map +0 -1
- package/dist/production/src/Config.cjs +0 -73
- package/dist/production/src/Config.cjs.map +0 -1
- package/dist/production/src/Config.js +0 -56
- package/dist/production/src/Config.js.map +0 -1
- package/dist/production/src/S3ConfigProcessor.cjs +0 -60
- package/dist/production/src/S3ConfigProcessor.cjs.map +0 -1
- package/dist/production/src/S3ConfigProcessor.js +0 -43
- package/dist/production/src/S3ConfigProcessor.js.map +0 -1
- package/dist/production/src/S3ObjectAuthorizator.cjs +0 -46
- package/dist/production/src/S3ObjectAuthorizator.cjs.map +0 -1
- package/dist/production/src/S3ObjectAuthorizator.js +0 -46
- package/dist/production/src/S3ObjectAuthorizator.js.map +0 -1
- package/dist/production/src/S3SchemaContributor.cjs +0 -107
- package/dist/production/src/S3SchemaContributor.cjs.map +0 -1
- package/dist/production/src/S3SchemaContributor.js +0 -107
- package/dist/production/src/S3SchemaContributor.js.map +0 -1
- package/dist/production/src/S3SchemaTypes.cjs +0 -71
- package/dist/production/src/S3SchemaTypes.cjs.map +0 -1
- package/dist/production/src/S3SchemaTypes.js +0 -71
- package/dist/production/src/S3SchemaTypes.js.map +0 -1
- package/dist/production/src/S3Service.cjs +0 -105
- package/dist/production/src/S3Service.cjs.map +0 -1
- package/dist/production/src/S3Service.js +0 -105
- package/dist/production/src/S3Service.js.map +0 -1
- package/dist/production/src/S3Signer.cjs +0 -84
- package/dist/production/src/S3Signer.cjs.map +0 -1
- package/dist/production/src/S3Signer.js +0 -84
- package/dist/production/src/S3Signer.js.map +0 -1
- package/dist/tests/cases/authorizator.test.d.ts +0 -2
- package/dist/tests/cases/authorizator.test.d.ts.map +0 -1
- package/dist/tests/cases/signRequest.test.d.ts +0 -2
- package/dist/tests/cases/signRequest.test.d.ts.map +0 -1
- package/dist/tests/tsconfig.tsbuildinfo +0 -1
- package/dist/types/Config.d.ts +0 -33
- package/dist/types/Config.d.ts.map +0 -1
- package/dist/types/S3ConfigProcessor.d.ts +0 -9
- package/dist/types/S3ConfigProcessor.d.ts.map +0 -1
- package/dist/types/S3ObjectAuthorizator.d.ts +0 -22
- package/dist/types/S3ObjectAuthorizator.d.ts.map +0 -1
- package/dist/types/S3SchemaContributor.d.ts +0 -21
- package/dist/types/S3SchemaContributor.d.ts.map +0 -1
- package/dist/types/S3SchemaTypes.d.ts +0 -21
- package/dist/types/S3SchemaTypes.d.ts.map +0 -1
- package/dist/types/S3Service.d.ts +0 -44
- package/dist/types/S3Service.d.ts.map +0 -1
- package/dist/types/S3Signer.d.ts +0 -22
- package/dist/types/S3Signer.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/tsconfig.tsbuildinfo +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contember/engine-s3-plugin",
|
|
3
|
-
"version": "2.1.0-alpha.
|
|
3
|
+
"version": "2.1.0-alpha.35",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "./dist/production/index.js",
|
|
6
6
|
"typings": "./dist/types/index.d.ts",
|
|
@@ -23,22 +23,27 @@
|
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@contember/engine-plugins": "
|
|
27
|
-
"@contember/graphql-utils": "
|
|
28
|
-
"@contember/typesafe": "
|
|
29
|
-
"mime-types": "
|
|
30
|
-
"picomatch": "
|
|
31
|
-
"qs": "
|
|
32
|
-
"uuid": "
|
|
26
|
+
"@contember/engine-plugins": "workspace:*",
|
|
27
|
+
"@contember/graphql-utils": "workspace:*",
|
|
28
|
+
"@contember/typesafe": "workspace:*",
|
|
29
|
+
"mime-types": "catalog:",
|
|
30
|
+
"picomatch": "catalog:",
|
|
31
|
+
"qs": "catalog:",
|
|
32
|
+
"uuid": "catalog:"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@types/mime-types": "
|
|
36
|
-
"@types/qs": "
|
|
37
|
-
"graphql": "
|
|
35
|
+
"@types/mime-types": "catalog:",
|
|
36
|
+
"@types/qs": "catalog:",
|
|
37
|
+
"graphql": "catalog:"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"graphql": "
|
|
41
|
-
"pg": "
|
|
40
|
+
"graphql": "catalog:",
|
|
41
|
+
"pg": "catalog:"
|
|
42
42
|
},
|
|
43
|
-
"type": "module"
|
|
43
|
+
"type": "module",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "git+https://github.com/contember/contember.git",
|
|
47
|
+
"directory": "packages/engine-s3-plugin"
|
|
48
|
+
}
|
|
44
49
|
}
|
package/src/Config.ts
CHANGED
package/src/S3ConfigProcessor.ts
CHANGED
|
@@ -33,7 +33,6 @@ export type S3SchemaAcl = Record<
|
|
|
33
33
|
}
|
|
34
34
|
>
|
|
35
35
|
|
|
36
|
-
|
|
37
36
|
export class S3SchemaContributor implements GraphQLSchemaContributor {
|
|
38
37
|
constructor(
|
|
39
38
|
private readonly s3Factory: S3ServiceFactory,
|
|
@@ -48,10 +47,7 @@ export class S3SchemaContributor implements GraphQLSchemaContributor {
|
|
|
48
47
|
if (!context.project.s3) {
|
|
49
48
|
return undefined
|
|
50
49
|
}
|
|
51
|
-
const rules = context.identity.projectRoles.flatMap(it =>
|
|
52
|
-
Object.entries((context.schema.acl.roles[it]?.s3 as S3SchemaAcl) || {}),
|
|
53
|
-
)
|
|
54
|
-
|
|
50
|
+
const rules = context.identity.projectRoles.flatMap(it => Object.entries((context.schema.acl.roles[it]?.s3 as S3SchemaAcl) || {}))
|
|
55
51
|
|
|
56
52
|
const uploadRules = rules.filter(([, it]) => it.upload).map(([it, val]) => ({
|
|
57
53
|
pattern: it,
|
|
@@ -61,7 +57,7 @@ export class S3SchemaContributor implements GraphQLSchemaContributor {
|
|
|
61
57
|
pattern: it,
|
|
62
58
|
}))
|
|
63
59
|
|
|
64
|
-
if (uploadRules.length === 0 && readRules.length
|
|
60
|
+
if (uploadRules.length === 0 && readRules.length === 0) {
|
|
65
61
|
return undefined
|
|
66
62
|
}
|
|
67
63
|
|
|
@@ -89,7 +85,6 @@ export class S3SchemaContributor implements GraphQLSchemaContributor {
|
|
|
89
85
|
}
|
|
90
86
|
|
|
91
87
|
private createReadMutation(authorizator: S3ObjectAuthorizator): GraphQLFieldConfig<any, { project: Project3Config }, any> {
|
|
92
|
-
|
|
93
88
|
return {
|
|
94
89
|
type: new GraphQLNonNull(S3SignedRead),
|
|
95
90
|
args: {
|
package/src/S3SchemaTypes.ts
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
GraphQLEnumType,
|
|
3
|
-
GraphQLInputObjectType,
|
|
4
|
-
GraphQLInt,
|
|
5
|
-
GraphQLList,
|
|
6
|
-
GraphQLNonNull,
|
|
7
|
-
GraphQLObjectType,
|
|
8
|
-
GraphQLString,
|
|
9
|
-
} from 'graphql'
|
|
1
|
+
import { GraphQLEnumType, GraphQLInputObjectType, GraphQLInt, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLString } from 'graphql'
|
|
10
2
|
|
|
11
3
|
export const S3Header = new GraphQLObjectType({
|
|
12
4
|
name: 'S3Header',
|
|
@@ -17,7 +9,8 @@ export const S3Header = new GraphQLObjectType({
|
|
|
17
9
|
})
|
|
18
10
|
|
|
19
11
|
export const S3ContentDisposition = new GraphQLEnumType({
|
|
20
|
-
name: 'S33ContentDisposition',
|
|
12
|
+
name: 'S33ContentDisposition',
|
|
13
|
+
values: {
|
|
21
14
|
ATTACHMENT: {},
|
|
22
15
|
INLINE: {},
|
|
23
16
|
},
|
package/src/S3Service.ts
CHANGED
|
@@ -23,7 +23,6 @@ type SignedUploadUrl = {
|
|
|
23
23
|
method: string
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
|
|
27
26
|
export class S3Service {
|
|
28
27
|
private readonly publicBaseUrl: string
|
|
29
28
|
|
|
@@ -96,7 +95,7 @@ export class S3Service {
|
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
97
|
|
|
99
|
-
public getSignedReadUrl({ objectKey, expiration }: { objectKey: string; expiration: number | null}): SignedReadUrl {
|
|
98
|
+
public getSignedReadUrl({ objectKey, expiration }: { objectKey: string; expiration: number | null }): SignedReadUrl {
|
|
100
99
|
const bucket = this.config.bucket
|
|
101
100
|
|
|
102
101
|
const publicPrefix = this.formatPublicUrl('')
|
package/src/S3Signer.ts
CHANGED
|
@@ -32,7 +32,7 @@ export class S3Signer {
|
|
|
32
32
|
const nowFormatted = this.providers
|
|
33
33
|
.now()
|
|
34
34
|
.toISOString()
|
|
35
|
-
.replace(/[
|
|
35
|
+
.replace(/[:-]|\.\d{3}/g, '')
|
|
36
36
|
const queryString = this.getQueryParams(request, nowFormatted)
|
|
37
37
|
const path = uris.basePath + '/' + request.key
|
|
38
38
|
const lines = [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { expect, test } from 'bun:test'
|
|
2
2
|
import { S3ObjectAuthorizator } from '../../src'
|
|
3
3
|
|
|
4
4
|
test('required read pattern', () => {
|
|
@@ -13,7 +13,6 @@ test('required upload pattern', () => {
|
|
|
13
13
|
expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null })).toThrow('Upload access forbidden for object key lorem.jpg')
|
|
14
14
|
})
|
|
15
15
|
|
|
16
|
-
|
|
17
16
|
test('max upload size', () => {
|
|
18
17
|
const authorizator = new S3ObjectAuthorizator([{ pattern: '**', maxSize: 1024 }], [])
|
|
19
18
|
expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 1000 })).not.toThrow()
|
|
@@ -1,54 +1,82 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { expect, test } from 'bun:test'
|
|
2
2
|
import { S3ObjectAuthorizator, S3Service } from '../../src'
|
|
3
3
|
|
|
4
4
|
const mocked = new Date('2021-07-02T17:22Z')
|
|
5
5
|
const constantUuid = '9fce3907-ff2b-45bb-b4ce-eff5527dd315'
|
|
6
|
-
const createS3Service = (bucket: string, prefix = '') =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
const createS3Service = (bucket: string, prefix = '') =>
|
|
7
|
+
new S3Service(
|
|
8
|
+
{
|
|
9
|
+
bucket,
|
|
10
|
+
region: 'eu-central-1',
|
|
11
|
+
credentials: {
|
|
12
|
+
key: 'test',
|
|
13
|
+
secret: 'abcd',
|
|
14
|
+
},
|
|
15
|
+
prefix,
|
|
13
16
|
},
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
new S3ObjectAuthorizator([{ pattern: '**' }], [{ pattern: '**' }]),
|
|
21
|
-
)
|
|
22
|
-
|
|
17
|
+
{
|
|
18
|
+
uuid: () => constantUuid,
|
|
19
|
+
now: () => mocked,
|
|
20
|
+
},
|
|
21
|
+
new S3ObjectAuthorizator([{ pattern: '**' }], [{ pattern: '**' }]),
|
|
22
|
+
)
|
|
23
23
|
|
|
24
24
|
test('sign s3 request', () => {
|
|
25
25
|
const service = createS3Service('test')
|
|
26
26
|
const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null })
|
|
27
|
-
expect(signed.url).toEqual(
|
|
27
|
+
expect(signed.url).toEqual(
|
|
28
|
+
'https://test.s3.eu-central-1.amazonaws.com/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=00e912fe0383066802fc6c0f93ffb223320ca143992385fe69070bbb87c758dc&X-Amz-SignedHeaders=host',
|
|
29
|
+
)
|
|
28
30
|
})
|
|
29
31
|
|
|
30
32
|
test('sign s3 request - prefix', () => {
|
|
31
33
|
const service = createS3Service('test', 'lorem')
|
|
32
34
|
const signed = service.getSignedReadUrl({ objectKey: 'lorem/foo.jpg', expiration: null })
|
|
33
|
-
expect(signed.url).toEqual(
|
|
35
|
+
expect(signed.url).toEqual(
|
|
36
|
+
'https://test.s3.eu-central-1.amazonaws.com/lorem/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=f6c69dc306422c2b3242c9d9d42147336817720ffae249af8bd91cc7062e9f6d&X-Amz-SignedHeaders=host',
|
|
37
|
+
)
|
|
34
38
|
})
|
|
35
39
|
|
|
36
40
|
test('sign upload', () => {
|
|
37
41
|
const service = createS3Service('test')
|
|
38
|
-
const signed = service.getSignedUploadUrl({
|
|
39
|
-
|
|
42
|
+
const signed = service.getSignedUploadUrl({
|
|
43
|
+
contentType: 'image/jpeg',
|
|
44
|
+
acl: 'PUBLIC_READ',
|
|
45
|
+
expiration: 1800,
|
|
46
|
+
contentDisposition: null,
|
|
47
|
+
extension: null,
|
|
48
|
+
fileName: null,
|
|
49
|
+
prefix: null,
|
|
50
|
+
suffix: null,
|
|
51
|
+
size: null,
|
|
52
|
+
})
|
|
53
|
+
expect(signed.url).toEqual(
|
|
54
|
+
'https://test.s3.eu-central-1.amazonaws.com/9fce3907-ff2b-45bb-b4ce-eff5527dd315.jpg?Cache-Control=immutable&Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=1800&X-Amz-Signature=b4d5ce6a36e7684f1367addb3259e8361a0ef1972986c05ce01536f2fd955a32&X-Amz-SignedHeaders=cache-control%3Bhost%3Bx-amz-acl&x-amz-acl=public-read',
|
|
55
|
+
)
|
|
40
56
|
})
|
|
41
57
|
|
|
42
58
|
test('sign upload #2', () => {
|
|
43
59
|
const service = createS3Service('test')
|
|
44
|
-
const signed = service.getSignedUploadUrl({
|
|
45
|
-
|
|
60
|
+
const signed = service.getSignedUploadUrl({
|
|
61
|
+
contentType: 'image/jpeg',
|
|
62
|
+
acl: 'PUBLIC_READ',
|
|
63
|
+
expiration: 1800,
|
|
64
|
+
contentDisposition: 'INLINE',
|
|
65
|
+
extension: 'jpeg',
|
|
66
|
+
fileName: 'foo-bar.jpeg',
|
|
67
|
+
prefix: 'foo',
|
|
68
|
+
suffix: 'bar',
|
|
69
|
+
size: null,
|
|
70
|
+
})
|
|
71
|
+
expect(signed.url).toEqual(
|
|
72
|
+
'https://test.s3.eu-central-1.amazonaws.com/foo/9fce3907-ff2b-45bb-b4ce-eff5527dd315bar.jpeg?Cache-Control=immutable&Content-Type=image%2Fjpeg&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=1800&X-Amz-Signature=979a93bca65a98ce6b2bf97d2bf2afe7d5f2fa805f7d596187675416c86a3bd5&X-Amz-SignedHeaders=cache-control%3Bcontent-disposition%3Bhost%3Bx-amz-acl&x-amz-acl=public-read',
|
|
73
|
+
)
|
|
46
74
|
})
|
|
47
75
|
|
|
48
|
-
|
|
49
76
|
test('bucket with dot', () => {
|
|
50
77
|
const service = createS3Service('test.foo')
|
|
51
78
|
const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null })
|
|
52
|
-
expect(signed.url).toEqual(
|
|
79
|
+
expect(signed.url).toEqual(
|
|
80
|
+
'https://s3.eu-central-1.amazonaws.com/test.foo/foo.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=test%2F20210702%2Feu-central-1%2Fs3%2Faws4_request&X-Amz-Date=20210702T172200Z&X-Amz-Expires=3600&X-Amz-Signature=811a809196e60413e0e54e51d3dd91ab73ad1482b61e5371864d25d43ba642ff&X-Amz-SignedHeaders=host',
|
|
81
|
+
)
|
|
53
82
|
})
|
|
54
|
-
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const S3ConfigProcessor = require("./src/S3ConfigProcessor.cjs");
|
|
4
|
-
const S3SchemaContributor = require("./src/S3SchemaContributor.cjs");
|
|
5
|
-
const S3Service = require("./src/S3Service.cjs");
|
|
6
|
-
const S3ObjectAuthorizator = require("./src/S3ObjectAuthorizator.cjs");
|
|
7
|
-
var __defProp = Object.defineProperty;
|
|
8
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
|
|
10
|
-
class S3 {
|
|
11
|
-
constructor() {
|
|
12
|
-
__publicField(this, "name", "contember/s3");
|
|
13
|
-
}
|
|
14
|
-
getConfigProcessor() {
|
|
15
|
-
return new S3ConfigProcessor.S3ConfigProcessor();
|
|
16
|
-
}
|
|
17
|
-
getSchemaContributor({ providers }) {
|
|
18
|
-
const s3ServiceFactory = new S3Service.S3ServiceFactory();
|
|
19
|
-
return new S3SchemaContributor.S3SchemaContributor(s3ServiceFactory, providers);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
exports.S3SchemaContributor = S3SchemaContributor.S3SchemaContributor;
|
|
23
|
-
exports.S3Service = S3Service.S3Service;
|
|
24
|
-
exports.S3ServiceFactory = S3Service.S3ServiceFactory;
|
|
25
|
-
exports.S3ObjectAuthorizator = S3ObjectAuthorizator.S3ObjectAuthorizator;
|
|
26
|
-
exports.default = S3;
|
|
27
|
-
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../packages/engine-s3-plugin/src/index.ts"],"sourcesContent":["import { Plugin, SchemaContributorArgs } from '@contember/engine-plugins'\nimport { S3ConfigProcessor } from './S3ConfigProcessor'\nimport { S3SchemaContributor } from './S3SchemaContributor'\nimport { S3ServiceFactory } from './S3Service'\nimport { Project3Config } from './Config'\n\nexport * from './S3ObjectAuthorizator'\nexport * from './S3SchemaContributor'\nexport * from './S3Service'\n\nexport default class S3 implements Plugin<Project3Config> {\n\tname = 'contember/s3'\n\n\tgetConfigProcessor() {\n\t\treturn new S3ConfigProcessor()\n\t}\n\n\tgetSchemaContributor({ providers }: SchemaContributorArgs) {\n\t\tconst s3ServiceFactory = new S3ServiceFactory()\n\t\treturn new S3SchemaContributor(s3ServiceFactory, providers)\n\t}\n}\n"],"names":["S3ConfigProcessor","S3ServiceFactory","S3SchemaContributor"],"mappings":";;;;;;;;;AAUA,MAAqB,GAAqC;AAAA,EAA1D,cAAA;AACQ,kBAAA,MAAA,QAAA,cAAA;AAAA,EAAA;AAAA,EAEP,qBAAqB;AACpB,WAAO,IAAIA,kBAAAA,kBAAkB;AAAA,EAAA;AAAA,EAG9B,qBAAqB,EAAE,aAAoC;AACpD,UAAA,mBAAmB,IAAIC,2BAAiB;AACvC,WAAA,IAAIC,oBAAAA,oBAAoB,kBAAkB,SAAS;AAAA,EAAA;AAE5D;;;;;;"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { S3ConfigProcessor } from "./src/S3ConfigProcessor.js";
|
|
2
|
-
import { S3SchemaContributor } from "./src/S3SchemaContributor.js";
|
|
3
|
-
import { S3ServiceFactory } from "./src/S3Service.js";
|
|
4
|
-
import { S3Service } from "./src/S3Service.js";
|
|
5
|
-
import { S3ObjectAuthorizator } from "./src/S3ObjectAuthorizator.js";
|
|
6
|
-
var __defProp = Object.defineProperty;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "", value);
|
|
9
|
-
class S3 {
|
|
10
|
-
constructor() {
|
|
11
|
-
__publicField(this, "name", "contember/s3");
|
|
12
|
-
}
|
|
13
|
-
getConfigProcessor() {
|
|
14
|
-
return new S3ConfigProcessor();
|
|
15
|
-
}
|
|
16
|
-
getSchemaContributor({ providers }) {
|
|
17
|
-
const s3ServiceFactory = new S3ServiceFactory();
|
|
18
|
-
return new S3SchemaContributor(s3ServiceFactory, providers);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export {
|
|
22
|
-
S3ObjectAuthorizator,
|
|
23
|
-
S3SchemaContributor,
|
|
24
|
-
S3Service,
|
|
25
|
-
S3ServiceFactory,
|
|
26
|
-
S3 as default
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/engine-s3-plugin/src/index.ts"],"sourcesContent":["import { Plugin, SchemaContributorArgs } from '@contember/engine-plugins'\nimport { S3ConfigProcessor } from './S3ConfigProcessor'\nimport { S3SchemaContributor } from './S3SchemaContributor'\nimport { S3ServiceFactory } from './S3Service'\nimport { Project3Config } from './Config'\n\nexport * from './S3ObjectAuthorizator'\nexport * from './S3SchemaContributor'\nexport * from './S3Service'\n\nexport default class S3 implements Plugin<Project3Config> {\n\tname = 'contember/s3'\n\n\tgetConfigProcessor() {\n\t\treturn new S3ConfigProcessor()\n\t}\n\n\tgetSchemaContributor({ providers }: SchemaContributorArgs) {\n\t\tconst s3ServiceFactory = new S3ServiceFactory()\n\t\treturn new S3SchemaContributor(s3ServiceFactory, providers)\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAqB,GAAqC;AAAA,EAA1D,cAAA;AACQ,kBAAA,MAAA,QAAA,cAAA;AAAA,EAAA;AAAA,EAEP,qBAAqB;AACpB,WAAO,IAAI,kBAAkB;AAAA,EAAA;AAAA,EAG9B,qBAAqB,EAAE,aAAoC;AACpD,UAAA,mBAAmB,IAAI,iBAAiB;AACvC,WAAA,IAAI,oBAAoB,kBAAkB,SAAS;AAAA,EAAA;AAE5D;"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Typesafe = require("@contember/typesafe");
|
|
4
|
-
function _interopNamespaceDefault(e) {
|
|
5
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
6
|
-
if (e) {
|
|
7
|
-
for (const k in e) {
|
|
8
|
-
if (k !== "default") {
|
|
9
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
10
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: () => e[k]
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
n.default = e;
|
|
18
|
-
return Object.freeze(n);
|
|
19
|
-
}
|
|
20
|
-
const Typesafe__namespace = /* @__PURE__ */ _interopNamespaceDefault(Typesafe);
|
|
21
|
-
const s3ConfigSchema = Typesafe__namespace.intersection(
|
|
22
|
-
Typesafe__namespace.object({
|
|
23
|
-
bucket: Typesafe__namespace.string,
|
|
24
|
-
region: Typesafe__namespace.string,
|
|
25
|
-
prefix: Typesafe__namespace.string,
|
|
26
|
-
credentials: Typesafe__namespace.object({
|
|
27
|
-
key: Typesafe__namespace.string,
|
|
28
|
-
secret: Typesafe__namespace.string
|
|
29
|
-
})
|
|
30
|
-
}),
|
|
31
|
-
Typesafe__namespace.partial({
|
|
32
|
-
endpoint: Typesafe__namespace.string,
|
|
33
|
-
cdnEndpoint: Typesafe__namespace.string,
|
|
34
|
-
provider: Typesafe__namespace.enumeration(
|
|
35
|
-
"aws",
|
|
36
|
-
"minio",
|
|
37
|
-
"ceph",
|
|
38
|
-
"localstack",
|
|
39
|
-
"cloudserver"
|
|
40
|
-
/* cloudserver */
|
|
41
|
-
),
|
|
42
|
-
noAcl: Typesafe__namespace.boolean
|
|
43
|
-
})
|
|
44
|
-
);
|
|
45
|
-
const serversWithoutAclSupport = [
|
|
46
|
-
"minio"
|
|
47
|
-
/* minio */
|
|
48
|
-
];
|
|
49
|
-
const resolveS3Config = (config) => {
|
|
50
|
-
return {
|
|
51
|
-
noAcl: !!config.provider && serversWithoutAclSupport.includes(config.provider),
|
|
52
|
-
...config
|
|
53
|
-
};
|
|
54
|
-
};
|
|
55
|
-
const defaultRegion = "eu-west-1";
|
|
56
|
-
const resolveS3Endpoint = (config) => {
|
|
57
|
-
const hasLegacyPath = !!config.endpoint || config.bucket.includes(".");
|
|
58
|
-
const endpoint = config.endpoint || `https://${hasLegacyPath ? "" : `${config.bucket}.`}s3.${config.region || defaultRegion}.amazonaws.com`;
|
|
59
|
-
const basePath = hasLegacyPath ? `/${config.bucket}` : "";
|
|
60
|
-
return { endpoint, basePath };
|
|
61
|
-
};
|
|
62
|
-
const resolveS3PublicBaseUrl = (config) => {
|
|
63
|
-
if (config.cdnEndpoint) {
|
|
64
|
-
return config.cdnEndpoint;
|
|
65
|
-
}
|
|
66
|
-
const { endpoint, basePath } = resolveS3Endpoint(config);
|
|
67
|
-
return endpoint + basePath;
|
|
68
|
-
};
|
|
69
|
-
exports.resolveS3Config = resolveS3Config;
|
|
70
|
-
exports.resolveS3Endpoint = resolveS3Endpoint;
|
|
71
|
-
exports.resolveS3PublicBaseUrl = resolveS3PublicBaseUrl;
|
|
72
|
-
exports.s3ConfigSchema = s3ConfigSchema;
|
|
73
|
-
//# sourceMappingURL=Config.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.cjs","sources":["../../../../packages/engine-s3-plugin/src/Config.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nexport enum S3Providers {\n\taws = 'aws',\n\tminio = 'minio',\n\tceph = 'ceph',\n\tlocalstack = 'localstack',\n\tcloudserver = 'cloudserver',\n}\n\n\nexport const s3ConfigSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\tbucket: Typesafe.string,\n\t\tregion: Typesafe.string,\n\t\tprefix: Typesafe.string,\n\t\tcredentials: Typesafe.object({\n\t\t\tkey: Typesafe.string,\n\t\t\tsecret: Typesafe.string,\n\t\t}),\n\t}),\n\tTypesafe.partial({\n\t\tendpoint: Typesafe.string,\n\t\tcdnEndpoint: Typesafe.string,\n\t\tprovider: Typesafe.enumeration(S3Providers.aws, S3Providers.minio, S3Providers.ceph, S3Providers.localstack, S3Providers.cloudserver),\n\t\tnoAcl: Typesafe.boolean,\n\t}),\n)\n\nexport type S3Config = ReturnType<typeof s3ConfigSchema>\n\nexport type Project3Config = { s3?: S3Config }\n\n// todo\nconst serversWithoutAclSupport = [S3Providers.minio]\n\nexport const resolveS3Config = (config: S3Config): S3Config => {\n\treturn {\n\t\tnoAcl: !!config.provider && serversWithoutAclSupport.includes(config.provider),\n\t\t...config,\n\t}\n}\n\nconst defaultRegion = 'eu-west-1'\n\nexport const resolveS3Endpoint = (\n\tconfig: S3Config,\n): {\n\tendpoint: string\n\tbasePath: string\n} => {\n\tconst hasLegacyPath = !!config.endpoint || config.bucket.includes('.')\n\tconst endpoint = config.endpoint || `https://${hasLegacyPath ? '' : `${config.bucket}.`}s3.${config.region || defaultRegion}.amazonaws.com`\n\tconst basePath = hasLegacyPath ? `/${config.bucket}` : ''\n\n\treturn { endpoint, basePath }\n}\n\nexport const resolveS3PublicBaseUrl = (config: S3Config): string => {\n\tif (config.cdnEndpoint) {\n\t\treturn config.cdnEndpoint\n\t}\n\tconst { endpoint, basePath } = resolveS3Endpoint(config)\n\treturn endpoint + basePath\n}\n"],"names":["Typesafe"],"mappings":";;;;;;;;;;;;;;;;;;;;AAWO,MAAM,iBAAiBA,oBAAS;AAAA,EACtCA,oBAAS,OAAO;AAAA,IACf,QAAQA,oBAAS;AAAA,IACjB,QAAQA,oBAAS;AAAA,IACjB,QAAQA,oBAAS;AAAA,IACjB,aAAaA,oBAAS,OAAO;AAAA,MAC5B,KAAKA,oBAAS;AAAA,MACd,QAAQA,oBAAS;AAAA,IACjB,CAAA;AAAA,EAAA,CACD;AAAA,EACDA,oBAAS,QAAQ;AAAA,IAChB,UAAUA,oBAAS;AAAA,IACnB,aAAaA,oBAAS;AAAA,IACtB,UAAUA,oBAAS;AAAA,MAAY;AAAA,MAAiB;AAAA,MAAmB;AAAA,MAAkB;AAAA,MAAwB;AAAA;AAAA,IAAuB;AAAA,IACpI,OAAOA,oBAAS;AAAA,EAChB,CAAA;AACF;AAOA,MAAM,2BAA2B;AAAA,EAAC;AAAA;AAAiB;AAEtC,MAAA,kBAAkB,CAAC,WAA+B;AACvD,SAAA;AAAA,IACN,OAAO,CAAC,CAAC,OAAO,YAAY,yBAAyB,SAAS,OAAO,QAAQ;AAAA,IAC7E,GAAG;AAAA,EACJ;AACD;AAEA,MAAM,gBAAgB;AAET,MAAA,oBAAoB,CAChC,WAII;AACE,QAAA,gBAAgB,CAAC,CAAC,OAAO,YAAY,OAAO,OAAO,SAAS,GAAG;AACrE,QAAM,WAAW,OAAO,YAAY,WAAW,gBAAgB,KAAK,GAAG,OAAO,MAAM,GAAG,MAAM,OAAO,UAAU,aAAa;AAC3H,QAAM,WAAW,gBAAgB,IAAI,OAAO,MAAM,KAAK;AAEhD,SAAA,EAAE,UAAU,SAAS;AAC7B;AAEa,MAAA,yBAAyB,CAAC,WAA6B;AACnE,MAAI,OAAO,aAAa;AACvB,WAAO,OAAO;AAAA,EAAA;AAEf,QAAM,EAAE,UAAU,aAAa,kBAAkB,MAAM;AACvD,SAAO,WAAW;AACnB;;;;;"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import * as Typesafe from "@contember/typesafe";
|
|
2
|
-
const s3ConfigSchema = Typesafe.intersection(
|
|
3
|
-
Typesafe.object({
|
|
4
|
-
bucket: Typesafe.string,
|
|
5
|
-
region: Typesafe.string,
|
|
6
|
-
prefix: Typesafe.string,
|
|
7
|
-
credentials: Typesafe.object({
|
|
8
|
-
key: Typesafe.string,
|
|
9
|
-
secret: Typesafe.string
|
|
10
|
-
})
|
|
11
|
-
}),
|
|
12
|
-
Typesafe.partial({
|
|
13
|
-
endpoint: Typesafe.string,
|
|
14
|
-
cdnEndpoint: Typesafe.string,
|
|
15
|
-
provider: Typesafe.enumeration(
|
|
16
|
-
"aws",
|
|
17
|
-
"minio",
|
|
18
|
-
"ceph",
|
|
19
|
-
"localstack",
|
|
20
|
-
"cloudserver"
|
|
21
|
-
/* cloudserver */
|
|
22
|
-
),
|
|
23
|
-
noAcl: Typesafe.boolean
|
|
24
|
-
})
|
|
25
|
-
);
|
|
26
|
-
const serversWithoutAclSupport = [
|
|
27
|
-
"minio"
|
|
28
|
-
/* minio */
|
|
29
|
-
];
|
|
30
|
-
const resolveS3Config = (config) => {
|
|
31
|
-
return {
|
|
32
|
-
noAcl: !!config.provider && serversWithoutAclSupport.includes(config.provider),
|
|
33
|
-
...config
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
const defaultRegion = "eu-west-1";
|
|
37
|
-
const resolveS3Endpoint = (config) => {
|
|
38
|
-
const hasLegacyPath = !!config.endpoint || config.bucket.includes(".");
|
|
39
|
-
const endpoint = config.endpoint || `https://${hasLegacyPath ? "" : `${config.bucket}.`}s3.${config.region || defaultRegion}.amazonaws.com`;
|
|
40
|
-
const basePath = hasLegacyPath ? `/${config.bucket}` : "";
|
|
41
|
-
return { endpoint, basePath };
|
|
42
|
-
};
|
|
43
|
-
const resolveS3PublicBaseUrl = (config) => {
|
|
44
|
-
if (config.cdnEndpoint) {
|
|
45
|
-
return config.cdnEndpoint;
|
|
46
|
-
}
|
|
47
|
-
const { endpoint, basePath } = resolveS3Endpoint(config);
|
|
48
|
-
return endpoint + basePath;
|
|
49
|
-
};
|
|
50
|
-
export {
|
|
51
|
-
resolveS3Config,
|
|
52
|
-
resolveS3Endpoint,
|
|
53
|
-
resolveS3PublicBaseUrl,
|
|
54
|
-
s3ConfigSchema
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=Config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Config.js","sources":["../../../../packages/engine-s3-plugin/src/Config.ts"],"sourcesContent":["import * as Typesafe from '@contember/typesafe'\n\nexport enum S3Providers {\n\taws = 'aws',\n\tminio = 'minio',\n\tceph = 'ceph',\n\tlocalstack = 'localstack',\n\tcloudserver = 'cloudserver',\n}\n\n\nexport const s3ConfigSchema = Typesafe.intersection(\n\tTypesafe.object({\n\t\tbucket: Typesafe.string,\n\t\tregion: Typesafe.string,\n\t\tprefix: Typesafe.string,\n\t\tcredentials: Typesafe.object({\n\t\t\tkey: Typesafe.string,\n\t\t\tsecret: Typesafe.string,\n\t\t}),\n\t}),\n\tTypesafe.partial({\n\t\tendpoint: Typesafe.string,\n\t\tcdnEndpoint: Typesafe.string,\n\t\tprovider: Typesafe.enumeration(S3Providers.aws, S3Providers.minio, S3Providers.ceph, S3Providers.localstack, S3Providers.cloudserver),\n\t\tnoAcl: Typesafe.boolean,\n\t}),\n)\n\nexport type S3Config = ReturnType<typeof s3ConfigSchema>\n\nexport type Project3Config = { s3?: S3Config }\n\n// todo\nconst serversWithoutAclSupport = [S3Providers.minio]\n\nexport const resolveS3Config = (config: S3Config): S3Config => {\n\treturn {\n\t\tnoAcl: !!config.provider && serversWithoutAclSupport.includes(config.provider),\n\t\t...config,\n\t}\n}\n\nconst defaultRegion = 'eu-west-1'\n\nexport const resolveS3Endpoint = (\n\tconfig: S3Config,\n): {\n\tendpoint: string\n\tbasePath: string\n} => {\n\tconst hasLegacyPath = !!config.endpoint || config.bucket.includes('.')\n\tconst endpoint = config.endpoint || `https://${hasLegacyPath ? '' : `${config.bucket}.`}s3.${config.region || defaultRegion}.amazonaws.com`\n\tconst basePath = hasLegacyPath ? `/${config.bucket}` : ''\n\n\treturn { endpoint, basePath }\n}\n\nexport const resolveS3PublicBaseUrl = (config: S3Config): string => {\n\tif (config.cdnEndpoint) {\n\t\treturn config.cdnEndpoint\n\t}\n\tconst { endpoint, basePath } = resolveS3Endpoint(config)\n\treturn endpoint + basePath\n}\n"],"names":[],"mappings":";AAWO,MAAM,iBAAiB,SAAS;AAAA,EACtC,SAAS,OAAO;AAAA,IACf,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS;AAAA,IACjB,QAAQ,SAAS;AAAA,IACjB,aAAa,SAAS,OAAO;AAAA,MAC5B,KAAK,SAAS;AAAA,MACd,QAAQ,SAAS;AAAA,IACjB,CAAA;AAAA,EAAA,CACD;AAAA,EACD,SAAS,QAAQ;AAAA,IAChB,UAAU,SAAS;AAAA,IACnB,aAAa,SAAS;AAAA,IACtB,UAAU,SAAS;AAAA,MAAY;AAAA,MAAiB;AAAA,MAAmB;AAAA,MAAkB;AAAA,MAAwB;AAAA;AAAA,IAAuB;AAAA,IACpI,OAAO,SAAS;AAAA,EAChB,CAAA;AACF;AAOA,MAAM,2BAA2B;AAAA,EAAC;AAAA;AAAiB;AAEtC,MAAA,kBAAkB,CAAC,WAA+B;AACvD,SAAA;AAAA,IACN,OAAO,CAAC,CAAC,OAAO,YAAY,yBAAyB,SAAS,OAAO,QAAQ;AAAA,IAC7E,GAAG;AAAA,EACJ;AACD;AAEA,MAAM,gBAAgB;AAET,MAAA,oBAAoB,CAChC,WAII;AACE,QAAA,gBAAgB,CAAC,CAAC,OAAO,YAAY,OAAO,OAAO,SAAS,GAAG;AACrE,QAAM,WAAW,OAAO,YAAY,WAAW,gBAAgB,KAAK,GAAG,OAAO,MAAM,GAAG,MAAM,OAAO,UAAU,aAAa;AAC3H,QAAM,WAAW,gBAAgB,IAAI,OAAO,MAAM,KAAK;AAEhD,SAAA,EAAE,UAAU,SAAS;AAC7B;AAEa,MAAA,yBAAyB,CAAC,WAA6B;AACnE,MAAI,OAAO,aAAa;AACvB,WAAO,OAAO;AAAA,EAAA;AAEf,QAAM,EAAE,UAAU,aAAa,kBAAkB,MAAM;AACvD,SAAO,WAAW;AACnB;"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const Config = require("./Config.cjs");
|
|
4
|
-
const Typesafe = require("@contember/typesafe");
|
|
5
|
-
function _interopNamespaceDefault(e) {
|
|
6
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
|
-
if (e) {
|
|
8
|
-
for (const k in e) {
|
|
9
|
-
if (k !== "default") {
|
|
10
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
11
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
get: () => e[k]
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
n.default = e;
|
|
19
|
-
return Object.freeze(n);
|
|
20
|
-
}
|
|
21
|
-
const Typesafe__namespace = /* @__PURE__ */ _interopNamespaceDefault(Typesafe);
|
|
22
|
-
class S3ConfigProcessor {
|
|
23
|
-
getDefaultEnv() {
|
|
24
|
-
return {
|
|
25
|
-
DEFAULT_S3_ENDPOINT: "",
|
|
26
|
-
DEFAULT_S3_REGION: "us-east-1",
|
|
27
|
-
DEFAULT_S3_PROVIDER: "aws"
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
prepareConfigTemplate(template, { env }) {
|
|
31
|
-
return {
|
|
32
|
-
...template,
|
|
33
|
-
projectDefaults: {
|
|
34
|
-
...template.projectDefaults,
|
|
35
|
-
s3: {
|
|
36
|
-
bucket: `%?project.env.S3_BUCKET%`,
|
|
37
|
-
prefix: `%?project.env.S3_PREFIX||project.slug%`,
|
|
38
|
-
region: `%project.env.S3_REGION%`,
|
|
39
|
-
endpoint: `%project.env.S3_ENDPOINT%`,
|
|
40
|
-
cdnEndpoint: `%?project.env.S3_CDN%`,
|
|
41
|
-
provider: "%project.env.S3_PROVIDER%",
|
|
42
|
-
credentials: {
|
|
43
|
-
key: `%?project.secret.s3.key||project.env.S3_KEY%`,
|
|
44
|
-
secret: `%?project.secret.s3.secret||project.env.S3_SECRET%`
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
getProjectConfigSchema(slug) {
|
|
51
|
-
return Typesafe__namespace.union(
|
|
52
|
-
(input, path = []) => Typesafe__namespace.valueAt(input, ["s3", "credentials", "key"]) === void 0 ? {} : Typesafe__namespace.fail(path),
|
|
53
|
-
Typesafe__namespace.object({
|
|
54
|
-
s3: Config.s3ConfigSchema
|
|
55
|
-
})
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
exports.S3ConfigProcessor = S3ConfigProcessor;
|
|
60
|
-
//# sourceMappingURL=S3ConfigProcessor.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"S3ConfigProcessor.cjs","sources":["../../../../packages/engine-s3-plugin/src/S3ConfigProcessor.ts"],"sourcesContent":["import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins'\nimport { Project3Config, s3ConfigSchema } from './Config'\nimport * as Typesafe from '@contember/typesafe'\n\nexport class S3ConfigProcessor implements ConfigProcessor<Project3Config> {\n\tgetDefaultEnv(): Record<string, string> {\n\t\treturn {\n\t\t\tDEFAULT_S3_ENDPOINT: '',\n\t\t\tDEFAULT_S3_REGION: 'us-east-1',\n\t\t\tDEFAULT_S3_PROVIDER: 'aws',\n\t\t}\n\t}\n\n\tprepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext) {\n\t\treturn {\n\t\t\t...template,\n\t\t\tprojectDefaults: {\n\t\t\t\t...template.projectDefaults,\n\t\t\t\ts3: {\n\t\t\t\t\tbucket: `%?project.env.S3_BUCKET%`,\n\t\t\t\t\tprefix: `%?project.env.S3_PREFIX||project.slug%`,\n\t\t\t\t\tregion: `%project.env.S3_REGION%`,\n\t\t\t\t\tendpoint: `%project.env.S3_ENDPOINT%`,\n\t\t\t\t\tcdnEndpoint: `%?project.env.S3_CDN%`,\n\t\t\t\t\tprovider: '%project.env.S3_PROVIDER%',\n\t\t\t\t\tcredentials: {\n\t\t\t\t\t\tkey: `%?project.secret.s3.key||project.env.S3_KEY%`,\n\t\t\t\t\t\tsecret: `%?project.secret.s3.secret||project.env.S3_SECRET%`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n\n\tgetProjectConfigSchema(slug: string): Typesafe.Type<Record<string, any>> {\n\t\treturn Typesafe.union(\n\t\t\t(input: unknown, path: PropertyKey[] = []) => Typesafe.valueAt(input, ['s3', 'credentials', 'key']) === undefined ? {} : Typesafe.fail(path),\n\t\t\tTypesafe.object({\n\t\t\t\ts3: s3ConfigSchema,\n\t\t\t}),\n\t\t)\n\t}\n\n}\n"],"names":["Typesafe","s3ConfigSchema"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIO,MAAM,kBAA6D;AAAA,EACzE,gBAAwC;AAChC,WAAA;AAAA,MACN,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB;AAAA,EAAA;AAAA,EAGD,sBAAsB,UAA0B,EAAE,OAA8B;AACxE,WAAA;AAAA,MACN,GAAG;AAAA,MACH,iBAAiB;AAAA,QAChB,GAAG,SAAS;AAAA,QACZ,IAAI;AAAA,UACH,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,aAAa;AAAA,UACb,UAAU;AAAA,UACV,aAAa;AAAA,YACZ,KAAK;AAAA,YACL,QAAQ;AAAA,UAAA;AAAA,QACT;AAAA,MACD;AAAA,IAEF;AAAA,EAAA;AAAA,EAGD,uBAAuB,MAAkD;AACxE,WAAOA,oBAAS;AAAA,MACf,CAAC,OAAgB,OAAsB,CAAO,MAAAA,oBAAS,QAAQ,OAAO,CAAC,MAAM,eAAe,KAAK,CAAC,MAAM,SAAY,CAAK,IAAAA,oBAAS,KAAK,IAAI;AAAA,MAC3IA,oBAAS,OAAO;AAAA,QACf,IAAIC,OAAAA;AAAAA,MACJ,CAAA;AAAA,IACF;AAAA,EAAA;AAGF;;"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { s3ConfigSchema } from "./Config.js";
|
|
2
|
-
import * as Typesafe from "@contember/typesafe";
|
|
3
|
-
class S3ConfigProcessor {
|
|
4
|
-
getDefaultEnv() {
|
|
5
|
-
return {
|
|
6
|
-
DEFAULT_S3_ENDPOINT: "",
|
|
7
|
-
DEFAULT_S3_REGION: "us-east-1",
|
|
8
|
-
DEFAULT_S3_PROVIDER: "aws"
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
prepareConfigTemplate(template, { env }) {
|
|
12
|
-
return {
|
|
13
|
-
...template,
|
|
14
|
-
projectDefaults: {
|
|
15
|
-
...template.projectDefaults,
|
|
16
|
-
s3: {
|
|
17
|
-
bucket: `%?project.env.S3_BUCKET%`,
|
|
18
|
-
prefix: `%?project.env.S3_PREFIX||project.slug%`,
|
|
19
|
-
region: `%project.env.S3_REGION%`,
|
|
20
|
-
endpoint: `%project.env.S3_ENDPOINT%`,
|
|
21
|
-
cdnEndpoint: `%?project.env.S3_CDN%`,
|
|
22
|
-
provider: "%project.env.S3_PROVIDER%",
|
|
23
|
-
credentials: {
|
|
24
|
-
key: `%?project.secret.s3.key||project.env.S3_KEY%`,
|
|
25
|
-
secret: `%?project.secret.s3.secret||project.env.S3_SECRET%`
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
getProjectConfigSchema(slug) {
|
|
32
|
-
return Typesafe.union(
|
|
33
|
-
(input, path = []) => Typesafe.valueAt(input, ["s3", "credentials", "key"]) === void 0 ? {} : Typesafe.fail(path),
|
|
34
|
-
Typesafe.object({
|
|
35
|
-
s3: s3ConfigSchema
|
|
36
|
-
})
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
export {
|
|
41
|
-
S3ConfigProcessor
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=S3ConfigProcessor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"S3ConfigProcessor.js","sources":["../../../../packages/engine-s3-plugin/src/S3ConfigProcessor.ts"],"sourcesContent":["import { ConfigProcessor, ConfigTemplate, ConfigTemplateContext } from '@contember/engine-plugins'\nimport { Project3Config, s3ConfigSchema } from './Config'\nimport * as Typesafe from '@contember/typesafe'\n\nexport class S3ConfigProcessor implements ConfigProcessor<Project3Config> {\n\tgetDefaultEnv(): Record<string, string> {\n\t\treturn {\n\t\t\tDEFAULT_S3_ENDPOINT: '',\n\t\t\tDEFAULT_S3_REGION: 'us-east-1',\n\t\t\tDEFAULT_S3_PROVIDER: 'aws',\n\t\t}\n\t}\n\n\tprepareConfigTemplate(template: ConfigTemplate, { env }: ConfigTemplateContext) {\n\t\treturn {\n\t\t\t...template,\n\t\t\tprojectDefaults: {\n\t\t\t\t...template.projectDefaults,\n\t\t\t\ts3: {\n\t\t\t\t\tbucket: `%?project.env.S3_BUCKET%`,\n\t\t\t\t\tprefix: `%?project.env.S3_PREFIX||project.slug%`,\n\t\t\t\t\tregion: `%project.env.S3_REGION%`,\n\t\t\t\t\tendpoint: `%project.env.S3_ENDPOINT%`,\n\t\t\t\t\tcdnEndpoint: `%?project.env.S3_CDN%`,\n\t\t\t\t\tprovider: '%project.env.S3_PROVIDER%',\n\t\t\t\t\tcredentials: {\n\t\t\t\t\t\tkey: `%?project.secret.s3.key||project.env.S3_KEY%`,\n\t\t\t\t\t\tsecret: `%?project.secret.s3.secret||project.env.S3_SECRET%`,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t}\n\n\tgetProjectConfigSchema(slug: string): Typesafe.Type<Record<string, any>> {\n\t\treturn Typesafe.union(\n\t\t\t(input: unknown, path: PropertyKey[] = []) => Typesafe.valueAt(input, ['s3', 'credentials', 'key']) === undefined ? {} : Typesafe.fail(path),\n\t\t\tTypesafe.object({\n\t\t\t\ts3: s3ConfigSchema,\n\t\t\t}),\n\t\t)\n\t}\n\n}\n"],"names":[],"mappings":";;AAIO,MAAM,kBAA6D;AAAA,EACzE,gBAAwC;AAChC,WAAA;AAAA,MACN,qBAAqB;AAAA,MACrB,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB;AAAA,EAAA;AAAA,EAGD,sBAAsB,UAA0B,EAAE,OAA8B;AACxE,WAAA;AAAA,MACN,GAAG;AAAA,MACH,iBAAiB;AAAA,QAChB,GAAG,SAAS;AAAA,QACZ,IAAI;AAAA,UACH,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,aAAa;AAAA,UACb,UAAU;AAAA,UACV,aAAa;AAAA,YACZ,KAAK;AAAA,YACL,QAAQ;AAAA,UAAA;AAAA,QACT;AAAA,MACD;AAAA,IAEF;AAAA,EAAA;AAAA,EAGD,uBAAuB,MAAkD;AACxE,WAAO,SAAS;AAAA,MACf,CAAC,OAAgB,OAAsB,CAAO,MAAA,SAAS,QAAQ,OAAO,CAAC,MAAM,eAAe,KAAK,CAAC,MAAM,SAAY,CAAK,IAAA,SAAS,KAAK,IAAI;AAAA,MAC3I,SAAS,OAAO;AAAA,QACf,IAAI;AAAA,MACJ,CAAA;AAAA,IACF;AAAA,EAAA;AAGF;"}
|