JSPM

@sandip1046/rubizz-shared-libs

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q56095F
  • License MIT

Shared libraries and utilities for Rubizz Hotel Inn microservices

Package Exports

  • @sandip1046/rubizz-shared-libs
  • @sandip1046/rubizz-shared-libs/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@sandip1046/rubizz-shared-libs) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Rubizz Shared Libraries

Overview

The Rubizz Shared Libraries (@rubizz/shared-libs) is a common NPM package that provides shared utilities, types, configurations, and services across all Rubizz Hotel Inn microservices. It ensures consistency, reduces code duplication, and provides a centralized location for common functionality.

Package Structure

src/
├── types/           # TypeScript types and interfaces
├── utils/           # Utility functions
├── auth/            # Authentication utilities
├── database/        # Database connection utilities
├── logger/          # Logging utilities
├── email/           # Email service utilities
├── validation/      # Validation schemas
├── constants/       # Constants and enums
├── prisma/          # Prisma ORM utilities
├── events/          # Event handling utilities
└── index.ts         # Main export file

Core Features

1. Authentication & Authorization

  • JWT token generation and verification
  • Password hashing and comparison
  • Role-based access control utilities
  • Password reset token management

2. Database Management

  • Prisma client initialization and management
  • Database connection pooling
  • Health check utilities
  • Transaction management

3. Redis Integration

  • Redis connection management
  • Session storage utilities
  • Caching helpers
  • Message queue operations

4. Logging System

  • Winston-based centralized logging
  • Request/response logging middleware
  • Error logging utilities
  • Service-specific loggers

5. Email Services

  • Nodemailer integration
  • Email template management
  • Verification and notification emails
  • Brevo API integration

6. Validation Schemas

  • Joi validation schemas
  • Common validation rules
  • Request validation utilities
  • Error handling

7. Utility Functions

  • UUID generation
  • Date formatting
  • String manipulation
  • Pagination helpers
  • Retry mechanisms

Installation

npm install @rubizz/shared-libs

Usage

Basic Setup

import { 
  Logger, 
  AuthUtils, 
  DatabaseManager, 
  RedisManager,
  Utils,
  ValidationSchemas,
  BrevoEmailService
} from '@rubizz/shared-libs';

// Initialize logger
const logger = Logger.getInstance('service-name', 'production');

// Initialize authentication
AuthUtils.initialize({
  secret: process.env.JWT_SECRET,
  expiresIn: process.env.JWT_EXPIRES_IN,
  refreshExpiresIn: process.env.JWT_REFRESH_EXPIRES_IN
});

// Initialize database
DatabaseManager.initialize({
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT),
  database: process.env.DB_NAME,
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  ssl: process.env.DB_SSL === 'true',
  poolSize: parseInt(process.env.DB_POOL_SIZE)
});

// Initialize Redis
RedisManager.initialize({
  host: process.env.REDIS_HOST,
  port: parseInt(process.env.REDIS_PORT),
  password: process.env.REDIS_PASSWORD,
  db: parseInt(process.env.REDIS_DB),
  retryDelayOnFailover: 100,
  maxRetriesPerRequest: 3
});

// Initialize email service
BrevoEmailService.initialize(
  process.env.BREVO_API_KEY,
  process.env.FROM_EMAIL
);

Authentication Usage

// Generate JWT token
const accessToken = AuthUtils.generateAccessToken({
  userId: user.id,
  email: user.email,
  role: user.role
});

// Verify JWT token
const payload = AuthUtils.verifyToken(token);

// Hash password
const hashedPassword = await AuthUtils.hashPassword(password);

// Compare password
const isValid = await AuthUtils.comparePassword(password, hash);

Database Usage

// Get database connection
const db = DatabaseManager.getConnection();

// Use Prisma client
const user = await db.user.create({
  data: {
    email: 'user@example.com',
    firstName: 'John',
    lastName: 'Doe'
  }
});

// Health check
const isHealthy = await DatabaseManager.healthCheck();

Redis Usage

// Set value
await RedisManager.set('key', 'value', 3600); // 1 hour TTL

// Get value
const value = await RedisManager.get('key');

// Hash operations
await RedisManager.hset('user:123', 'name', 'John');
const name = await RedisManager.hget('user:123', 'name');

Logging Usage

// Basic logging
logger.info('User created', { userId: user.id });
logger.error('Database error', error, { query: 'SELECT * FROM users' });

// Request logging middleware
app.use(Logger.createRequestLogger('service-name'));

// Error logging middleware
app.use(Logger.createErrorLogger('service-name'));

Email Usage

// Send verification email
await BrevoEmailService.sendVerificationEmail(
  'user@example.com',
  'verification-token'
);

// Send password reset email
await BrevoEmailService.sendPasswordResetEmail(
  'user@example.com',
  'reset-token'
);

// Send custom email
await BrevoEmailService.sendEmail({
  to: 'user@example.com',
  subject: 'Custom Email',
  template: 'custom-template',
  params: { name: 'John' }
});

Validation Usage

// Validate request body
const { error, value } = ValidationSchemas.userRegistration.validate(req.body);
if (error) {
  return res.status(400).json({ error: error.details[0].message });
}

// Validate query parameters
const { error, value } = ValidationSchemas.pagination.validate(req.query);

Development

Prerequisites

  • Node.js 18+
  • TypeScript 5.3+
  • NPM 9+

Setup

# Install dependencies
npm install

# Set up environment variables
cp env.example .env
# Edit .env with your database credentials

# Generate Prisma client
npx prisma generate

# Run database migrations
npx prisma migrate dev --name init

# Build the package
npm run build

# Run tests
npm test

# Lint code
npm run lint

# Fix linting issues
npm run lint:fix

Database Setup

# Generate Prisma client (after schema changes)
npx prisma generate

# Create and apply migrations
npx prisma migrate dev --name migration_name

# Reset database (development only)
npx prisma migrate reset

# Deploy migrations to production
npx prisma migrate deploy

# View database in Prisma Studio
npx prisma studio

Building

npm run build

This will compile TypeScript to JavaScript and generate type definitions in the dist/ directory.

Dependencies

Production Dependencies

  • jsonwebtoken - JWT token handling
  • bcryptjs - Password hashing
  • joi - Validation schemas
  • uuid - UUID generation
  • moment - Date manipulation
  • lodash - Utility functions
  • axios - HTTP client
  • redis - Redis client
  • winston - Logging
  • @prisma/client - Database ORM
  • nodemailer - Email service

Development Dependencies

  • @types/* - TypeScript type definitions
  • typescript - TypeScript compiler
  • jest - Testing framework
  • eslint - Code linting

Version Management

The package follows semantic versioning (semver):

  • Major (1.0.0 → 2.0.0): Breaking changes
  • Minor (1.0.0 → 1.1.0): New features, backward compatible
  • Patch (1.0.0 → 1.0.1): Bug fixes, backward compatible

Contributing

  1. Follow the existing code style
  2. Add tests for new features
  3. Update documentation
  4. Ensure all tests pass
  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

For issues and questions, please contact the development team or create an issue in the repository.