desi-mongoose
Version:
A fun and intuitive MongoDB ODM for Node.js with a Hinglish twist
50 lines (49 loc) • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DesiEvents = void 0;
class DesiEvents {
static pehle(event, handler) {
console.log(`🎭 ${event} se pehle ka handler add kar rahe hain...`);
const handlers = this.middleware.get(`pre:${event}`) || [];
handlers.push(handler);
this.middleware.set(`pre:${event}`, handlers);
}
static baadMein(event, handler) {
console.log(`🎭 ${event} ke baad ka handler add kar rahe hain...`);
const handlers = this.middleware.get(`post:${event}`) || [];
handlers.push(handler);
this.middleware.set(`post:${event}`, handlers);
}
static sunno(event, callback) {
console.log(`👂 ${event} ke liye listener add kar rahe hain...`);
const current = this.listeners.get(event) || [];
this.listeners.set(event, [...current, callback]);
}
static async bolo(event, ...args) {
// Run pre-event middleware
await this.chalaoMiddleware('pre', event, ...args);
// Run event handlers
console.log(`🗣️ ${event} event trigger kar rahe hain...`);
const callbacks = this.listeners.get(event) || [];
for (const callback of callbacks) {
await callback(...args);
}
// Run post-event middleware
await this.chalaoMiddleware('post', event, ...args);
}
static async chalaoMiddleware(phase, event, ...args) {
const eventKey = `${phase}:${event}`;
const handlers = this.middleware.get(eventKey) || [];
for (const handler of handlers) {
await handler(...args);
}
}
static hatao(event, handler) {
console.log(`🚫 ${event} ka handler hata rahe hain...`);
const current = this.listeners.get(event) || [];
this.listeners.set(event, current.filter(h => h !== handler));
}
}
exports.DesiEvents = DesiEvents;
DesiEvents.listeners = new Map();
DesiEvents.middleware = new Map();