gcf-common-lib 0.26.59 → 0.27.60

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gcf-common-lib",
3
3
  "description": "",
4
- "version": "0.26.59",
4
+ "version": "0.27.60",
5
5
  "publishConfig": {
6
6
  "access": "public",
7
7
  "branches": [
@@ -24,13 +24,13 @@
24
24
  "@types/bluebird": "^3.5.42",
25
25
  "@types/lodash": "^4.14.201",
26
26
  "@types/node": "^16.18.61",
27
- "@google-cloud/pubsub": "^4.0.7",
27
+ "@google-cloud/pubsub": "^4.1.1",
28
28
  "@google-cloud/secret-manager": "^5.0.1",
29
- "@google-cloud/storage": "^7.6.0",
29
+ "@google-cloud/storage": "^7.7.0",
30
30
  "amqplib": "^0.10.3",
31
31
  "bluebird": "^3.7.2",
32
32
  "lodash": "^4.17.21",
33
- "moment": "^2.29.4",
33
+ "moment": "^2.30.1",
34
34
  "mongodb": "^4.17.1",
35
35
  "rxjs": "^7.8.1"
36
36
  },
package/src/index.js CHANGED
@@ -32,14 +32,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
32
32
  exports.GcfCommon = exports.secretClient = exports.storage = exports.pubSub = exports.MongoDb = exports.RxJs = exports.SecretManager = exports.PubSub = exports.Storage = void 0;
33
33
  const pubsub_1 = require("@google-cloud/pubsub");
34
34
  const secret_manager_1 = require("@google-cloud/secret-manager");
35
- const storage_1 = require("@google-cloud/storage");
36
- const get_1 = __importDefault(require("lodash/get"));
37
35
  const isEmpty_1 = __importDefault(require("lodash/isEmpty"));
38
- const isNil_1 = __importDefault(require("lodash/isNil"));
39
36
  const mapValues_1 = __importDefault(require("lodash/mapValues"));
40
37
  const noop_1 = __importDefault(require("lodash/noop"));
41
38
  const rxjs_1 = require("rxjs");
42
39
  const utils_1 = require("./utils");
40
+ const storage_1 = require("@google-cloud/storage");
43
41
  exports.Storage = __importStar(require("@google-cloud/storage"));
44
42
  exports.PubSub = __importStar(require("@google-cloud/pubsub"));
45
43
  exports.SecretManager = __importStar(require("@google-cloud/secret-manager"));
@@ -57,10 +55,10 @@ class GcfCommon {
57
55
  * @param {!TEvent} event Event payload.
58
56
  * @param {!TContext} context Metadata for the event.
59
57
  * @param handler
60
- * @param timeout Seconds
58
+ * @param timeoutSec Seconds
61
59
  */
62
- static async process(event, context, handler = rxjs_1.identity, timeout = 535) {
63
- return Promise.race([(0, utils_1.timeoutAfter)(timeout), handler(event, context)])
60
+ static async process(event, context, handler = rxjs_1.identity, timeoutSec = 535) {
61
+ return Promise.race([(0, utils_1.timeoutAfter)(timeoutSec), handler(event, context)])
64
62
  .then(async (res) => {
65
63
  // console.log('res:', res);
66
64
  await this.publish(event, context, res);
@@ -71,6 +69,10 @@ class GcfCommon {
71
69
  throw error;
72
70
  });
73
71
  }
72
+ static async processRxjs(event, context, handler = rxjs_1.identity, timeoutSec = 535) {
73
+ const asyncHandler = async (_event, _context) => await handler(_event, _context);
74
+ return (0, rxjs_1.defer)(() => (0, rxjs_1.from)(asyncHandler(event, context))).pipe((0, rxjs_1.first)(), (0, rxjs_1.timeout)({ first: (0, utils_1.ms)({ s: timeoutSec }) }));
75
+ }
74
76
  static buildResponse(error) {
75
77
  return {
76
78
  error: {
@@ -124,16 +126,16 @@ class GcfCommon {
124
126
  static async safeGetAttributes(event, context, props) {
125
127
  let metaOrAttr = this.getMetadataOrAttribute(event, context);
126
128
  // const everyPropIsNil = props.map(prop => get(metaOrAttr, prop)).every(v => isNil(v));
127
- const someProp = props.map(prop => (0, get_1.default)(metaOrAttr, prop)).some(v => !(0, isNil_1.default)(v));
128
- // if no prop then check file metadata
129
- if (!someProp && context?.resource?.type === 'storage#object') {
130
- console.log('get metadata from file');
131
- if (context?.eventType === 'google.storage.object.finalize') {
132
- const gsEvent = event;
133
- const [meta] = await exports.storage.bucket(gsEvent.bucket).file(gsEvent.name).getMetadata();
134
- metaOrAttr = meta?.metadata ?? {};
135
- }
136
- }
129
+ // const someProp = props.map(prop => get(metaOrAttr, prop)).some(v => !isNil(v));
130
+ // // if no prop then check file metadata
131
+ // if (!someProp && context?.resource?.type === 'storage#object') {
132
+ // console.log('get metadata from file');
133
+ // if (context?.eventType === 'google.storage.object.finalize') {
134
+ // const gsEvent = event as TGSEvent;
135
+ // const [meta] = await new Storage().bucket(gsEvent.bucket).file(gsEvent.name).getMetadata();
136
+ // metaOrAttr = meta?.metadata ?? {};
137
+ // }
138
+ // }
137
139
  return {
138
140
  ...metaOrAttr,
139
141
  app_id: metaOrAttr.app_id,
package/src/index.ts CHANGED
@@ -1,16 +1,14 @@
1
1
  import { PubSub } from '@google-cloud/pubsub';
2
2
  import { SecretManagerServiceClient } from '@google-cloud/secret-manager';
3
- import { Storage } from '@google-cloud/storage';
4
3
  import { Options } from 'amqplib';
5
- import get from 'lodash/get';
6
4
  import isEmpty from 'lodash/isEmpty';
7
- import isNil from 'lodash/isNil';
8
5
  import mapValues from 'lodash/mapValues';
9
6
  import noop from 'lodash/noop';
10
- import { identity } from 'rxjs';
7
+ import { defer, first, from, identity, timeout } from 'rxjs';
11
8
  import { TContext, TEvent, TGSEvent, TMetadataOrAttributes, TPSEvent, TResponse } from './types';
12
9
  import { ms, publishAmqp, timeoutAfter, withAmqpCh } from './utils';
13
10
  import Dict = NodeJS.Dict;
11
+ import { Storage } from '@google-cloud/storage';
14
12
 
15
13
  export * as Storage from '@google-cloud/storage';
16
14
  export * as PubSub from '@google-cloud/pubsub';
@@ -43,15 +41,15 @@ export class GcfCommon {
43
41
  * @param {!TEvent} event Event payload.
44
42
  * @param {!TContext} context Metadata for the event.
45
43
  * @param handler
46
- * @param timeout Seconds
44
+ * @param timeoutSec Seconds
47
45
  */
48
46
  static async process<T extends TResponse, E = TEvent>(
49
47
  event: E,
50
48
  context: TContext,
51
49
  handler: (event: E, context: TContext) => Promise<T | E> | T | E = identity,
52
- timeout = 535,
50
+ timeoutSec = 535,
53
51
  ) {
54
- return Promise.race([timeoutAfter(timeout), handler(event, context)])
52
+ return Promise.race([timeoutAfter(timeoutSec), handler(event, context)])
55
53
  .then(async res => {
56
54
  // console.log('res:', res);
57
55
  await this.publish(event, context, res as T);
@@ -63,6 +61,16 @@ export class GcfCommon {
63
61
  });
64
62
  }
65
63
 
64
+ static async processRxjs<T extends TResponse, E = TEvent>(
65
+ event: E,
66
+ context: TContext,
67
+ handler: (event: E, context: TContext) => Promise<T | E> | T | E = identity,
68
+ timeoutSec = 535,
69
+ ) {
70
+ const asyncHandler = async (_event: any, _context: any) => await handler(_event, _context);
71
+ return defer(() => from(asyncHandler(event, context))).pipe(first(), timeout({ first: ms({ s: timeoutSec }) }));
72
+ }
73
+
66
74
  static buildResponse(error: Error) {
67
75
  return {
68
76
  error: {
@@ -128,17 +136,17 @@ export class GcfCommon {
128
136
  static async safeGetAttributes<E = TEvent>(event: E, context: TContext, props: string[]) {
129
137
  let metaOrAttr = this.getMetadataOrAttribute(event, context);
130
138
  // const everyPropIsNil = props.map(prop => get(metaOrAttr, prop)).every(v => isNil(v));
131
- const someProp = props.map(prop => get(metaOrAttr, prop)).some(v => !isNil(v));
132
139
 
133
- // if no prop then check file metadata
134
- if (!someProp && context?.resource?.type === 'storage#object') {
135
- console.log('get metadata from file');
136
- if (context?.eventType === 'google.storage.object.finalize') {
137
- const gsEvent = event as TGSEvent;
138
- const [meta] = await storage.bucket(gsEvent.bucket).file(gsEvent.name).getMetadata();
139
- metaOrAttr = meta?.metadata ?? {};
140
- }
141
- }
140
+ // const someProp = props.map(prop => get(metaOrAttr, prop)).some(v => !isNil(v));
141
+ // // if no prop then check file metadata
142
+ // if (!someProp && context?.resource?.type === 'storage#object') {
143
+ // console.log('get metadata from file');
144
+ // if (context?.eventType === 'google.storage.object.finalize') {
145
+ // const gsEvent = event as TGSEvent;
146
+ // const [meta] = await new Storage().bucket(gsEvent.bucket).file(gsEvent.name).getMetadata();
147
+ // metaOrAttr = meta?.metadata ?? {};
148
+ // }
149
+ // }
142
150
 
143
151
  return {
144
152
  ...metaOrAttr,
package/src/mongo-lock.js CHANGED
@@ -4,11 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.MongoLock = void 0;
7
- const moment_1 = __importDefault(require("moment"));
7
+ const moment_1 = __importDefault(require("moment/moment"));
8
8
  const noop_1 = __importDefault(require("lodash/noop"));
9
9
  const rxjs_1 = require("rxjs");
10
10
  const mongo_helper_1 = require("./mongo-helper");
11
11
  const bluebird_1 = __importDefault(require("bluebird"));
12
+ /**
13
+ * @deprecated
14
+ */
12
15
  class MongoLock {
13
16
  constructor(client) {
14
17
  this.client = client;
package/src/mongo-lock.ts CHANGED
@@ -1,10 +1,13 @@
1
+ import moment from 'moment/moment';
1
2
  import { MongoClient, MongoError } from 'mongodb';
2
- import moment from 'moment';
3
3
  import noop from 'lodash/noop';
4
4
  import { defer, from, identity, lastValueFrom, map, retry, switchMap, tap } from 'rxjs';
5
5
  import { MongoHelper } from './mongo-helper';
6
6
  import Bluebird from 'bluebird';
7
7
 
8
+ /**
9
+ * @deprecated
10
+ */
8
11
  export class MongoLock {
9
12
  constructor(private client: MongoClient) {}
10
13