@contember/engine-s3-plugin 2.0.0-alpha.32 → 2.0.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.
Files changed (40) hide show
  1. package/dist/development/index.cjs.map +1 -1
  2. package/dist/development/index.js.map +1 -1
  3. package/dist/development/src/Config.cjs.map +1 -1
  4. package/dist/development/src/Config.js.map +1 -1
  5. package/dist/development/src/S3ConfigProcessor.cjs.map +1 -1
  6. package/dist/development/src/S3ConfigProcessor.js.map +1 -1
  7. package/dist/development/src/S3ObjectAuthorizator.cjs.map +1 -1
  8. package/dist/development/src/S3ObjectAuthorizator.js.map +1 -1
  9. package/dist/development/src/S3SchemaContributor.cjs.map +1 -1
  10. package/dist/development/src/S3SchemaContributor.js.map +1 -1
  11. package/dist/development/src/S3SchemaTypes.cjs.map +1 -1
  12. package/dist/development/src/S3SchemaTypes.js.map +1 -1
  13. package/dist/development/src/S3Service.cjs.map +1 -1
  14. package/dist/development/src/S3Service.js.map +1 -1
  15. package/dist/development/src/S3Signer.cjs.map +1 -1
  16. package/dist/development/src/S3Signer.js.map +1 -1
  17. package/dist/production/index.cjs.map +1 -1
  18. package/dist/production/index.js.map +1 -1
  19. package/dist/production/src/Config.cjs.map +1 -1
  20. package/dist/production/src/Config.js.map +1 -1
  21. package/dist/production/src/S3ConfigProcessor.cjs.map +1 -1
  22. package/dist/production/src/S3ConfigProcessor.js.map +1 -1
  23. package/dist/production/src/S3ObjectAuthorizator.cjs.map +1 -1
  24. package/dist/production/src/S3ObjectAuthorizator.js.map +1 -1
  25. package/dist/production/src/S3SchemaContributor.cjs.map +1 -1
  26. package/dist/production/src/S3SchemaContributor.js.map +1 -1
  27. package/dist/production/src/S3SchemaTypes.cjs.map +1 -1
  28. package/dist/production/src/S3SchemaTypes.js.map +1 -1
  29. package/dist/production/src/S3Service.cjs.map +1 -1
  30. package/dist/production/src/S3Service.js.map +1 -1
  31. package/dist/production/src/S3Signer.cjs.map +1 -1
  32. package/dist/production/src/S3Signer.js.map +1 -1
  33. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  34. package/dist/types/S3ObjectAuthorizator.d.ts.map +1 -1
  35. package/dist/types/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +5 -5
  37. package/src/S3ObjectAuthorizator.ts +2 -0
  38. package/tests/cases/authorizator.test.ts +8 -8
  39. package/tests/cases/signRequest.test.ts +6 -6
  40. package/tsconfig.settings.json +0 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@contember/engine-s3-plugin",
3
- "version": "2.0.0-alpha.32",
3
+ "version": "2.0.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,9 +23,9 @@
23
23
  }
24
24
  },
25
25
  "dependencies": {
26
- "@contember/engine-plugins": "2.0.0-alpha.32",
27
- "@contember/graphql-utils": "2.0.0-alpha.32",
28
- "@contember/typesafe": "2.0.0-alpha.32",
26
+ "@contember/engine-plugins": "2.0.0-alpha.35",
27
+ "@contember/graphql-utils": "2.0.0-alpha.35",
28
+ "@contember/typesafe": "2.0.0-alpha.35",
29
29
  "mime-types": "^2.1.35",
30
30
  "picomatch": "^4.0.2",
31
31
  "qs": "^6.13.0",
@@ -42,4 +42,4 @@
42
42
  "pg": "^8.9.0"
43
43
  },
44
44
  "type": "module"
45
- }
45
+ }
@@ -1,3 +1,5 @@
1
+ // eslint-disable-next-line @typescript-eslint/triple-slash-reference
2
+ /// <reference path="../types/picomatch/index.d.ts" />
1
3
  import pm from 'picomatch'
2
4
  import { ForbiddenError } from '@contember/graphql-utils'
3
5
 
@@ -1,22 +1,22 @@
1
- import { test, assert } from 'vitest'
1
+ import { test, expect } from 'bun:test'
2
2
  import { S3ObjectAuthorizator } from '../../src'
3
3
 
4
4
  test('required read pattern', () => {
5
5
  const authorizator = new S3ObjectAuthorizator([], [{ pattern: 'foo/**' }])
6
- assert.doesNotThrow(() => authorizator.verifyReadAccess({ key: 'foo/lorem.jpg' }))
7
- assert.throw(() => authorizator.verifyReadAccess({ key: 'lorem.jpg' }), 'Read access forbidden for object key lorem.jpg')
6
+ expect(() => authorizator.verifyReadAccess({ key: 'foo/lorem.jpg' })).not.toThrow()
7
+ expect(() => authorizator.verifyReadAccess({ key: 'lorem.jpg' })).toThrow('Read access forbidden for object key lorem.jpg')
8
8
  })
9
9
 
10
10
  test('required upload pattern', () => {
11
11
  const authorizator = new S3ObjectAuthorizator([{ pattern: 'foo/**' }], [])
12
- assert.doesNotThrow(() => authorizator.verifyUploadAccess({ key: 'foo/lorem.jpg', size: null }))
13
- assert.throw(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null }), 'Upload access forbidden for object key lorem.jpg')
12
+ expect(() => authorizator.verifyUploadAccess({ key: 'foo/lorem.jpg', size: null })).not.toThrow()
13
+ expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null })).toThrow('Upload access forbidden for object key lorem.jpg')
14
14
  })
15
15
 
16
16
 
17
17
  test('max upload size', () => {
18
18
  const authorizator = new S3ObjectAuthorizator([{ pattern: '**', maxSize: 1024 }], [])
19
- assert.doesNotThrow(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 1000 }))
20
- assert.throw(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null }), 'File size must be provided')
21
- assert.throw(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 2048 }), 'Uploaded file is too large')
19
+ expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 1000 })).not.toThrow()
20
+ expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: null })).toThrow('File size must be provided')
21
+ expect(() => authorizator.verifyUploadAccess({ key: 'lorem.jpg', size: 2048 })).toThrow('Uploaded file is too large')
22
22
  })
@@ -1,4 +1,4 @@
1
- import { test, assert, expect } from 'vitest'
1
+ import { test, expect } from 'bun:test'
2
2
  import { S3ObjectAuthorizator, S3Service } from '../../src'
3
3
 
4
4
  const mocked = new Date('2021-07-02T17:22Z')
@@ -24,31 +24,31 @@ const createS3Service = (bucket: string, prefix = '') => new S3Service(
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).toMatchInlineSnapshot('"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"')
27
+ expect(signed.url).toEqual('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')
28
28
  })
29
29
 
30
30
  test('sign s3 request - prefix', () => {
31
31
  const service = createS3Service('test', 'lorem')
32
32
  const signed = service.getSignedReadUrl({ objectKey: 'lorem/foo.jpg', expiration: null })
33
- expect(signed.url).toMatchInlineSnapshot('"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"')
33
+ expect(signed.url).toEqual('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')
34
34
  })
35
35
 
36
36
  test('sign upload', () => {
37
37
  const service = createS3Service('test')
38
38
  const signed = service.getSignedUploadUrl({ contentType: 'image/jpeg', acl: 'PUBLIC_READ', expiration: 1800, contentDisposition: null, extension: null, fileName: null, prefix: null, suffix: null, size: null })
39
- expect(signed.url).toMatchInlineSnapshot('"https://test.s3.eu-central-1.amazonaws.com/9fce3907-ff2b-45bb-b4ce-eff5527dd315.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=fcd00b967054c19a2ee64b59e31d61e032ea086dcf2f0d8c36a883971c469c99&X-Amz-SignedHeaders=cache-control%3Bhost%3Bx-amz-acl&x-amz-acl=public-read"')
39
+ expect(signed.url).toEqual('https://test.s3.eu-central-1.amazonaws.com/9fce3907-ff2b-45bb-b4ce-eff5527dd315.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=fcd00b967054c19a2ee64b59e31d61e032ea086dcf2f0d8c36a883971c469c99&X-Amz-SignedHeaders=cache-control%3Bhost%3Bx-amz-acl&x-amz-acl=public-read')
40
40
  })
41
41
 
42
42
  test('sign upload #2', () => {
43
43
  const service = createS3Service('test')
44
44
  const signed = service.getSignedUploadUrl({ contentType: 'image/jpeg', acl: 'PUBLIC_READ', expiration: 1800, contentDisposition: 'INLINE', extension: 'jpeg', fileName: 'foo-bar.jpeg', prefix: 'foo', suffix: 'bar', size: null })
45
- expect(signed.url).toMatchInlineSnapshot('"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"')
45
+ expect(signed.url).toEqual('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')
46
46
  })
47
47
 
48
48
 
49
49
  test('bucket with dot', () => {
50
50
  const service = createS3Service('test.foo')
51
51
  const signed = service.getSignedReadUrl({ objectKey: 'foo.jpg', expiration: null })
52
- expect(signed.url).toMatchInlineSnapshot('"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"')
52
+ expect(signed.url).toEqual('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')
53
53
  })
54
54
 
@@ -1,9 +1,5 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "typeRoots": [
4
- "./types",
5
- "../../node_modules/@types"
6
- ]
7
3
  },
8
4
  "extends": "../../tsconfig.settings.json"
9
5
  }