Skip to content

Releases: noxify/vorsteh-queue

[email protected]

19 Jul 22:48
5277995

Choose a tag to compare

Minor Changes

  • 8527495: # 🚀 Initial Release - Project Scaffolding CLI

    Interactive CLI tool for creating new Vorsteh Queue projects with zero configuration.

    ✨ Features

    • Interactive prompts with beautiful UI powered by @clack/prompts
    • Dynamic template discovery - Automatically fetches available templates from GitHub
    • Multiple package managers - Support for npm, pnpm, yarn, and bun
    • CLI flags for automation and scripting
    • Quiet mode for CI/CD environments

    🎯 Usage Options

    Interactive Mode

    npx create-vorsteh-queue
    # Prompts for project name, template, and package manager

    Direct Mode

    npx create-vorsteh-queue my-app --template=drizzle-pglite --package-manager=pnpm --no-install
    # Fully automated project creation

    CLI Flags

    • --template=<name> or -t=<name> - Choose template
    • --package-manager=<pm> or -pm=<pm> - Package manager (npm/pnpm/yarn/bun)
    • --no-install - Skip dependency install
    • --quiet or -q - Minimal output for automation

    📦 Available Templates

    Templates are dynamically discovered from the repository:

    • drizzle-pg - Basic example using Drizzle ORM with node-postgres (pg)
    • drizzle-pglite - Zero-setup example using Drizzle ORM with PGlite (embedded PostgreSQL)
    • drizzle-postgres - Advanced example using Drizzle ORM with postgres.js and recurring jobs
    • event-system - Comprehensive event monitoring and statistics using Drizzle ORM with postgres.js
    • pm2-workers - Manage multiple Vorsteh Queues with PM2 using Drizzle ORM with postgres.js
    • progress-tracking - Real-time job progress tracking using Drizzle ORM with postgres.js

@vorsteh-queue/[email protected]

19 Jul 22:48
5277995

Choose a tag to compare

Minor Changes

  • 8527495: # 🚀 Initial Release - Core Queue Engine

    The foundational package providing the core queue functionality and interfaces.

    ✨ Features

    • Type-safe job processing with full TypeScript support and generic job payloads
    • Priority queue system with numeric priority (lower = higher priority)
    • Delayed job scheduling for future execution with precise timing
    • Recurring jobs with cron expressions and interval-based repetition
    • Timezone-aware scheduling with automatic DST handling
    • Real-time progress tracking for long-running jobs (0-100%)
    • Comprehensive event system for monitoring job lifecycle
    • Graceful shutdown with clean job processing termination

    🎛️ Queue Configuration

    • Flexible job cleanup - removeOnComplete/removeOnFail support boolean or number
    • Configurable concurrency - Process multiple jobs simultaneously
    • Retry logic with exponential backoff and max attempts
    • Job timeouts and comprehensive error handling
    • Queue statistics and health monitoring

    📊 Event System

    • Job lifecycle events: job:added, job:processing, job:completed, job:failed, job:retried, job:progress
    • Queue events: queue:paused, queue:resumed, queue:stopped, queue:error
    • Type-safe event handlers with proper TypeScript support

    🌍 Timezone Support

    • Schedule jobs in any IANA timezone with automatic DST transitions
    • Complex cron expressions with timezone awareness
    • UTC-first storage with timezone-aware calculations
    • Reliable cross-timezone job scheduling

    🔌 Adapter Pattern

    • Pluggable storage backends - Easy to add new database adapters
    • Consistent interface - Same API across all storage implementations
    • Built-in memory adapter - Perfect for testing and development
    • Transaction support - Atomic job operations where supported

@vorsteh-queue/[email protected]

19 Jul 22:48
5277995

Choose a tag to compare

Minor Changes

  • 8527495: # 🚀 Initial Release - Drizzle ORM Adapter

    Database adapter supporting PostgreSQL and MariaDB/MySQL via Drizzle ORM.

    🗄️ Database Support

    PostgreSQL

    • PostgreSQL 12+ with SKIP LOCKED support for concurrent processing
    • Multiple drivers: node-postgres, postgres.js, PGlite
    • Full feature support: JSONB payloads, UUID primary keys, timezone-aware timestamps
    • Connection pooling and transaction support

    MariaDB/MySQL

    • MariaDB 10.6+ and MySQL 8.0+ with SKIP LOCKED functionality
    • mysql2 driver with promise support and connection pooling
    • JSON payloads with proper serialization/deserialization
    • UUID compatibility using VARCHAR(36) with MySQL UUID() function

    ⚡ Performance Features

    • SKIP LOCKED queries for high-concurrency job processing without lock contention
    • Optimized indexes on queue_name, status, priority, and process_at columns
    • Efficient job retrieval with priority-based ordering and creation time fallback
    • Batch operations for job cleanup and maintenance

    🔧 Schema Management

    • Exported schemas - postgresSchema and mariadbSchema for easy integration
    • Drizzle Kit support - Generate and run migrations with your existing schema
    • Type-safe queries - Full TypeScript support with Drizzle's query builder
    • Flexible integration - Works with existing Drizzle setups

    📦 Easy Integration

    with PostgreSQL:

    // PostgreSQL
    import { PostgresQueueAdapter, postgresSchema } from "@vorsteh-queue/adapter-drizzle"
    
    const db = drizzle(pool, { schema: postgresSchema })
    const adapter = new PostgresQueueAdapter(db, "my-queue")

    with MariaDB/MySQL:

    // MariaDB/MySQL
    import { MariaDBQueueAdapter, mariadbSchema } from "@vorsteh-queue/adapter-drizzle"
    const db = drizzle(connection, { schema: mariadbSchema })
    const adapter = new MariaDBQueueAdapter(db, "my-queue")
    

Patch Changes