@genoacms/adapter-gcp 0.8.2 → 0.10.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/LICENSE +21 -0
- package/dist/authentication/identity-platform/descriptor.d.ts +18 -0
- package/dist/authentication/identity-platform/descriptor.js +14 -0
- package/dist/authentication/identity-platform/runtime.d.ts +4 -0
- package/dist/authentication/identity-platform/runtime.js +140 -0
- package/dist/database/descriptor.d.ts +16 -0
- package/dist/database/descriptor.js +7 -0
- package/dist/database/runtime.d.ts +5 -0
- package/dist/database/runtime.js +68 -0
- package/dist/deployment/archive.d.ts +4 -0
- package/dist/deployment/archive.js +46 -0
- package/dist/deployment/descriptor.d.ts +24 -0
- package/dist/deployment/descriptor.js +20 -0
- package/dist/deployment/functions.d.ts +16 -0
- package/dist/deployment/functions.js +66 -0
- package/dist/deployment/procedure.d.ts +4 -0
- package/dist/deployment/procedure.js +16 -0
- package/dist/deployment/settings.d.ts +22 -0
- package/dist/deployment/settings.js +58 -0
- package/dist/secrets/descriptor.d.ts +14 -0
- package/dist/secrets/descriptor.js +7 -0
- package/dist/secrets/runtime.d.ts +14 -0
- package/dist/secrets/runtime.js +147 -0
- package/dist/shared/serviceAccount.d.ts +16 -0
- package/dist/shared/serviceAccount.js +12 -0
- package/dist/storage/descriptor.d.ts +14 -0
- package/dist/storage/descriptor.js +7 -0
- package/dist/storage/runtime.d.ts +8 -0
- package/dist/storage/runtime.js +207 -0
- package/package.json +47 -28
- package/deployment/snippets/index.js +0 -8
- package/dist/config.d.ts +0 -2
- package/dist/config.js +0 -2
- package/dist/services/authorization/index.d.ts +0 -3
- package/dist/services/authorization/index.js +0 -24
- package/dist/services/database/index.d.ts +0 -7
- package/dist/services/database/index.js +0 -63
- package/dist/services/deployment/deploy.d.ts +0 -2
- package/dist/services/deployment/deploy.js +0 -116
- package/dist/services/deployment/index.d.ts +0 -4
- package/dist/services/deployment/index.js +0 -6
- package/dist/services/storage/index.d.ts +0 -12
- package/dist/services/storage/index.js +0 -87
- package/dist/services/storage/storage.d.ts +0 -3
- package/dist/services/storage/storage.js +0 -20
- package/src/config.ts +0 -4
- package/src/genoa.config.d.ts +0 -50
- package/src/services/authorization/index.ts +0 -28
- package/src/services/database/index.ts +0 -88
- package/src/services/deployment/deploy.ts +0 -126
- package/src/services/deployment/index.ts +0 -13
- package/src/services/storage/index.ts +0 -119
- package/src/services/storage/storage.ts +0 -27
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
Adapter,
|
|
3
|
-
ObjectReference,
|
|
4
|
-
StorageObject
|
|
5
|
-
} from '@genoacms/cloudabstraction/storage'
|
|
6
|
-
import { type File } from '@google-cloud/storage'
|
|
7
|
-
import { getBucket } from './storage.js'
|
|
8
|
-
|
|
9
|
-
const getObject: Adapter['getObject'] = async ({ bucket, name }) => {
|
|
10
|
-
const bucketInstance = getBucket(bucket)
|
|
11
|
-
const file = bucketInstance.file(name)
|
|
12
|
-
|
|
13
|
-
return {
|
|
14
|
-
data: file.createReadStream()
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const getPublicURL: Adapter['getPublicURL'] = async ({ bucket, name }) => {
|
|
19
|
-
const bucketInstance = getBucket(bucket)
|
|
20
|
-
const file = bucketInstance.file(name)
|
|
21
|
-
return file.publicUrl()
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const getSignedURL: Adapter['getSignedURL'] = async ({ bucket, name }, expires) => {
|
|
25
|
-
const bucketInstance = getBucket(bucket)
|
|
26
|
-
const file = bucketInstance.file(name)
|
|
27
|
-
const [url] = await file.getSignedUrl({
|
|
28
|
-
action: 'read',
|
|
29
|
-
expires
|
|
30
|
-
})
|
|
31
|
-
return url
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const uploadObject: Adapter['uploadObject'] = async ({ bucket, name }, stream, options) => {
|
|
35
|
-
const bucketInstance = getBucket(bucket)
|
|
36
|
-
const file = bucketInstance.file(name)
|
|
37
|
-
await file.save(stream, options)
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const moveObject: Adapter['moveObject'] = async ({ bucket, name }, newName) => {
|
|
41
|
-
const bucketInstance = getBucket(bucket)
|
|
42
|
-
const file = bucketInstance.file(name)
|
|
43
|
-
await file.move(newName)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const deleteObject: Adapter['deleteObject'] = async ({ bucket, name }) => {
|
|
47
|
-
const bucketInstance = getBucket(bucket)
|
|
48
|
-
const file = bucketInstance.file(name)
|
|
49
|
-
await file.delete()
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const listDirectory: Adapter['listDirectory'] = async ({ bucket, name }, listingParams = {}) => {
|
|
53
|
-
const bucketInstance = getBucket(bucket)
|
|
54
|
-
const options = {
|
|
55
|
-
autoPaginate: false,
|
|
56
|
-
prefix: name,
|
|
57
|
-
maxResults: listingParams?.limit,
|
|
58
|
-
startOffset: listingParams?.startAfter,
|
|
59
|
-
delimiter: '/'
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
let [files, , apiResponse] =
|
|
63
|
-
(await bucketInstance.getFiles(options)) as [File[], object, { prefixes: string[] } | undefined]
|
|
64
|
-
files = files.filter((file) => !file.name.endsWith('.folderPlaceholder'))
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
files: files.filter(f => f.name !== name).map((file) => {
|
|
68
|
-
return {
|
|
69
|
-
name: file.name,
|
|
70
|
-
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
|
|
71
|
-
size: file.metadata.size ? parseInt(file.metadata.size as string) : 0,
|
|
72
|
-
lastModified: new Date(file.metadata.updated as string)
|
|
73
|
-
} satisfies StorageObject
|
|
74
|
-
}),
|
|
75
|
-
directories: (apiResponse?.prefixes ?? []).filter((item) => item !== name).map(i => {
|
|
76
|
-
const object: ObjectReference = {
|
|
77
|
-
bucket,
|
|
78
|
-
name: i
|
|
79
|
-
}
|
|
80
|
-
return object
|
|
81
|
-
})
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const createDirectory: Adapter['createDirectory'] = async ({ bucket, name }) => {
|
|
86
|
-
const bucketInstance = getBucket(bucket)
|
|
87
|
-
const file = bucketInstance.file(`${name}/.folderPlaceholder`)
|
|
88
|
-
await file.save('')
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
const deleteDirectory: Adapter['deleteDirectory'] = async ({ bucket, name }) => {
|
|
92
|
-
const bucketInstance = getBucket(bucket)
|
|
93
|
-
const [files] = await bucketInstance.getFiles({ prefix: name })
|
|
94
|
-
const deletePromises = files.map(async (file) => await file.delete())
|
|
95
|
-
await Promise.all(deletePromises)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const moveDirectory: Adapter['moveDirectory'] = async ({ bucket, name }, newName) => {
|
|
99
|
-
const bucketInstance = getBucket(bucket)
|
|
100
|
-
const [files] = await bucketInstance.getFiles({ prefix: name })
|
|
101
|
-
const movePromises = files.map(async (file) => {
|
|
102
|
-
const newFileName = file.name.replace(name, newName)
|
|
103
|
-
await file.move(newFileName)
|
|
104
|
-
})
|
|
105
|
-
await Promise.all(movePromises)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export {
|
|
109
|
-
getObject,
|
|
110
|
-
getPublicURL,
|
|
111
|
-
getSignedURL,
|
|
112
|
-
uploadObject,
|
|
113
|
-
moveObject,
|
|
114
|
-
deleteObject,
|
|
115
|
-
listDirectory,
|
|
116
|
-
createDirectory,
|
|
117
|
-
deleteDirectory,
|
|
118
|
-
moveDirectory
|
|
119
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { BucketInit } from '@genoacms/cloudabstraction/storage'
|
|
2
|
-
import type { StorageProvider } from '../../genoa.config.js'
|
|
3
|
-
import { type Bucket, Storage } from '@google-cloud/storage'
|
|
4
|
-
import { getProvider } from '@genoacms/cloudabstraction'
|
|
5
|
-
import config from '../../config.js'
|
|
6
|
-
|
|
7
|
-
const ADAPTER_PATH = '@genoacms/adapter-gcp/storage'
|
|
8
|
-
const provider = getProvider('storage', ADAPTER_PATH) as StorageProvider
|
|
9
|
-
const storage = new Storage({
|
|
10
|
-
credentials: provider.credentials
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
const hasBucket = (name: string): boolean => {
|
|
14
|
-
const has = config.storage.buckets.find((bucket: BucketInit) => bucket.name === name &&
|
|
15
|
-
bucket.providerName === provider.name)
|
|
16
|
-
return !!has
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const getBucket = (name: string): Bucket => {
|
|
20
|
-
if (!hasBucket(name)) throw new Error('bucket-unregistered')
|
|
21
|
-
const bucket = storage.bucket(name)
|
|
22
|
-
return bucket
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export {
|
|
26
|
-
getBucket
|
|
27
|
-
}
|