@adtrackify/at-service-common 3.8.7 → 3.8.9

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.
@@ -1,13 +1,21 @@
1
1
  import Redis from 'ioredis';
2
+ export interface RedisClientOptions {
3
+ host: string;
4
+ port?: number;
5
+ poolSize?: number;
6
+ tls?: boolean;
7
+ }
2
8
  export declare class RedisClient {
3
- private poolSize;
4
9
  private pool;
5
10
  host: string;
6
11
  port: number;
7
- constructor(host: string, port?: number, poolSize?: number);
12
+ private useTls;
13
+ constructor(hostOrOptions: string | RedisClientOptions, port?: number, poolSize?: number);
8
14
  private createClient;
9
15
  private getClient;
10
- connect(client: Redis): Promise<void>;
16
+ getRedisInstance(): Redis;
17
+ connect(client?: Redis): Promise<void>;
18
+ ensureConnected(): Promise<Redis>;
11
19
  safeSet(key: string, value: string, ttlInSeconds?: number): Promise<void>;
12
20
  unsafeSet(key: string, value: string, ttlInSeconds?: number): Promise<void>;
13
21
  unsafeGet(key: string): Promise<string | null>;
@@ -7,25 +7,34 @@ exports.RedisClient = void 0;
7
7
  const ioredis_1 = __importDefault(require("ioredis"));
8
8
  const helpers_1 = require("../../helpers");
9
9
  class RedisClient {
10
- poolSize;
11
10
  pool;
12
11
  host;
13
12
  port;
14
- constructor(host, port = 6379, poolSize = 3) {
15
- this.poolSize = poolSize;
16
- this.host = host;
17
- this.port = port;
18
- this.pool = Array.from({ length: poolSize }, () => this.createClient(host, port));
13
+ useTls;
14
+ constructor(hostOrOptions, port = 6379, poolSize = 3) {
15
+ if (typeof hostOrOptions === 'string') {
16
+ this.host = hostOrOptions;
17
+ this.port = port;
18
+ this.useTls = hostOrOptions.includes('clustercfg') || hostOrOptions.includes('cache.amazonaws.com');
19
+ this.pool = Array.from({ length: poolSize }, () => this.createClient(this.host, this.port));
20
+ }
21
+ else {
22
+ this.host = hostOrOptions.host;
23
+ this.port = hostOrOptions.port ?? 6379;
24
+ this.useTls = hostOrOptions.tls ?? (this.host.includes('clustercfg') || this.host.includes('cache.amazonaws.com'));
25
+ this.pool = Array.from({ length: hostOrOptions.poolSize ?? 3 }, () => this.createClient(this.host, this.port));
26
+ }
19
27
  }
20
28
  createClient(host, port) {
21
29
  try {
22
30
  const client = new ioredis_1.default({
23
- host: host,
24
- port: port,
31
+ host,
32
+ port,
25
33
  maxRetriesPerRequest: 3,
26
34
  commandTimeout: 3000,
27
35
  lazyConnect: true,
28
36
  keepAlive: 1000,
37
+ ...(this.useTls && { tls: {} }),
29
38
  });
30
39
  return client;
31
40
  }
@@ -35,16 +44,22 @@ class RedisClient {
35
44
  }
36
45
  }
37
46
  getClient() {
38
- const randomIndex = Math.floor(Math.random() * this.poolSize);
47
+ const randomIndex = Math.floor(Math.random() * this.pool.length);
39
48
  let client = this.pool[randomIndex];
40
49
  if (!client) {
41
50
  client = this.createClient(this.host, this.port);
42
51
  }
43
52
  return client;
44
53
  }
54
+ getRedisInstance() {
55
+ return this.getClient();
56
+ }
45
57
  async connect(client) {
58
+ const target = client ?? this.getClient();
46
59
  try {
47
- await client.connect();
60
+ if (target.status === 'ready')
61
+ return;
62
+ await target.connect();
48
63
  helpers_1.Logger.debug('Connected to Redis');
49
64
  }
50
65
  catch (err) {
@@ -52,6 +67,13 @@ class RedisClient {
52
67
  return;
53
68
  }
54
69
  }
70
+ async ensureConnected() {
71
+ const client = this.getClient();
72
+ if (client.status !== 'ready') {
73
+ await client.connect();
74
+ }
75
+ return client;
76
+ }
55
77
  async safeSet(key, value, ttlInSeconds) {
56
78
  try {
57
79
  const client = this.getClient();
@@ -1 +1 @@
1
- {"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/redis-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/redis-client.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,21 @@
1
1
  import Redis from 'ioredis';
2
+ export interface RedisClientOptions {
3
+ host: string;
4
+ port?: number;
5
+ poolSize?: number;
6
+ tls?: boolean;
7
+ }
2
8
  export declare class RedisClient {
3
- private poolSize;
4
9
  private pool;
5
10
  host: string;
6
11
  port: number;
7
- constructor(host: string, port?: number, poolSize?: number);
12
+ private useTls;
13
+ constructor(hostOrOptions: string | RedisClientOptions, port?: number, poolSize?: number);
8
14
  private createClient;
9
15
  private getClient;
10
- connect(client: Redis): Promise<void>;
16
+ getRedisInstance(): Redis;
17
+ connect(client?: Redis): Promise<void>;
18
+ ensureConnected(): Promise<Redis>;
11
19
  safeSet(key: string, value: string, ttlInSeconds?: number): Promise<void>;
12
20
  unsafeSet(key: string, value: string, ttlInSeconds?: number): Promise<void>;
13
21
  unsafeGet(key: string): Promise<string | null>;
@@ -1,25 +1,34 @@
1
1
  import Redis from 'ioredis';
2
2
  import { Logger } from '../../helpers';
3
3
  export class RedisClient {
4
- poolSize;
5
4
  pool;
6
5
  host;
7
6
  port;
8
- constructor(host, port = 6379, poolSize = 3) {
9
- this.poolSize = poolSize;
10
- this.host = host;
11
- this.port = port;
12
- this.pool = Array.from({ length: poolSize }, () => this.createClient(host, port));
7
+ useTls;
8
+ constructor(hostOrOptions, port = 6379, poolSize = 3) {
9
+ if (typeof hostOrOptions === 'string') {
10
+ this.host = hostOrOptions;
11
+ this.port = port;
12
+ this.useTls = hostOrOptions.includes('clustercfg') || hostOrOptions.includes('cache.amazonaws.com');
13
+ this.pool = Array.from({ length: poolSize }, () => this.createClient(this.host, this.port));
14
+ }
15
+ else {
16
+ this.host = hostOrOptions.host;
17
+ this.port = hostOrOptions.port ?? 6379;
18
+ this.useTls = hostOrOptions.tls ?? (this.host.includes('clustercfg') || this.host.includes('cache.amazonaws.com'));
19
+ this.pool = Array.from({ length: hostOrOptions.poolSize ?? 3 }, () => this.createClient(this.host, this.port));
20
+ }
13
21
  }
14
22
  createClient(host, port) {
15
23
  try {
16
24
  const client = new Redis({
17
- host: host,
18
- port: port,
25
+ host,
26
+ port,
19
27
  maxRetriesPerRequest: 3,
20
28
  commandTimeout: 3000,
21
29
  lazyConnect: true,
22
30
  keepAlive: 1000,
31
+ ...(this.useTls && { tls: {} }),
23
32
  });
24
33
  return client;
25
34
  }
@@ -29,16 +38,22 @@ export class RedisClient {
29
38
  }
30
39
  }
31
40
  getClient() {
32
- const randomIndex = Math.floor(Math.random() * this.poolSize);
41
+ const randomIndex = Math.floor(Math.random() * this.pool.length);
33
42
  let client = this.pool[randomIndex];
34
43
  if (!client) {
35
44
  client = this.createClient(this.host, this.port);
36
45
  }
37
46
  return client;
38
47
  }
48
+ getRedisInstance() {
49
+ return this.getClient();
50
+ }
39
51
  async connect(client) {
52
+ const target = client ?? this.getClient();
40
53
  try {
41
- await client.connect();
54
+ if (target.status === 'ready')
55
+ return;
56
+ await target.connect();
42
57
  Logger.debug('Connected to Redis');
43
58
  }
44
59
  catch (err) {
@@ -46,6 +61,13 @@ export class RedisClient {
46
61
  return;
47
62
  }
48
63
  }
64
+ async ensureConnected() {
65
+ const client = this.getClient();
66
+ if (client.status !== 'ready') {
67
+ await client.connect();
68
+ }
69
+ return client;
70
+ }
49
71
  async safeSet(key, value, ttlInSeconds) {
50
72
  try {
51
73
  const client = this.getClient();
@@ -1 +1 @@
1
- {"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/redis-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redis-client.js","sourceRoot":"","sources":["../../../../src/clients/generic/redis-client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adtrackify/at-service-common",
3
- "version": "3.8.7",
3
+ "version": "3.8.9",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"
@@ -64,7 +64,7 @@
64
64
  "uuid": "^9.0.0"
65
65
  },
66
66
  "devDependencies": {
67
- "@adtrackify/at-tracking-event-types": "^4.23.0",
67
+ "@adtrackify/at-tracking-event-types": "^4.25.0",
68
68
  "@aws-sdk/client-cognito-identity-provider": "^3.345.0",
69
69
  "@aws-sdk/client-dynamodb": "^3.345.0",
70
70
  "@aws-sdk/client-eventbridge": "^3.345.0",