Async event dispatching module for the Fusion Framework. Enables type-safe communication between framework modules (siblings) and across parent/child instances through an event system modeled after the native DOM EventTarget, but with async dispatch so cancelable events can be properly awaited.
Important: When dispatching a
cancelableevent you mustawaitthedispatchEventcall. Firing withoutawaitmeanspreventDefault()calls from listeners will not be respected.
- Module authors that need to emit lifecycle or domain events other modules can react to.
- Application developers that want to intercept, log, or cancel events flowing through the framework.
- Library consumers that subscribe to event streams for analytics, debugging, or cross-cutting concerns.
| Topic | Description |
|---|---|
| Configuration | onDispatch/onBubble hooks and registering custom event types via FrameworkEventMap |
| Observable Patterns | event$, filterEvent, and the ./operators subpath |
| Lifecycle | Dispatch sequence, cancelable events, and bubbling |
| Testing | waitForEvent, watchEvents, and using a bespoke ModulesConfigurator in tests |
pnpm add @equinor/fusion-framework-module-eventThe event module is included by default when initializing the Fusion Framework, so explicit installation is only needed when using it standalone.
const teardown = modules.event.addEventListener('onModulesLoaded', (event) => {
console.log('All modules loaded:', event.detail);
});
// remove the listener when no longer needed
teardown();const event = await modules.event.dispatchEvent('myEvent', {
detail: { id: 42 },
cancelable: true,
});
if (!event.canceled) {
performAction();
}| Export | Kind | Purpose |
|---|---|---|
FrameworkEvent |
Class | Base event carrying detail, source, cancel/bubble flags |
FrameworkEventInit |
Type | Options passed when constructing an event |
FrameworkEventMap |
Interface | Extensible registry mapping event names → event types |
FrameworkEventHandler |
Type | Listener callback signature (sync or async) |
IEventModuleProvider |
Interface | Public API for the event provider (addEventListener, dispatchEvent, event$) |
EventModuleProvider |
Class | Default provider implementation |
EventModuleConfig |
Type | Resolved configuration hooks (onDispatch, onBubble) |
EventModuleConfigurator |
Class | Fluent config builder (setOnDispatch, setOnBubble) — see Configuration |
IEventModuleConfigurator |
Type | Deprecated alias for EventModuleConfig |
filterEvent |
Function | RxJS operator to narrow event$ to a single registered event type |
EventModule / eventModuleKey |
Type / Const | Module definition and key ('event') |
| Subpath | Exports | Purpose |
|---|---|---|
./operators |
filterEvent |
RxJS pipeable operators over event$ (also re-exported from the package root) |
./utils |
waitForEvent, watchEvents |
Plain helpers for waiting on / collecting dispatched events, in application code or tests |