event-manager-plus

1.0.1 • Public • Published

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.

Package Sidebar

Install

npm i event-manager-plus

Weekly Downloads

3

Version

1.0.1

License

MIT

Unpacked Size

11.7 kB

Total Files

6

Last publish

Collaborators

  • rynix