@yellowpanther/shared 1.0.1 → 1.1.1

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,17 +1,18 @@
1
1
  {
2
2
  "name": "@yellowpanther/shared",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "description": "Reusable shared utilities for YP microservices (e.g., redis, queue, config)",
5
5
  "author": "Yellow Panther",
6
6
  "main": "src/index.js",
7
7
  "type": "commonjs",
8
8
  "files": [
9
9
  "src",
10
+ "src/config",
10
11
  "package.json",
11
12
  "README.md"
12
13
  ],
13
14
  "exports": {
14
- ".": "./src/index.js",
15
+ ".": "./src/index.js",
15
16
  "./config": "./src/config/index.js",
16
17
  "./redis/redisClient": "./src/redis/redisClient.js",
17
18
  "./queue/compressionQueue": "./src/queue/compressionQueue.js",
@@ -9,9 +9,16 @@ const envValidation = Joi.object()
9
9
  APP_NAME: Joi.string().default('ip-cms'),
10
10
  NODE_ENV: Joi.string().valid('development', 'production', 'test').required(),
11
11
  PORT: Joi.number().default(4006),
12
+ IS_DOCKER_MYSQL: Joi.string().default("false"),
13
+ DOCKER_DB_HOST: Joi.string().default("db"),
14
+ DOCKER_DB_PORT: Joi.number().default(3306),
15
+ DOCKER_DB_USER: Joi.string().optional(),
16
+ DOCKER_DB_PASSWORD: Joi.string().optional(),
17
+ DOCKER_DB_NAME: Joi.string().optional(),
18
+ DOCKER_ROOT_PASSWORD: Joi.string().optional(),
12
19
  DB_HOST: Joi.string().default('localhost'),
13
20
  DB_USER: Joi.string().required(),
14
- DB_PASS: Joi.string().required(),
21
+ DB_PASSWORD: Joi.string().required(),
15
22
  DB_NAME: Joi.string().required(),
16
23
  JWT_SECRET: Joi.string().required().description('JWT secret key'),
17
24
  JWT_ACCESS_EXPIRATION_MINUTES: Joi.number().default(30),
@@ -94,8 +101,25 @@ module.exports = {
94
101
  port: envVar.PORT,
95
102
  dbHost: envVar.DB_HOST,
96
103
  dbUser: envVar.DB_USER,
97
- dbPass: envVar.DB_PASS,
104
+ dbPass: envVar.DB_PASSWORD,
98
105
  dbName: envVar.DB_NAME,
106
+ db: {
107
+ host: envVar.DB_HOST,
108
+ port: envVar.DB_PORT,
109
+ username: envVar.DB_USER,
110
+ password: envVar.DB_PASSWORD,
111
+ database: envVar.DB_NAME,
112
+ backupFolder: envVar.DB_BACKUP_FOLDER,
113
+ docker:{
114
+ isDockerMysql: envVar.IS_DOCKER_MYSQL,
115
+ host: envVar.DOCKER_DB_HOST,
116
+ port: envVar.DOCKER_DB_PORT,
117
+ username: envVar.DOCKER_DB_USER,
118
+ password: envVar.DOCKER_DB_PASSWORD,
119
+ database: envVar.DOCKER_DB_NAME,
120
+ rootPassword: envVar.DOCKER_ROOT_PASSWORD,
121
+ }
122
+ },
99
123
  app: {
100
124
  name: process.env.APP_NAME || 'ip-cms',
101
125
  env: process.env.NODE_ENV || 'development',
@@ -1,17 +1,25 @@
1
- const Redis = require('ioredis');
2
- require('dotenv').config();
1
+ const IORedis = require('ioredis');
2
+ const { redis } = require('../config');
3
3
 
4
- const redisClient = new Redis(process.env.REDIS_URL, {
5
- maxRetriesPerRequest: null,
6
- enableReadyCheck: true
7
- });
4
+ const redisOptions = {
5
+ host: redis.host,
6
+ port: redis.port,
7
+ ...(redis.usePassword?.toUpperCase() === 'YES' && { password: redis.password }),
8
+ maxRetriesPerRequest: null, // Required for BullMQ compatibility
9
+ enableReadyCheck: false, // Optional: for fast startup
10
+ reconnectOnError: err => {
11
+ const targetErrors = ['READONLY', 'ECONNREFUSED'];
12
+ if (targetErrors.some(msg => err.message.includes(msg))) {
13
+ console.warn('🔁 Reconnecting Redis due to:', err.message);
14
+ return true;
15
+ }
16
+ return false;
17
+ },
18
+ };
8
19
 
9
- redisClient.on('connect', () => {
10
- console.log('✅ Shared Redis client connected');
11
- });
20
+ const redisClient = new IORedis(redisOptions);
12
21
 
13
- redisClient.on('error', err => {
14
- console.error('❌ Redis connection error:', err);
15
- });
22
+ redisClient.on('connect', () => console.log('✅ Redis connected'));
23
+ redisClient.on('error', err => console.error('❌ Redis error:', err.message));
16
24
 
17
25
  module.exports = redisClient;