@payloadcms/plugin-cloud-storage 1.0.15 → 1.0.17-beta.0
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/.editorconfig +10 -10
- package/.eslintrc.js +14 -14
- package/.gitignore +248 -248
- package/.prettierignore +1 -1
- package/.prettierrc.js +8 -8
- package/.vscode/launch.json +40 -28
- package/.vscode/settings.json +9 -9
- package/LICENSE.md +22 -22
- package/README.md +196 -178
- package/azure.d.ts +1 -1
- package/azure.js +1 -1
- package/dev/.env +11 -15
- package/dev/.env.example +21 -21
- package/dev/nodemon.json +8 -8
- package/dev/package.json +34 -32
- package/dev/src/collections/Media.ts +56 -56
- package/dev/src/collections/Users.ts +23 -23
- package/dev/src/mocks/fsMock.js +1 -1
- package/dev/src/mocks/promisifyMock.js +1 -1
- package/dev/src/payload.config.ts +111 -111
- package/dev/src/server.ts +26 -26
- package/dev/tsconfig.json +20 -20
- package/dist/adapters/azure/fileStub.d.ts +2 -2
- package/dist/adapters/azure/fileStub.js +3 -3
- package/dist/adapters/azure/generateURL.d.ts +7 -7
- package/dist/adapters/azure/generateURL.js +15 -15
- package/dist/adapters/azure/handleDelete.d.ts +9 -9
- package/dist/adapters/azure/handleDelete.js +63 -63
- package/dist/adapters/azure/handleUpload.d.ts +10 -10
- package/dist/adapters/azure/handleUpload.js +80 -80
- package/dist/adapters/azure/index.d.ts +8 -8
- package/dist/adapters/azure/index.js +42 -42
- package/dist/adapters/azure/index.js.map +1 -1
- package/dist/adapters/azure/mock.d.ts +13 -13
- package/dist/adapters/azure/mock.js +12 -12
- package/dist/adapters/azure/staticHandler.d.ts +9 -9
- package/dist/adapters/azure/staticHandler.js +81 -81
- package/dist/adapters/azure/webpack.d.ts +2 -2
- package/dist/adapters/azure/webpack.js +24 -24
- package/dist/adapters/azure/webpack.js.map +1 -1
- package/dist/adapters/gcs/generateURL.d.ts +8 -8
- package/dist/adapters/gcs/generateURL.js +15 -15
- package/dist/adapters/gcs/handleDelete.d.ts +8 -8
- package/dist/adapters/gcs/handleDelete.js +62 -62
- package/dist/adapters/gcs/handleUpload.d.ts +12 -12
- package/dist/adapters/gcs/handleUpload.js +72 -72
- package/dist/adapters/gcs/index.d.ts +8 -8
- package/dist/adapters/gcs/index.js +35 -35
- package/dist/adapters/gcs/mock.d.ts +1 -1
- package/dist/adapters/gcs/mock.js +4 -4
- package/dist/adapters/gcs/staticHandler.d.ts +10 -10
- package/dist/adapters/gcs/staticHandler.js +76 -76
- package/dist/adapters/gcs/webpack.d.ts +2 -2
- package/dist/adapters/gcs/webpack.js +24 -24
- package/dist/adapters/gcs/webpack.js.map +1 -1
- package/dist/adapters/s3/fileStub.d.ts +2 -2
- package/dist/adapters/s3/fileStub.js +3 -3
- package/dist/adapters/s3/generateURL.d.ts +8 -8
- package/dist/adapters/s3/generateURL.js +15 -15
- package/dist/adapters/s3/handleDelete.d.ts +8 -8
- package/dist/adapters/s3/handleDelete.js +63 -63
- package/dist/adapters/s3/handleUpload.d.ts +12 -12
- package/dist/adapters/s3/handleUpload.js +93 -93
- package/dist/adapters/s3/index.d.ts +8 -8
- package/dist/adapters/s3/index.js +59 -59
- package/dist/adapters/s3/mock.d.ts +8 -8
- package/dist/adapters/s3/mock.js +9 -9
- package/dist/adapters/s3/staticHandler.d.ts +10 -10
- package/dist/adapters/s3/staticHandler.js +81 -80
- package/dist/adapters/s3/staticHandler.js.map +1 -1
- package/dist/adapters/s3/webpack.d.ts +2 -2
- package/dist/adapters/s3/webpack.js +24 -24
- package/dist/adapters/s3/webpack.js.map +1 -1
- package/dist/fields/getFields.d.ts +11 -11
- package/dist/fields/getFields.js +118 -118
- package/dist/hooks/afterDelete.d.ts +10 -10
- package/dist/hooks/afterDelete.js +91 -88
- package/dist/hooks/afterDelete.js.map +1 -1
- package/dist/hooks/afterRead.d.ts +12 -12
- package/dist/hooks/afterRead.js +79 -79
- package/dist/hooks/beforeChange.d.ts +10 -10
- package/dist/hooks/beforeChange.js +105 -77
- package/dist/hooks/beforeChange.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -5
- package/dist/plugin.d.ts +3 -3
- package/dist/plugin.js +130 -124
- package/dist/plugin.js.map +1 -1
- package/dist/types.d.ts +68 -62
- package/dist/types.js +2 -2
- package/dist/utilities/getFilePrefix.d.ts +5 -5
- package/dist/utilities/getFilePrefix.js +80 -80
- package/dist/utilities/getIncomingFiles.d.ts +7 -7
- package/dist/utilities/getIncomingFiles.js +37 -37
- package/dist/utilities/getRangeFromHeader.d.ts +6 -6
- package/dist/utilities/getRangeFromHeader.js +66 -66
- package/dist/webpack.d.ts +9 -9
- package/dist/webpack.js +39 -39
- package/docs/local-dev.md +47 -47
- package/eslint-config/index.js +15 -15
- package/eslint-config/rules/import.js +38 -38
- package/eslint-config/rules/prettier.js +7 -7
- package/eslint-config/rules/style.js +21 -21
- package/eslint-config/rules/typescript.js +628 -628
- package/gcs.d.ts +1 -1
- package/gcs.js +1 -1
- package/package.json +67 -67
- package/s3.d.ts +1 -1
- package/s3.js +1 -1
- package/src/adapters/azure/emulator/docker-compose.yml +16 -16
- package/src/adapters/azure/fileStub.js +1 -1
- package/src/adapters/azure/generateURL.ts +13 -13
- package/src/adapters/azure/handleDelete.ts +16 -16
- package/src/adapters/azure/handleUpload.ts +41 -41
- package/src/adapters/azure/index.ts +48 -47
- package/src/adapters/azure/mock.js +13 -13
- package/src/adapters/azure/staticHandler.ts +38 -38
- package/src/adapters/azure/webpack.ts +24 -20
- package/src/adapters/gcs/emulator/docker-compose.yml +15 -15
- package/src/adapters/gcs/generateURL.ts +16 -16
- package/src/adapters/gcs/handleDelete.ts +16 -16
- package/src/adapters/gcs/handleUpload.ts +34 -34
- package/src/adapters/gcs/index.ts +37 -37
- package/src/adapters/gcs/mock.js +3 -3
- package/src/adapters/gcs/staticHandler.ts +34 -34
- package/src/adapters/gcs/webpack.ts +21 -17
- package/src/adapters/s3/emulator/.localstack/cache/machine.json +1 -0
- package/src/adapters/s3/emulator/.localstack/cache/server.test.pem +127 -0
- package/src/adapters/s3/emulator/.localstack/cache/server.test.pem.crt +99 -0
- package/src/adapters/s3/emulator/.localstack/cache/server.test.pem.key +28 -0
- package/src/adapters/s3/emulator/.localstack/cache/service-catalog-2_1_1_dev-1_29_149.pickle +0 -0
- package/src/adapters/s3/emulator/docker-compose.yml +15 -15
- package/src/adapters/s3/generateURL.ts +14 -14
- package/src/adapters/s3/handleDelete.ts +17 -17
- package/src/adapters/s3/index.ts +38 -38
- package/src/adapters/s3/mock.js +9 -9
- package/src/adapters/s3/staticHandler.ts +41 -40
- package/src/adapters/s3/webpack.ts +4 -0
- package/src/fields/getFields.ts +155 -155
- package/src/hooks/afterDelete.ts +35 -35
- package/src/hooks/afterRead.ts +38 -38
- package/src/hooks/beforeChange.ts +59 -30
- package/src/index.ts +1 -1
- package/src/plugin.ts +101 -94
- package/src/types.ts +79 -73
- package/src/utilities/getFilePrefix.ts +26 -26
- package/src/utilities/getIncomingFiles.ts +44 -44
- package/src/utilities/getRangeFromHeader.ts +27 -27
- package/src/webpack.ts +46 -46
- package/tsconfig.json +23 -23
- package/yarn-error.log +8163 -0
- package/yarn.lock +8062 -8155
- package/.idea/.gitignore +0 -5
- package/.idea/httpRequests/2023-04-07T152957.206.png +0 -0
- package/.idea/httpRequests/2023-04-07T153025.403.html +0 -10
- package/.idea/httpRequests/2023-04-07T153146.200.png +0 -0
- package/.idea/httpRequests/http-client.cookies +0 -1
- package/.idea/httpRequests/http-requests-log.http +0 -74
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/jsLinters/eslint.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/plugin-cloud-storage.iml +0 -12
- package/.idea/vcs.xml +0 -6
- package/.idea/workspace.xml +0 -269
- package/dev/build/127.d2c2ffcfff69fabfdd1b.js +0 -1
- package/dev/build/16.17dbe03b1d0a96f3e564.js +0 -2
- package/dev/build/16.17dbe03b1d0a96f3e564.js.LICENSE.txt +0 -8
- package/dev/build/171.bbcbae3ea90468ad0cad.js +0 -2
- package/dev/build/171.bbcbae3ea90468ad0cad.js.LICENSE.txt +0 -8
- package/dev/build/18.e50c27edff6716f930d9.js +0 -1
- package/dev/build/205.33c7a29683ba98de93e0.js +0 -1
- package/dev/build/2211c49456cd07331ea9.woff +0 -0
- package/dev/build/234.79395f82c18207c13766.js +0 -1
- package/dev/build/266.9d4a240b3e0985bd7dd5.js +0 -1
- package/dev/build/296.4c5d646257b42c915834.js +0 -1
- package/dev/build/304.40dbe690de322c8f7c0d.js +0 -2
- package/dev/build/304.40dbe690de322c8f7c0d.js.LICENSE.txt +0 -37
- package/dev/build/349.446c12bffd3905085fdb.js +0 -1
- package/dev/build/354.5acd04b85b96a9839125.js +0 -1
- package/dev/build/40ad7515b8674bb854a1.woff2 +0 -0
- package/dev/build/422.086542466cdc9f6a2437.js +0 -2
- package/dev/build/422.086542466cdc9f6a2437.js.LICENSE.txt +0 -6
- package/dev/build/491.0bfe1bb0ecfe383179aa.js +0 -1
- package/dev/build/4d8845b830f4e8e2affb.png +0 -0
- package/dev/build/51922ceb71da289688d3.woff2 +0 -0
- package/dev/build/522443364fda49e9e0ed.woff2 +0 -0
- package/dev/build/531.1c6f53f3b44a3c45b444.js +0 -2
- package/dev/build/531.1c6f53f3b44a3c45b444.js.LICENSE.txt +0 -6
- package/dev/build/570.f2d9b99706765fbf0225.js +0 -1
- package/dev/build/599.570a04990d5806004f61.js +0 -1
- package/dev/build/5b718d9772de251a8c0a.woff2 +0 -0
- package/dev/build/778.41ae26bcd617861ad586.js +0 -1
- package/dev/build/783.0117995f2ff6036d6746.js +0 -1
- package/dev/build/787999a6af6a17efbc7c.woff +0 -0
- package/dev/build/78b8935fb481e11c92ce.woff +0 -0
- package/dev/build/860.7688681d3269f3f16e9a.js +0 -1
- package/dev/build/892.1a4ca5ac67d81038ceec.js +0 -1
- package/dev/build/896.d8cb1160388dc29d6364.js +0 -1
- package/dev/build/8b4ddd0d08500553efde.woff +0 -0
- package/dev/build/8f612153248094525d9d.woff +0 -0
- package/dev/build/995.cc11e738ff81a85821b4.js +0 -1
- package/dev/build/9c7dfd0036f7bd24b053.woff2 +0 -0
- package/dev/build/a1cfdc5b5250b7c4b481.woff2 +0 -0
- package/dev/build/d7aeda9e48ce098e7b48.woff +0 -0
- package/dev/build/e009f21405b4d7e89367.woff2 +0 -0
- package/dev/build/e7caa9e17af6ac87d182.woff +0 -0
- package/dev/build/ebcc1430049fddb274f8.svg +0 -15
- package/dev/build/efe8f6a3b46446cc9135.woff +0 -0
- package/dev/build/f53bb8d4b29adc903703.woff2 +0 -0
- package/dev/build/index.html +0 -1
- package/dev/build/main.a2003d502fbb9aaa3e8d.js +0 -2
- package/dev/build/main.a2003d502fbb9aaa3e8d.js.LICENSE.txt +0 -57
- package/dev/build/styles.css +0 -1
- package/dev/build/styles.fa29d16b0baf5b98a1cf.js +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import path from 'path'
|
|
2
|
-
import { Storage } from '@google-cloud/storage'
|
|
3
|
-
import type { HandleDelete } from '../../types'
|
|
4
|
-
|
|
5
|
-
interface Args {
|
|
6
|
-
getStorageClient: () => Storage
|
|
7
|
-
bucket: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const getHandleDelete = ({ getStorageClient, bucket }: Args): HandleDelete => {
|
|
11
|
-
return async ({ filename, doc: { prefix = '' } }) => {
|
|
12
|
-
await getStorageClient().bucket(bucket).file(path.posix.join(prefix, filename)).delete({
|
|
13
|
-
ignoreNotFound: true,
|
|
14
|
-
})
|
|
15
|
-
}
|
|
16
|
-
}
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import { Storage } from '@google-cloud/storage'
|
|
3
|
+
import type { HandleDelete } from '../../types'
|
|
4
|
+
|
|
5
|
+
interface Args {
|
|
6
|
+
getStorageClient: () => Storage
|
|
7
|
+
bucket: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const getHandleDelete = ({ getStorageClient, bucket }: Args): HandleDelete => {
|
|
11
|
+
return async ({ filename, doc: { prefix = '' } }) => {
|
|
12
|
+
await getStorageClient().bucket(bucket).file(path.posix.join(prefix, filename)).delete({
|
|
13
|
+
ignoreNotFound: true,
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import path from 'path'
|
|
2
|
-
import type { Storage } from '@google-cloud/storage'
|
|
3
|
-
import type { CollectionConfig } from 'payload/types'
|
|
4
|
-
import type { HandleUpload } from '../../types'
|
|
5
|
-
|
|
6
|
-
interface Args {
|
|
7
|
-
collection: CollectionConfig
|
|
8
|
-
bucket: string
|
|
9
|
-
acl?: 'Private' | 'Public'
|
|
10
|
-
prefix?: string
|
|
11
|
-
getStorageClient: () => Storage
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export const getHandleUpload = ({
|
|
15
|
-
getStorageClient,
|
|
16
|
-
bucket,
|
|
17
|
-
acl,
|
|
18
|
-
prefix = '',
|
|
19
|
-
}: Args): HandleUpload => {
|
|
20
|
-
return async ({ data, file }) => {
|
|
21
|
-
const gcsFile = getStorageClient().bucket(bucket).file(path.posix.join(prefix, file.filename))
|
|
22
|
-
await gcsFile.save(file.buffer, {
|
|
23
|
-
metadata: {
|
|
24
|
-
contentType: file.mimeType,
|
|
25
|
-
},
|
|
26
|
-
})
|
|
27
|
-
|
|
28
|
-
if (acl) {
|
|
29
|
-
await gcsFile[`make${acl}`]()
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return data
|
|
33
|
-
}
|
|
34
|
-
}
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import type { Storage } from '@google-cloud/storage'
|
|
3
|
+
import type { CollectionConfig } from 'payload/types'
|
|
4
|
+
import type { HandleUpload } from '../../types'
|
|
5
|
+
|
|
6
|
+
interface Args {
|
|
7
|
+
collection: CollectionConfig
|
|
8
|
+
bucket: string
|
|
9
|
+
acl?: 'Private' | 'Public'
|
|
10
|
+
prefix?: string
|
|
11
|
+
getStorageClient: () => Storage
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const getHandleUpload = ({
|
|
15
|
+
getStorageClient,
|
|
16
|
+
bucket,
|
|
17
|
+
acl,
|
|
18
|
+
prefix = '',
|
|
19
|
+
}: Args): HandleUpload => {
|
|
20
|
+
return async ({ data, file }) => {
|
|
21
|
+
const gcsFile = getStorageClient().bucket(bucket).file(path.posix.join(prefix, file.filename))
|
|
22
|
+
await gcsFile.save(file.buffer, {
|
|
23
|
+
metadata: {
|
|
24
|
+
contentType: file.mimeType,
|
|
25
|
+
},
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
if (acl) {
|
|
29
|
+
await gcsFile[`make${acl}`]()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return data
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Storage, StorageOptions } from '@google-cloud/storage'
|
|
2
|
-
import type { Adapter, GeneratedAdapter } from '../../types'
|
|
3
|
-
import { getGenerateURL } from './generateURL'
|
|
4
|
-
import { getHandler } from './staticHandler'
|
|
5
|
-
import { getHandleDelete } from './handleDelete'
|
|
6
|
-
import { getHandleUpload } from './handleUpload'
|
|
7
|
-
import { extendWebpackConfig } from './webpack'
|
|
8
|
-
|
|
9
|
-
export interface Args {
|
|
10
|
-
options: StorageOptions
|
|
11
|
-
bucket: string
|
|
12
|
-
acl?: 'Private' | 'Public'
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const gcsAdapter =
|
|
16
|
-
({ options, bucket, acl }: Args): Adapter =>
|
|
17
|
-
({ collection, prefix }): GeneratedAdapter => {
|
|
18
|
-
let storageClient: Storage | null = null
|
|
19
|
-
const getStorageClient = () => {
|
|
20
|
-
if (storageClient) return storageClient
|
|
21
|
-
return (storageClient = new Storage(options))
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
handleUpload: getHandleUpload({
|
|
26
|
-
collection,
|
|
27
|
-
getStorageClient,
|
|
28
|
-
bucket,
|
|
29
|
-
acl,
|
|
30
|
-
prefix,
|
|
31
|
-
}),
|
|
32
|
-
handleDelete: getHandleDelete({ getStorageClient, bucket }),
|
|
33
|
-
generateURL: getGenerateURL({ getStorageClient, bucket }),
|
|
34
|
-
staticHandler: getHandler({ getStorageClient, bucket, collection }),
|
|
35
|
-
webpack: extendWebpackConfig,
|
|
36
|
-
}
|
|
37
|
-
}
|
|
1
|
+
import { Storage, StorageOptions } from '@google-cloud/storage'
|
|
2
|
+
import type { Adapter, GeneratedAdapter } from '../../types'
|
|
3
|
+
import { getGenerateURL } from './generateURL'
|
|
4
|
+
import { getHandler } from './staticHandler'
|
|
5
|
+
import { getHandleDelete } from './handleDelete'
|
|
6
|
+
import { getHandleUpload } from './handleUpload'
|
|
7
|
+
import { extendWebpackConfig } from './webpack'
|
|
8
|
+
|
|
9
|
+
export interface Args {
|
|
10
|
+
options: StorageOptions
|
|
11
|
+
bucket: string
|
|
12
|
+
acl?: 'Private' | 'Public'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const gcsAdapter =
|
|
16
|
+
({ options, bucket, acl }: Args): Adapter =>
|
|
17
|
+
({ collection, prefix }): GeneratedAdapter => {
|
|
18
|
+
let storageClient: Storage | null = null
|
|
19
|
+
const getStorageClient = () => {
|
|
20
|
+
if (storageClient) return storageClient
|
|
21
|
+
return (storageClient = new Storage(options))
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
handleUpload: getHandleUpload({
|
|
26
|
+
collection,
|
|
27
|
+
getStorageClient,
|
|
28
|
+
bucket,
|
|
29
|
+
acl,
|
|
30
|
+
prefix,
|
|
31
|
+
}),
|
|
32
|
+
handleDelete: getHandleDelete({ getStorageClient, bucket }),
|
|
33
|
+
generateURL: getGenerateURL({ getStorageClient, bucket }),
|
|
34
|
+
staticHandler: getHandler({ getStorageClient, bucket, collection }),
|
|
35
|
+
webpack: extendWebpackConfig,
|
|
36
|
+
}
|
|
37
|
+
}
|
package/src/adapters/gcs/mock.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
exports.Storage = function () {
|
|
2
|
-
return null
|
|
3
|
-
}
|
|
1
|
+
exports.Storage = function () {
|
|
2
|
+
return null
|
|
3
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import path from 'path'
|
|
2
|
-
import type { Storage } from '@google-cloud/storage'
|
|
3
|
-
import type { CollectionConfig } from 'payload/types'
|
|
4
|
-
import type { StaticHandler } from '../../types'
|
|
5
|
-
import { getFilePrefix } from '../../utilities/getFilePrefix'
|
|
6
|
-
|
|
7
|
-
interface Args {
|
|
8
|
-
getStorageClient: () => Storage
|
|
9
|
-
bucket: string
|
|
10
|
-
collection: CollectionConfig
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const getHandler = ({ getStorageClient, bucket, collection }: Args): StaticHandler => {
|
|
14
|
-
return async (req, res, next) => {
|
|
15
|
-
try {
|
|
16
|
-
const prefix = await getFilePrefix({ req, collection })
|
|
17
|
-
const file = getStorageClient()
|
|
18
|
-
.bucket(bucket)
|
|
19
|
-
.file(path.posix.join(prefix, req.params.filename))
|
|
20
|
-
|
|
21
|
-
const [metadata] = await file.getMetadata()
|
|
22
|
-
|
|
23
|
-
res.set({
|
|
24
|
-
'Content-Length': metadata.size,
|
|
25
|
-
'Content-Type': metadata.contentType,
|
|
26
|
-
ETag: metadata.etag,
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
return file.createReadStream().pipe(res)
|
|
30
|
-
} catch (err: unknown) {
|
|
31
|
-
return next()
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import type { Storage } from '@google-cloud/storage'
|
|
3
|
+
import type { CollectionConfig } from 'payload/types'
|
|
4
|
+
import type { StaticHandler } from '../../types'
|
|
5
|
+
import { getFilePrefix } from '../../utilities/getFilePrefix'
|
|
6
|
+
|
|
7
|
+
interface Args {
|
|
8
|
+
getStorageClient: () => Storage
|
|
9
|
+
bucket: string
|
|
10
|
+
collection: CollectionConfig
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const getHandler = ({ getStorageClient, bucket, collection }: Args): StaticHandler => {
|
|
14
|
+
return async (req, res, next) => {
|
|
15
|
+
try {
|
|
16
|
+
const prefix = await getFilePrefix({ req, collection })
|
|
17
|
+
const file = getStorageClient()
|
|
18
|
+
.bucket(bucket)
|
|
19
|
+
.file(path.posix.join(prefix, req.params.filename))
|
|
20
|
+
|
|
21
|
+
const [metadata] = await file.getMetadata()
|
|
22
|
+
|
|
23
|
+
res.set({
|
|
24
|
+
'Content-Length': metadata.size,
|
|
25
|
+
'Content-Type': metadata.contentType,
|
|
26
|
+
ETag: metadata.etag,
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
return file.createReadStream().pipe(res)
|
|
30
|
+
} catch (err: unknown) {
|
|
31
|
+
return next()
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import type { Configuration as WebpackConfig } from 'webpack'
|
|
2
|
-
import path from 'path'
|
|
3
|
-
|
|
4
|
-
export const extendWebpackConfig = (existingWebpackConfig: WebpackConfig): WebpackConfig => {
|
|
5
|
-
const newConfig: WebpackConfig = {
|
|
6
|
-
...existingWebpackConfig,
|
|
7
|
-
resolve: {
|
|
8
|
-
...(existingWebpackConfig.resolve || {}),
|
|
9
|
-
|
|
10
|
-
...(existingWebpackConfig.resolve?.
|
|
11
|
-
|
|
12
|
-
},
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
1
|
+
import type { Configuration as WebpackConfig } from 'webpack'
|
|
2
|
+
import path from 'path'
|
|
3
|
+
|
|
4
|
+
export const extendWebpackConfig = (existingWebpackConfig: WebpackConfig): WebpackConfig => {
|
|
5
|
+
const newConfig: WebpackConfig = {
|
|
6
|
+
...existingWebpackConfig,
|
|
7
|
+
resolve: {
|
|
8
|
+
...(existingWebpackConfig.resolve || {}),
|
|
9
|
+
fallback: {
|
|
10
|
+
...(existingWebpackConfig.resolve?.fallback ? existingWebpackConfig.resolve.fallback : {}),
|
|
11
|
+
stream: false,
|
|
12
|
+
},
|
|
13
|
+
alias: {
|
|
14
|
+
...(existingWebpackConfig.resolve?.alias ? existingWebpackConfig.resolve.alias : {}),
|
|
15
|
+
'@google-cloud/storage': path.resolve(__dirname, './mock.js'),
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return newConfig
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"machine_id": "22a7ad76"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCaPWhTRm/+I3kq
|
|
3
|
+
KZkATLlXtZBGACSvPcJKs/xo1YZX1uCm9mI2/21sqXSArd89lPNJky3LzJavUpRk
|
|
4
|
+
EAZunryuqB6ktxiDU5lG5AihlRXOHPdGDhMSCtyuhgqawY316H/n1LeYt/vjDJ9d
|
|
5
|
+
Qq4CE0vUQMI4OApo3b74Ww2G+xxPoqjPiGCc4L1zdiUKYZm2cxk6tyy89udTbfZu
|
|
6
|
+
pKGqFYQYOMVxh1EVOayg9HExHJV2woYyPNF4LIF5zrqt6VVGyiVnFTnWCMCa2Wky
|
|
7
|
+
p33E76w5PgaDpUhORdwYqMkmAlMnAiFrxmtc4OKoYOZoCP7+tqKLndBvUpWdfMp4
|
|
8
|
+
a4BEyMStAgMBAAECggEAWG8tCdIxFD2ykwIWv50+B5QKjJg4cGGwrLRV3KXQyTxi
|
|
9
|
+
wlgyJ+Z8Dvl52u3WObDVbTH96AP9wbhPbK/jgDlzZZDvQPHaFDIyh/rnF/4q6mqh
|
|
10
|
+
PIGFXarsrQQdwG2Jv5z2+S11txKGUcBC/23j5zy5FZGryiAXl9jMTgmmz+Xaba2p
|
|
11
|
+
rrlwCkbf5NTRSmMrM6i5n7D6bqqE9xm+zdowzX6IxvQN+GwnqH/gebC9Bbt8ZXW8
|
|
12
|
+
MmAvz8odX3PQznSmS7QkvL6YdRonj/XQts1BgoC/zb4zvhRIBxNJGKmu//7nyyFc
|
|
13
|
+
4/5i1T1YXSMW8W602xRLc/A9hLek6g9XeLAF/g6i4QKBgQDNbTOprhMMEprNxnFM
|
|
14
|
+
BkxByERNRVAE7HujRoMlbwPGpaBbUNpYfoc5EAAgc0QjXAeONU/++L5uyR/J12vM
|
|
15
|
+
jGo05DF0HXfhzXEcwG3qw+/xYM2nO76iQtoJESCs+k3N/HKmsIIK58md35v32CEy
|
|
16
|
+
iPvOSYVTeyNGCvXVtq7jN9M4VwKBgQDANjeCa9cpXlFMQt9si3HNMpuuXNt0dXQA
|
|
17
|
+
XqB8c24GcbC+ab/iDBl0iV7ErftQJIa+YLCi3Me/476U0k+cPNaI5TCx6UYPg3cC
|
|
18
|
+
gkM4GEGbrhqTFXxTjxPbA7KR8KNoX/ckzGnGFJ6dm2Y7izv2eCyyFVLZyv/9wH+k
|
|
19
|
+
a1pohd6YmwKBgCtuix200BIdXN1kt097hWPjE43CuchQt1Mt9UxUzFeTbPPhhEhx
|
|
20
|
+
d+V4nI4/0IgpTO+kFeWycZC6tR3XjdMRXOMR2+LQ2CfFZ8TManDYPEKsVM6mswdb
|
|
21
|
+
Wv3PwTjRMuH6HcNgTh5AI0BdpnwgFeS5UYOrx6R+xFZqus8UcKVZiC7BAoGAe4Jb
|
|
22
|
+
KPMizvJMSzStXJI+Dhz27JO+cJcIczRa651AleN4LuLE6fvcX4Xl33vsgRL3gl2f
|
|
23
|
+
Iwe7UxKE5BxAC6UMNesP30KGQnG3h2UszF7Jyb+WU+z6drb5i0JU/HIkjm0b4gl3
|
|
24
|
+
7lBRm/S/PIO7hCS0k7ogAtLuq5+GZaCV95QN9QECgYAjRQbu8TPcs7HXLkqNZuQU
|
|
25
|
+
JEcSa3oihbkvWODbKLktWm9V+MpRpf3L60G/PSFcWe5X1ronYMxXDu26upsxa8l4
|
|
26
|
+
lsSmvaZsN/Mi50bGVYFaqBtHOGM93r2LXX8n17RV8SeORIFtUW+I4HlhRoAQtdHG
|
|
27
|
+
ffRxPAr0bF9ix2ehkJQW4A==
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
29
|
+
-----BEGIN CERTIFICATE-----
|
|
30
|
+
MIIGnjCCBYagAwIBAgISBP01h2GLqWhtt2kfNROuC+1gMA0GCSqGSIb3DQEBCwUA
|
|
31
|
+
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
|
32
|
+
EwJSMzAeFw0yMzAzMjgyMTE0MDVaFw0yMzA2MjYyMTE0MDRaMDIxMDAuBgNVBAMM
|
|
33
|
+
JyouYW1wbGlmeWFwcC5sb2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZDCCASIwDQYJ
|
|
34
|
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJo9aFNGb/4jeSopmQBMuVe1kEYAJK89
|
|
35
|
+
wkqz/GjVhlfW4Kb2Yjb/bWypdICt3z2U80mTLcvMlq9SlGQQBm6evK6oHqS3GINT
|
|
36
|
+
mUbkCKGVFc4c90YOExIK3K6GCprBjfXof+fUt5i3++MMn11CrgITS9RAwjg4Cmjd
|
|
37
|
+
vvhbDYb7HE+iqM+IYJzgvXN2JQphmbZzGTq3LLz251Nt9m6koaoVhBg4xXGHURU5
|
|
38
|
+
rKD0cTEclXbChjI80XgsgXnOuq3pVUbKJWcVOdYIwJrZaTKnfcTvrDk+BoOlSE5F
|
|
39
|
+
3BioySYCUycCIWvGa1zg4qhg5mgI/v62ooud0G9SlZ18ynhrgETIxK0CAwEAAaOC
|
|
40
|
+
A6wwggOoMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
|
|
41
|
+
BQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUGcegmIXfOIoNR2owsgQkS0zC
|
|
42
|
+
v5cwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA5h+vnYsUwsYwVQYIKwYBBQUHAQEE
|
|
43
|
+
STBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMuby5sZW5jci5vcmcwIgYIKwYBBQUH
|
|
44
|
+
MAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8wggF6BgNVHREEggFxMIIBbYInKi5h
|
|
45
|
+
bXBsaWZ5YXBwLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgicqLmNsb3VkZnJv
|
|
46
|
+
bnQubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCICouZWxiLmxvY2FsaG9zdC5s
|
|
47
|
+
b2NhbHN0YWNrLmNsb3VkgigqLmV4ZWN1dGUtYXBpLmxvY2FsaG9zdC5sb2NhbHN0
|
|
48
|
+
YWNrLmNsb3VkghwqLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgicqLm9wZW5z
|
|
49
|
+
ZWFyY2gubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCJyouczMtd2Vic2l0ZS5s
|
|
50
|
+
b2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZIIfKi5zMy5sb2NhbGhvc3QubG9jYWxz
|
|
51
|
+
dGFjay5jbG91ZIIgKi5zY20ubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCGmxv
|
|
52
|
+
Y2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcG
|
|
53
|
+
CysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5
|
|
54
|
+
cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAejKMVNi3LbYg6jjgUh7p
|
|
55
|
+
hBZwMhOFTTvSK8E6V6NS61IAAAGHKkkVgwAABAMARzBFAiEAzEZtyk7PSZ4v/rd5
|
|
56
|
+
hmjTaO7iVf7zGyTHDge2EHwXXmMCIAyXJu07nplXKF+BRKGMU2o6BIczdLRolNe1
|
|
57
|
+
UwgkJwWsAHYA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAGHKkkV
|
|
58
|
+
fAAABAMARzBFAiEAgguUGxdQScQtffmvnT6rEgvHmTU64SnTXKkdZhvkX2cCIEay
|
|
59
|
+
SFS/7ndCLwZtkvfPRoZEQwifFWCOCE77mbyBaC+SMA0GCSqGSIb3DQEBCwUAA4IB
|
|
60
|
+
AQAcBhzd5jQFtE4tlgug5d0xMynPipw55GT3q/8kW/x5SLJG9vckJMZwsbtt+f9l
|
|
61
|
+
B0OtEPaeias8+U8iJnMhfIz1pFGY0ZYipcl6/OsqjdiR3UJMJYGCQrGjeIahXPD6
|
|
62
|
+
PMrrP5/k103U/Lyxq8+BzVKp5orLp4Qc/kJ+JwXbXJvs5+f8eGDbKQW+s1wrPJK3
|
|
63
|
+
A7uESMqyVV4hC9oepqIsZJ+Viod9YKEGtRgJygJixPbgyUl8WRSpCQc/vhdfjW5/
|
|
64
|
+
Shf4CKRYULu/UKB63n8uaQ6vbvUZF4DKau9898DXRzDHo0ADI9gE0X3EN7BHsUjB
|
|
65
|
+
pLF5oIqUc4XhS0f86j4lMenn
|
|
66
|
+
-----END CERTIFICATE-----
|
|
67
|
+
-----BEGIN CERTIFICATE-----
|
|
68
|
+
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
|
|
95
|
+
nLRbwHOoq7hHwg==
|
|
96
|
+
-----END CERTIFICATE-----
|
|
97
|
+
-----BEGIN CERTIFICATE-----
|
|
98
|
+
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
|
|
99
|
+
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
|
|
100
|
+
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
|
|
101
|
+
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
|
102
|
+
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
|
|
103
|
+
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
|
|
104
|
+
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
|
|
105
|
+
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
|
|
106
|
+
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
|
|
107
|
+
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
|
|
108
|
+
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
|
|
109
|
+
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
|
|
110
|
+
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
|
|
111
|
+
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
|
|
112
|
+
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
|
|
113
|
+
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
|
|
114
|
+
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
|
|
115
|
+
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
|
|
116
|
+
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
|
|
117
|
+
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
|
|
118
|
+
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
|
|
119
|
+
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
|
|
120
|
+
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
|
|
121
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
|
|
122
|
+
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
|
|
123
|
+
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
|
|
124
|
+
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
|
|
125
|
+
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
|
|
126
|
+
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
|
|
127
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIGnjCCBYagAwIBAgISBP01h2GLqWhtt2kfNROuC+1gMA0GCSqGSIb3DQEBCwUA
|
|
3
|
+
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
|
|
4
|
+
EwJSMzAeFw0yMzAzMjgyMTE0MDVaFw0yMzA2MjYyMTE0MDRaMDIxMDAuBgNVBAMM
|
|
5
|
+
JyouYW1wbGlmeWFwcC5sb2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZDCCASIwDQYJ
|
|
6
|
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJo9aFNGb/4jeSopmQBMuVe1kEYAJK89
|
|
7
|
+
wkqz/GjVhlfW4Kb2Yjb/bWypdICt3z2U80mTLcvMlq9SlGQQBm6evK6oHqS3GINT
|
|
8
|
+
mUbkCKGVFc4c90YOExIK3K6GCprBjfXof+fUt5i3++MMn11CrgITS9RAwjg4Cmjd
|
|
9
|
+
vvhbDYb7HE+iqM+IYJzgvXN2JQphmbZzGTq3LLz251Nt9m6koaoVhBg4xXGHURU5
|
|
10
|
+
rKD0cTEclXbChjI80XgsgXnOuq3pVUbKJWcVOdYIwJrZaTKnfcTvrDk+BoOlSE5F
|
|
11
|
+
3BioySYCUycCIWvGa1zg4qhg5mgI/v62ooud0G9SlZ18ynhrgETIxK0CAwEAAaOC
|
|
12
|
+
A6wwggOoMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYB
|
|
13
|
+
BQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUGcegmIXfOIoNR2owsgQkS0zC
|
|
14
|
+
v5cwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA5h+vnYsUwsYwVQYIKwYBBQUHAQEE
|
|
15
|
+
STBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMuby5sZW5jci5vcmcwIgYIKwYBBQUH
|
|
16
|
+
MAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8wggF6BgNVHREEggFxMIIBbYInKi5h
|
|
17
|
+
bXBsaWZ5YXBwLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgicqLmNsb3VkZnJv
|
|
18
|
+
bnQubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCICouZWxiLmxvY2FsaG9zdC5s
|
|
19
|
+
b2NhbHN0YWNrLmNsb3VkgigqLmV4ZWN1dGUtYXBpLmxvY2FsaG9zdC5sb2NhbHN0
|
|
20
|
+
YWNrLmNsb3VkghwqLmxvY2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkgicqLm9wZW5z
|
|
21
|
+
ZWFyY2gubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCJyouczMtd2Vic2l0ZS5s
|
|
22
|
+
b2NhbGhvc3QubG9jYWxzdGFjay5jbG91ZIIfKi5zMy5sb2NhbGhvc3QubG9jYWxz
|
|
23
|
+
dGFjay5jbG91ZIIgKi5zY20ubG9jYWxob3N0LmxvY2Fsc3RhY2suY2xvdWSCGmxv
|
|
24
|
+
Y2FsaG9zdC5sb2NhbHN0YWNrLmNsb3VkMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcG
|
|
25
|
+
CysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5
|
|
26
|
+
cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAejKMVNi3LbYg6jjgUh7p
|
|
27
|
+
hBZwMhOFTTvSK8E6V6NS61IAAAGHKkkVgwAABAMARzBFAiEAzEZtyk7PSZ4v/rd5
|
|
28
|
+
hmjTaO7iVf7zGyTHDge2EHwXXmMCIAyXJu07nplXKF+BRKGMU2o6BIczdLRolNe1
|
|
29
|
+
UwgkJwWsAHYA6D7Q2j71BjUy51covIlryQPTy9ERa+zraeF3fW0GvW4AAAGHKkkV
|
|
30
|
+
fAAABAMARzBFAiEAgguUGxdQScQtffmvnT6rEgvHmTU64SnTXKkdZhvkX2cCIEay
|
|
31
|
+
SFS/7ndCLwZtkvfPRoZEQwifFWCOCE77mbyBaC+SMA0GCSqGSIb3DQEBCwUAA4IB
|
|
32
|
+
AQAcBhzd5jQFtE4tlgug5d0xMynPipw55GT3q/8kW/x5SLJG9vckJMZwsbtt+f9l
|
|
33
|
+
B0OtEPaeias8+U8iJnMhfIz1pFGY0ZYipcl6/OsqjdiR3UJMJYGCQrGjeIahXPD6
|
|
34
|
+
PMrrP5/k103U/Lyxq8+BzVKp5orLp4Qc/kJ+JwXbXJvs5+f8eGDbKQW+s1wrPJK3
|
|
35
|
+
A7uESMqyVV4hC9oepqIsZJ+Viod9YKEGtRgJygJixPbgyUl8WRSpCQc/vhdfjW5/
|
|
36
|
+
Shf4CKRYULu/UKB63n8uaQ6vbvUZF4DKau9898DXRzDHo0ADI9gE0X3EN7BHsUjB
|
|
37
|
+
pLF5oIqUc4XhS0f86j4lMenn
|
|
38
|
+
-----END CERTIFICATE-----
|
|
39
|
+
-----BEGIN CERTIFICATE-----
|
|
40
|
+
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
|
|
67
|
+
nLRbwHOoq7hHwg==
|
|
68
|
+
-----END CERTIFICATE-----
|
|
69
|
+
-----BEGIN CERTIFICATE-----
|
|
70
|
+
MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/
|
|
71
|
+
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
|
|
72
|
+
DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow
|
|
73
|
+
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
|
|
74
|
+
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB
|
|
75
|
+
AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC
|
|
76
|
+
ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL
|
|
77
|
+
wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D
|
|
78
|
+
LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK
|
|
79
|
+
4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
|
|
80
|
+
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
|
|
81
|
+
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
|
|
82
|
+
Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
|
|
83
|
+
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
|
|
84
|
+
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
|
|
85
|
+
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND
|
|
86
|
+
TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw
|
|
87
|
+
SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1
|
|
88
|
+
c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx
|
|
89
|
+
+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB
|
|
90
|
+
ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu
|
|
91
|
+
b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E
|
|
92
|
+
U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu
|
|
93
|
+
MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC
|
|
94
|
+
5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW
|
|
95
|
+
9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG
|
|
96
|
+
WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O
|
|
97
|
+
he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC
|
|
98
|
+
Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5
|
|
99
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
|
2
|
+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCaPWhTRm/+I3kq
|
|
3
|
+
KZkATLlXtZBGACSvPcJKs/xo1YZX1uCm9mI2/21sqXSArd89lPNJky3LzJavUpRk
|
|
4
|
+
EAZunryuqB6ktxiDU5lG5AihlRXOHPdGDhMSCtyuhgqawY316H/n1LeYt/vjDJ9d
|
|
5
|
+
Qq4CE0vUQMI4OApo3b74Ww2G+xxPoqjPiGCc4L1zdiUKYZm2cxk6tyy89udTbfZu
|
|
6
|
+
pKGqFYQYOMVxh1EVOayg9HExHJV2woYyPNF4LIF5zrqt6VVGyiVnFTnWCMCa2Wky
|
|
7
|
+
p33E76w5PgaDpUhORdwYqMkmAlMnAiFrxmtc4OKoYOZoCP7+tqKLndBvUpWdfMp4
|
|
8
|
+
a4BEyMStAgMBAAECggEAWG8tCdIxFD2ykwIWv50+B5QKjJg4cGGwrLRV3KXQyTxi
|
|
9
|
+
wlgyJ+Z8Dvl52u3WObDVbTH96AP9wbhPbK/jgDlzZZDvQPHaFDIyh/rnF/4q6mqh
|
|
10
|
+
PIGFXarsrQQdwG2Jv5z2+S11txKGUcBC/23j5zy5FZGryiAXl9jMTgmmz+Xaba2p
|
|
11
|
+
rrlwCkbf5NTRSmMrM6i5n7D6bqqE9xm+zdowzX6IxvQN+GwnqH/gebC9Bbt8ZXW8
|
|
12
|
+
MmAvz8odX3PQznSmS7QkvL6YdRonj/XQts1BgoC/zb4zvhRIBxNJGKmu//7nyyFc
|
|
13
|
+
4/5i1T1YXSMW8W602xRLc/A9hLek6g9XeLAF/g6i4QKBgQDNbTOprhMMEprNxnFM
|
|
14
|
+
BkxByERNRVAE7HujRoMlbwPGpaBbUNpYfoc5EAAgc0QjXAeONU/++L5uyR/J12vM
|
|
15
|
+
jGo05DF0HXfhzXEcwG3qw+/xYM2nO76iQtoJESCs+k3N/HKmsIIK58md35v32CEy
|
|
16
|
+
iPvOSYVTeyNGCvXVtq7jN9M4VwKBgQDANjeCa9cpXlFMQt9si3HNMpuuXNt0dXQA
|
|
17
|
+
XqB8c24GcbC+ab/iDBl0iV7ErftQJIa+YLCi3Me/476U0k+cPNaI5TCx6UYPg3cC
|
|
18
|
+
gkM4GEGbrhqTFXxTjxPbA7KR8KNoX/ckzGnGFJ6dm2Y7izv2eCyyFVLZyv/9wH+k
|
|
19
|
+
a1pohd6YmwKBgCtuix200BIdXN1kt097hWPjE43CuchQt1Mt9UxUzFeTbPPhhEhx
|
|
20
|
+
d+V4nI4/0IgpTO+kFeWycZC6tR3XjdMRXOMR2+LQ2CfFZ8TManDYPEKsVM6mswdb
|
|
21
|
+
Wv3PwTjRMuH6HcNgTh5AI0BdpnwgFeS5UYOrx6R+xFZqus8UcKVZiC7BAoGAe4Jb
|
|
22
|
+
KPMizvJMSzStXJI+Dhz27JO+cJcIczRa651AleN4LuLE6fvcX4Xl33vsgRL3gl2f
|
|
23
|
+
Iwe7UxKE5BxAC6UMNesP30KGQnG3h2UszF7Jyb+WU+z6drb5i0JU/HIkjm0b4gl3
|
|
24
|
+
7lBRm/S/PIO7hCS0k7ogAtLuq5+GZaCV95QN9QECgYAjRQbu8TPcs7HXLkqNZuQU
|
|
25
|
+
JEcSa3oihbkvWODbKLktWm9V+MpRpf3L60G/PSFcWe5X1ronYMxXDu26upsxa8l4
|
|
26
|
+
lsSmvaZsN/Mi50bGVYFaqBtHOGM93r2LXX8n17RV8SeORIFtUW+I4HlhRoAQtdHG
|
|
27
|
+
ffRxPAr0bF9ix2ehkJQW4A==
|
|
28
|
+
-----END PRIVATE KEY-----
|
|
Binary file
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
version: '3.2'
|
|
2
|
-
services:
|
|
3
|
-
localstack:
|
|
4
|
-
image: localstack/localstack:latest
|
|
5
|
-
container_name: localstack_demo
|
|
6
|
-
ports:
|
|
7
|
-
- '4563-4599:4563-4599'
|
|
8
|
-
- '8055:8080'
|
|
9
|
-
environment:
|
|
10
|
-
- SERVICES=s3
|
|
11
|
-
- DEBUG=1
|
|
12
|
-
- DATA_DIR=/tmp/localstack/data
|
|
13
|
-
volumes:
|
|
14
|
-
- './.localstack:/var/lib/localstack'
|
|
15
|
-
- '/var/run/docker.sock:/var/run/docker.sock'
|
|
1
|
+
version: '3.2'
|
|
2
|
+
services:
|
|
3
|
+
localstack:
|
|
4
|
+
image: localstack/localstack:latest
|
|
5
|
+
container_name: localstack_demo
|
|
6
|
+
ports:
|
|
7
|
+
- '4563-4599:4563-4599'
|
|
8
|
+
- '8055:8080'
|
|
9
|
+
environment:
|
|
10
|
+
- SERVICES=s3
|
|
11
|
+
- DEBUG=1
|
|
12
|
+
- DATA_DIR=/tmp/localstack/data
|
|
13
|
+
volumes:
|
|
14
|
+
- './.localstack:/var/lib/localstack'
|
|
15
|
+
- '/var/run/docker.sock:/var/run/docker.sock'
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import path from 'path'
|
|
2
|
-
import type * as AWS from '@aws-sdk/client-s3'
|
|
3
|
-
import type { GenerateURL } from '../../types'
|
|
4
|
-
|
|
5
|
-
interface Args {
|
|
6
|
-
config: AWS.S3ClientConfig
|
|
7
|
-
bucket: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const getGenerateURL =
|
|
11
|
-
({ config: { endpoint }, bucket }: Args): GenerateURL =>
|
|
12
|
-
({ filename, prefix = '' }) => {
|
|
13
|
-
return `${endpoint}/${bucket}/${path.posix.join(prefix, filename)}`
|
|
14
|
-
}
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import type * as AWS from '@aws-sdk/client-s3'
|
|
3
|
+
import type { GenerateURL } from '../../types'
|
|
4
|
+
|
|
5
|
+
interface Args {
|
|
6
|
+
config: AWS.S3ClientConfig
|
|
7
|
+
bucket: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const getGenerateURL =
|
|
11
|
+
({ config: { endpoint }, bucket }: Args): GenerateURL =>
|
|
12
|
+
({ filename, prefix = '' }) => {
|
|
13
|
+
return `${endpoint}/${bucket}/${path.posix.join(prefix, filename)}`
|
|
14
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import path from 'path'
|
|
2
|
-
import type * as AWS from '@aws-sdk/client-s3'
|
|
3
|
-
import type { HandleDelete } from '../../types'
|
|
4
|
-
|
|
5
|
-
interface Args {
|
|
6
|
-
getStorageClient: () => AWS.S3
|
|
7
|
-
bucket: string
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const getHandleDelete = ({ getStorageClient, bucket }: Args): HandleDelete => {
|
|
11
|
-
return async ({ filename, doc: { prefix = '' } }) => {
|
|
12
|
-
await getStorageClient().deleteObject({
|
|
13
|
-
Bucket: bucket,
|
|
14
|
-
Key: path.posix.join(prefix, filename),
|
|
15
|
-
})
|
|
16
|
-
}
|
|
17
|
-
}
|
|
1
|
+
import path from 'path'
|
|
2
|
+
import type * as AWS from '@aws-sdk/client-s3'
|
|
3
|
+
import type { HandleDelete } from '../../types'
|
|
4
|
+
|
|
5
|
+
interface Args {
|
|
6
|
+
getStorageClient: () => AWS.S3
|
|
7
|
+
bucket: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const getHandleDelete = ({ getStorageClient, bucket }: Args): HandleDelete => {
|
|
11
|
+
return async ({ filename, doc: { prefix = '' } }) => {
|
|
12
|
+
await getStorageClient().deleteObject({
|
|
13
|
+
Bucket: bucket,
|
|
14
|
+
Key: path.posix.join(prefix, filename),
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
}
|