@genesislcap/foundation-events
v14.230.1
Published
Genesis Foundation Events
Downloads
20,806
Readme
Genesis Foundation Events
foundation-events
contains strongly typed event emitting utilities and interfaces.
- Contains event emitting utilities.
- Contains common system level:
- Custom event types
- Custom event detail interfaces
- Custom event type to detail maps
export interface ZooEventDetail {
animals: Animal[];
location: string;
}
export type MyEventDetailMap = {
'domain-foo': void; // < no detail
'domain-bar': boolean; // < boolean detail
'domain-zoo': ZooEventDetail; // < ZooEventDetail detail (more than one prop on details)
'domain-zoo-animals': Animal[]; // array of Animals detail
'domain-coo': number; // < number
}
Event naming
We need to come up with an event naming strategy that scales well, avoids clashing, and sets out well known system events for our micro frontends handle. Ideally these should be additive as we evolve to avoid breaking changes. For example a user will always login, logout, etc, and these should be the same across all apps and not need to change much. Payloads themselves may be more likely to change overtime, and we need to figure out how to deal with that.
Some notes on possible topic / event naming conventions. Note these show . delimiter but we'd probably use -
https://devshawn.com/blog/apache-kafka-topic-naming-conventions/
<data-center>.<domain>.<classification>.<description>.<version>
aws.analytics.fct.pageviews.0
azure.comms.fct.gps.0
dc1.identity.cdc.users.1
gcp.notifications.cmd.emails.3
gcp.notifications.sys.email-cache.0
Note: using version in the naming seems controversial, further reading required.
public.com.xeotek.sales.ecommerce.shoppingcarts
public.sales.ecommerce.shoppingcarts
private.risk.portfolio.analysis.loans.csvimport
As a phase of processing:
org.ntent.addelivery.pageview-incoming
org.ntent.addelivery.pageview-filtered
org.ntent.addelivery.pageview-duplicate
org.ntent.addelivery.pageview-clean
To separate "instances" of a particular kind of activity:
org.ntent.addelivery.feedrequest-feed1
org.ntent.addelivery.feedrequest-feed2
org.ntent.addelivery.feedrequest-feed3
To denote the type of "statistic":
org.ntent.addelivery.filterstats-knownoffender
org.ntent.addelivery.filterstats-bot
org.ntent.addelivery.filterstats-clickrate
Module Federation Details:
| Remote Name | Port | | --------------------- | ----- | | foundationEvents | 3060 |
Installation
To enable this module in your application, follow the steps below.
- Add
@genesislcap/foundation-events
as a dependency in yourpackage.json
file. Whenever you change the dependencies of your project, ensure you run the$ npm run bootstrap
command again. You can find more information in the package.json basics page.
{
...
"dependencies": {
...
"@genesislcap/foundation-events": "latest"
...
},
...
}
API Docs
License
Note: this project provides front-end dependencies and uses licensed components listed in the next section; thus, licenses for those components are required during development. Contact Genesis Global for more details.
Licensed components
Genesis low-code platform