0.7.2 • Published 1 year ago
@cobiro/eda v0.7.2
Cobiro Event Driven Architecture
This package allows to use easily EDA in your Angular project.
How to use
Install package
npm install @cobiro/eda
Add ApplicationModule to your module
import {ApplicationBusModule} from "@cobiro/eda";
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
ApplicationBusModule.forRoot(),
StoreModule.forRoot({}),
EffectsModule.forRoot(),
AppRoutingModule,
StandardModule,
NgrxModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
Create ApplicationEvent
import {ApplicationEvent} from "@cobiro/eda";
export class ProductAddedEvent extends ApplicationEvent {
constructor(public readonly name: string, public readonly price: number, public readonly currency: string) {
super();
}
}
Dispatch event in your application
import {APPLICATION_BUS, Dispatcher} from "@cobiro/eda";
import {ProductAddedEvent} from "./product-added.event";
import {Product} from "./products.service";
export class ProductsComponent {
constructor(
@Inject(APPLICATION_BUS) private _applicationBus: Dispatcher<ProductAddedEvent>
) {
}
onProductAddClicked(product: Product): void {
this._applicationBus.dispatch(new ProductAddedEvent(product.name, product.price, product.currency));
}
}
Create ApplicationEventHandler and provide it into your module when you want to handle it:
import {NotificationsService} from "../notifications.service";
import {ProductAddedEvent} from "../../../../events/src/lib/product-added.event";
import {ApplicationEventHandler} from "@cobiro/eda";
@Injectable()
export class ProductAddedEventsHandler implements ApplicationEventsHandler {
eventsClasses = [ProductAddedEvent];
strategy = ongoingEventsOrchestrationStrategy;
constructor(private readonly layoutState: LayoutState) {}
handle(events: ProductAddedEvent[]) {
const event = events[0];
this.notifyService.notify(`Added ${event.name} ${event.currency}${event.price}`);
}
}
@NgModule({
...,
providers: [
provideApplicationEventsHandler(ProductAddedEventHandler)
]
})
export class NotificationsModule { }
Strategies
In events handler you can use different various of strategy to orchestrate events.
- ongoingEventsOrchestrationStrategy - it's default strategy will orchestrate events one by one
- allEventsOnceOrchestrationStrategy - orchestrate all the events at the same time
- zipEventsOrchestrationStrategy - after all events are dispatched
- limitedOngoingEventsOrchestrationStrategy - can handle two events when first event is starting event and second is canceling event, when the canceling event is dispatched handler stops listening to events
- mergeEventsOrchestrationStrategy - orchestrate after some event dispatched
More examples
More examples you can find on https://github.com/Cobiro/eda
0.7.2
1 year ago
0.7.1
1 year ago
0.5.0
1 year ago
0.4.0
1 year ago
0.7.0
1 year ago
0.6.0
1 year ago
0.3.5
3 years ago
0.3.4
4 years ago
0.3.3
4 years ago
0.3.2
4 years ago
0.1.0
4 years ago
0.3.0
4 years ago
0.1.2
4 years ago
0.2.0
4 years ago
0.1.1
4 years ago
0.0.9
4 years ago
0.0.8
4 years ago
0.1.4
4 years ago
0.3.1
4 years ago
0.1.3
4 years ago
0.0.7
4 years ago
0.0.6
4 years ago
0.0.3
4 years ago
0.0.2
4 years ago
0.0.4
4 years ago
0.0.1
4 years ago