@trunkrs/common 1.6.17 → 1.6.21

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,6 +1,6 @@
1
1
  {
2
2
  "name": "@trunkrs/common",
3
- "version": "1.6.17",
3
+ "version": "1.6.21",
4
4
  "description": "Common standards library for development in Trunkrs",
5
5
  "types": "./index.d.ts",
6
6
  "repository": "https://github.com/Trunkrs/common.git",
@@ -26,7 +26,8 @@ class KinesisClient {
26
26
  .promise();
27
27
  }
28
28
  async sendBatchMessage(request) {
29
- await this.client.putRecords({
29
+ await this.client
30
+ .putRecords({
30
31
  StreamName: this.streamName,
31
32
  Records: request.messages.map((message) => {
32
33
  var _a, _b, _c, _d;
@@ -37,7 +38,8 @@ class KinesisClient {
37
38
  SequenceNumberForOrdering: (_d = request.options) === null || _d === void 0 ? void 0 : _d.sequenceNumber,
38
39
  });
39
40
  }),
40
- });
41
+ })
42
+ .promise();
41
43
  }
42
44
  }
43
45
  exports.default = KinesisClient;
@@ -1 +1 @@
1
- {"version":3,"file":"KinesisClient.js","sourceRoot":"","sources":["../../../services/queue/KinesisClient.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAC/B,sDAAyB;AAWzB,MAAM,EAAE,OAAO,EAAE,GAAG,sBAAI,CAAC,UAAU,CAAC,iBAAG,CAAC,CAAA;AAExC,MAAM,aAAa;IAGjB,YAImB,UAAkB,EAIlB,UAAsB,EAKtB,gBAAwB;QATxB,eAAU,GAAV,UAAU,CAAQ;QAIlB,eAAU,GAAV,UAAU,CAAY;QAKtB,qBAAgB,GAAhB,gBAAgB,CAAQ;QAf1B,WAAM,GAAG,IAAI,OAAO,EAAE,CAAA;IAgBpC,CAAC;IAEG,KAAK,CAAC,WAAW,CACtB,OAA6D;;QAE7D,MAAM,IAAI,CAAC,MAAM;aACd,SAAS,CAAC;YACT,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC1D,YAAY,EAAE,MAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,YAAY,mCAAI,IAAI,CAAC,gBAAgB;YACpE,eAAe,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,OAAO;YACzC,yBAAyB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;SAC3D,CAAC;aACD,OAAO,EAAE,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,OAAkE;QAElE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBAC1C,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;oBAClD,YAAY,EAAE,MAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,YAAY,mCAAI,IAAI,CAAC,gBAAgB;oBACpE,eAAe,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,OAAO;oBACzC,yBAAyB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;iBAC3D,CAAC,CAAA;aAAA,CAAC;SACJ,CAAC,CAAA;IACJ,CAAC;CACF;AAED,kBAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"KinesisClient.js","sourceRoot":"","sources":["../../../services/queue/KinesisClient.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAC/B,sDAAyB;AAWzB,MAAM,EAAE,OAAO,EAAE,GAAG,sBAAI,CAAC,UAAU,CAAC,iBAAG,CAAe,CAAA;AAEtD,MAAM,aAAa;IAGjB,YAImB,UAAkB,EAIlB,UAAsB,EAKtB,gBAAwB;QATxB,eAAU,GAAV,UAAU,CAAQ;QAIlB,eAAU,GAAV,UAAU,CAAY;QAKtB,qBAAgB,GAAhB,gBAAgB,CAAQ;QAf1B,WAAM,GAAG,IAAI,OAAO,EAAE,CAAA;IAgBpC,CAAC;IAEG,KAAK,CAAC,WAAW,CACtB,OAA6D;;QAE7D,MAAM,IAAI,CAAC,MAAM;aACd,SAAS,CAAC;YACT,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC1D,YAAY,EAAE,MAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,YAAY,mCAAI,IAAI,CAAC,gBAAgB;YACpE,eAAe,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,OAAO;YACzC,yBAAyB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;SAC3D,CAAC;aACD,OAAO,EAAE,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,OAAkE;QAElE,MAAM,IAAI,CAAC,MAAM;aACd,UAAU,CAAC;YACV,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBAC1C,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;oBAClD,YAAY,EAAE,MAAA,MAAA,OAAO,CAAC,OAAO,0CAAE,YAAY,mCAAI,IAAI,CAAC,gBAAgB;oBACpE,eAAe,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,OAAO;oBACzC,yBAAyB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;iBAC3D,CAAC,CAAA;aAAA,CAAC;SACJ,CAAC;aACD,OAAO,EAAE,CAAA;IACd,CAAC;CACF;AAED,kBAAe,aAAa,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export interface SQSMessageOptions {
2
2
  deduplicationId?: string;
3
3
  messageGroupId?: string;
4
+ delaySeconds?: number;
4
5
  }
5
6
  export interface SNSMessageOptions {
6
7
  deduplicationId?: string;
@@ -1,6 +1,6 @@
1
1
  import Serializer from '../../utils/serialization/Serializer';
2
2
  import { QueueClient, QueueBatchMessageRequest, QueueMessageRequest, SQSMessageOptions } from './QueueClient';
3
- declare class SNSQueueClient implements QueueClient {
3
+ declare class SQSQueueClient implements QueueClient {
4
4
  private readonly queueUrl;
5
5
  private readonly serializer;
6
6
  private readonly client;
@@ -8,4 +8,4 @@ declare class SNSQueueClient implements QueueClient {
8
8
  sendMessage<TMessage>(request: QueueMessageRequest<TMessage, SQSMessageOptions>): Promise<void>;
9
9
  sendBatchMessage<TMessage>(request: QueueBatchMessageRequest<TMessage, SQSMessageOptions>): Promise<void>;
10
10
  }
11
- export default SNSQueueClient;
11
+ export default SQSQueueClient;
@@ -6,20 +6,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const aws_xray_sdk_1 = __importDefault(require("aws-xray-sdk"));
7
7
  const aws_sdk_1 = __importDefault(require("aws-sdk"));
8
8
  const { SQS } = aws_xray_sdk_1.default.captureAWS(aws_sdk_1.default);
9
- class SNSQueueClient {
9
+ class SQSQueueClient {
10
10
  constructor(queueUrl, serializer) {
11
11
  this.queueUrl = queueUrl;
12
12
  this.serializer = serializer;
13
13
  this.client = new SQS();
14
14
  }
15
15
  async sendMessage(request) {
16
- var _a, _b;
16
+ var _a, _b, _c;
17
17
  await this.client
18
18
  .sendMessage({
19
19
  QueueUrl: this.queueUrl,
20
20
  MessageBody: this.serializer.serialize(request.message, 'string'),
21
21
  MessageGroupId: (_a = request.options) === null || _a === void 0 ? void 0 : _a.messageGroupId,
22
22
  MessageDeduplicationId: (_b = request.options) === null || _b === void 0 ? void 0 : _b.messageGroupId,
23
+ DelaySeconds: (_c = request.options) === null || _c === void 0 ? void 0 : _c.delaySeconds,
23
24
  })
24
25
  .promise();
25
26
  }
@@ -27,16 +28,17 @@ class SNSQueueClient {
27
28
  await this.client.sendMessageBatch({
28
29
  QueueUrl: this.queueUrl,
29
30
  Entries: request.messages.map((message, index) => {
30
- var _a, _b;
31
+ var _a, _b, _c;
31
32
  return ({
32
33
  Id: String(index),
33
34
  MessageBody: this.serializer.serialize(message, 'string'),
34
35
  MessageGroupId: (_a = request.options) === null || _a === void 0 ? void 0 : _a.messageGroupId,
35
36
  MessageDeduplicationId: (_b = request.options) === null || _b === void 0 ? void 0 : _b.messageGroupId,
37
+ DelaySeconds: (_c = request.options) === null || _c === void 0 ? void 0 : _c.delaySeconds,
36
38
  });
37
39
  }),
38
40
  });
39
41
  }
40
42
  }
41
- exports.default = SNSQueueClient;
43
+ exports.default = SQSQueueClient;
42
44
  //# sourceMappingURL=SQSQueueClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SQSQueueClient.js","sourceRoot":"","sources":["../../../services/queue/SQSQueueClient.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAC/B,sDAAyB;AAWzB,MAAM,EAAE,GAAG,EAAE,GAAG,sBAAI,CAAC,UAAU,CAAC,iBAAG,CAAC,CAAA;AAEpC,MAAM,cAAc;IAGlB,YAImB,QAAgB,EAIhB,UAAsB;QAJtB,aAAQ,GAAR,QAAQ,CAAQ;QAIhB,eAAU,GAAV,UAAU,CAAY;QAVxB,WAAM,GAAG,IAAI,GAAG,EAAE,CAAA;IAWhC,CAAC;IAEG,KAAK,CAAC,WAAW,CACtB,OAAyD;;QAEzD,MAAM,IAAI,CAAC,MAAM;aACd,WAAW,CAAC;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;YACjE,cAAc,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;YAC/C,sBAAsB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;SACxD,CAAC;aACD,OAAO,EAAE,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,OAA8D;QAE9D,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBACjD,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;oBACjB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACzD,cAAc,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;oBAC/C,sBAAsB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;iBACxD,CAAC,CAAA;aAAA,CAAC;SACJ,CAAC,CAAA;IACJ,CAAC;CACF;AAED,kBAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"SQSQueueClient.js","sourceRoot":"","sources":["../../../services/queue/SQSQueueClient.ts"],"names":[],"mappings":";;;;;AAAA,gEAA+B;AAC/B,sDAAyB;AAWzB,MAAM,EAAE,GAAG,EAAE,GAAG,sBAAI,CAAC,UAAU,CAAC,iBAAG,CAAC,CAAA;AAEpC,MAAM,cAAc;IAGlB,YAImB,QAAgB,EAIhB,UAAsB;QAJtB,aAAQ,GAAR,QAAQ,CAAQ;QAIhB,eAAU,GAAV,UAAU,CAAY;QAVxB,WAAM,GAAG,IAAI,GAAG,EAAE,CAAA;IAWhC,CAAC;IAEG,KAAK,CAAC,WAAW,CACtB,OAAyD;;QAEzD,MAAM,IAAI,CAAC,MAAM;aACd,WAAW,CAAC;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;YACjE,cAAc,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;YAC/C,sBAAsB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;YACvD,YAAY,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,YAAY;SAC5C,CAAC;aACD,OAAO,EAAE,CAAA;IACd,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,OAA8D;QAE9D,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;;gBAAC,OAAA,CAAC;oBACjD,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC;oBACjB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACzD,cAAc,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;oBAC/C,sBAAsB,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,cAAc;oBACvD,YAAY,EAAE,MAAA,OAAO,CAAC,OAAO,0CAAE,YAAY;iBAC5C,CAAC,CAAA;aAAA,CAAC;SACJ,CAAC,CAAA;IACJ,CAAC;CACF;AAED,kBAAe,cAAc,CAAA"}
@@ -3,6 +3,8 @@ import SetOptions from './types/SetOptions';
3
3
  declare class RedisClient {
4
4
  private readonly client;
5
5
  private needsConnectionCounter;
6
+ private connectionPromise?;
7
+ private disconnectionPromise?;
6
8
  private connect;
7
9
  private disconnect;
8
10
  constructor(client: RedisClientType);
@@ -8,13 +8,25 @@ class RedisClient {
8
8
  async connect() {
9
9
  this.needsConnectionCounter += 1;
10
10
  if (this.needsConnectionCounter === 1) {
11
- await this.client.connect();
11
+ if (this.connectionPromise) {
12
+ await this.disconnectionPromise;
13
+ return;
14
+ }
15
+ this.connectionPromise = this.client.connect();
16
+ await this.connectionPromise;
17
+ this.connectionPromise = undefined;
12
18
  }
13
19
  }
14
20
  async disconnect() {
15
21
  this.needsConnectionCounter -= 1;
16
22
  if (!this.needsConnectionCounter) {
17
- await this.client.disconnect();
23
+ if (this.disconnectionPromise) {
24
+ await this.disconnectionPromise;
25
+ return;
26
+ }
27
+ this.disconnectionPromise = this.client.disconnect();
28
+ await this.disconnectionPromise;
29
+ this.disconnectionPromise = undefined;
18
30
  }
19
31
  }
20
32
  async set(key, value, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"RedisClient.js","sourceRoot":"","sources":["../../../services/redis/RedisClient.ts"],"names":[],"mappings":";;AAIA,MAAM,WAAW;IAmBf,YAAoC,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAlBnD,2BAAsB,GAAG,CAAC,CAAA;IAkB4B,CAAC;IAhBvD,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAA;QAEhC,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,EAAE;YACrC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;SAC5B;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,sBAAsB,IAAI,CAAC,CAAA;QAEhC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAChC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAA;SAC/B;IACH,CAAC;IAWM,KAAK,CAAC,GAAG,CACd,GAAW,EACX,KAAa,EACb,OAAoB;QAEpB,IAAI;YACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,MAAM,cAAc,GAAG,EAAE,CAAA;YAEzB,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE;gBACtB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;oBAE5B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;iBAClC,CAAC,CAAA;aACH;YAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,EAAE;gBACzB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;oBAC5B,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,IAAI;iBAC7B,CAAC,CAAA;aACH;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;SAClD;gBAAS;YACR,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;SACxB;IACH,CAAC;IAQM,KAAK,CAAC,GAAG,CAAC,GAAW;QAC1B,IAAI;YACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YAEpB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACvC,OAAO,IAAI,CAAA;SACZ;gBAAS;YACR,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;SACxB;IACH,CAAC;IAWM,KAAK,CAAC,QAAQ,CACnB,GAAW,EACX,OAA8B,EAC9B,UAAuB;QAEvB,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAE/B,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,MAAM,OAAO,EAAE,CAAA;YAEvB,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;SACvC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAOM,KAAK,CAAC,MAAM,CAAC,GAAG,IAAc;QACnC,IAAI;YACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SAC5B;gBAAS;YACR,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;SACxB;IACH,CAAC;IAMM,KAAK,CAAC,KAAK;QAChB,IAAI;YACF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YACpB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;SAC7B;gBAAS;YACR,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;SACxB;IACH,CAAC;CACF;AAED,kBAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"RedisClient.js","sourceRoot":"","sources":["../../../services/redis/RedisClient.ts"],"names":[],"mappings":"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"}