event-manager-plus
v1.0.1
Published
A simple and powerful event management system for Node.js
Downloads
107
Maintainers
Readme
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: "[email protected]",
});
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 eventon(eventName, handler)
: Add event handleremit(eventName, data)
: Emit an eventgetHistory(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.