@genoacms/adapter-gcp 0.5.2-fix.9 → 0.7.1-fix.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,13 @@
1
1
  import config from '../../config.js';
2
2
  import { ProjectsClient } from '@google-cloud/resource-manager';
3
+ const authorizationConfig = config.authorization.providers.find((provider) => provider.name === 'gcp');
4
+ if (!authorizationConfig)
5
+ throw new Error('authorization-provider-not-found');
6
+ const projectId = authorizationConfig.projectId;
3
7
  const resourceManager = new ProjectsClient({
4
- projectId: config.authorization.projectId,
5
- credentials: config.authorization.credentials
8
+ projectId,
9
+ credentials: authorizationConfig.credentials
6
10
  });
7
- const projectId = config.authorization.projectId;
8
11
  const isEmailAdmins = async (email) => {
9
12
  const resource = `projects/${projectId}`;
10
13
  const role = resource + '/roles/genoacms';
@@ -1,7 +1,7 @@
1
1
  import type { Adapter } from '@genoacms/cloudabstraction/database';
2
- declare const createDocument: Adapter.createDocument;
3
- declare const getCollection: Adapter.getCollection;
4
- declare const getDocument: Adapter.getDocument;
5
- declare const updateDocument: Adapter.updateDocument;
6
- declare const deleteDocument: Adapter.deleteDocument;
2
+ declare const createDocument: Adapter['createDocument'];
3
+ declare const getCollection: Adapter['getCollection'];
4
+ declare const getDocument: Adapter['getDocument'];
5
+ declare const updateDocument: Adapter['updateDocument'];
6
+ declare const deleteDocument: Adapter['deleteDocument'];
7
7
  export { createDocument, getDocument, getCollection, updateDocument, deleteDocument };
@@ -1,9 +1,12 @@
1
1
  import config from '../../config.js';
2
2
  import { Firestore } from '@google-cloud/firestore';
3
+ const firestoreConfig = config.database.providers.find((provider) => provider.name === 'firestore');
4
+ if (!firestoreConfig)
5
+ throw new Error('firestore-provider-not-found');
3
6
  const firestore = new Firestore({
4
- credentials: config.database.credentials,
5
- databaseId: config.database.databaseId,
6
- projectId: config.database.projectId
7
+ credentials: firestoreConfig.credentials,
8
+ databaseId: firestoreConfig.databaseId,
9
+ projectId: firestoreConfig.projectId
7
10
  });
8
11
  const createDocument = async (reference, data) => {
9
12
  const document = await firestore.collection(reference.name).add(data);
@@ -1,4 +1,4 @@
1
- const svelteKitAdapter = '@sveltejs/adapter-node';
1
+ const svelteKitAdapter = '@genoacms/sveltekit-adapter-cloud-run-functions';
2
2
  const deployProcedure = async () => {
3
3
  const deploy = (await import('./deploy.js')).default;
4
4
  await deploy();
@@ -1,9 +1,9 @@
1
1
  import type { Adapter } from '@genoacms/cloudabstraction/storage';
2
- declare const getObject: Adapter.getObject;
3
- declare const getPublicURL: Adapter.getPublicURL;
4
- declare const getSignedURL: Adapter.getSignedURL;
5
- declare const uploadObject: Adapter.uploadObject;
6
- declare const deleteObject: Adapter.deleteObject;
7
- declare const listDirectory: Adapter.listDirectory;
8
- declare const createDirectory: Adapter.createDirectory;
2
+ declare const getObject: Adapter['getObject'];
3
+ declare const getPublicURL: Adapter['getPublicURL'];
4
+ declare const getSignedURL: Adapter['getSignedURL'];
5
+ declare const uploadObject: Adapter['uploadObject'];
6
+ declare const deleteObject: Adapter['deleteObject'];
7
+ declare const listDirectory: Adapter['listDirectory'];
8
+ declare const createDirectory: Adapter['createDirectory'];
9
9
  export { getObject, getPublicURL, getSignedURL, uploadObject, deleteObject, listDirectory, createDirectory };
@@ -1,5 +1,8 @@
1
1
  import config from '../../config.js';
2
2
  import { Storage } from '@google-cloud/storage';
3
+ const storageConfig = config.storage.providers.find((provider) => provider.name === 'gcs');
4
+ if (!storageConfig)
5
+ throw new Error('storage-provider-not-found');
3
6
  const storage = new Storage({
4
7
  credentials: config.storage.credentials
5
8
  });
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@genoacms/adapter-gcp",
3
- "version": "0.5.2-fix.9",
3
+ "version": "0.7.1-fix.1",
4
+ "type": "module",
4
5
  "description": "Implementation of abstraction layer of GenoaCMS for GCP",
5
6
  "repository": {
6
7
  "type": "git",
@@ -15,11 +16,13 @@
15
16
  "url": "https://github.com/GenoaCMS/adapter-gcp/issues"
16
17
  },
17
18
  "homepage": "https://github.com/GenoaCMS/adapter-gcp#readme",
18
- "type": "module",
19
+ "publishConfig": {
20
+ "provenance": true
21
+ },
19
22
  "dependencies": {
20
- "@genoacms/cloudabstraction": "^0.5.2",
23
+ "@genoacms/cloudabstraction": "^0.7.1",
21
24
  "@google-cloud/firestore": "^7.1.0",
22
- "@google-cloud/functions": "^3.2.0",
25
+ "@google-cloud/functions": "^3.4.0",
23
26
  "@google-cloud/resource-manager": "^5.1.0",
24
27
  "@google-cloud/storage": "^7.7.0",
25
28
  "archiver": "^7.0.0"
@@ -37,7 +40,7 @@
37
40
  "vitest": "^1.0.4"
38
41
  },
39
42
  "peerDependencies": {
40
- "@sveltejs/adapter-node": "^4.0.1"
43
+ "@genoacms/sveltekit-adapter-cloud-run-functions": "^1.0.0"
41
44
  },
42
45
  "files": [
43
46
  "src",
@@ -1,12 +1,14 @@
1
- import type { Adapter } from '@genoacms/cloudabstraction/authorization'
1
+ import type { Adapter, AuthorizationProvider } from '@genoacms/cloudabstraction/authorization'
2
2
  import config from '../../config.js'
3
3
  import { ProjectsClient } from '@google-cloud/resource-manager'
4
4
 
5
+ const authorizationConfig = config.authorization.providers.find((provider: AuthorizationProvider) => provider.name === 'gcp')
6
+ if (!authorizationConfig) throw new Error('authorization-provider-not-found')
7
+ const projectId = authorizationConfig.projectId
5
8
  const resourceManager = new ProjectsClient({
6
- projectId: config.authorization.projectId,
7
- credentials: config.authorization.credentials
9
+ projectId,
10
+ credentials: authorizationConfig.credentials
8
11
  })
9
- const projectId = config.authorization.projectId
10
12
 
11
13
  const isEmailAdmins: Adapter.isEmailAdmins = async (email: string) => {
12
14
  const resource = `projects/${projectId}`
@@ -1,5 +1,6 @@
1
1
  import type {
2
2
  Adapter,
3
+ DatabaseProvider,
3
4
  CollectionSnapshot,
4
5
  Document,
5
6
  DocumentReference,
@@ -9,13 +10,15 @@ import type {
9
10
  import config from '../../config.js'
10
11
  import { Firestore } from '@google-cloud/firestore'
11
12
 
13
+ const firestoreConfig = config.database.providers.find((provider: DatabaseProvider) => provider.name === 'firestore')
14
+ if (!firestoreConfig) throw new Error('firestore-provider-not-found')
12
15
  const firestore = new Firestore({
13
- credentials: config.database.credentials,
14
- databaseId: config.database.databaseId,
15
- projectId: config.database.projectId
16
+ credentials: firestoreConfig.credentials,
17
+ databaseId: firestoreConfig.databaseId,
18
+ projectId: firestoreConfig.projectId
16
19
  })
17
20
 
18
- const createDocument: Adapter.createDocument = async (reference, data) => {
21
+ const createDocument: Adapter['createDocument'] = async (reference, data) => {
19
22
  const document = await firestore.collection(reference.name).add(data)
20
23
  const documentReference: DocumentReference<typeof reference> = {
21
24
  collection: reference,
@@ -27,7 +30,7 @@ const createDocument: Adapter.createDocument = async (reference, data) => {
27
30
  } satisfies DocumentSnapshot<typeof reference>
28
31
  }
29
32
 
30
- const getCollection: Adapter.getCollection = async (reference) => {
33
+ const getCollection: Adapter['getCollection'] = async (reference) => {
31
34
  const collection = await firestore.collection(reference.name).get()
32
35
  const documents: CollectionSnapshot<typeof reference> = []
33
36
 
@@ -48,7 +51,7 @@ const getCollection: Adapter.getCollection = async (reference) => {
48
51
  return documents
49
52
  }
50
53
 
51
- const getDocument: Adapter.getDocument = async ({ collection, id }) => {
54
+ const getDocument: Adapter['getDocument'] = async ({ collection, id }) => {
52
55
  const document = await firestore.collection(collection.name).doc(id).get()
53
56
  if (!document.exists) return undefined
54
57
  const documentReference: DocumentReference<typeof collection> = {
@@ -62,7 +65,7 @@ const getDocument: Adapter.getDocument = async ({ collection, id }) => {
62
65
  return documentSnapshot
63
66
  }
64
67
 
65
- const updateDocument: Adapter.updateDocument = async (reference, document) => {
68
+ const updateDocument: Adapter['updateDocument'] = async (reference, document) => {
66
69
  await firestore.collection(reference.collection.name).doc(reference.id).update(document)
67
70
  return {
68
71
  reference,
@@ -70,7 +73,7 @@ const updateDocument: Adapter.updateDocument = async (reference, document) => {
70
73
  } satisfies UpdateSnapshot<typeof reference.collection>
71
74
  }
72
75
 
73
- const deleteDocument: Adapter.deleteDocument = async (reference) => {
76
+ const deleteDocument: Adapter['deleteDocument'] = async (reference) => {
74
77
  await firestore.collection(reference.collection.name).doc(reference.id).delete()
75
78
  }
76
79
 
@@ -1,6 +1,6 @@
1
1
  import type { Adapter } from '@genoacms/cloudabstraction/deployment'
2
2
 
3
- const svelteKitAdapter: Adapter.svelteKitAdapter = '@sveltejs/adapter-node'
3
+ const svelteKitAdapter: Adapter.svelteKitAdapter = '@genoacms/sveltekit-adapter-cloud-run-functions'
4
4
 
5
5
  const deployProcedure: Adapter.deployProcedure = async () => {
6
6
  const deploy = (await import('./deploy.js')).default
@@ -6,7 +6,7 @@ import { type File } from '@google-cloud/storage'
6
6
  import { getBucket } from './storage.js'
7
7
  import { join } from 'path'
8
8
 
9
- const getObject: Adapter.getObject = async ({ bucket, name }) => {
9
+ const getObject: Adapter['getObject'] = async ({ bucket, name }) => {
10
10
  const bucketInstance = getBucket(bucket)
11
11
  const file = bucketInstance.file(name)
12
12
 
@@ -15,13 +15,13 @@ const getObject: Adapter.getObject = async ({ bucket, name }) => {
15
15
  }
16
16
  }
17
17
 
18
- const getPublicURL: Adapter.getPublicURL = async ({ bucket, name }) => {
18
+ const getPublicURL: Adapter['getPublicURL'] = async ({ bucket, name }) => {
19
19
  const bucketInstance = getBucket(bucket)
20
20
  const file = bucketInstance.file(name)
21
21
  return file.publicUrl()
22
22
  }
23
23
 
24
- const getSignedURL: Adapter.getSignedURL = async ({ bucket, name }, expires) => {
24
+ const getSignedURL: Adapter['getSignedURL'] = async ({ bucket, name }, expires) => {
25
25
  const bucketInstance = getBucket(bucket)
26
26
  const file = bucketInstance.file(name)
27
27
  const [url] = await file.getSignedUrl({
@@ -31,19 +31,19 @@ const getSignedURL: Adapter.getSignedURL = async ({ bucket, name }, expires) =>
31
31
  return url
32
32
  }
33
33
 
34
- const uploadObject: Adapter.uploadObject = async ({ bucket, name }, stream, options) => {
34
+ const uploadObject: Adapter['uploadObject'] = async ({ bucket, name }, stream, options) => {
35
35
  const bucketInstance = getBucket(bucket)
36
36
  const file = bucketInstance.file(name)
37
37
  await file.save(stream, options)
38
38
  }
39
39
 
40
- const deleteObject: Adapter.deleteObject = async ({ bucket, name }) => {
40
+ const deleteObject: Adapter['deleteObject'] = async ({ bucket, name }) => {
41
41
  const bucketInstance = getBucket(bucket)
42
42
  const file = bucketInstance.file(name)
43
43
  await file.delete()
44
44
  }
45
45
 
46
- const listDirectory: Adapter.listDirectory = async ({ bucket, name }, listingParams = {}) => {
46
+ const listDirectory: Adapter['listDirectory'] = async ({ bucket, name }, listingParams = {}) => {
47
47
  const bucketInstance = getBucket(bucket)
48
48
  const options = {
49
49
  autoPaginate: false,
@@ -70,7 +70,7 @@ const listDirectory: Adapter.listDirectory = async ({ bucket, name }, listingPar
70
70
  }
71
71
  }
72
72
 
73
- const createDirectory: Adapter.createDirectory = async ({ bucket, name }) => {
73
+ const createDirectory: Adapter['createDirectory'] = async ({ bucket, name }) => {
74
74
  const bucketInstance = getBucket(bucket)
75
75
  const file = bucketInstance.file(`${name}/.folderPlaceholder`)
76
76
  await file.save('')
@@ -1,6 +1,9 @@
1
1
  import config from '../../config.js'
2
2
  import { type Bucket, Storage } from '@google-cloud/storage'
3
+ import type { StorageProvider } from '@genoacms/cloudabstraction/storage'
3
4
 
5
+ const storageConfig = config.storage.providers.find((provider: StorageProvider) => provider.name === 'gcs')
6
+ if (!storageConfig) throw new Error('storage-provider-not-found')
4
7
  const storage = new Storage({
5
8
  credentials: config.storage.credentials
6
9
  })