1.0.1 • Published 4 days ago

event-manager-plus v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
4 days ago

EasyEvent

A simple, powerful and flexible event management system for Node.js with built-in validation.

Features

  • 🚀 Simple and intuitive API
  • ✅ Built-in validation system
  • 🔄 Async/await support
  • 📝 Event history
  • 🐛 Debug mode
  • 💪 Type checking
  • 🎯 Custom validation rules
  • 🔍 Detailed error messages

Installation

npm install @rache/event-manager-plus

Quick Start

const { EventManager } = require("event-manager-plus");
// Create an event group
const userEvents = EventManager.createGroup("user", { debug: true });
// Define an event with validation
userEvents.define("createUser", {
  validation: {
    username: {
      type: "string",
      minLength: 3,
      pattern: /^[a-zA-Z0-9_]+$/,
    },
    email: {
      type: "string",
      pattern: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
      required: true,
    },
  },
});
// Add event handlers
userEvents.on("createUser", async (data) => {
  console.log("Creating user:", data);
  // ... database operations
});
userEvents.on("createUser", async (data) => {
  console.log("Sending welcome email to:", data.email);
  // ... email operations
});
// Emit event
await userEvents.emit("createUser", {
  username: "john_doe",
  email: "john@example.com",
});

Validation Rules

Basic Types

  • string
  • number
  • boolean
  • object
  • array

String Validation

{
  username: {
    type: "string",
    minLength: 3,
    maxLength: 20,
    pattern: /^[a-zA-Z0-9_]+$/,
    required: true,
  },
}

Number Validation

{
  age: {
    type: "number",
    min: 18,
    max: 100,
    required: true,
  },
}

Custom Validation

{
  password: {
    type: "string",
    required: true,
    custom: (value) => {
      if (value.length < 8) return "Password too short";
      if (!/[A-Z]/.test(value)) return "Need uppercase";
      if (!/[0-9]/.test(value)) return "Need number";
      return true;
    },
  },
}

Event History

// Get last 10 events
const history = userEvents.getHistory(10);

Debug Mode

const userEvents = EventManager.createGroup("user", {
  debug: true,
  maxHistorySize: 100,
});

Error Handling

try {
  await userEvents.emit("createUser", {
    username: 123, // Wrong type
    email: "invalid-email", // Invalid format
  });
} catch (error) {
  console.error("Validation failed:", error.message);
}

API Reference

EventManager

  • createGroup(name, options): Create a new event group

EventGroup

  • define(eventName, options): Define a new event
  • on(eventName, handler): Add event handler
  • emit(eventName, data): Emit an event
  • getHistory(limit): Get event history

License

MIT

Author

Furkan

Contributing

Contributions, issues and feature requests are welcome!

Support

If you have any problems or questions, please open an issue.