@pi-r/gcp 0.5.0 → 0.6.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/client/index.js +55 -29
- package/package.json +4 -4
- package/upload/index.js +1 -1
package/client/index.js
CHANGED
|
@@ -63,7 +63,7 @@ async function hasBucket(client) {
|
|
|
63
63
|
const [exists] = await client.exists().catch(err => isErrorConflict(err) ? [true] : [false]);
|
|
64
64
|
return exists;
|
|
65
65
|
}
|
|
66
|
-
function updatePredefinedAcl(acl, values, metadata = {}) {
|
|
66
|
+
async function updatePredefinedAcl(acl, values, metadata = {}) {
|
|
67
67
|
const items = [];
|
|
68
68
|
let projectNumber;
|
|
69
69
|
if ('projectNumber' in metadata || 'defaultObjectAcl' in metadata) {
|
|
@@ -102,7 +102,7 @@ function updatePredefinedAcl(acl, values, metadata = {}) {
|
|
|
102
102
|
})
|
|
103
103
|
.catch(err => [err]);
|
|
104
104
|
}
|
|
105
|
-
function setUniformBucketLevel(bucket, enabled) {
|
|
105
|
+
async function setUniformBucketLevel(bucket, enabled) {
|
|
106
106
|
return bucket.setMetadata({ iamConfiguration: { uniformBucketLevelAccess: { enabled } } });
|
|
107
107
|
}
|
|
108
108
|
const getFirebasePackageName = (credential) => credential.apiKey && credential.authDomain ? 'firebase' : 'firebase-admin';
|
|
@@ -135,7 +135,7 @@ function createStorageClient(credential, bucket) {
|
|
|
135
135
|
throw err;
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
|
|
138
|
+
getProjectId(credential);
|
|
139
139
|
return new storage.Storage(credential);
|
|
140
140
|
}
|
|
141
141
|
exports.createStorageClient = createStorageClient;
|
|
@@ -150,7 +150,7 @@ function createDatabaseClient(credential, data) {
|
|
|
150
150
|
packageName = getFirebasePackageName(credential);
|
|
151
151
|
return getApp(credential, true);
|
|
152
152
|
}
|
|
153
|
-
|
|
153
|
+
getProjectId(credential);
|
|
154
154
|
if (data) {
|
|
155
155
|
if (product === 'spanner' || !product && name && data.database) {
|
|
156
156
|
const { Spanner } = require(packageName = '@google-cloud/spanner');
|
|
@@ -263,9 +263,9 @@ async function setBucketPolicy(credential, bucket, options, service = 'gcp') {
|
|
|
263
263
|
return true;
|
|
264
264
|
}
|
|
265
265
|
exports.setBucketPolicy = setBucketPolicy;
|
|
266
|
-
function setBucketWebsite(credential, bucket, options, service = 'gcp') {
|
|
266
|
+
async function setBucketWebsite(credential, bucket, options, service = 'gcp') {
|
|
267
267
|
if (isFirebaseApp(credential, true, true)) {
|
|
268
|
-
return
|
|
268
|
+
return false;
|
|
269
269
|
}
|
|
270
270
|
const website = {};
|
|
271
271
|
const { indexPage, errorPage } = options;
|
|
@@ -286,7 +286,7 @@ function setBucketWebsite(credential, bucket, options, service = 'gcp') {
|
|
|
286
286
|
});
|
|
287
287
|
}
|
|
288
288
|
exports.setBucketWebsite = setBucketWebsite;
|
|
289
|
-
function deleteObjects(credential, Bucket, service) {
|
|
289
|
+
async function deleteObjects(credential, Bucket, service) {
|
|
290
290
|
return deleteObjectsV2.call(this, credential, Bucket, true, service);
|
|
291
291
|
}
|
|
292
292
|
exports.deleteObjects = deleteObjects;
|
|
@@ -314,7 +314,7 @@ async function deleteObjectsV2(credential, bucket, recursive = true, service = '
|
|
|
314
314
|
}
|
|
315
315
|
})('');
|
|
316
316
|
if (files.length) {
|
|
317
|
-
promise = Promise.allSettled(files.map(value => deleteObject(ref(instance, value))));
|
|
317
|
+
promise = Promise.allSettled(files.map(async (value) => deleteObject(ref(instance, value))));
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
else {
|
|
@@ -327,7 +327,7 @@ async function deleteObjectsV2(credential, bucket, recursive = true, service = '
|
|
|
327
327
|
try {
|
|
328
328
|
const result = await client.getFiles();
|
|
329
329
|
for (const { name } of result[0]) {
|
|
330
|
-
if (name.
|
|
330
|
+
if (!name.includes('/')) {
|
|
331
331
|
tasks.push(client.file(name).delete({ ignoreNotFound: true }).catch(err => this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Delete failed" /* ERR_CLOUD.DELETE_FAIL */, name], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: false })));
|
|
332
332
|
}
|
|
333
333
|
}
|
|
@@ -411,11 +411,10 @@ async function executeBatchQuery(credential, batch, sessionKey) {
|
|
|
411
411
|
const renewCache = ignoreCache === 0;
|
|
412
412
|
const cached = caching && ignoreCache !== true || ignoreCache === false || ignoreCache === 1 || renewCache;
|
|
413
413
|
const getCache = (value) => {
|
|
414
|
-
if (ignoreCache
|
|
415
|
-
|
|
414
|
+
if (ignoreCache !== 1) {
|
|
415
|
+
cacheValue.renewCache = renewCache;
|
|
416
|
+
return this.getQueryResult(service, credential, value, cacheValue);
|
|
416
417
|
}
|
|
417
|
-
cacheValue.renewCache = renewCache;
|
|
418
|
-
return this.getQueryResult(service, credential, value, cacheValue);
|
|
419
418
|
};
|
|
420
419
|
let rows, queryString = '';
|
|
421
420
|
if (product === 'bigtable' || !product && name && table && !database) {
|
|
@@ -464,7 +463,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
|
|
|
464
463
|
}
|
|
465
464
|
const { updateType, options = {} } = item;
|
|
466
465
|
if (cached) {
|
|
467
|
-
queryString = name + '_' + database + '_' + (table ? table + Module.asString(columns, true) : '') + Module.asString(query, true) + limit;
|
|
466
|
+
queryString = name + '_' + database + '_' + (table ? table + (columns ? Module.asString(columns, true) : '') : '') + Module.asString(query, true) + limit;
|
|
468
467
|
if (!update && (rows = getCache(queryString))) {
|
|
469
468
|
result[i] = rows;
|
|
470
469
|
continue;
|
|
@@ -493,7 +492,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
|
|
|
493
492
|
}
|
|
494
493
|
else {
|
|
495
494
|
transaction.runUpdate(update)
|
|
496
|
-
.then(() => transaction.commit().then(() => resolve()).catch(error => reject(error)))
|
|
495
|
+
.then(async () => transaction.commit().then(() => resolve()).catch(error => reject(error)))
|
|
497
496
|
.catch(error => reject(error));
|
|
498
497
|
}
|
|
499
498
|
});
|
|
@@ -581,13 +580,19 @@ async function executeBatchQuery(credential, batch, sessionKey) {
|
|
|
581
580
|
closeClient();
|
|
582
581
|
throw (0, util_1.formatError)(item, "Missing database query" /* ERR_DB.QUERY */);
|
|
583
582
|
}
|
|
584
|
-
if (cached
|
|
585
|
-
|
|
586
|
-
|
|
583
|
+
if (cached) {
|
|
584
|
+
queryString = Module.asString(keys || query, true) + Module.asString(item.options, true) + limit;
|
|
585
|
+
if (!update && (rows = getCache(queryString))) {
|
|
586
|
+
result[i] = rows;
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
587
589
|
}
|
|
588
590
|
const db = createClient(item, 2 /* DB.DATASTORE */);
|
|
589
591
|
if (keys) {
|
|
590
|
-
const items = !Array.isArray(keys) ? db.key(keys) : keys.map((key) => db.key(key));
|
|
592
|
+
const items = !Array.isArray(keys) || !Array.isArray(keys[0]) ? db.key(keys) : keys.map((key) => db.key(key));
|
|
593
|
+
if ((0, types_1.isPlainObject)(update)) {
|
|
594
|
+
await db.save({ key: items, data: update });
|
|
595
|
+
}
|
|
591
596
|
rows = await db.get(items, item.options);
|
|
592
597
|
if (rows.length > limit) {
|
|
593
598
|
rows = rows.slice(0, limit);
|
|
@@ -595,6 +600,20 @@ async function executeBatchQuery(credential, batch, sessionKey) {
|
|
|
595
600
|
}
|
|
596
601
|
else {
|
|
597
602
|
const task = db.createQuery(item.kind);
|
|
603
|
+
if ((0, types_1.isPlainObject)(update)) {
|
|
604
|
+
await new Promise((resolve, reject) => {
|
|
605
|
+
db.runQuery(task.select('__key__'), item.options).then(entities => {
|
|
606
|
+
if ((0, types_1.isArray)(entities)) {
|
|
607
|
+
const items = entities.map((entity) => db.key(entity[db.KEY]));
|
|
608
|
+
db.save({ key: items, data: update }).then(() => resolve()).catch(err => reject(err));
|
|
609
|
+
}
|
|
610
|
+
else {
|
|
611
|
+
resolve();
|
|
612
|
+
}
|
|
613
|
+
})
|
|
614
|
+
.catch(err => reject(err));
|
|
615
|
+
});
|
|
616
|
+
}
|
|
598
617
|
for (const args of query) {
|
|
599
618
|
if ((0, types_1.isArray)(args)) {
|
|
600
619
|
const method = args[0];
|
|
@@ -775,7 +794,7 @@ async function setPredefinedAcl(target, value, bucket, pathname = '', metadata =
|
|
|
775
794
|
}
|
|
776
795
|
break;
|
|
777
796
|
default:
|
|
778
|
-
return
|
|
797
|
+
return;
|
|
779
798
|
}
|
|
780
799
|
}
|
|
781
800
|
}
|
|
@@ -819,18 +838,25 @@ function createBucketRequest(credential) {
|
|
|
819
838
|
}
|
|
820
839
|
exports.createBucketRequest = createBucketRequest;
|
|
821
840
|
function getProjectId(credential) {
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
if (
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
841
|
+
let pathname = credential.keyFilename || credential.keyFile;
|
|
842
|
+
if (pathname && Module.isPath(pathname = path.resolve(pathname)) || (pathname = process.env.GOOGLE_APPLICATION_CREDENTIALS) && Module.isPath(pathname = path.resolve(pathname))) {
|
|
843
|
+
if (credential.keyFilename) {
|
|
844
|
+
credential.keyFilename = pathname;
|
|
845
|
+
}
|
|
846
|
+
else {
|
|
847
|
+
credential.keyFile = pathname;
|
|
848
|
+
}
|
|
849
|
+
if (!credential.projectId) {
|
|
850
|
+
try {
|
|
851
|
+
const projectId = require(pathname).project_id;
|
|
852
|
+
if ((0, types_1.isString)(projectId)) {
|
|
853
|
+
credential.projectId = projectId;
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
catch {
|
|
828
857
|
}
|
|
829
858
|
}
|
|
830
859
|
}
|
|
831
|
-
catch {
|
|
832
|
-
}
|
|
833
|
-
return '';
|
|
834
860
|
}
|
|
835
861
|
exports.getProjectId = getProjectId;
|
|
836
862
|
exports.CLOUD_UPLOAD_FROMDISK = true;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-r/gcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Google (GCP) cloud functions for E-mc.",
|
|
5
5
|
"main": "client/index.js",
|
|
6
6
|
"publishConfig": {
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"homepage": "https://github.com/anpham6/pi-r#readme",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@e-mc/cloud": "^0.
|
|
24
|
-
"@e-mc/module": "^0.
|
|
25
|
-
"@e-mc/types": "^0.
|
|
23
|
+
"@e-mc/cloud": "^0.8.0",
|
|
24
|
+
"@e-mc/module": "^0.8.0",
|
|
25
|
+
"@e-mc/types": "^0.8.0",
|
|
26
26
|
"@google-cloud/firestore": "^7.1.0",
|
|
27
27
|
"@google-cloud/storage": "^7.7.0"
|
|
28
28
|
}
|
package/upload/index.js
CHANGED
|
@@ -27,7 +27,7 @@ function upload(credential, service = 'gcp') {
|
|
|
27
27
|
}
|
|
28
28
|
callback(err, url);
|
|
29
29
|
};
|
|
30
|
-
const addLog = (err) => err instanceof Error && this.addLog(this.statusType.WARN, err
|
|
30
|
+
const addLog = (err) => err instanceof Error && this.addLog(this.statusType.WARN, err, service, bucket);
|
|
31
31
|
if (firebase) {
|
|
32
32
|
const { ref, listAll } = require('@firebase/storage');
|
|
33
33
|
bucketClient = ref(storage, bucket);
|