@pi-r/gcp 0.6.2 → 0.6.5

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 CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2023 An Pham
1
+ Copyright 2024 An Pham
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
4
 
package/README.md CHANGED
@@ -1,7 +1,10 @@
1
- ### @pi-r/gcp
1
+ # @pi-r/gcp
2
2
 
3
- https://e-mc.readthedocs.io/en/latest/cloud/gcp.html
3
+ ## Documentation
4
4
 
5
- ### LICENSE
5
+ - [E-mc](https://e-mc.readthedocs.io/en/latest/cloud/gcp.html)
6
+ - [squared](https://squared.readthedocs.io)
7
+
8
+ ## LICENSE
6
9
 
7
10
  MIT
package/client/index.js CHANGED
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getProjectId = exports.createBucketRequest = exports.setPredefinedAcl = exports.setPublicRead = exports.executeBatchQuery = exports.executeQuery = exports.deleteObjectsV2 = exports.deleteObjects = exports.setBucketWebsite = exports.setBucketPolicy = exports.createBucketV2 = exports.createBucket = exports.createDatabaseClient = exports.createStorageClient = exports.validateDatabase = exports.validateStorage = exports.isFirebaseApp = void 0;
4
4
  const path = require("path");
5
5
  const storage = require("@google-cloud/storage");
6
- const firestore = require("@google-cloud/firestore");
6
+ const firestore_1 = require("@google-cloud/firestore");
7
7
  const util_1 = require("@e-mc/cloud/util");
8
8
  const types_1 = require("@e-mc/types");
9
9
  const Module = require("@e-mc/module");
@@ -135,7 +135,7 @@ function createStorageClient(credential, bucket) {
135
135
  throw err;
136
136
  }
137
137
  }
138
- getProjectId(credential);
138
+ getProjectId(credential, false);
139
139
  return new storage.Storage(credential);
140
140
  }
141
141
  exports.createStorageClient = createStorageClient;
@@ -144,13 +144,13 @@ function createDatabaseClient(credential, data) {
144
144
  try {
145
145
  let product, name, database, table, query;
146
146
  if (data) {
147
- ({ product, name, table, query } = data);
147
+ ({ product, name, table, query, database } = data);
148
148
  }
149
149
  if (product === 'firebase' || isFirebaseApp(credential)) {
150
150
  packageName = getFirebasePackageName(credential);
151
151
  return getApp(credential, true);
152
152
  }
153
- getProjectId(credential);
153
+ getProjectId(credential, true);
154
154
  if (data) {
155
155
  if (product === 'spanner' || !product && name && database && (query || table)) {
156
156
  const { Spanner } = require(packageName = '@google-cloud/spanner');
@@ -174,7 +174,7 @@ function createDatabaseClient(credential, data) {
174
174
  this.checkPackage(err, packageName, { passThrough: true });
175
175
  throw err;
176
176
  }
177
- return new firestore.Firestore(credential);
177
+ return new firestore_1.Firestore(credential);
178
178
  }
179
179
  exports.createDatabaseClient = createDatabaseClient;
180
180
  async function createBucket(credential, bucket, publicRead, service = 'gcp') {
@@ -194,7 +194,7 @@ async function createBucketV2(credential, bucket, acl, options, service = 'gcp')
194
194
  }
195
195
  return instance.createBucket(bucket, options)
196
196
  .then(async ([target]) => {
197
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["Bucket created" /* VAL_CLOUD.CREATE_BUCKET */, bucket], '', { ...Cloud.LOG_CLOUD_COMMAND });
197
+ this.formatMessage(64, service, ["Bucket created", bucket], '', { ...Cloud.LOG_CLOUD_COMMAND });
198
198
  if (acl) {
199
199
  await setBucketPolicy.call(this, credential, bucket, { acl, bucket: target }, service);
200
200
  }
@@ -204,7 +204,7 @@ async function createBucketV2(credential, bucket, acl, options, service = 'gcp')
204
204
  if (isErrorConflict(err)) {
205
205
  return acl ? await setBucketPolicy.call(this, credential, bucket, { acl }, service) : true;
206
206
  }
207
- this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Unable to create bucket" /* ERR_CLOUD.CREATE_BUCKET */, bucket], err, { ...Cloud.LOG_CLOUD_FAIL });
207
+ this.formatFail(64, service, ["Unable to create bucket", bucket], err, { ...Cloud.LOG_CLOUD_FAIL });
208
208
  return false;
209
209
  });
210
210
  }
@@ -215,7 +215,7 @@ async function setBucketPolicy(credential, bucket, options, service = 'gcp') {
215
215
  }
216
216
  const client = createStorageClient.call(this, credential, bucket).bucket(bucket);
217
217
  if (!await hasBucket(client)) {
218
- this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Bucket does not exist" /* ERR_CLOUD.EXISTS_BUCKET */, bucket], (0, types_1.errorMessage)(service, "Bucket does not exist" /* ERR_CLOUD.EXISTS_BUCKET */), { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
218
+ this.formatFail(64, service, ["Bucket does not exist", bucket], (0, types_1.errorMessage)(service, "Bucket does not exist"), { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
219
219
  return false;
220
220
  }
221
221
  const errors = [];
@@ -256,10 +256,10 @@ async function setBucketPolicy(credential, bucket, options, service = 'gcp') {
256
256
  errors.push(...await updatePredefinedAcl(client.acl, options.acl, options.metadata));
257
257
  }
258
258
  if (errors.length) {
259
- this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Unable to update bucket policy" /* ERR_CLOUD.POLICY_BUCKET */, bucket], errors[0], { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
259
+ this.formatFail(64, service, ["Unable to update bucket policy", bucket], errors[0], { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
260
260
  return false;
261
261
  }
262
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["Bucket ACL configured" /* VAL_CLOUD.ACL_BUCKET */, bucket], (0, types_1.isString)(acl) ? acl : '', { ...Cloud.LOG_CLOUD_COMMAND });
262
+ this.formatMessage(64, service, ["Bucket ACL configured", bucket], (0, types_1.isString)(acl) ? acl : '', { ...Cloud.LOG_CLOUD_COMMAND });
263
263
  return true;
264
264
  }
265
265
  exports.setBucketPolicy = setBucketPolicy;
@@ -277,11 +277,11 @@ async function setBucketWebsite(credential, bucket, options, service = 'gcp') {
277
277
  }
278
278
  return createStorageClient.call(this, credential, bucket).bucket(bucket).setMetadata({ website })
279
279
  .then(() => {
280
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["Bucket configured" /* VAL_CLOUD.CONFIGURE_BUCKET */, bucket], website, { ...Cloud.LOG_CLOUD_COMMAND });
280
+ this.formatMessage(64, service, ["Bucket configured", bucket], website, { ...Cloud.LOG_CLOUD_COMMAND });
281
281
  return true;
282
282
  })
283
283
  .catch(err => {
284
- this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Unable to configure bucket" /* ERR_CLOUD.CONFIGURE_BUCKET */, bucket], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
284
+ this.formatFail(64, service, ["Unable to configure bucket", bucket], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
285
285
  return false;
286
286
  });
287
287
  }
@@ -321,14 +321,14 @@ async function deleteObjectsV2(credential, bucket, recursive = true, service = '
321
321
  const client = instance.bucket(bucket);
322
322
  if (await hasBucket(client)) {
323
323
  if (recursive) {
324
- return client.deleteFiles({ force: true }).then(() => this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, "Bucket emptied" /* VAL_CLOUD.EMPTY_BUCKET */ + ' (recursive)', bucket, { ...Cloud.LOG_CLOUD_COMMAND }));
324
+ return client.deleteFiles({ force: true }).then(() => this.formatMessage(64, service, "Bucket emptied" + ' (recursive)', bucket, { ...Cloud.LOG_CLOUD_COMMAND }));
325
325
  }
326
326
  const tasks = [];
327
327
  try {
328
328
  const result = await client.getFiles();
329
329
  for (const { name } of result[0]) {
330
330
  if (!name.includes('/')) {
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 })));
331
+ tasks.push(client.file(name).delete({ ignoreNotFound: true }).catch(err => this.formatFail(64, service, ["Delete failed", name], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: false })));
332
332
  }
333
333
  }
334
334
  }
@@ -342,7 +342,7 @@ async function deleteObjectsV2(credential, bucket, recursive = true, service = '
342
342
  }
343
343
  const checkErrors = () => {
344
344
  if (errors.length) {
345
- this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Unable to empty bucket" /* ERR_CLOUD.DELETE_BUCKET */ + (recursive ? ' (recursive)' : ''), errors.length + ' errors'], errors[0], { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
345
+ this.formatFail(64, service, ["Unable to empty bucket" + (recursive ? ' (recursive)' : ''), errors.length + ' errors'], errors[0], { ...Cloud.LOG_CLOUD_FAIL, fatal: false });
346
346
  return true;
347
347
  }
348
348
  return false;
@@ -352,7 +352,7 @@ async function deleteObjectsV2(credential, bucket, recursive = true, service = '
352
352
  errors.push(...result.filter(item => item.status === 'rejected').map((item) => item.reason));
353
353
  if (!checkErrors()) {
354
354
  const files = result.length + ' files';
355
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["Bucket emptied" /* VAL_CLOUD.EMPTY_BUCKET */ + ` (${recursive ? 'recursive' : files})`, bucket], recursive ? files : '', { ...Cloud.LOG_CLOUD_COMMAND });
355
+ this.formatMessage(64, service, ["Bucket emptied" + ` (${recursive ? 'recursive' : files})`, bucket], recursive ? files : '', { ...Cloud.LOG_CLOUD_COMMAND });
356
356
  }
357
357
  })
358
358
  .catch(err => {
@@ -383,7 +383,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
383
383
  return (clients[type] = createDatabaseClient.call(this, item, data));
384
384
  };
385
385
  const closeClient = () => {
386
- const fs = clients[3 /* DB.FIRESTORE */];
386
+ const fs = clients[3];
387
387
  fs?.terminate();
388
388
  };
389
389
  const getFamily = (data, row, family) => {
@@ -420,7 +420,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
420
420
  if (product === 'firebase' || isFirebaseApp(credential)) {
421
421
  if (!(0, types_1.isString)(query)) {
422
422
  closeClient();
423
- throw (0, util_1.formatError)(item, "Missing database query" /* ERR_DB.QUERY */);
423
+ throw (0, util_1.formatError)(item, "Missing database query");
424
424
  }
425
425
  const orderBy = item.orderBy;
426
426
  if (useCache) {
@@ -462,7 +462,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
462
462
  }
463
463
  }
464
464
  }
465
- const db = createClient(item, 0 /* DB.FIREBASE */);
465
+ const db = createClient(item, 0);
466
466
  if ((0, types_1.isPlainObject)(update)) {
467
467
  await updateDB(ref(db, query), update);
468
468
  }
@@ -477,11 +477,11 @@ async function executeBatchQuery(credential, batch, sessionKey) {
477
477
  const columns = (0, types_1.isPlainObject)(query) && query.columns || item.columns;
478
478
  if (!(query || table && columns)) {
479
479
  closeClient();
480
- throw (0, util_1.formatError)(item, "Missing database query" /* ERR_DB.QUERY */);
480
+ throw (0, util_1.formatError)(item, "Missing database query");
481
481
  }
482
482
  if (!name || !database) {
483
483
  closeClient();
484
- throw (0, util_1.formatError)(item, !name ? "Missing instance name" /* ERR_DB.INSTANCE */ : "Missing database name" /* ERR_DB.NAME */);
484
+ throw (0, util_1.formatError)(item, !name ? "Missing instance name" : "Missing database name");
485
485
  }
486
486
  const { updateType, options = {} } = item;
487
487
  if (useCache) {
@@ -491,7 +491,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
491
491
  continue;
492
492
  }
493
493
  }
494
- const db = createClient(item, 5 /* DB.SPANNER */).instance(name).database(database, options.databasePool, options.databaseQuery);
494
+ const db = createClient(item, 5).instance(name).database(database, options.databasePool, options.databaseQuery);
495
495
  if (table) {
496
496
  if ((0, types_1.isPlainObject)(update)) {
497
497
  await db.table(table)[updateType === 1 ? 'insert' : updateType === 2 ? 'replace' : 'update'](update, options.tableUpdate);
@@ -512,7 +512,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
512
512
  await new Promise((resolve, reject) => {
513
513
  db.runTransaction((err, transaction) => {
514
514
  if (err || !transaction) {
515
- reject(err || new Error("Unknown" /* ERR_MESSAGE.UNKNOWN */));
515
+ reject(err || new Error("Unknown"));
516
516
  }
517
517
  else {
518
518
  transaction.runUpdate(update)
@@ -533,7 +533,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
533
533
  else if (product === 'bigtable' || !product && name && table && !database) {
534
534
  if (!name || !table) {
535
535
  closeClient();
536
- throw (0, util_1.formatError)(item, !name ? "Missing database name" /* ERR_DB.NAME */ : "Missing database table" /* ERR_DB.TABLE */);
536
+ throw (0, util_1.formatError)(item, !name ? "Missing database name" : "Missing database table");
537
537
  }
538
538
  const { columns, options = {} } = item;
539
539
  if ((0, types_1.isObject)(query)) {
@@ -549,7 +549,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
549
549
  continue;
550
550
  }
551
551
  }
552
- const db = createClient(item, 4 /* DB.BIGTABLE */).instance(name).table(table);
552
+ const db = createClient(item, 4).instance(name).table(table);
553
553
  if ((0, types_1.isString)(id)) {
554
554
  const row = db.row(id);
555
555
  if (update) {
@@ -592,7 +592,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
592
592
  continue;
593
593
  }
594
594
  }
595
- const instance = createClient(item, 1 /* DB.BIGQUERY */);
595
+ const instance = createClient(item, 1);
596
596
  let job;
597
597
  if (database) {
598
598
  const dataset = instance.dataset(database);
@@ -617,7 +617,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
617
617
  const { keys, kind } = item;
618
618
  if (!keys && !kind && !Array.isArray(query)) {
619
619
  closeClient();
620
- throw (0, util_1.formatError)(item, "Missing database query" /* ERR_DB.QUERY */);
620
+ throw (0, util_1.formatError)(item, "Missing database query");
621
621
  }
622
622
  if (useCache) {
623
623
  queryString = (keys ? Cloud.asString(keys, true) : (kind ? (name ? name + '_' : '') + Cloud.asString(kind, true) : '') + (limit > 0 ? '_' + limit : 0) + Cloud.asString(query, true)) + Cloud.asString(item.options, true);
@@ -626,7 +626,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
626
626
  continue;
627
627
  }
628
628
  }
629
- const db = createClient(item, 2 /* DB.DATASTORE */);
629
+ const db = createClient(item, 2);
630
630
  if (keys) {
631
631
  const items = !Array.isArray(keys) || !Array.isArray(keys[0]) ? db.key(keys) : keys.map((key) => db.key(key));
632
632
  if ((0, types_1.isPlainObject)(update)) {
@@ -652,7 +652,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
652
652
  case 'order':
653
653
  case 'select':
654
654
  case 'start':
655
- task[method].apply(task, args.slice(1)); // eslint-disable-line prefer-spread
655
+ task[method].apply(task, args.slice(1));
656
656
  break;
657
657
  case 'hasAncestor':
658
658
  task.hasAncestor(db.key(args[1]));
@@ -684,7 +684,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
684
684
  else if (product === 'firestore' || !product && table) {
685
685
  if (!table) {
686
686
  closeClient();
687
- throw (0, util_1.formatError)(item, "Missing database table" /* ERR_DB.TABLE */);
687
+ throw (0, util_1.formatError)(item, "Missing database table");
688
688
  }
689
689
  if (id) {
690
690
  if (useCache) {
@@ -694,13 +694,13 @@ async function executeBatchQuery(credential, batch, sessionKey) {
694
694
  continue;
695
695
  }
696
696
  }
697
- const db = createClient(item, 3 /* DB.FIRESTORE */);
697
+ const db = createClient(item, 3);
698
698
  if (Array.isArray(id)) {
699
699
  const items = id.map(ref => db.doc(table + '/' + ref));
700
700
  if ((0, types_1.isPlainObject)(item.options)) {
701
701
  items.push(item.options);
702
702
  }
703
- rows = await db.getAll(...items);
703
+ rows = (await db.getAll(...items)).filter(value => value.exists).map(value => value.data());
704
704
  }
705
705
  else {
706
706
  const doc = db.collection(table).doc(id);
@@ -719,11 +719,21 @@ async function executeBatchQuery(credential, batch, sessionKey) {
719
719
  result[i] = rows;
720
720
  continue;
721
721
  }
722
- let db = createClient(item, 3 /* DB.FIRESTORE */).collection(table);
722
+ let db = createClient(item, 3).collection(table);
723
723
  for (const args of query) {
724
724
  if ((0, types_1.isArray)(args)) {
725
725
  const method = args[0];
726
+ const params = args.slice(1);
726
727
  switch (method) {
728
+ case 'whereAnd':
729
+ case 'whereOr':
730
+ if (params.every(p => Array.isArray(p))) {
731
+ db = db.where(firestore_1.Filter[method === 'whereAnd' ? 'and' : 'or'](...params.map((p) => firestore_1.Filter.where(p[0], p[1], p[2]))));
732
+ }
733
+ else {
734
+ throw (0, types_1.errorMessage)(method, 'Conditionals are not in array format', Cloud.asString(params));
735
+ }
736
+ break;
727
737
  case 'endAt':
728
738
  case 'endBefore':
729
739
  case 'limit':
@@ -735,7 +745,7 @@ async function executeBatchQuery(credential, batch, sessionKey) {
735
745
  case 'startAt':
736
746
  case 'where':
737
747
  case 'withConverter':
738
- db = db[method].apply(db, args.slice(1)); // eslint-disable-line prefer-spread
748
+ db = db[method].apply(db, params);
739
749
  break;
740
750
  }
741
751
  }
@@ -754,12 +764,12 @@ async function executeBatchQuery(credential, batch, sessionKey) {
754
764
  }
755
765
  else {
756
766
  closeClient();
757
- throw (0, util_1.formatError)(item, "Missing database query" /* ERR_DB.QUERY */);
767
+ throw (0, util_1.formatError)(item, "Missing database query");
758
768
  }
759
769
  }
760
770
  else {
761
771
  closeClient();
762
- throw (0, util_1.formatError)(item, "Missing database product" /* ERR_DB.PRODUCT */);
772
+ throw (0, util_1.formatError)(item, "Missing database product");
763
773
  }
764
774
  result[i] = this.setQueryResult(service, credential, queryString, rows, cacheValue);
765
775
  }
@@ -771,12 +781,12 @@ function setPublicRead(acl, pathname, requested, service = 'gcp') {
771
781
  acl.add({ entity: 'allUsers', role: 'READER' })
772
782
  .then(() => {
773
783
  if (requested) {
774
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, "Grant public-read" /* VAL_CLOUD.PUBLIC_READ */, pathname, { ...Cloud.LOG_CLOUD_COMMAND });
784
+ this.formatMessage(64, service, "Grant public-read", pathname, { ...Cloud.LOG_CLOUD_COMMAND });
775
785
  }
776
786
  })
777
787
  .catch(err => {
778
788
  if (requested) {
779
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["Unable to grant public-read" /* ERR_CLOUD.PUBLIC_READ */, pathname], err, { ...Cloud.LOG_CLOUD_WARN });
789
+ this.formatMessage(64, service, ["Unable to grant public-read", pathname], err, { ...Cloud.LOG_CLOUD_WARN });
780
790
  }
781
791
  });
782
792
  }
@@ -851,10 +861,10 @@ async function setPredefinedAcl(target, value, bucket, pathname = '', metadata =
851
861
  }
852
862
  return updatePredefinedAcl(target, items, metadata).then(errors => {
853
863
  if (errors.length) {
854
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, [`Unable to ${revoke ? 'revoke' : 'grant'} ` + value, bucket && pathname ? bucket.name + '/' + pathname : bucket ? bucket.name : pathname], errors[0], { ...Cloud.LOG_CLOUD_WARN });
864
+ this.formatMessage(64, service, [`Unable to ${revoke ? 'revoke' : 'grant'} ` + value, bucket && pathname ? bucket.name + '/' + pathname : bucket ? bucket.name : pathname], errors[0], { ...Cloud.LOG_CLOUD_WARN });
855
865
  }
856
866
  else if (requested && (bucket || pathname)) {
857
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, [(revoke ? 'Revoke' : 'Grant') + ' ' + value, bucket?.name], pathname, { ...Cloud.LOG_CLOUD_COMMAND });
867
+ this.formatMessage(64, service, [(revoke ? 'Revoke' : 'Grant') + ' ' + value, bucket?.name], pathname, { ...Cloud.LOG_CLOUD_COMMAND });
858
868
  }
859
869
  });
860
870
  }
@@ -888,19 +898,24 @@ function createBucketRequest(credential) {
888
898
  return options;
889
899
  }
890
900
  exports.createBucketRequest = createBucketRequest;
891
- function getProjectId(credential) {
901
+ function getProjectId(credential, cache) {
902
+ let projectId = credential.projectId;
903
+ if (!cache && projectId) {
904
+ return projectId;
905
+ }
892
906
  let pathname = credential.keyFilename || credential.keyFile;
893
- if (pathname && Module.isPath(pathname = path.resolve(pathname)) || (pathname = process.env.GOOGLE_APPLICATION_CREDENTIALS) && Module.isPath(pathname = path.resolve(pathname))) {
907
+ if (pathname && Cloud.isPath(pathname = path.resolve(pathname)) || (pathname = process.env.GOOGLE_APPLICATION_CREDENTIALS) && Cloud.isPath(pathname = path.resolve(pathname))) {
894
908
  if (credential.keyFilename) {
895
909
  credential.keyFilename = pathname;
896
910
  }
897
911
  else {
898
912
  credential.keyFile = pathname;
899
913
  }
900
- if (!credential.projectId) {
914
+ if (!projectId) {
901
915
  try {
902
- const projectId = require(pathname).project_id;
903
- if ((0, types_1.isString)(projectId)) {
916
+ const id = require(pathname).project_id;
917
+ if ((0, types_1.isString)(id)) {
918
+ projectId = id;
904
919
  credential.projectId = projectId;
905
920
  }
906
921
  }
@@ -908,6 +923,6 @@ function getProjectId(credential) {
908
923
  }
909
924
  }
910
925
  }
911
- return credential.projectId;
926
+ return projectId;
912
927
  }
913
928
  exports.getProjectId = getProjectId;
package/download/index.js CHANGED
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
2
  const path = require("path");
4
3
  const fs = require("fs");
5
4
  const https = require("https");
6
5
  const types_1 = require("@e-mc/types");
7
6
  const Module = require("@e-mc/module");
8
7
  const Cloud = require("@e-mc/cloud");
9
- const client_1 = require("../client");
8
+ const client_1 = require("@pi-r/gcp");
10
9
  function download(credential, service = 'gcp') {
11
10
  const storage = client_1.createStorageClient.call(this, credential);
12
11
  return (data, callback) => {
@@ -25,12 +24,12 @@ function download(credential, service = 'gcp') {
25
24
  return;
26
25
  }
27
26
  if (!(tempDir = this.getTempDir({ uuidDir: true }))) {
28
- downloadResponse(new Error("Unable to create temp directory" /* ERR_CLOUD.TEMP_DIR */));
27
+ downloadResponse(new Error("Unable to create temp directory"));
29
28
  return;
30
29
  }
31
30
  const location = Module.joinPath(Bucket, Key);
32
31
  const destination = path.join(tempDir, path.basename(Key));
33
- const deleteMessage = () => this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, "Delete success" /* VAL_CLOUD.DELETE_FILE */, location, { ...Cloud.LOG_CLOUD_DELETE });
32
+ const deleteMessage = () => this.formatMessage(64, service, "Delete success", location, { ...Cloud.LOG_CLOUD_DELETE });
34
33
  if (firebase) {
35
34
  const { ref, getDownloadURL, deleteObject } = require('@firebase/storage');
36
35
  const objectRef = ref(storage, Key);
@@ -45,7 +44,7 @@ function download(credential, service = 'gcp') {
45
44
  if (target.deleteObject) {
46
45
  deleteObject(objectRef)
47
46
  .then(() => deleteMessage())
48
- .catch(err => this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Delete failed" /* ERR_CLOUD.DELETE_FAIL */, location], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: !!target.active }));
47
+ .catch(err => this.formatFail(64, service, ["Delete failed", location], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: !!target.active }));
49
48
  }
50
49
  })
51
50
  .on('error', err => downloadResponse(err)));
@@ -69,7 +68,7 @@ function download(credential, service = 'gcp') {
69
68
  deleteMessage();
70
69
  }
71
70
  else {
72
- this.formatFail(64 /* LOG_TYPE.CLOUD */, service, ["Delete failed" /* ERR_CLOUD.DELETE_FAIL */, location], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: !!target.active });
71
+ this.formatFail(64, service, ["Delete failed", location], err, { ...Cloud.LOG_CLOUD_FAIL, fatal: !!target.active });
73
72
  }
74
73
  });
75
74
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-r/gcp",
3
- "version": "0.6.2",
3
+ "version": "0.6.5",
4
4
  "description": "Google (GCP) cloud functions for E-mc.",
5
5
  "main": "client/index.js",
6
6
  "publishConfig": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/anpham6/pi-r.git",
11
+ "url": "git+https://github.com/anpham6/pi-r.git",
12
12
  "directory": "src/cloud/gcp"
13
13
  },
14
14
  "keywords": [
@@ -20,10 +20,10 @@
20
20
  "license": "MIT",
21
21
  "homepage": "https://github.com/anpham6/pi-r#readme",
22
22
  "dependencies": {
23
- "@e-mc/cloud": "^0.8.2",
24
- "@e-mc/module": "^0.8.2",
25
- "@e-mc/types": "^0.8.2",
26
- "@google-cloud/firestore": "^7.2.0",
23
+ "@e-mc/cloud": "^0.8.6",
24
+ "@e-mc/module": "^0.8.6",
25
+ "@e-mc/types": "^0.8.6",
26
+ "@google-cloud/firestore": "^7.3.1",
27
27
  "@google-cloud/storage": "^7.7.0"
28
28
  }
29
29
  }
package/upload/index.js CHANGED
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
2
  const path = require("path");
4
3
  const util_1 = require("@e-mc/cloud/util");
5
4
  const types_1 = require("@e-mc/types");
6
5
  const Module = require("@e-mc/module");
7
6
  const Cloud = require("@e-mc/cloud");
8
- const client_1 = require("../client");
7
+ const client_1 = require("@pi-r/gcp");
9
8
  const BUCKET_SESSION = new Set();
10
9
  const BUCKET_RESPONSE = {};
11
10
  const getBucketKey = (credential, bucket, acl = '') => Module.asString(credential, true) + bucket + '_' + acl;
@@ -56,7 +55,7 @@ function upload(credential, service = 'gcp') {
56
55
  if (typeof retentionPolicy === 'number') {
57
56
  bucketClient.setRetentionPeriod(retentionPolicy)
58
57
  .then(([response]) => {
59
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["Bucket configured" /* VAL_CLOUD.CONFIGURE_BUCKET */ + ' (retention policy)', bucket], response.retentionPolicy?.effectiveTime, { ...Cloud.LOG_CLOUD_COMMAND });
58
+ this.formatMessage(64, service, ["Bucket configured" + ' (retention policy)', bucket], response.retentionPolicy?.effectiveTime, { ...Cloud.LOG_CLOUD_COMMAND });
60
59
  })
61
60
  .catch(err => addLog(err));
62
61
  }
@@ -81,10 +80,10 @@ function upload(credential, service = 'gcp') {
81
80
  }
82
81
  } while (exists && ++i);
83
82
  if (i > 0) {
84
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, ["File renamed" /* VAL_CLOUD.RENAME_FILE */, current], filename, { ...Cloud.LOG_CLOUD_WARN });
83
+ this.formatMessage(64, service, ["File renamed", current], filename, { ...Cloud.LOG_CLOUD_WARN });
85
84
  }
86
85
  }
87
- const getURL = (value) => endpoint ? Module.joinPath(endpoint, value) : Module.joinPath("https://storage.googleapis.com" /* STRINGS.BASE_URL */, bucket, value);
86
+ const getURL = (value) => endpoint ? Module.joinPath(endpoint, value) : Module.joinPath("https://storage.googleapis.com", bucket, value);
88
87
  const Key = [filename];
89
88
  const Body = [data.buffer];
90
89
  const ContentType = [contentType];
@@ -118,7 +117,7 @@ function upload(credential, service = 'gcp') {
118
117
  uploadBytes(ref(bucketClient, destination), Body[i], params)
119
118
  .then(() => {
120
119
  const url = getURL(destination);
121
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, "Upload success" /* VAL_CLOUD.UPLOAD_FILE */, url, { ...Cloud.LOG_CLOUD_UPLOAD });
120
+ this.formatMessage(64, service, "Upload success", url, { ...Cloud.LOG_CLOUD_UPLOAD });
122
121
  if (first) {
123
122
  uploadResponse(null, url);
124
123
  }
@@ -172,7 +171,7 @@ function upload(credential, service = 'gcp') {
172
171
  const file = bucketClient.file(destination);
173
172
  file.save(Body[i], params).then(async () => {
174
173
  const url = getURL(file.name);
175
- this.formatMessage(64 /* LOG_TYPE.CLOUD */, service, "Upload success" /* VAL_CLOUD.UPLOAD_FILE */, url, { ...Cloud.LOG_CLOUD_UPLOAD });
174
+ this.formatMessage(64, service, "Upload success", url, { ...Cloud.LOG_CLOUD_UPLOAD });
176
175
  if (first) {
177
176
  uploadResponse(null, url);
178
177
  }