@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 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
- credential.projectId || (credential.projectId = getProjectId(credential));
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
- credential.projectId || (credential.projectId = getProjectId(credential));
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 Promise.resolve(false);
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.indexOf('/') === -1) {
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 === 1) {
415
- return;
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 && (rows = getCache(queryString = Module.asString(keys || query, true) + Module.asString(item.options, true) + limit))) {
585
- result[i] = rows;
586
- continue;
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 Promise.resolve();
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
- try {
823
- let pathname = credential.keyFilename || credential.keyFile;
824
- if (pathname && Module.isPath(pathname = path.resolve(pathname)) || (pathname = process.env.GOOGLE_APPLICATION_CREDENTIALS) && Module.isPath(pathname = path.resolve(pathname))) {
825
- const projectId = require(pathname).project_id;
826
- if ((0, types_1.isString)(projectId)) {
827
- return projectId;
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.5.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.7.0",
24
- "@e-mc/module": "^0.7.0",
25
- "@e-mc/types": "^0.7.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.message, service + ': ' + bucket);
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);