Socket
Book a DemoInstallSign in
Socket

mvc-common-toolkit

Package Overview
Dependencies
Maintainers
1
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mvc-common-toolkit

This package contains common toolkits like query string parser, filter parser,... and other reusable patterns for any web projects

1.43.8
latest
Source
npmnpm
Version published
Weekly downloads
757
220.76%
Maintainers
1
Weekly downloads
Ā 
Created
Source

Common Toolkit

npm version License: MIT TypeScript

A comprehensive TypeScript toolkit providing common utilities, services, and patterns for modern web applications. Built with scalability, reliability, and developer experience in mind.

šŸš€ Features

Core Utilities

  • Query & Filter Parsing - Advanced query string and filter parsing with support for complex operators
  • String & Object Helpers - Comprehensive utilities for string manipulation and object operations
  • Array & Collection Helpers - Efficient array operations and collection management
  • Crypto & Security - Bcrypt helpers and cryptographic utilities
  • HTTP Request Utils - Enhanced HTTP request handling and utilities
  • GeoIP Support - Geographic IP location utilities
  • Excel Processing - Excel file generation and manipulation
  • Logging - Structured logging with Pino

Workflow & Task Management

  • Sync Task Queue - In-memory task queue for single-instance applications
  • Distributed Task Queue - Multi-instance distributed task queue with external queue engines
  • Delayed Task Registry - Scheduled task execution with retry mechanisms
  • Retry Task System - Robust retry logic with exponential backoff
  • Processing Milestones - Task progress tracking and milestone management

Services & Integrations

  • Redis Service - Comprehensive Redis client with caching, lists, and hash operations
  • Kafka Service - Message queue integration with Kafka
  • HTTP Service - Enhanced HTTP client with request/response handling
  • Mailer Service - Email sending capabilities
  • Security Service - Authentication and authorization utilities
  • Audit Service - Comprehensive audit logging
  • Paginated Cache - High-performance paginated data caching

Cloud & External Integrations

  • Alibaba Cloud Gateway - Alibaba Cloud service integrations
  • Audit Gateways - Multiple audit logging destinations (HTTP, Webhook, Stdout)
  • Internal Auth Gateway - Internal service authentication

Distributed Systems

  • Redis Queue Engine - Production-ready Redis-based queue engine
  • Distributed Locking - Reliable distributed locking mechanisms
  • Consumer Coordination - Single consumer across multiple instances
  • Message Serialization - Efficient message serialization and deserialization

šŸ“¦ Installation

npm install mvc-common-toolkit
# or
yarn add mvc-common-toolkit

šŸ”§ Quick Start

Basic Usage

import {
  queryHelper,
  filterHelpers,
  stringUtils,
  loggers,
} from "mvc-common-toolkit";

// Parse query parameters
const query = queryHelper.parseQueryString("page=1&limit=10&sort=name:asc");

// Apply filters
const filters = filterHelpers.parseFilters([
  { field: "status", operator: "eq", value: "active" },
  { field: "age", operator: "gte", value: 18 },
]);

// String utilities
const slug = stringUtils.slugify("Hello World!"); // hello-world

// Logging
const logger = loggers.PinoLogger;
logger.info("Application started");

Distributed Task Queue

import {
  DistributedTaskQueueFactory,
  RedisQueueEngine,
} from "mvc-common-toolkit";

// Create Redis queue engine
const redisEngine = new RedisQueueEngine({
  redis: { host: "localhost", port: 6379 },
  instanceId: "service-instance-1",
});

await redisEngine.connect();

// Create distributed task queue
const taskQueue = DistributedTaskQueueFactory.createWithDefaults(redisEngine);

// Start consumer (only one active across all replicas)
await taskQueue.startConsumer("order-processing-queue");

// Push tasks from any replica
const result = await taskQueue.push(
  "order-processing-queue",
  "process-order",
  async () => {
    // Task logic here
    return { orderId: "123", status: "processed" };
  }
);

Redis Service

import { RedisService } from "mvc-common-toolkit";

const redisService = new RedisService({
  host: "localhost",
  port: 6379,
  db: 0,
});

// Cache operations
await redisService.set("user:123", { name: "John", email: "john@example.com" });
const user = await redisService.get("user:123");

// List operations
await redisService.lpush("queue:orders", JSON.stringify(order));
const order = await redisService.brpop("queue:orders", 1);

// Hash operations
await redisService.hset("user:123", "lastLogin", new Date().toISOString());
const lastLogin = await redisService.hget("user:123", "lastLogin");

Query & Filter Parsing

import { queryHelper, filterHelpers } from "mvc-common-toolkit";

// Parse complex query strings
const query = queryHelper.parseQueryString(
  "page=1&limit=20&sort=name:asc,createdAt:desc&filter=status:eq:active,age:gte:18"
);

// Parse filters
const filters = filterHelpers.parseFilters([
  { field: "status", operator: "eq", value: "active" },
  { field: "age", operator: "gte", value: 18 },
  { field: "tags", operator: "in", value: ["javascript", "typescript"] },
  { field: "name", operator: "like", value: "john" },
]);

// Build SQL WHERE clause
const whereClause = filterHelpers.buildWhereClause(filters);

Excel Processing

import { excelService } from "mvc-common-toolkit";

// Generate Excel file
const workbook = await excelService.createWorkbook();
const worksheet = workbook.addWorksheet("Users");

// Add data
const users = [
  { id: 1, name: "John Doe", email: "john@example.com" },
  { id: 2, name: "Jane Smith", email: "jane@example.com" },
];

await excelService.addDataToWorksheet(worksheet, users, {
  headers: ["ID", "Name", "Email"],
  startRow: 1,
});

// Save file
await excelService.saveWorkbook(workbook, "users.xlsx");

šŸ—ļø Architecture

Package Structure

src/
ā”œā”€ā”€ constants.ts              # Application constants and enums
ā”œā”€ā”€ interfaces.ts             # TypeScript interfaces and types
ā”œā”€ā”€ index.ts                  # Main package exports
ā”œā”€ā”€ pkg/                      # Core utilities and helpers
│   ā”œā”€ā”€ array-helper.ts       # Array manipulation utilities
│   ā”œā”€ā”€ bcrypt-helper.ts      # Password hashing utilities
│   ā”œā”€ā”€ crypto-helper.ts      # Cryptographic utilities
│   ā”œā”€ā”€ filter-helper.ts      # Query filter parsing and building
│   ā”œā”€ā”€ geoip-helper.ts       # Geographic IP utilities
│   ā”œā”€ā”€ hash-helper.ts        # Hash generation utilities
│   ā”œā”€ā”€ http-request-utils.ts # HTTP request utilities
│   ā”œā”€ā”€ key-helper.ts         # Key generation utilities
│   ā”œā”€ā”€ logger.ts             # Logging utilities
│   ā”œā”€ā”€ object-helper.ts      # Object manipulation utilities
│   ā”œā”€ā”€ query-helper.ts       # Query string parsing
│   ā”œā”€ā”€ sort-helper.ts        # Sorting utilities
│   ā”œā”€ā”€ string-utils.ts       # String manipulation utilities
│   ā”œā”€ā”€ task-helper.ts        # Task execution utilities
│   ā”œā”€ā”€ worksheet.utils.ts    # Excel worksheet utilities
│   └── workflow/             # Workflow and task management
│       ā”œā”€ā”€ delayed-task-registry.ts
│       ā”œā”€ā”€ delayed-task.ts
│       ā”œā”€ā”€ distributed-sync-taskqueue.ts
│       ā”œā”€ā”€ distributed-taskqueue-factory.ts
│       ā”œā”€ā”€ processing-milestone.ts
│       ā”œā”€ā”€ retry-task.ts
│       └── sync-taskqueue.ts
ā”œā”€ā”€ services/                 # Service integrations
│   ā”œā”€ā”€ audit-service.ts      # Audit logging service
│   ā”œā”€ā”€ excel.service.ts      # Excel processing service
│   ā”œā”€ā”€ http-service.ts       # HTTP client service
│   ā”œā”€ā”€ kafka-service.ts      # Kafka integration service
│   ā”œā”€ā”€ mailer-service.ts     # Email service
│   ā”œā”€ā”€ paginated-cache.ts    # Paginated caching service
│   ā”œā”€ā”€ redis-service.ts      # Redis client service
│   ā”œā”€ā”€ redis-queue-engine.ts # Redis queue engine
│   └── security-service.ts   # Security utilities service
ā”œā”€ā”€ gateways/                 # External service gateways
│   ā”œā”€ā”€ alibaba-cloud-gateway.ts
│   ā”œā”€ā”€ http-audit-gateway.ts
│   ā”œā”€ā”€ internal-auth-gateway.ts
│   ā”œā”€ā”€ stdout-audit-gateway.ts
│   └── webhook-audit-gateway.ts
└── models/                   # Data models
    └── audit-log.ts          # Audit log model

šŸ”Œ Available Services

Core Services

ServiceDescriptionFeatures
RedisServiceRedis client with caching, lists, and hash operationsCaching, Queuing, Distributed locking
KafkaServiceKafka message queue integrationProducer/Consumer, Topic management
HttpServiceEnhanced HTTP clientRequest/Response handling, Retry logic
MailerServiceEmail sending capabilitiesSMTP, Template support
SecurityServiceAuthentication and authorizationJWT, Password hashing
AuditServiceComprehensive audit loggingMultiple destinations, Structured logs
ExcelServiceExcel file processingRead/Write, Formatting, Templates

Queue Engines

EngineDescriptionUse Case
RedisQueueEngineRedis-based distributed queueHigh-performance, Reliable
KafkaQueueEngineKafka-based queue (planned)High-throughput, Event streaming

šŸ› ļø Development

Prerequisites

  • Node.js 16+
  • TypeScript 5.0+
  • Redis (for queue functionality)
  • Kafka (optional, for message queuing)

Setup

# Clone the repository
git clone https://github.com/andydevstic/common-toolkit.git
cd common-toolkit

# Install dependencies
yarn install

# Run tests
yarn test

# Build the project
yarn build

Testing

# Run all tests
yarn test

# Run specific test file
yarn test src/services/redis-queue-engine.spec.ts

# Run tests with coverage
yarn test -- --reporter spec --require ts-node/register

šŸ“š API Documentation

Query Helpers

// Parse query string
const query = queryHelper.parseQueryString("page=1&limit=10&sort=name:asc");

// Build query string
const queryString = queryHelper.buildQueryString({
  page: 1,
  limit: 10,
  sort: "name:asc",
});

Filter Helpers

// Parse filters
const filters = filterHelpers.parseFilters([
  { field: "status", operator: "eq", value: "active" },
  { field: "age", operator: "gte", value: 18 },
]);

// Build SQL WHERE clause
const whereClause = filterHelpers.buildWhereClause(filters);

// Validate filters
const isValid = filterHelpers.validateFilters(filters);

String Utilities

// Slugify
const slug = stringUtils.slugify("Hello World!"); // hello-world

// Generate random string
const random = stringUtils.generateRandomString(10);

// Truncate
const truncated = stringUtils.truncate("Long text here", 10); // Long text...

Workflow Management

// Delayed task registry
const registry = new DelayedTaskRegistry();
await registry.register({
  callback: () => console.log("Task executed"),
  timeout: 5000,
  startOnCreate: true,
});

// Retry task
const retryTask = new RetryTask({
  maxAttempts: 3,
  backoffMs: 1000,
  task: async () => {
    /* task logic */
  },
});
await retryTask.execute();

šŸš€ Performance

Benchmarks

  • Query Parsing: ~10,000 ops/sec
  • Filter Building: ~5,000 ops/sec
  • Redis Operations: ~50,000 ops/sec
  • Task Queue: ~1,000 tasks/sec

Memory Usage

  • Base Package: ~2MB
  • With Redis: ~5MB
  • With Kafka: ~8MB

šŸ”’ Security

  • Password Hashing: Bcrypt with configurable rounds
  • JWT Support: Secure token generation and validation
  • Input Validation: Comprehensive input sanitization
  • Audit Logging: Security event tracking

šŸ¤ Contributing

  • Fork the repository
  • Create a feature branch (git checkout -b feature/amazing-feature)
  • Commit your changes (git commit -m 'Add amazing feature')
  • Push to the branch (git push origin feature/amazing-feature)
  • Open a Pull Request

Development Guidelines

  • Follow TypeScript best practices
  • Write comprehensive tests
  • Update documentation
  • Follow the existing code style
  • Add type definitions for new features

šŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

šŸ™ Acknowledgments

šŸ“ž Support

Made with ā¤ļø by Andy Devstic

Keywords

toolkit

FAQs

Package last updated on 08 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with āš”ļø by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.