3.0.13 • Published 7 months ago

edh v3.0.13

Weekly downloads
-
License
MIT
Repository
github
Last release
7 months ago

Event Driven Helper

This is a POC , don't use this

Why do it?

I wanted to create a simple event emitter POC that would allow me keep a stack trace of the event emitter calls. This is useful for debugging and auditing purposes.

How?

Using async context

Please investigate other packages before using this one

https://www.npmjs.com/package/typed-emitter

https://www.npmjs.com/package/eventemitter3

Example

// Example usage

import { EventEmitterH } from "../src";

interface MyEvents {
    userLoggedIn: { username: string };
    messageReceived: { sender: string; message: string };
    messageReceived2: { sender: string; message: string };
    // Add more event types as needed
}

const eventEmitter = new EventEmitterH<MyEvents>();

eventEmitter.setDebugMode(true);

eventEmitter.on("userLoggedIn", {
    name: "userLoginHandler",
    await: true,
    func: async () => {
        await eventEmitter.emit("messageReceived", {
            sender: "john_doe",
            message: "Hello World!",
        });
        await new Promise((resolve) => setTimeout(resolve, 1000));
        console.log("User login handling completed.");
    },
});

eventEmitter.on("messageReceived", {
    name: "messageReceivedHandler",
    await: true,
    func: async () => {
        await eventEmitter.emit("messageReceived2", {
            sender: "john_doe",
            message: "Hello World!",
        });
        await new Promise((resolve) => setTimeout(resolve, 1000));
    },
});

eventEmitter.on("messageReceived2", {
    name: "messageReceivedHandler2",
    await: true,
    func: async () => {
        throw new Error("Error in messageReceivedHandler2");
        await new Promise((resolve) => setTimeout(resolve, 1000));
    },
});

// Emit event and handle the promise
eventEmitter
    .emit("userLoggedIn", { username: "john_doe" })
    .then(() => {
        console.log("All handlers completed.");
    })
    .catch((error) => {
        console.error("Error:", error);
    });



// Output
// [EventEmitter] [START]  userLoginHandler(userLoggedIn:81os0jt)
// [EventEmitter] [START]  userLoginHandler(userLoggedIn:81os0jt) -> messageReceivedHandler(messageReceived:yw2cka7)
// [EventEmitter] [START]  userLoginHandler(userLoggedIn:81os0jt) -> messageReceivedHandler(messageReceived:yw2cka7) -> messageReceivedHandler2(messageReceived2:ajl0cv7)
// Error: [EventEmitter] [ERROR] Error in messageReceivedHandler2 userLoginHandler(userLoggedIn:81os0jt) -> messageReceivedHandler(messageReceived:yw2cka7) -> messageReceivedHandler2(messageReceived2:ajl0cv7)
// [EventEmitter] [ALL_DONE] Handling all event listeners of messageReceived2
// [EventEmitter] [DONE] userLoginHandler(userLoggedIn:81os0jt) -> messageReceivedHandler(messageReceived:yw2cka7)
// [EventEmitter] [ALL_DONE] Handling all event listeners of messageReceived
// User login handling completed.
// [EventEmitter] [DONE] userLoginHandler(userLoggedIn:81os0jt)
// [EventEmitter] [ALL_DONE] Handling all event listeners of userLoggedIn
3.0.13

7 months ago

3.0.12

7 months ago

3.0.10

7 months ago

3.0.8

7 months ago

3.0.7

7 months ago

3.0.6

7 months ago

3.0.5

7 months ago

3.0.4

7 months ago

3.0.3

7 months ago

3.0.2

7 months ago

3.0.1

7 months ago

2.0.0

7 months ago

1.0.0

7 months ago