4lessandrodev / rich-domain

A lib to help you create a robust project based on domain driven-design (ddd) principles with typescript and zero dependencies.
https://www.npmjs.com/package/rich-domain
MIT License
122 stars 5 forks source link

Feat/domain event handler #123

Closed 4lessandrodev closed 7 months ago

4lessandrodev commented 7 months ago

[1.20.1-beta] - 2024-03-18

Updates

Implemented a new event handling mechanism using the Handler class. Example:



// implement extending to EventHandler
class Handler extends EventHandler<Product> {
    constructor() { super({ eventName: 'sample' }) };

    dispatch(product: Product, args_1: [DEvent<Product>, any[]]): void | Promise<void> {
        const model = product.toObject();
        const [event, args] = args_1;

        console.log(model);
        console.log(event);
        console.log(event.eventName);
        console.log(event.options);
        // custom params provided on call dispatchEvent
        console.log(args);
    }
}

const event = new Handler();
orange.addEvent(event);

await orange.dispatchEvent('sample', { custom: 'params' });